From 39462eb72fcce857b2c7b58ae5152adb7c4b0123 Mon Sep 17 00:00:00 2001 From: Babosa Date: Thu, 1 Aug 2024 16:32:01 +0800 Subject: [PATCH] Add EasyPlayer.js html-demo --- html-demo/demo.html | 568 ++++++++++++++++++ html-demo/demo.js | 189 ++++++ html-demo/js/decoder-pro-audio.js | 1 + {demo => html-demo}/js/decoder-pro-audio.wasm | Bin html-demo/js/decoder-pro-hard-not-wasm.js | 1 + html-demo/js/decoder-pro-hard.js | 1 + .../js/decoder-pro-mt-worker.js | 0 .../js/decoder-pro-mt-worker.wasm | Bin .../js/decoder-pro-mt-worker.worker.js | 0 html-demo/js/decoder-pro-mt.js | 1 + .../js/decoder-pro-simd-mt-worker.js | 0 .../js/decoder-pro-simd-mt-worker.wasm | Bin .../js/decoder-pro-simd-mt-worker.worker.js | 0 html-demo/js/decoder-pro-simd-mt.js | 1 + html-demo/js/decoder-pro-simd.js | 1 + {demo => html-demo}/js/decoder-pro-simd.wasm | Bin html-demo/js/decoder-pro.js | 1 + {demo => html-demo}/js/decoder-pro.wasm | Bin html-demo/js/easyplayer-pro-multi.js | 1 + html-demo/js/easyplayer-pro-talk.js | 1 + html-demo/js/easyplayer-pro.js | 1 + {demo => vue-demo}/2.6.14_vue.min.js | 0 {demo => vue-demo}/demo.html | 0 {demo => vue-demo}/js/decoder-pro-audio.js | 0 vue-demo/js/decoder-pro-audio.wasm | Bin 0 -> 443508 bytes .../js/decoder-pro-hard-not-wasm.js | 0 {demo => vue-demo}/js/decoder-pro-hard.js | 0 vue-demo/js/decoder-pro-mt-worker.js | 16 + vue-demo/js/decoder-pro-mt-worker.wasm | Bin 0 -> 1148800 bytes vue-demo/js/decoder-pro-mt-worker.worker.js | 1 + {demo => vue-demo}/js/decoder-pro-mt.js | 0 vue-demo/js/decoder-pro-simd-mt-worker.js | 16 + vue-demo/js/decoder-pro-simd-mt-worker.wasm | Bin 0 -> 1345773 bytes .../js/decoder-pro-simd-mt-worker.worker.js | 1 + {demo => vue-demo}/js/decoder-pro-simd-mt.js | 0 {demo => vue-demo}/js/decoder-pro-simd.js | 0 vue-demo/js/decoder-pro-simd.wasm | Bin 0 -> 1298433 bytes {demo => vue-demo}/js/decoder-pro.js | 0 vue-demo/js/decoder-pro.wasm | Bin 0 -> 1110396 bytes {demo => vue-demo}/js/easyplayer-pro-multi.js | 0 {demo => vue-demo}/js/easyplayer-pro-talk.js | 0 {demo => vue-demo}/js/easyplayer-pro.js | 0 {demo => vue-demo}/screen.html | 0 43 files changed, 801 insertions(+) create mode 100644 html-demo/demo.html create mode 100644 html-demo/demo.js create mode 100644 html-demo/js/decoder-pro-audio.js rename {demo => html-demo}/js/decoder-pro-audio.wasm (100%) create mode 100644 html-demo/js/decoder-pro-hard-not-wasm.js create mode 100644 html-demo/js/decoder-pro-hard.js rename {demo => html-demo}/js/decoder-pro-mt-worker.js (100%) rename {demo => html-demo}/js/decoder-pro-mt-worker.wasm (100%) rename {demo => html-demo}/js/decoder-pro-mt-worker.worker.js (100%) create mode 100644 html-demo/js/decoder-pro-mt.js rename {demo => html-demo}/js/decoder-pro-simd-mt-worker.js (100%) rename {demo => html-demo}/js/decoder-pro-simd-mt-worker.wasm (100%) rename {demo => html-demo}/js/decoder-pro-simd-mt-worker.worker.js (100%) create mode 100644 html-demo/js/decoder-pro-simd-mt.js create mode 100644 html-demo/js/decoder-pro-simd.js rename {demo => html-demo}/js/decoder-pro-simd.wasm (100%) create mode 100644 html-demo/js/decoder-pro.js rename {demo => html-demo}/js/decoder-pro.wasm (100%) create mode 100644 html-demo/js/easyplayer-pro-multi.js create mode 100644 html-demo/js/easyplayer-pro-talk.js create mode 100644 html-demo/js/easyplayer-pro.js rename {demo => vue-demo}/2.6.14_vue.min.js (100%) rename {demo => vue-demo}/demo.html (100%) rename {demo => vue-demo}/js/decoder-pro-audio.js (100%) create mode 100644 vue-demo/js/decoder-pro-audio.wasm rename {demo => vue-demo}/js/decoder-pro-hard-not-wasm.js (100%) rename {demo => vue-demo}/js/decoder-pro-hard.js (100%) create mode 100644 vue-demo/js/decoder-pro-mt-worker.js create mode 100644 vue-demo/js/decoder-pro-mt-worker.wasm create mode 100644 vue-demo/js/decoder-pro-mt-worker.worker.js rename {demo => vue-demo}/js/decoder-pro-mt.js (100%) create mode 100644 vue-demo/js/decoder-pro-simd-mt-worker.js create mode 100644 vue-demo/js/decoder-pro-simd-mt-worker.wasm create mode 100644 vue-demo/js/decoder-pro-simd-mt-worker.worker.js rename {demo => vue-demo}/js/decoder-pro-simd-mt.js (100%) rename {demo => vue-demo}/js/decoder-pro-simd.js (100%) create mode 100644 vue-demo/js/decoder-pro-simd.wasm rename {demo => vue-demo}/js/decoder-pro.js (100%) create mode 100644 vue-demo/js/decoder-pro.wasm rename {demo => vue-demo}/js/easyplayer-pro-multi.js (100%) rename {demo => vue-demo}/js/easyplayer-pro-talk.js (100%) rename {demo => vue-demo}/js/easyplayer-pro.js (100%) rename {demo => vue-demo}/screen.html (100%) diff --git a/html-demo/demo.html b/html-demo/demo.html new file mode 100644 index 0000000..4dd8eb7 --- /dev/null +++ b/html-demo/demo.html @@ -0,0 +1,568 @@ + + + + + + + EasyPlayer.js播放器 + + + + + + +
+
+
EasyPlayer.js播放器
+
+
+
+
+
+
+
+

配置信息

+
+
+ + +
+
+ + +
+
+ + +
+
+
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+
+
+ + + +
+
+
+
+
+
+
介绍:
+
1. 支持ws-flv, http-flv, hls, webrtc
+
2. WebRTC使用方式:webrtc://xxx
+
3. 使用时出现跨域请下载文件到本地调试
+
4. 当浏览器不支持 MSE硬解 时,会自动切换成 WASM软解
+
5. 关闭音频渲染可以节省性能
+
6. 支持 电子放大;
+
7. 支持 水印(动态水印、幽灵水印);
+
8. 支持 显示上一个视频最后一帧;
+
9. 支持 播放器快照截图;
+
10.支持 视频录制(WebM格式(音频+视频)、MP4格式(视频),FLV格式(音频+视频));
+
11.支持 超时、断网重连、异常暂停播放等;
+
+
+
属性配置
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
属性说明类型默认值
container播放器容器--
decoderwasm解码地址String-
isResize是否拉伸Booleantrue
loadingText加载显示的文字String加载中
videoBuffer设置最小缓冲时长,单位秒,播放器会自动消除延迟Number1
hasAudio是否解析音频Booleantrue
useMSEMSE模式Booleanfalse
useWCSWCS模式Booleanfalse
useSIMD强制使用wasm模式Booleanfalse
background视频封面图片String-
qualityConfig配置清晰度Array['普清', '高清', '超清', '4K', '8K']
defaultStreamQuality默认显示的清晰度,如果不设置,会显示第一个清晰度String-
isNotMute是否渲染音频Booleanfalse
recordType视频录制默认mp4格式Stringmp4, flv
playbackForwardMaxRateDecodeIFrame录像倍数Number-
debug控制台日志打印Booleanfalse
debugLevel打印日志级别默认warnStringdebug, warn
+ +
调用方法和事件回调
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
方法/事件说明
play播放
playback播放录像
pause暂停播放
isPause返回是否暂停中状态
setBufferTime设置最大缓冲时长
setVolume设置音量
getVolume获取音量
exitFullscreen退出全屏(取消全屏)播放视频
mute静音
cancelMute取消静音
isMute返回是否静音
screenshot获取快照
setFullscreen全屏
setStreamQuality设置分辨率,必须是qualityConfig里面的数据
forward设置录像倍数
setPlaybackStartTime设置录像跳转时间/s
getVideoInfo获取视频信息
getAudioInfo获取音频信息
destroy关闭视频,释放底层资源
play播放事件
pause暂停事件
videoInfo视频信息
audioInfo音频信息
mute音频事件
error播放异常
kBps当前网速,单位KB 每秒1次
recordEnd录制结束的事件
recordStart录制开始的事件
fullscreen当前是否全屏
streamQualityChange清晰度回调
playbackSeek录像时间轴跳转回调
playbackPreRateChange录像倍数的回调
currentPts监听当前渲染帧的时间戳(流里面的)
+
+
+ + + + + \ No newline at end of file diff --git a/html-demo/demo.js b/html-demo/demo.js new file mode 100644 index 0000000..61e3ea1 --- /dev/null +++ b/html-demo/demo.js @@ -0,0 +1,189 @@ +function getBrowser() { + const UserAgent = window.navigator.userAgent.toLowerCase() || ''; + let browserInfo = { + type: '', + version: '' + }; + var browserArray = { + IE: window.ActiveXObject || "ActiveXObject" in window, // IE + Chrome: UserAgent.indexOf('chrome') > -1 && UserAgent.indexOf('safari') > -1, // Chrome浏览器 + Firefox: UserAgent.indexOf('firefox') > -1, // 火狐浏览器 + Opera: UserAgent.indexOf('opera') > -1, // Opera浏览器 + Safari: UserAgent.indexOf('safari') > -1 && UserAgent.indexOf('chrome') == -1, // safari浏览器 + Edge: UserAgent.indexOf('edge') > -1, // Edge浏览器 + QQBrowser: /qqbrowser/.test(UserAgent), // qq浏览器 + WeixinBrowser: /MicroMessenger/i.test(UserAgent) // 微信浏览器 + }; + // console.log(browserArray) + for (let i in browserArray) { + if (browserArray[i]) { + let versions = ''; + if (i === 'IE') { + const versionArray = UserAgent.match(/(msie\s|trident.*rv:)([\w.]+)/) + if (versionArray && versionArray.length > 2) { + versions = UserAgent.match(/(msie\s|trident.*rv:)([\w.]+)/)[2]; + } + } else if (i === 'Chrome') { + for (let mt in navigator.mimeTypes) { + //检测是否是360浏览器(测试只有pc端的360才起作用) + if (navigator.mimeTypes[mt]['type'] === 'application/360softmgrplugin') { + i = '360'; + } + } + const versionArray = UserAgent.match(/chrome\/([\d.]+)/); + if (versionArray && versionArray.length > 1) { + versions = versionArray[1]; + } + } else if (i === 'Firefox') { + const versionArray = UserAgent.match(/firefox\/([\d.]+)/); + if (versionArray && versionArray.length > 1) { + versions = versionArray[1]; + } + } else if (i === 'Opera') { + const versionArray = UserAgent.match(/opera\/([\d.]+)/); + if (versionArray && versionArray.length > 1) { + versions = versionArray[1]; + } + } else if (i === 'Safari') { + const versionArray = UserAgent.match(/version\/([\d.]+)/); + if (versionArray && versionArray.length > 1) { + versions = versionArray[1]; + } + } else if (i === 'Edge') { + const versionArray = UserAgent.match(/edge\/([\d.]+)/); + if (versionArray && versionArray.length > 1) { + versions = versionArray[1]; + } + } else if (i === 'QQBrowser') { + const versionArray = UserAgent.match(/qqbrowser\/([\d.]+)/); + if (versionArray && versionArray.length > 1) { + versions = versionArray[1]; + } + } + browserInfo.type = i; + browserInfo.version = parseInt(versions); + } + } + return browserInfo; +} + + +function checkSupportMSEHevc() { + return window.MediaSource && window.MediaSource.isTypeSupported('video/mp4; codecs="hev1.1.6.L123.b0"'); +} + +function checkSupportMSEH264() { + return window.MediaSource && window.MediaSource.isTypeSupported('video/mp4; codecs="avc1.64002A"'); +} + +function checkSupportWCSHevc() { + const browserInfo = getBrowser(); + const supportWCS = checkSupportWCS(); + + return supportWCS && browserInfo.type.toLowerCase() === 'chrome' && browserInfo.version >= 107 && (location.protocol === 'https:' || location.hostname === 'localhost'); +} + +function checkSupportWCS() { + return "VideoEncoder" in window; +} + +function checkSupportWasm() { + try { + if (typeof window.WebAssembly === 'object' && typeof window.WebAssembly.instantiate === 'function') { + const module = new window.WebAssembly.Module(Uint8Array.of(0x0, 0x61, 0x73, 0x6d, 0x01, 0x00, 0x00, 0x00)); + if (module instanceof window.WebAssembly.Module) { + return new window.WebAssembly.Instance(module) instanceof window.WebAssembly.Instance; + } + } + return false; + } catch (e) { + return false; + } +} + + +function checkSupportSIMD() { + return WebAssembly && WebAssembly.validate(new Uint8Array([0, 97, 115, 109, 1, 0, 0, 0, 1, 5, 1, 96, 0, 1, 123, 3, 2, 1, 0, 10, 10, 1, 8, 0, 65, 0, 253, 15, 253, 98, 11])); +} + +let support = document.getElementById('mseSupport'); +let notSupport = document.getElementById('mseNotSupport'); +if (support && notSupport) { + if (checkSupportMSEHevc()) { + support.style.display = 'inline-block' + } else { + notSupport.style.display = 'inline-block' + } +} + + +let supportH264 = document.getElementById('mseSupport264'); +let notSupportH264 = document.getElementById('mseNotSupport264'); +if (supportH264 && notSupportH264) { + if (checkSupportMSEH264()) { + supportH264.style.display = 'inline-block' + } else { + notSupportH264.style.display = 'inline-block' + } +} + + +let supportWcsHevc = document.getElementById('wcsSupport'); +let notSupportWcsHevc = document.getElementById('wcsNotSupport'); + +if (supportWcsHevc && notSupportWcsHevc) { + if (checkSupportWCSHevc()) { + supportWcsHevc.style.display = 'inline-block'; + } else { + notSupportWcsHevc.style.display = 'inline-block' + } +} + +let supportWcs = document.getElementById('wcsSupport264'); +let notSupportWcs = document.getElementById('wcsNotSupport264'); + +if (supportWcs && notSupportWcs) { + if (checkSupportWCS()) { + supportWcs.style.display = 'inline-block'; + } else { + notSupportWcs.style.display = 'inline-block' + } +} + +let wasmSupport = document.getElementById('wasmSupport'); +let wasmNotSupport = document.getElementById('wasmNotSupport'); + +if (wasmSupport && wasmNotSupport) { + if (checkSupportWasm()) { + wasmSupport.style.display = 'inline-block'; + } else { + wasmNotSupport.style.display = 'inline-block'; + } +} + + +let supportSimd = document.getElementById('simdSupport'); +let notSupportSimd = document.getElementById('simdNotSupport'); + +if (supportSimd && notSupportSimd) { + if (checkSupportSIMD()) { + supportSimd.style.display = 'inline-block'; + } else { + notSupportSimd.style.display = 'inline-block' + } +} + + +function isMobile() { + return (/iphone|ipad|android.*mobile|windows.*phone|blackberry.*mobile/i.test(window.navigator.userAgent.toLowerCase())); +} + +function isPad() { + return (/ipad|android(?!.*mobile)|tablet|kindle|silk/i.test(window.navigator.userAgent.toLowerCase())); +} + +const useVconsole = isMobile() || isPad() + +if (useVconsole && window.VConsole) { + new window.VConsole(); +} diff --git a/html-demo/js/decoder-pro-audio.js b/html-demo/js/decoder-pro-audio.js new file mode 100644 index 0000000..cedd07a --- /dev/null +++ b/html-demo/js/decoder-pro-audio.js @@ -0,0 +1 @@ +!function(e){"function"==typeof define&&define.amd?define(e):e()}((function(){"use strict";var e,t=(e="undefined"==typeof document&&"undefined"==typeof location?new(require("url").URL)("file:"+__filename).href:"undefined"==typeof document?location.href:document.currentScript&&document.currentScript.src||new URL("decoder-pro-audio.js",document.baseURI).href,function(t){var r,i;(t=void 0!==(t=t||{})?t:{}).ready=new Promise((function(e,t){r=e,i=t})),(t=void 0!==t?t:{}).locateFile=function(e){return"decoder-pro-audio.wasm"==e&&"undefined"!=typeof EASYPLAYER_PRO_AUDIO_WASM_URL&&""!=EASYPLAYER_PRO_AUDIO_WASM_URL?EASYPLAYER_PRO_AUDIO_WASM_URL:e};var s,n,a,o,d,l,u=Object.assign({},t),h="./this.program",c="object"==typeof window,f="function"==typeof importScripts,p="object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node,m="";p?(m=f?require("path").dirname(m)+"/":__dirname+"/",l=()=>{d||(o=require("fs"),d=require("path"))},s=function(e,t){return l(),e=d.normalize(e),o.readFileSync(e,t?void 0:"utf8")},a=e=>{var t=s(e,!0);return t.buffer||(t=new Uint8Array(t)),t},n=(e,t,r)=>{l(),e=d.normalize(e),o.readFile(e,(function(e,i){e?r(e):t(i.buffer)}))},process.argv.length>1&&(h=process.argv[1].replace(/\\/g,"/")),process.argv.slice(2),process.on("uncaughtException",(function(e){if(!(e instanceof ee))throw e})),process.on("unhandledRejection",(function(e){throw e})),t.inspect=function(){return"[Emscripten Module object]"}):(c||f)&&(f?m=self.location.href:"undefined"!=typeof document&&document.currentScript&&(m=document.currentScript.src),e&&(m=e),m=0!==m.indexOf("blob:")?m.substr(0,m.replace(/[?#].*/,"").lastIndexOf("/")+1):"",s=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.send(null),t.responseText},f&&(a=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.responseType="arraybuffer",t.send(null),new Uint8Array(t.response)}),n=(e,t,r)=>{var i=new XMLHttpRequest;i.open("GET",e,!0),i.responseType="arraybuffer",i.onload=()=>{200==i.status||0==i.status&&i.response?t(i.response):r()},i.onerror=r,i.send(null)});var _=t.print||console.log.bind(console),g=t.printErr||console.warn.bind(console);Object.assign(t,u),u=null,t.arguments&&t.arguments,t.thisProgram&&(h=t.thisProgram),t.quit&&t.quit;var y,b,v=4;t.wasmBinary&&(y=t.wasmBinary),t.noExitRuntime,"object"!=typeof WebAssembly&&W("no native wasm support detected");var w=!1;function S(e,t){e||W(t)}var E,U,x,A,B,k,T,C,D,F,I="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0;function P(e,t,r){for(var i=t+r,s=t;e[s]&&!(s>=i);)++s;if(s-t>16&&e.buffer&&I)return I.decode(e.subarray(t,s));for(var n="";t>10,56320|1023&l)}}else n+=String.fromCharCode((31&a)<<6|o)}else n+=String.fromCharCode(a)}return n}function L(e,t){return e?P(x,e,t):""}function z(e,t,r,i){if(!(i>0))return 0;for(var s=r,n=r+i-1,a=0;a=55296&&o<=57343&&(o=65536+((1023&o)<<10)|1023&e.charCodeAt(++a)),o<=127){if(r>=n)break;t[r++]=o}else if(o<=2047){if(r+1>=n)break;t[r++]=192|o>>6,t[r++]=128|63&o}else if(o<=65535){if(r+2>=n)break;t[r++]=224|o>>12,t[r++]=128|o>>6&63,t[r++]=128|63&o}else{if(r+3>=n)break;t[r++]=240|o>>18,t[r++]=128|o>>12&63,t[r++]=128|o>>6&63,t[r++]=128|63&o}}return t[r]=0,r-s}function R(e){for(var t=0,r=0;r=55296&&i<=57343?(t+=4,++r):t+=3}return t}t.INITIAL_MEMORY;var M=[],N=[],O=[],G=0,H=null;function $(e){G++,t.monitorRunDependencies&&t.monitorRunDependencies(G)}function V(e){if(G--,t.monitorRunDependencies&&t.monitorRunDependencies(G),0==G&&H){var r=H;H=null,r()}}function W(e){t.onAbort&&t.onAbort(e),g(e="Aborted("+e+")"),w=!0,e+=". Build with -sASSERTIONS for more info.";var r=new WebAssembly.RuntimeError(e);throw i(r),r}var j,Y,q,K,X="data:application/octet-stream;base64,";function Z(e){return e.startsWith(X)}function J(e){return e.startsWith("file://")}function Q(e){try{if(e==j&&y)return new Uint8Array(y);if(a)return a(e);throw"both async and sync fetching of the wasm failed"}catch(e){W(e)}}function ee(e){this.name="ExitStatus",this.message="Program terminated with exit("+e+")",this.status=e}function te(e){for(;e.length>0;)e.shift()(t)}function re(e){this.excPtr=e,this.ptr=e-24,this.set_type=function(e){T[this.ptr+4>>2]=e},this.get_type=function(){return T[this.ptr+4>>2]},this.set_destructor=function(e){T[this.ptr+8>>2]=e},this.get_destructor=function(){return T[this.ptr+8>>2]},this.set_refcount=function(e){k[this.ptr>>2]=e},this.set_caught=function(e){e=e?1:0,U[this.ptr+12|0]=e},this.get_caught=function(){return 0!=U[this.ptr+12|0]},this.set_rethrown=function(e){e=e?1:0,U[this.ptr+13|0]=e},this.get_rethrown=function(){return 0!=U[this.ptr+13|0]},this.init=function(e,t){this.set_adjusted_ptr(0),this.set_type(e),this.set_destructor(t),this.set_refcount(0),this.set_caught(!1),this.set_rethrown(!1)},this.add_ref=function(){var e=k[this.ptr>>2];k[this.ptr>>2]=e+1},this.release_ref=function(){var e=k[this.ptr>>2];return k[this.ptr>>2]=e-1,1===e},this.set_adjusted_ptr=function(e){T[this.ptr+16>>2]=e},this.get_adjusted_ptr=function(){return T[this.ptr+16>>2]},this.get_exception_ptr=function(){if(Xt(this.get_type()))return T[this.excPtr>>2];var e=this.get_adjusted_ptr();return 0!==e?e:this.excPtr}}t.locateFile?Z(j="decoder-pro-audio.wasm")||(Y=j,j=t.locateFile?t.locateFile(Y,m):m+Y):j=new URL("decoder-pro-audio.wasm","undefined"==typeof document&&"undefined"==typeof location?new(require("url").URL)("file:"+__filename).href:"undefined"==typeof document?location.href:document.currentScript&&document.currentScript.src||new URL("decoder-pro-audio.js",document.baseURI).href).toString();var ie={isAbs:e=>"/"===e.charAt(0),splitPath:e=>/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(e).slice(1),normalizeArray:(e,t)=>{for(var r=0,i=e.length-1;i>=0;i--){var s=e[i];"."===s?e.splice(i,1):".."===s?(e.splice(i,1),r++):r&&(e.splice(i,1),r--)}if(t)for(;r;r--)e.unshift("..");return e},normalize:e=>{var t=ie.isAbs(e),r="/"===e.substr(-1);return(e=ie.normalizeArray(e.split("/").filter((e=>!!e)),!t).join("/"))||t||(e="."),e&&r&&(e+="/"),(t?"/":"")+e},dirname:e=>{var t=ie.splitPath(e),r=t[0],i=t[1];return r||i?(i&&(i=i.substr(0,i.length-1)),r+i):"."},basename:e=>{if("/"===e)return"/";var t=(e=(e=ie.normalize(e)).replace(/\/$/,"")).lastIndexOf("/");return-1===t?e:e.substr(t+1)},join:function(){var e=Array.prototype.slice.call(arguments,0);return ie.normalize(e.join("/"))},join2:(e,t)=>ie.normalize(e+"/"+t)},se={resolve:function(){for(var e="",t=!1,r=arguments.length-1;r>=-1&&!t;r--){var i=r>=0?arguments[r]:le.cwd();if("string"!=typeof i)throw new TypeError("Arguments to path.resolve must be strings");if(!i)return"";e=i+"/"+e,t=ie.isAbs(i)}return(t?"/":"")+(e=ie.normalizeArray(e.split("/").filter((e=>!!e)),!t).join("/"))||"."},relative:(e,t)=>{function r(e){for(var t=0;t=0&&""===e[r];r--);return t>r?[]:e.slice(t,r-t+1)}e=se.resolve(e).substr(1),t=se.resolve(t).substr(1);for(var i=r(e.split("/")),s=r(t.split("/")),n=Math.min(i.length,s.length),a=n,o=0;o0?r:R(e)+1,s=new Array(i),n=z(e,s,0,s.length);return t&&(s.length=n),s}var ae={ttys:[],init:function(){},shutdown:function(){},register:function(e,t){ae.ttys[e]={input:[],output:[],ops:t},le.registerDevice(e,ae.stream_ops)},stream_ops:{open:function(e){var t=ae.ttys[e.node.rdev];if(!t)throw new le.ErrnoError(43);e.tty=t,e.seekable=!1},close:function(e){e.tty.ops.flush(e.tty)},flush:function(e){e.tty.ops.flush(e.tty)},read:function(e,t,r,i,s){if(!e.tty||!e.tty.ops.get_char)throw new le.ErrnoError(60);for(var n=0,a=0;a0?r.slice(0,i).toString("utf-8"):null}else"undefined"!=typeof window&&"function"==typeof window.prompt?null!==(t=window.prompt("Input: "))&&(t+="\n"):"function"==typeof readline&&null!==(t=readline())&&(t+="\n");if(!t)return null;e.input=ne(t,!0)}return e.input.shift()},put_char:function(e,t){null===t||10===t?(_(P(e.output,0)),e.output=[]):0!=t&&e.output.push(t)},flush:function(e){e.output&&e.output.length>0&&(_(P(e.output,0)),e.output=[])}},default_tty1_ops:{put_char:function(e,t){null===t||10===t?(g(P(e.output,0)),e.output=[]):0!=t&&e.output.push(t)},flush:function(e){e.output&&e.output.length>0&&(g(P(e.output,0)),e.output=[])}}};function oe(e){e=function(e,t){return Math.ceil(e/t)*t}(e,65536);var t=Kt(65536,e);return t?(function(e,t){x.fill(0,e,e+t)}(t,e),t):0}var de={ops_table:null,mount:function(e){return de.createNode(null,"/",16895,0)},createNode:function(e,t,r,i){if(le.isBlkdev(r)||le.isFIFO(r))throw new le.ErrnoError(63);de.ops_table||(de.ops_table={dir:{node:{getattr:de.node_ops.getattr,setattr:de.node_ops.setattr,lookup:de.node_ops.lookup,mknod:de.node_ops.mknod,rename:de.node_ops.rename,unlink:de.node_ops.unlink,rmdir:de.node_ops.rmdir,readdir:de.node_ops.readdir,symlink:de.node_ops.symlink},stream:{llseek:de.stream_ops.llseek}},file:{node:{getattr:de.node_ops.getattr,setattr:de.node_ops.setattr},stream:{llseek:de.stream_ops.llseek,read:de.stream_ops.read,write:de.stream_ops.write,allocate:de.stream_ops.allocate,mmap:de.stream_ops.mmap,msync:de.stream_ops.msync}},link:{node:{getattr:de.node_ops.getattr,setattr:de.node_ops.setattr,readlink:de.node_ops.readlink},stream:{}},chrdev:{node:{getattr:de.node_ops.getattr,setattr:de.node_ops.setattr},stream:le.chrdev_stream_ops}});var s=le.createNode(e,t,r,i);return le.isDir(s.mode)?(s.node_ops=de.ops_table.dir.node,s.stream_ops=de.ops_table.dir.stream,s.contents={}):le.isFile(s.mode)?(s.node_ops=de.ops_table.file.node,s.stream_ops=de.ops_table.file.stream,s.usedBytes=0,s.contents=null):le.isLink(s.mode)?(s.node_ops=de.ops_table.link.node,s.stream_ops=de.ops_table.link.stream):le.isChrdev(s.mode)&&(s.node_ops=de.ops_table.chrdev.node,s.stream_ops=de.ops_table.chrdev.stream),s.timestamp=Date.now(),e&&(e.contents[t]=s,e.timestamp=s.timestamp),s},getFileDataAsTypedArray:function(e){return e.contents?e.contents.subarray?e.contents.subarray(0,e.usedBytes):new Uint8Array(e.contents):new Uint8Array(0)},expandFileStorage:function(e,t){var r=e.contents?e.contents.length:0;if(!(r>=t)){t=Math.max(t,r*(r<1048576?2:1.125)>>>0),0!=r&&(t=Math.max(t,256));var i=e.contents;e.contents=new Uint8Array(t),e.usedBytes>0&&e.contents.set(i.subarray(0,e.usedBytes),0)}},resizeFileStorage:function(e,t){if(e.usedBytes!=t)if(0==t)e.contents=null,e.usedBytes=0;else{var r=e.contents;e.contents=new Uint8Array(t),r&&e.contents.set(r.subarray(0,Math.min(t,e.usedBytes))),e.usedBytes=t}},node_ops:{getattr:function(e){var t={};return t.dev=le.isChrdev(e.mode)?e.id:1,t.ino=e.id,t.mode=e.mode,t.nlink=1,t.uid=0,t.gid=0,t.rdev=e.rdev,le.isDir(e.mode)?t.size=4096:le.isFile(e.mode)?t.size=e.usedBytes:le.isLink(e.mode)?t.size=e.link.length:t.size=0,t.atime=new Date(e.timestamp),t.mtime=new Date(e.timestamp),t.ctime=new Date(e.timestamp),t.blksize=4096,t.blocks=Math.ceil(t.size/t.blksize),t},setattr:function(e,t){void 0!==t.mode&&(e.mode=t.mode),void 0!==t.timestamp&&(e.timestamp=t.timestamp),void 0!==t.size&&de.resizeFileStorage(e,t.size)},lookup:function(e,t){throw le.genericErrors[44]},mknod:function(e,t,r,i){return de.createNode(e,t,r,i)},rename:function(e,t,r){if(le.isDir(e.mode)){var i;try{i=le.lookupNode(t,r)}catch(e){}if(i)for(var s in i.contents)throw new le.ErrnoError(55)}delete e.parent.contents[e.name],e.parent.timestamp=Date.now(),e.name=r,t.contents[r]=e,t.timestamp=e.parent.timestamp,e.parent=t},unlink:function(e,t){delete e.contents[t],e.timestamp=Date.now()},rmdir:function(e,t){var r=le.lookupNode(e,t);for(var i in r.contents)throw new le.ErrnoError(55);delete e.contents[t],e.timestamp=Date.now()},readdir:function(e){var t=[".",".."];for(var r in e.contents)e.contents.hasOwnProperty(r)&&t.push(r);return t},symlink:function(e,t,r){var i=de.createNode(e,t,41471,0);return i.link=r,i},readlink:function(e){if(!le.isLink(e.mode))throw new le.ErrnoError(28);return e.link}},stream_ops:{read:function(e,t,r,i,s){var n=e.node.contents;if(s>=e.node.usedBytes)return 0;var a=Math.min(e.node.usedBytes-s,i);if(a>8&&n.subarray)t.set(n.subarray(s,s+a),r);else for(var o=0;o0||r+t{if(!(e=se.resolve(le.cwd(),e)))return{path:"",node:null};if((t=Object.assign({follow_mount:!0,recurse_count:0},t)).recurse_count>8)throw new le.ErrnoError(32);for(var r=ie.normalizeArray(e.split("/").filter((e=>!!e)),!1),i=le.root,s="/",n=0;n40)throw new le.ErrnoError(32)}}return{path:s,node:i}},getPath:e=>{for(var t;;){if(le.isRoot(e)){var r=e.mount.mountpoint;return t?"/"!==r[r.length-1]?r+"/"+t:r+t:r}t=t?e.name+"/"+t:e.name,e=e.parent}},hashName:(e,t)=>{for(var r=0,i=0;i>>0)%le.nameTable.length},hashAddNode:e=>{var t=le.hashName(e.parent.id,e.name);e.name_next=le.nameTable[t],le.nameTable[t]=e},hashRemoveNode:e=>{var t=le.hashName(e.parent.id,e.name);if(le.nameTable[t]===e)le.nameTable[t]=e.name_next;else for(var r=le.nameTable[t];r;){if(r.name_next===e){r.name_next=e.name_next;break}r=r.name_next}},lookupNode:(e,t)=>{var r=le.mayLookup(e);if(r)throw new le.ErrnoError(r,e);for(var i=le.hashName(e.id,t),s=le.nameTable[i];s;s=s.name_next){var n=s.name;if(s.parent.id===e.id&&n===t)return s}return le.lookup(e,t)},createNode:(e,t,r,i)=>{var s=new le.FSNode(e,t,r,i);return le.hashAddNode(s),s},destroyNode:e=>{le.hashRemoveNode(e)},isRoot:e=>e===e.parent,isMountpoint:e=>!!e.mounted,isFile:e=>32768==(61440&e),isDir:e=>16384==(61440&e),isLink:e=>40960==(61440&e),isChrdev:e=>8192==(61440&e),isBlkdev:e=>24576==(61440&e),isFIFO:e=>4096==(61440&e),isSocket:e=>!(49152&~e),flagModes:{r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090},modeStringToFlags:e=>{var t=le.flagModes[e];if(void 0===t)throw new Error("Unknown file open mode: "+e);return t},flagsToPermissionString:e=>{var t=["r","w","rw"][3&e];return 512&e&&(t+="w"),t},nodePermissions:(e,t)=>le.ignorePermissions||(!t.includes("r")||292&e.mode)&&(!t.includes("w")||146&e.mode)&&(!t.includes("x")||73&e.mode)?0:2,mayLookup:e=>{var t=le.nodePermissions(e,"x");return t||(e.node_ops.lookup?0:2)},mayCreate:(e,t)=>{try{return le.lookupNode(e,t),20}catch(e){}return le.nodePermissions(e,"wx")},mayDelete:(e,t,r)=>{var i;try{i=le.lookupNode(e,t)}catch(e){return e.errno}var s=le.nodePermissions(e,"wx");if(s)return s;if(r){if(!le.isDir(i.mode))return 54;if(le.isRoot(i)||le.getPath(i)===le.cwd())return 10}else if(le.isDir(i.mode))return 31;return 0},mayOpen:(e,t)=>e?le.isLink(e.mode)?32:le.isDir(e.mode)&&("r"!==le.flagsToPermissionString(t)||512&t)?31:le.nodePermissions(e,le.flagsToPermissionString(t)):44,MAX_OPEN_FDS:4096,nextfd:(e=0,t=le.MAX_OPEN_FDS)=>{for(var r=e;r<=t;r++)if(!le.streams[r])return r;throw new le.ErrnoError(33)},getStream:e=>le.streams[e],createStream:(e,t,r)=>{le.FSStream||(le.FSStream=function(){this.shared={}},le.FSStream.prototype={},Object.defineProperties(le.FSStream.prototype,{object:{get:function(){return this.node},set:function(e){this.node=e}},isRead:{get:function(){return 1!=(2097155&this.flags)}},isWrite:{get:function(){return!!(2097155&this.flags)}},isAppend:{get:function(){return 1024&this.flags}},flags:{get:function(){return this.shared.flags},set:function(e){this.shared.flags=e}},position:{get:function(){return this.shared.position},set:function(e){this.shared.position=e}}})),e=Object.assign(new le.FSStream,e);var i=le.nextfd(t,r);return e.fd=i,le.streams[i]=e,e},closeStream:e=>{le.streams[e]=null},chrdev_stream_ops:{open:e=>{var t=le.getDevice(e.node.rdev);e.stream_ops=t.stream_ops,e.stream_ops.open&&e.stream_ops.open(e)},llseek:()=>{throw new le.ErrnoError(70)}},major:e=>e>>8,minor:e=>255&e,makedev:(e,t)=>e<<8|t,registerDevice:(e,t)=>{le.devices[e]={stream_ops:t}},getDevice:e=>le.devices[e],getMounts:e=>{for(var t=[],r=[e];r.length;){var i=r.pop();t.push(i),r.push.apply(r,i.mounts)}return t},syncfs:(e,t)=>{"function"==typeof e&&(t=e,e=!1),le.syncFSRequests++,le.syncFSRequests>1&&g("warning: "+le.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work");var r=le.getMounts(le.root.mount),i=0;function s(e){return le.syncFSRequests--,t(e)}function n(e){if(e)return n.errored?void 0:(n.errored=!0,s(e));++i>=r.length&&s(null)}r.forEach((t=>{if(!t.type.syncfs)return n(null);t.type.syncfs(t,e,n)}))},mount:(e,t,r)=>{var i,s="/"===r,n=!r;if(s&&le.root)throw new le.ErrnoError(10);if(!s&&!n){var a=le.lookupPath(r,{follow_mount:!1});if(r=a.path,i=a.node,le.isMountpoint(i))throw new le.ErrnoError(10);if(!le.isDir(i.mode))throw new le.ErrnoError(54)}var o={type:e,opts:t,mountpoint:r,mounts:[]},d=e.mount(o);return d.mount=o,o.root=d,s?le.root=d:i&&(i.mounted=o,i.mount&&i.mount.mounts.push(o)),d},unmount:e=>{var t=le.lookupPath(e,{follow_mount:!1});if(!le.isMountpoint(t.node))throw new le.ErrnoError(28);var r=t.node,i=r.mounted,s=le.getMounts(i);Object.keys(le.nameTable).forEach((e=>{for(var t=le.nameTable[e];t;){var r=t.name_next;s.includes(t.mount)&&le.destroyNode(t),t=r}})),r.mounted=null;var n=r.mount.mounts.indexOf(i);r.mount.mounts.splice(n,1)},lookup:(e,t)=>e.node_ops.lookup(e,t),mknod:(e,t,r)=>{var i=le.lookupPath(e,{parent:!0}).node,s=ie.basename(e);if(!s||"."===s||".."===s)throw new le.ErrnoError(28);var n=le.mayCreate(i,s);if(n)throw new le.ErrnoError(n);if(!i.node_ops.mknod)throw new le.ErrnoError(63);return i.node_ops.mknod(i,s,t,r)},create:(e,t)=>(t=void 0!==t?t:438,t&=4095,t|=32768,le.mknod(e,t,0)),mkdir:(e,t)=>(t=void 0!==t?t:511,t&=1023,t|=16384,le.mknod(e,t,0)),mkdirTree:(e,t)=>{for(var r=e.split("/"),i="",s=0;s(void 0===r&&(r=t,t=438),t|=8192,le.mknod(e,t,r)),symlink:(e,t)=>{if(!se.resolve(e))throw new le.ErrnoError(44);var r=le.lookupPath(t,{parent:!0}).node;if(!r)throw new le.ErrnoError(44);var i=ie.basename(t),s=le.mayCreate(r,i);if(s)throw new le.ErrnoError(s);if(!r.node_ops.symlink)throw new le.ErrnoError(63);return r.node_ops.symlink(r,i,e)},rename:(e,t)=>{var r,i,s=ie.dirname(e),n=ie.dirname(t),a=ie.basename(e),o=ie.basename(t);if(r=le.lookupPath(e,{parent:!0}).node,i=le.lookupPath(t,{parent:!0}).node,!r||!i)throw new le.ErrnoError(44);if(r.mount!==i.mount)throw new le.ErrnoError(75);var d,l=le.lookupNode(r,a),u=se.relative(e,n);if("."!==u.charAt(0))throw new le.ErrnoError(28);if("."!==(u=se.relative(t,s)).charAt(0))throw new le.ErrnoError(55);try{d=le.lookupNode(i,o)}catch(e){}if(l!==d){var h=le.isDir(l.mode),c=le.mayDelete(r,a,h);if(c)throw new le.ErrnoError(c);if(c=d?le.mayDelete(i,o,h):le.mayCreate(i,o))throw new le.ErrnoError(c);if(!r.node_ops.rename)throw new le.ErrnoError(63);if(le.isMountpoint(l)||d&&le.isMountpoint(d))throw new le.ErrnoError(10);if(i!==r&&(c=le.nodePermissions(r,"w")))throw new le.ErrnoError(c);le.hashRemoveNode(l);try{r.node_ops.rename(l,i,o)}catch(e){throw e}finally{le.hashAddNode(l)}}},rmdir:e=>{var t=le.lookupPath(e,{parent:!0}).node,r=ie.basename(e),i=le.lookupNode(t,r),s=le.mayDelete(t,r,!0);if(s)throw new le.ErrnoError(s);if(!t.node_ops.rmdir)throw new le.ErrnoError(63);if(le.isMountpoint(i))throw new le.ErrnoError(10);t.node_ops.rmdir(t,r),le.destroyNode(i)},readdir:e=>{var t=le.lookupPath(e,{follow:!0}).node;if(!t.node_ops.readdir)throw new le.ErrnoError(54);return t.node_ops.readdir(t)},unlink:e=>{var t=le.lookupPath(e,{parent:!0}).node;if(!t)throw new le.ErrnoError(44);var r=ie.basename(e),i=le.lookupNode(t,r),s=le.mayDelete(t,r,!1);if(s)throw new le.ErrnoError(s);if(!t.node_ops.unlink)throw new le.ErrnoError(63);if(le.isMountpoint(i))throw new le.ErrnoError(10);t.node_ops.unlink(t,r),le.destroyNode(i)},readlink:e=>{var t=le.lookupPath(e).node;if(!t)throw new le.ErrnoError(44);if(!t.node_ops.readlink)throw new le.ErrnoError(28);return se.resolve(le.getPath(t.parent),t.node_ops.readlink(t))},stat:(e,t)=>{var r=le.lookupPath(e,{follow:!t}).node;if(!r)throw new le.ErrnoError(44);if(!r.node_ops.getattr)throw new le.ErrnoError(63);return r.node_ops.getattr(r)},lstat:e=>le.stat(e,!0),chmod:(e,t,r)=>{var i;if(!(i="string"==typeof e?le.lookupPath(e,{follow:!r}).node:e).node_ops.setattr)throw new le.ErrnoError(63);i.node_ops.setattr(i,{mode:4095&t|-4096&i.mode,timestamp:Date.now()})},lchmod:(e,t)=>{le.chmod(e,t,!0)},fchmod:(e,t)=>{var r=le.getStream(e);if(!r)throw new le.ErrnoError(8);le.chmod(r.node,t)},chown:(e,t,r,i)=>{var s;if(!(s="string"==typeof e?le.lookupPath(e,{follow:!i}).node:e).node_ops.setattr)throw new le.ErrnoError(63);s.node_ops.setattr(s,{timestamp:Date.now()})},lchown:(e,t,r)=>{le.chown(e,t,r,!0)},fchown:(e,t,r)=>{var i=le.getStream(e);if(!i)throw new le.ErrnoError(8);le.chown(i.node,t,r)},truncate:(e,t)=>{if(t<0)throw new le.ErrnoError(28);var r;if(!(r="string"==typeof e?le.lookupPath(e,{follow:!0}).node:e).node_ops.setattr)throw new le.ErrnoError(63);if(le.isDir(r.mode))throw new le.ErrnoError(31);if(!le.isFile(r.mode))throw new le.ErrnoError(28);var i=le.nodePermissions(r,"w");if(i)throw new le.ErrnoError(i);r.node_ops.setattr(r,{size:t,timestamp:Date.now()})},ftruncate:(e,t)=>{var r=le.getStream(e);if(!r)throw new le.ErrnoError(8);if(!(2097155&r.flags))throw new le.ErrnoError(28);le.truncate(r.node,t)},utime:(e,t,r)=>{var i=le.lookupPath(e,{follow:!0}).node;i.node_ops.setattr(i,{timestamp:Math.max(t,r)})},open:(e,r,i)=>{if(""===e)throw new le.ErrnoError(44);var s;if(i=void 0===i?438:i,i=64&(r="string"==typeof r?le.modeStringToFlags(r):r)?4095&i|32768:0,"object"==typeof e)s=e;else{e=ie.normalize(e);try{s=le.lookupPath(e,{follow:!(131072&r)}).node}catch(e){}}var n=!1;if(64&r)if(s){if(128&r)throw new le.ErrnoError(20)}else s=le.mknod(e,i,0),n=!0;if(!s)throw new le.ErrnoError(44);if(le.isChrdev(s.mode)&&(r&=-513),65536&r&&!le.isDir(s.mode))throw new le.ErrnoError(54);if(!n){var a=le.mayOpen(s,r);if(a)throw new le.ErrnoError(a)}512&r&&!n&&le.truncate(s,0),r&=-131713;var o=le.createStream({node:s,path:le.getPath(s),flags:r,seekable:!0,position:0,stream_ops:s.stream_ops,ungotten:[],error:!1});return o.stream_ops.open&&o.stream_ops.open(o),!t.logReadFiles||1&r||(le.readFiles||(le.readFiles={}),e in le.readFiles||(le.readFiles[e]=1)),o},close:e=>{if(le.isClosed(e))throw new le.ErrnoError(8);e.getdents&&(e.getdents=null);try{e.stream_ops.close&&e.stream_ops.close(e)}catch(e){throw e}finally{le.closeStream(e.fd)}e.fd=null},isClosed:e=>null===e.fd,llseek:(e,t,r)=>{if(le.isClosed(e))throw new le.ErrnoError(8);if(!e.seekable||!e.stream_ops.llseek)throw new le.ErrnoError(70);if(0!=r&&1!=r&&2!=r)throw new le.ErrnoError(28);return e.position=e.stream_ops.llseek(e,t,r),e.ungotten=[],e.position},read:(e,t,r,i,s)=>{if(i<0||s<0)throw new le.ErrnoError(28);if(le.isClosed(e))throw new le.ErrnoError(8);if(1==(2097155&e.flags))throw new le.ErrnoError(8);if(le.isDir(e.node.mode))throw new le.ErrnoError(31);if(!e.stream_ops.read)throw new le.ErrnoError(28);var n=void 0!==s;if(n){if(!e.seekable)throw new le.ErrnoError(70)}else s=e.position;var a=e.stream_ops.read(e,t,r,i,s);return n||(e.position+=a),a},write:(e,t,r,i,s,n)=>{if(i<0||s<0)throw new le.ErrnoError(28);if(le.isClosed(e))throw new le.ErrnoError(8);if(!(2097155&e.flags))throw new le.ErrnoError(8);if(le.isDir(e.node.mode))throw new le.ErrnoError(31);if(!e.stream_ops.write)throw new le.ErrnoError(28);e.seekable&&1024&e.flags&&le.llseek(e,0,2);var a=void 0!==s;if(a){if(!e.seekable)throw new le.ErrnoError(70)}else s=e.position;var o=e.stream_ops.write(e,t,r,i,s,n);return a||(e.position+=o),o},allocate:(e,t,r)=>{if(le.isClosed(e))throw new le.ErrnoError(8);if(t<0||r<=0)throw new le.ErrnoError(28);if(!(2097155&e.flags))throw new le.ErrnoError(8);if(!le.isFile(e.node.mode)&&!le.isDir(e.node.mode))throw new le.ErrnoError(43);if(!e.stream_ops.allocate)throw new le.ErrnoError(138);e.stream_ops.allocate(e,t,r)},mmap:(e,t,r,i,s)=>{if(2&i&&!(2&s)&&2!=(2097155&e.flags))throw new le.ErrnoError(2);if(1==(2097155&e.flags))throw new le.ErrnoError(2);if(!e.stream_ops.mmap)throw new le.ErrnoError(43);return e.stream_ops.mmap(e,t,r,i,s)},msync:(e,t,r,i,s)=>e&&e.stream_ops.msync?e.stream_ops.msync(e,t,r,i,s):0,munmap:e=>0,ioctl:(e,t,r)=>{if(!e.stream_ops.ioctl)throw new le.ErrnoError(59);return e.stream_ops.ioctl(e,t,r)},readFile:(e,t={})=>{if(t.flags=t.flags||0,t.encoding=t.encoding||"binary","utf8"!==t.encoding&&"binary"!==t.encoding)throw new Error('Invalid encoding type "'+t.encoding+'"');var r,i=le.open(e,t.flags),s=le.stat(e).size,n=new Uint8Array(s);return le.read(i,n,0,s,0),"utf8"===t.encoding?r=P(n,0):"binary"===t.encoding&&(r=n),le.close(i),r},writeFile:(e,t,r={})=>{r.flags=r.flags||577;var i=le.open(e,r.flags,r.mode);if("string"==typeof t){var s=new Uint8Array(R(t)+1),n=z(t,s,0,s.length);le.write(i,s,0,n,void 0,r.canOwn)}else{if(!ArrayBuffer.isView(t))throw new Error("Unsupported data type");le.write(i,t,0,t.byteLength,void 0,r.canOwn)}le.close(i)},cwd:()=>le.currentPath,chdir:e=>{var t=le.lookupPath(e,{follow:!0});if(null===t.node)throw new le.ErrnoError(44);if(!le.isDir(t.node.mode))throw new le.ErrnoError(54);var r=le.nodePermissions(t.node,"x");if(r)throw new le.ErrnoError(r);le.currentPath=t.path},createDefaultDirectories:()=>{le.mkdir("/tmp"),le.mkdir("/home"),le.mkdir("/home/web_user")},createDefaultDevices:()=>{le.mkdir("/dev"),le.registerDevice(le.makedev(1,3),{read:()=>0,write:(e,t,r,i,s)=>i}),le.mkdev("/dev/null",le.makedev(1,3)),ae.register(le.makedev(5,0),ae.default_tty_ops),ae.register(le.makedev(6,0),ae.default_tty1_ops),le.mkdev("/dev/tty",le.makedev(5,0)),le.mkdev("/dev/tty1",le.makedev(6,0));var e=function(){if("object"==typeof crypto&&"function"==typeof crypto.getRandomValues){var e=new Uint8Array(1);return()=>(crypto.getRandomValues(e),e[0])}if(p)try{var t=require("crypto");return()=>t.randomBytes(1)[0]}catch(e){}return()=>W("randomDevice")}();le.createDevice("/dev","random",e),le.createDevice("/dev","urandom",e),le.mkdir("/dev/shm"),le.mkdir("/dev/shm/tmp")},createSpecialDirectories:()=>{le.mkdir("/proc");var e=le.mkdir("/proc/self");le.mkdir("/proc/self/fd"),le.mount({mount:()=>{var t=le.createNode(e,"fd",16895,73);return t.node_ops={lookup:(e,t)=>{var r=+t,i=le.getStream(r);if(!i)throw new le.ErrnoError(8);var s={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>i.path}};return s.parent=s,s}},t}},{},"/proc/self/fd")},createStandardStreams:()=>{t.stdin?le.createDevice("/dev","stdin",t.stdin):le.symlink("/dev/tty","/dev/stdin"),t.stdout?le.createDevice("/dev","stdout",null,t.stdout):le.symlink("/dev/tty","/dev/stdout"),t.stderr?le.createDevice("/dev","stderr",null,t.stderr):le.symlink("/dev/tty1","/dev/stderr"),le.open("/dev/stdin",0),le.open("/dev/stdout",1),le.open("/dev/stderr",1)},ensureErrnoError:()=>{le.ErrnoError||(le.ErrnoError=function(e,t){this.node=t,this.setErrno=function(e){this.errno=e},this.setErrno(e),this.message="FS error"},le.ErrnoError.prototype=new Error,le.ErrnoError.prototype.constructor=le.ErrnoError,[44].forEach((e=>{le.genericErrors[e]=new le.ErrnoError(e),le.genericErrors[e].stack=""})))},staticInit:()=>{le.ensureErrnoError(),le.nameTable=new Array(4096),le.mount(de,{},"/"),le.createDefaultDirectories(),le.createDefaultDevices(),le.createSpecialDirectories(),le.filesystems={MEMFS:de}},init:(e,r,i)=>{le.init.initialized=!0,le.ensureErrnoError(),t.stdin=e||t.stdin,t.stdout=r||t.stdout,t.stderr=i||t.stderr,le.createStandardStreams()},quit:()=>{le.init.initialized=!1;for(var e=0;e{var r=0;return e&&(r|=365),t&&(r|=146),r},findObject:(e,t)=>{var r=le.analyzePath(e,t);return r.exists?r.object:null},analyzePath:(e,t)=>{try{e=(i=le.lookupPath(e,{follow:!t})).path}catch(e){}var r={isRoot:!1,exists:!1,error:0,name:null,path:null,object:null,parentExists:!1,parentPath:null,parentObject:null};try{var i=le.lookupPath(e,{parent:!0});r.parentExists=!0,r.parentPath=i.path,r.parentObject=i.node,r.name=ie.basename(e),i=le.lookupPath(e,{follow:!t}),r.exists=!0,r.path=i.path,r.object=i.node,r.name=i.node.name,r.isRoot="/"===i.path}catch(e){r.error=e.errno}return r},createPath:(e,t,r,i)=>{e="string"==typeof e?e:le.getPath(e);for(var s=t.split("/").reverse();s.length;){var n=s.pop();if(n){var a=ie.join2(e,n);try{le.mkdir(a)}catch(e){}e=a}}return a},createFile:(e,t,r,i,s)=>{var n=ie.join2("string"==typeof e?e:le.getPath(e),t),a=le.getMode(i,s);return le.create(n,a)},createDataFile:(e,t,r,i,s,n)=>{var a=t;e&&(e="string"==typeof e?e:le.getPath(e),a=t?ie.join2(e,t):e);var o=le.getMode(i,s),d=le.create(a,o);if(r){if("string"==typeof r){for(var l=new Array(r.length),u=0,h=r.length;u{var s=ie.join2("string"==typeof e?e:le.getPath(e),t),n=le.getMode(!!r,!!i);le.createDevice.major||(le.createDevice.major=64);var a=le.makedev(le.createDevice.major++,0);return le.registerDevice(a,{open:e=>{e.seekable=!1},close:e=>{i&&i.buffer&&i.buffer.length&&i(10)},read:(e,t,i,s,n)=>{for(var a=0,o=0;o{for(var a=0;a{if(e.isDevice||e.isFolder||e.link||e.contents)return!0;if("undefined"!=typeof XMLHttpRequest)throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.");if(!s)throw new Error("Cannot load without read() or XMLHttpRequest.");try{e.contents=ne(s(e.url),!0),e.usedBytes=e.contents.length}catch(e){throw new le.ErrnoError(29)}},createLazyFile:(e,t,r,i,s)=>{function n(){this.lengthKnown=!1,this.chunks=[]}if(n.prototype.get=function(e){if(!(e>this.length-1||e<0)){var t=e%this.chunkSize,r=e/this.chunkSize|0;return this.getter(r)[t]}},n.prototype.setDataGetter=function(e){this.getter=e},n.prototype.cacheLength=function(){var e=new XMLHttpRequest;if(e.open("HEAD",r,!1),e.send(null),!(e.status>=200&&e.status<300||304===e.status))throw new Error("Couldn't load "+r+". Status: "+e.status);var t,i=Number(e.getResponseHeader("Content-length")),s=(t=e.getResponseHeader("Accept-Ranges"))&&"bytes"===t,n=(t=e.getResponseHeader("Content-Encoding"))&&"gzip"===t,a=1048576;s||(a=i);var o=this;o.setDataGetter((e=>{var t=e*a,s=(e+1)*a-1;if(s=Math.min(s,i-1),void 0===o.chunks[e]&&(o.chunks[e]=((e,t)=>{if(e>t)throw new Error("invalid range ("+e+", "+t+") or no bytes requested!");if(t>i-1)throw new Error("only "+i+" bytes available! programmer error!");var s=new XMLHttpRequest;if(s.open("GET",r,!1),i!==a&&s.setRequestHeader("Range","bytes="+e+"-"+t),s.responseType="arraybuffer",s.overrideMimeType&&s.overrideMimeType("text/plain; charset=x-user-defined"),s.send(null),!(s.status>=200&&s.status<300||304===s.status))throw new Error("Couldn't load "+r+". Status: "+s.status);return void 0!==s.response?new Uint8Array(s.response||[]):ne(s.responseText||"",!0)})(t,s)),void 0===o.chunks[e])throw new Error("doXHR failed!");return o.chunks[e]})),!n&&i||(a=i=1,i=this.getter(0).length,a=i,_("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=i,this._chunkSize=a,this.lengthKnown=!0},"undefined"!=typeof XMLHttpRequest){if(!f)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var a=new n;Object.defineProperties(a,{length:{get:function(){return this.lengthKnown||this.cacheLength(),this._length}},chunkSize:{get:function(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}});var o={isDevice:!1,contents:a}}else o={isDevice:!1,url:r};var d=le.createFile(e,t,o,i,s);o.contents?d.contents=o.contents:o.url&&(d.contents=null,d.url=o.url),Object.defineProperties(d,{usedBytes:{get:function(){return this.contents.length}}});var l={};function u(e,t,r,i,s){var n=e.node.contents;if(s>=n.length)return 0;var a=Math.min(n.length-s,i);if(n.slice)for(var o=0;o{var t=d.stream_ops[e];l[e]=function(){return le.forceLoadFile(d),t.apply(null,arguments)}})),l.read=(e,t,r,i,s)=>(le.forceLoadFile(d),u(e,t,r,i,s)),l.mmap=(e,t,r,i,s)=>{le.forceLoadFile(d);var n=oe(t);if(!n)throw new le.ErrnoError(48);return u(e,U,n,t,r),{ptr:n,allocated:!0}},d.stream_ops=l,d},createPreloadedFile:(e,t,r,i,s,a,o,d,l,u)=>{var h=t?se.resolve(ie.join2(e,t)):e;function c(r){function n(r){u&&u(),d||le.createDataFile(e,t,r,i,s,l),a&&a(),V()}Browser.handledByPreloadPlugin(r,h,n,(()=>{o&&o(),V()}))||n(r)}$(),"string"==typeof r?function(e,t,r,i){var s=i?"":"al "+e;n(e,(r=>{S(r,'Loading data file "'+e+'" failed (no arrayBuffer).'),t(new Uint8Array(r)),s&&V()}),(t=>{if(!r)throw'Loading data file "'+e+'" failed.';r()})),s&&$()}(r,(e=>c(e)),o):c(r)},indexedDB:()=>window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB,DB_NAME:()=>"EM_FS_"+window.location.pathname,DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:(e,t,r)=>{t=t||(()=>{}),r=r||(()=>{});var i=le.indexedDB();try{var s=i.open(le.DB_NAME(),le.DB_VERSION)}catch(e){return r(e)}s.onupgradeneeded=()=>{_("creating db"),s.result.createObjectStore(le.DB_STORE_NAME)},s.onsuccess=()=>{var i=s.result.transaction([le.DB_STORE_NAME],"readwrite"),n=i.objectStore(le.DB_STORE_NAME),a=0,o=0,d=e.length;function l(){0==o?t():r()}e.forEach((e=>{var t=n.put(le.analyzePath(e).object.contents,e);t.onsuccess=()=>{++a+o==d&&l()},t.onerror=()=>{o++,a+o==d&&l()}})),i.onerror=r},s.onerror=r},loadFilesFromDB:(e,t,r)=>{t=t||(()=>{}),r=r||(()=>{});var i=le.indexedDB();try{var s=i.open(le.DB_NAME(),le.DB_VERSION)}catch(e){return r(e)}s.onupgradeneeded=r,s.onsuccess=()=>{var i=s.result;try{var n=i.transaction([le.DB_STORE_NAME],"readonly")}catch(e){return void r(e)}var a=n.objectStore(le.DB_STORE_NAME),o=0,d=0,l=e.length;function u(){0==d?t():r()}e.forEach((e=>{var t=a.get(e);t.onsuccess=()=>{le.analyzePath(e).exists&&le.unlink(e),le.createDataFile(ie.dirname(e),ie.basename(e),t.result,!0,!0,!0),++o+d==l&&u()},t.onerror=()=>{d++,o+d==l&&u()}})),n.onerror=r},s.onerror=r}},ue={DEFAULT_POLLMASK:5,calculateAt:function(e,t,r){if(ie.isAbs(t))return t;var i;if(-100===e)i=le.cwd();else{var s=le.getStream(e);if(!s)throw new le.ErrnoError(8);i=s.path}if(0==t.length){if(!r)throw new le.ErrnoError(44);return i}return ie.join2(i,t)},doStat:function(e,t,r){try{var i=e(t)}catch(e){if(e&&e.node&&ie.normalize(t)!==ie.normalize(le.getPath(e.node)))return-54;throw e}return k[r>>2]=i.dev,k[r+4>>2]=0,k[r+8>>2]=i.ino,k[r+12>>2]=i.mode,k[r+16>>2]=i.nlink,k[r+20>>2]=i.uid,k[r+24>>2]=i.gid,k[r+28>>2]=i.rdev,k[r+32>>2]=0,K=[i.size>>>0,(q=i.size,+Math.abs(q)>=1?q>0?(0|Math.min(+Math.floor(q/4294967296),4294967295))>>>0:~~+Math.ceil((q-+(~~q>>>0))/4294967296)>>>0:0)],k[r+40>>2]=K[0],k[r+44>>2]=K[1],k[r+48>>2]=4096,k[r+52>>2]=i.blocks,K=[Math.floor(i.atime.getTime()/1e3)>>>0,(q=Math.floor(i.atime.getTime()/1e3),+Math.abs(q)>=1?q>0?(0|Math.min(+Math.floor(q/4294967296),4294967295))>>>0:~~+Math.ceil((q-+(~~q>>>0))/4294967296)>>>0:0)],k[r+56>>2]=K[0],k[r+60>>2]=K[1],k[r+64>>2]=0,K=[Math.floor(i.mtime.getTime()/1e3)>>>0,(q=Math.floor(i.mtime.getTime()/1e3),+Math.abs(q)>=1?q>0?(0|Math.min(+Math.floor(q/4294967296),4294967295))>>>0:~~+Math.ceil((q-+(~~q>>>0))/4294967296)>>>0:0)],k[r+72>>2]=K[0],k[r+76>>2]=K[1],k[r+80>>2]=0,K=[Math.floor(i.ctime.getTime()/1e3)>>>0,(q=Math.floor(i.ctime.getTime()/1e3),+Math.abs(q)>=1?q>0?(0|Math.min(+Math.floor(q/4294967296),4294967295))>>>0:~~+Math.ceil((q-+(~~q>>>0))/4294967296)>>>0:0)],k[r+88>>2]=K[0],k[r+92>>2]=K[1],k[r+96>>2]=0,K=[i.ino>>>0,(q=i.ino,+Math.abs(q)>=1?q>0?(0|Math.min(+Math.floor(q/4294967296),4294967295))>>>0:~~+Math.ceil((q-+(~~q>>>0))/4294967296)>>>0:0)],k[r+104>>2]=K[0],k[r+108>>2]=K[1],0},doMsync:function(e,t,r,i,s){var n=x.slice(e,e+r);le.msync(t,n,s,r,i)},varargs:void 0,get:function(){return ue.varargs+=4,k[ue.varargs-4>>2]},getStr:function(e){return L(e)},getStreamFromFD:function(e){var t=le.getStream(e);if(!t)throw new le.ErrnoError(8);return t}};function he(e){switch(e){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+e)}}var ce=void 0;function fe(e){for(var t="",r=e;x[r];)t+=ce[x[r++]];return t}var pe={},me={},_e={},ge=48,ye=57;function be(e){if(void 0===e)return"_unknown";var t=(e=e.replace(/[^a-zA-Z0-9_]/g,"$")).charCodeAt(0);return t>=ge&&t<=ye?"_"+e:e}function ve(e,t){return e=be(e),new Function("body","return function "+e+'() {\n "use strict"; return body.apply(this, arguments);\n};\n')(t)}function we(e,t){var r=ve(t,(function(e){this.name=t,this.message=e;var r=new Error(e).stack;void 0!==r&&(this.stack=this.toString()+"\n"+r.replace(/^Error(:[^\n]*)?\n/,""))}));return r.prototype=Object.create(e.prototype),r.prototype.constructor=r,r.prototype.toString=function(){return void 0===this.message?this.name:this.name+": "+this.message},r}var Se=void 0;function Ee(e){throw new Se(e)}var Ue=void 0;function xe(e){throw new Ue(e)}function Ae(e,t,r){function i(t){var i=r(t);i.length!==e.length&&xe("Mismatched type converter count");for(var s=0;s{me.hasOwnProperty(e)?s[t]=me[e]:(n.push(e),pe.hasOwnProperty(e)||(pe[e]=[]),pe[e].push((()=>{s[t]=me[e],++a===n.length&&i(s)})))})),0===n.length&&i(s)}function Be(e,t,r={}){if(!("argPackAdvance"in t))throw new TypeError("registerType registeredInstance requires argPackAdvance");var i=t.name;if(e||Ee('type "'+i+'" must have a positive integer typeid pointer'),me.hasOwnProperty(e)){if(r.ignoreDuplicateRegistrations)return;Ee("Cannot register type '"+i+"' twice")}if(me[e]=t,delete _e[e],pe.hasOwnProperty(e)){var s=pe[e];delete pe[e],s.forEach((e=>e()))}}function ke(e){if(!(this instanceof Xe))return!1;if(!(e instanceof Xe))return!1;for(var t=this.$$.ptrType.registeredClass,r=this.$$.ptr,i=e.$$.ptrType.registeredClass,s=e.$$.ptr;t.baseClass;)r=t.upcast(r),t=t.baseClass;for(;i.baseClass;)s=i.upcast(s),i=i.baseClass;return t===i&&r===s}function Te(e){Ee(e.$$.ptrType.registeredClass.name+" instance already deleted")}var Ce=!1;function De(e){}function Fe(e){e.count.value-=1,0===e.count.value&&function(e){e.smartPtr?e.smartPtrType.rawDestructor(e.smartPtr):e.ptrType.registeredClass.rawDestructor(e.ptr)}(e)}function Ie(e,t,r){if(t===r)return e;if(void 0===r.baseClass)return null;var i=Ie(e,t,r.baseClass);return null===i?null:r.downcast(i)}var Pe={};function Le(){return Object.keys(Ge).length}function ze(){var e=[];for(var t in Ge)Ge.hasOwnProperty(t)&&e.push(Ge[t]);return e}var Re=[];function Me(){for(;Re.length;){var e=Re.pop();e.$$.deleteScheduled=!1,e.delete()}}var Ne=void 0;function Oe(e){Ne=e,Re.length&&Ne&&Ne(Me)}var Ge={};function He(e,t){return t=function(e,t){for(void 0===t&&Ee("ptr should not be undefined");e.baseClass;)t=e.upcast(t),e=e.baseClass;return t}(e,t),Ge[t]}function $e(e,t){return t.ptrType&&t.ptr||xe("makeClassHandle requires ptr and ptrType"),!!t.smartPtrType!=!!t.smartPtr&&xe("Both smartPtrType and smartPtr must be specified"),t.count={value:1},We(Object.create(e,{$$:{value:t}}))}function Ve(e){var t=this.getPointee(e);if(!t)return this.destructor(e),null;var r=He(this.registeredClass,t);if(void 0!==r){if(0===r.$$.count.value)return r.$$.ptr=t,r.$$.smartPtr=e,r.clone();var i=r.clone();return this.destructor(e),i}function s(){return this.isSmartPointer?$e(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:t,smartPtrType:this,smartPtr:e}):$e(this.registeredClass.instancePrototype,{ptrType:this,ptr:e})}var n,a=this.registeredClass.getActualType(t),o=Pe[a];if(!o)return s.call(this);n=this.isConst?o.constPointerType:o.pointerType;var d=Ie(t,this.registeredClass,n.registeredClass);return null===d?s.call(this):this.isSmartPointer?$e(n.registeredClass.instancePrototype,{ptrType:n,ptr:d,smartPtrType:this,smartPtr:e}):$e(n.registeredClass.instancePrototype,{ptrType:n,ptr:d})}function We(e){return"undefined"==typeof FinalizationRegistry?(We=e=>e,e):(Ce=new FinalizationRegistry((e=>{Fe(e.$$)})),We=e=>{var t=e.$$;if(t.smartPtr){var r={$$:t};Ce.register(e,r,e)}return e},De=e=>Ce.unregister(e),We(e))}function je(){if(this.$$.ptr||Te(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var e,t=We(Object.create(Object.getPrototypeOf(this),{$$:{value:(e=this.$$,{count:e.count,deleteScheduled:e.deleteScheduled,preservePointerOnDelete:e.preservePointerOnDelete,ptr:e.ptr,ptrType:e.ptrType,smartPtr:e.smartPtr,smartPtrType:e.smartPtrType})}}));return t.$$.count.value+=1,t.$$.deleteScheduled=!1,t}function Ye(){this.$$.ptr||Te(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&Ee("Object already scheduled for deletion"),De(this),Fe(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)}function qe(){return!this.$$.ptr}function Ke(){return this.$$.ptr||Te(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&Ee("Object already scheduled for deletion"),Re.push(this),1===Re.length&&Ne&&Ne(Me),this.$$.deleteScheduled=!0,this}function Xe(){}function Ze(e,t,r){if(void 0===e[t].overloadTable){var i=e[t];e[t]=function(){return e[t].overloadTable.hasOwnProperty(arguments.length)||Ee("Function '"+r+"' called with an invalid number of arguments ("+arguments.length+") - expects one of ("+e[t].overloadTable+")!"),e[t].overloadTable[arguments.length].apply(this,arguments)},e[t].overloadTable=[],e[t].overloadTable[i.argCount]=i}}function Je(e,t,r,i,s,n,a,o){this.name=e,this.constructor=t,this.instancePrototype=r,this.rawDestructor=i,this.baseClass=s,this.getActualType=n,this.upcast=a,this.downcast=o,this.pureVirtualFunctions=[]}function Qe(e,t,r){for(;t!==r;)t.upcast||Ee("Expected null or instance of "+r.name+", got an instance of "+t.name),e=t.upcast(e),t=t.baseClass;return e}function et(e,t){if(null===t)return this.isReference&&Ee("null is not a valid "+this.name),0;t.$$||Ee('Cannot pass "'+xt(t)+'" as a '+this.name),t.$$.ptr||Ee("Cannot pass deleted object as a pointer of type "+this.name);var r=t.$$.ptrType.registeredClass;return Qe(t.$$.ptr,r,this.registeredClass)}function tt(e,t){var r;if(null===t)return this.isReference&&Ee("null is not a valid "+this.name),this.isSmartPointer?(r=this.rawConstructor(),null!==e&&e.push(this.rawDestructor,r),r):0;t.$$||Ee('Cannot pass "'+xt(t)+'" as a '+this.name),t.$$.ptr||Ee("Cannot pass deleted object as a pointer of type "+this.name),!this.isConst&&t.$$.ptrType.isConst&&Ee("Cannot convert argument of type "+(t.$$.smartPtrType?t.$$.smartPtrType.name:t.$$.ptrType.name)+" to parameter type "+this.name);var i=t.$$.ptrType.registeredClass;if(r=Qe(t.$$.ptr,i,this.registeredClass),this.isSmartPointer)switch(void 0===t.$$.smartPtr&&Ee("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:t.$$.smartPtrType===this?r=t.$$.smartPtr:Ee("Cannot convert argument of type "+(t.$$.smartPtrType?t.$$.smartPtrType.name:t.$$.ptrType.name)+" to parameter type "+this.name);break;case 1:r=t.$$.smartPtr;break;case 2:if(t.$$.smartPtrType===this)r=t.$$.smartPtr;else{var s=t.clone();r=this.rawShare(r,Ut.toHandle((function(){s.delete()}))),null!==e&&e.push(this.rawDestructor,r)}break;default:Ee("Unsupporting sharing policy")}return r}function rt(e,t){if(null===t)return this.isReference&&Ee("null is not a valid "+this.name),0;t.$$||Ee('Cannot pass "'+xt(t)+'" as a '+this.name),t.$$.ptr||Ee("Cannot pass deleted object as a pointer of type "+this.name),t.$$.ptrType.isConst&&Ee("Cannot convert argument of type "+t.$$.ptrType.name+" to parameter type "+this.name);var r=t.$$.ptrType.registeredClass;return Qe(t.$$.ptr,r,this.registeredClass)}function it(e){return this.fromWireType(k[e>>2])}function st(e){return this.rawGetPointee&&(e=this.rawGetPointee(e)),e}function nt(e){this.rawDestructor&&this.rawDestructor(e)}function at(e){null!==e&&e.delete()}function ot(e,t,r,i,s,n,a,o,d,l,u){this.name=e,this.registeredClass=t,this.isReference=r,this.isConst=i,this.isSmartPointer=s,this.pointeeType=n,this.sharingPolicy=a,this.rawGetPointee=o,this.rawConstructor=d,this.rawShare=l,this.rawDestructor=u,s||void 0!==t.baseClass?this.toWireType=tt:i?(this.toWireType=et,this.destructorFunction=null):(this.toWireType=rt,this.destructorFunction=null)}var dt=[];function lt(e){var t=dt[e];return t||(e>=dt.length&&(dt.length=e+1),dt[e]=t=F.get(e)),t}function ut(e,r,i){return e.includes("j")?function(e,r,i){var s=t["dynCall_"+e];return i&&i.length?s.apply(null,[r].concat(i)):s.call(null,r)}(e,r,i):lt(r).apply(null,i)}function ht(e,t){var r,i,s,n=(e=fe(e)).includes("j")?(r=e,i=t,s=[],function(){return s.length=0,Object.assign(s,arguments),ut(r,i,s)}):lt(t);return"function"!=typeof n&&Ee("unknown function pointer with signature "+e+": "+t),n}var ct=void 0;function ft(e){var t=jt(e),r=fe(t);return Vt(t),r}function pt(e,t){var r=[],i={};throw t.forEach((function e(t){i[t]||me[t]||(_e[t]?_e[t].forEach(e):(r.push(t),i[t]=!0))})),new ct(e+": "+r.map(ft).join([", "]))}function mt(e,t){for(var r=[],i=0;i>2]);return r}function _t(e){for(;e.length;){var t=e.pop();e.pop()(t)}}function gt(e,t){if(!(e instanceof Function))throw new TypeError("new_ called with constructor type "+typeof e+" which is not a function");var r=ve(e.name||"unknownFunctionName",(function(){}));r.prototype=e.prototype;var i=new r,s=e.apply(i,t);return s instanceof Object?s:i}function yt(e,t,r,i,s){var n=t.length;n<2&&Ee("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var a=null!==t[1]&&null!==r,o=!1,d=1;d0?", ":"")+h),c+=(l?"var rv = ":"")+"invoker(fn"+(h.length>0?", ":"")+h+");\n",o)c+="runDestructors(destructors);\n";else for(d=a?1:2;d4&&0==--vt[e].refcount&&(vt[e]=void 0,bt.push(e))}function St(){for(var e=0,t=5;t(e||Ee("Cannot use deleted val. handle = "+e),vt[e].value),toHandle:e=>{switch(e){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:var t=bt.length?bt.pop():vt.length;return vt[t]={refcount:1,value:e},t}}};function xt(e){if(null===e)return"null";var t=typeof e;return"object"===t||"array"===t||"function"===t?e.toString():""+e}function At(e,t){switch(t){case 2:return function(e){return this.fromWireType(C[e>>2])};case 3:return function(e){return this.fromWireType(D[e>>3])};default:throw new TypeError("Unknown float type: "+e)}}function Bt(e,t,r){switch(t){case 0:return r?function(e){return U[e]}:function(e){return x[e]};case 1:return r?function(e){return A[e>>1]}:function(e){return B[e>>1]};case 2:return r?function(e){return k[e>>2]}:function(e){return T[e>>2]};default:throw new TypeError("Unknown integer type: "+e)}}var kt="undefined"!=typeof TextDecoder?new TextDecoder("utf-16le"):void 0;function Tt(e,t){for(var r=e,i=r>>1,s=i+t/2;!(i>=s)&&B[i];)++i;if((r=i<<1)-e>32&&kt)return kt.decode(x.subarray(e,r));for(var n="",a=0;!(a>=t/2);++a){var o=A[e+2*a>>1];if(0==o)break;n+=String.fromCharCode(o)}return n}function Ct(e,t,r){if(void 0===r&&(r=2147483647),r<2)return 0;for(var i=t,s=(r-=2)<2*e.length?r/2:e.length,n=0;n>1]=a,t+=2}return A[t>>1]=0,t-i}function Dt(e){return 2*e.length}function Ft(e,t){for(var r=0,i="";!(r>=t/4);){var s=k[e+4*r>>2];if(0==s)break;if(++r,s>=65536){var n=s-65536;i+=String.fromCharCode(55296|n>>10,56320|1023&n)}else i+=String.fromCharCode(s)}return i}function It(e,t,r){if(void 0===r&&(r=2147483647),r<4)return 0;for(var i=t,s=i+r-4,n=0;n=55296&&a<=57343&&(a=65536+((1023&a)<<10)|1023&e.charCodeAt(++n)),k[t>>2]=a,(t+=4)+4>s)break}return k[t>>2]=0,t-i}function Pt(e){for(var t=0,r=0;r=55296&&i<=57343&&++r,t+=4}return t}var Lt={},zt=[],Rt=[],Mt={};function Nt(){if(!Nt.strings){var e={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:("object"==typeof navigator&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:h||"./this.program"};for(var t in Mt)void 0===Mt[t]?delete e[t]:e[t]=Mt[t];var r=[];for(var t in e)r.push(t+"="+e[t]);Nt.strings=r}return Nt.strings}var Ot=function(e,t,r,i){e||(e=this),this.parent=e,this.mount=e.mount,this.mounted=null,this.id=le.nextInode++,this.name=t,this.mode=r,this.node_ops={},this.stream_ops={},this.rdev=i},Gt=365,Ht=146;Object.defineProperties(Ot.prototype,{read:{get:function(){return(this.mode&Gt)===Gt},set:function(e){e?this.mode|=Gt:this.mode&=-366}},write:{get:function(){return(this.mode&Ht)===Ht},set:function(e){e?this.mode|=Ht:this.mode&=-147}},isFolder:{get:function(){return le.isDir(this.mode)}},isDevice:{get:function(){return le.isChrdev(this.mode)}}}),le.FSNode=Ot,le.staticInit(),function(){for(var e=new Array(256),t=0;t<256;++t)e[t]=String.fromCharCode(t);ce=e}(),Se=t.BindingError=we(Error,"BindingError"),Ue=t.InternalError=we(Error,"InternalError"),Xe.prototype.isAliasOf=ke,Xe.prototype.clone=je,Xe.prototype.delete=Ye,Xe.prototype.isDeleted=qe,Xe.prototype.deleteLater=Ke,t.getInheritedInstanceCount=Le,t.getLiveInheritedInstances=ze,t.flushPendingDeletes=Me,t.setDelayFunction=Oe,ot.prototype.getPointee=st,ot.prototype.destructor=nt,ot.prototype.argPackAdvance=8,ot.prototype.readValueFromPointer=it,ot.prototype.deleteObject=at,ot.prototype.fromWireType=Ve,ct=t.UnboundTypeError=we(Error,"UnboundTypeError"),t.count_emval_handles=St,t.get_first_emval=Et;var $t={q:function(e){return qt(e+24)+24},p:function(e,t,r){throw new re(e).init(t,r),e},C:function(e,t,r){ue.varargs=r;try{var i=ue.getStreamFromFD(e);switch(t){case 0:return(s=ue.get())<0?-28:le.createStream(i,s).fd;case 1:case 2:case 6:case 7:return 0;case 3:return i.flags;case 4:var s=ue.get();return i.flags|=s,0;case 5:return s=ue.get(),A[s+0>>1]=2,0;case 16:case 8:default:return-28;case 9:return n=28,k[Wt()>>2]=n,-1}}catch(e){if(void 0===le||!(e instanceof le.ErrnoError))throw e;return-e.errno}var n},w:function(e,t,r,i){ue.varargs=i;try{t=ue.getStr(t),t=ue.calculateAt(e,t);var s=i?ue.get():0;return le.open(t,r,s).fd}catch(e){if(void 0===le||!(e instanceof le.ErrnoError))throw e;return-e.errno}},u:function(e,t,r,i,s){},E:function(e,t,r,i,s){var n=he(r);Be(e,{name:t=fe(t),fromWireType:function(e){return!!e},toWireType:function(e,t){return t?i:s},argPackAdvance:8,readValueFromPointer:function(e){var i;if(1===r)i=U;else if(2===r)i=A;else{if(4!==r)throw new TypeError("Unknown boolean type size: "+t);i=k}return this.fromWireType(i[e>>n])},destructorFunction:null})},t:function(e,r,i,s,n,a,o,d,l,u,h,c,f){h=fe(h),a=ht(n,a),d&&(d=ht(o,d)),u&&(u=ht(l,u)),f=ht(c,f);var p=be(h);!function(e,r,i){t.hasOwnProperty(e)?((void 0===i||void 0!==t[e].overloadTable&&void 0!==t[e].overloadTable[i])&&Ee("Cannot register public name '"+e+"' twice"),Ze(t,e,e),t.hasOwnProperty(i)&&Ee("Cannot register multiple overloads of a function with the same number of arguments ("+i+")!"),t[e].overloadTable[i]=r):(t[e]=r,void 0!==i&&(t[e].numArguments=i))}(p,(function(){pt("Cannot construct "+h+" due to unbound types",[s])})),Ae([e,r,i],s?[s]:[],(function(r){var i,n;r=r[0],n=s?(i=r.registeredClass).instancePrototype:Xe.prototype;var o=ve(p,(function(){if(Object.getPrototypeOf(this)!==l)throw new Se("Use 'new' to construct "+h);if(void 0===c.constructor_body)throw new Se(h+" has no accessible constructor");var e=c.constructor_body[arguments.length];if(void 0===e)throw new Se("Tried to invoke ctor of "+h+" with invalid number of parameters ("+arguments.length+") - expected ("+Object.keys(c.constructor_body).toString()+") parameters instead!");return e.apply(this,arguments)})),l=Object.create(n,{constructor:{value:o}});o.prototype=l;var c=new Je(h,o,l,f,i,a,d,u),m=new ot(h,c,!0,!1,!1),_=new ot(h+"*",c,!1,!1,!1),g=new ot(h+" const*",c,!1,!0,!1);return Pe[e]={pointerType:_,constPointerType:g},function(e,r,i){t.hasOwnProperty(e)||xe("Replacing nonexistant public symbol"),void 0!==t[e].overloadTable&&void 0!==i?t[e].overloadTable[i]=r:(t[e]=r,t[e].argCount=i)}(p,o),[m,_,g]}))},r:function(e,t,r,i,s,n){S(t>0);var a=mt(t,r);s=ht(i,s),Ae([],[e],(function(e){var r="constructor "+(e=e[0]).name;if(void 0===e.registeredClass.constructor_body&&(e.registeredClass.constructor_body=[]),void 0!==e.registeredClass.constructor_body[t-1])throw new Se("Cannot register multiple constructors with identical number of parameters ("+(t-1)+") for class '"+e.name+"'! Overload resolution is currently only performed using the parameter count, not actual type info!");return e.registeredClass.constructor_body[t-1]=()=>{pt("Cannot construct "+e.name+" due to unbound types",a)},Ae([],a,(function(i){return i.splice(1,0,null),e.registeredClass.constructor_body[t-1]=yt(r,i,null,s,n),[]})),[]}))},d:function(e,t,r,i,s,n,a,o){var d=mt(r,i);t=fe(t),n=ht(s,n),Ae([],[e],(function(e){var i=(e=e[0]).name+"."+t;function s(){pt("Cannot call "+i+" due to unbound types",d)}t.startsWith("@@")&&(t=Symbol[t.substring(2)]),o&&e.registeredClass.pureVirtualFunctions.push(t);var l=e.registeredClass.instancePrototype,u=l[t];return void 0===u||void 0===u.overloadTable&&u.className!==e.name&&u.argCount===r-2?(s.argCount=r-2,s.className=e.name,l[t]=s):(Ze(l,t,i),l[t].overloadTable[r-2]=s),Ae([],d,(function(s){var o=yt(i,s,e,n,a);return void 0===l[t].overloadTable?(o.argCount=r-2,l[t]=o):l[t].overloadTable[r-2]=o,[]})),[]}))},D:function(e,t){Be(e,{name:t=fe(t),fromWireType:function(e){var t=Ut.toValue(e);return wt(e),t},toWireType:function(e,t){return Ut.toHandle(t)},argPackAdvance:8,readValueFromPointer:it,destructorFunction:null})},n:function(e,t,r){var i=he(r);Be(e,{name:t=fe(t),fromWireType:function(e){return e},toWireType:function(e,t){return t},argPackAdvance:8,readValueFromPointer:At(t,i),destructorFunction:null})},c:function(e,t,r,i,s){t=fe(t);var n=he(r),a=e=>e;if(0===i){var o=32-8*r;a=e=>e<>>o}var d=t.includes("unsigned");Be(e,{name:t,fromWireType:a,toWireType:d?function(e,t){return this.name,t>>>0}:function(e,t){return this.name,t},argPackAdvance:8,readValueFromPointer:Bt(t,n,0!==i),destructorFunction:null})},b:function(e,t,r){var i=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][t];function s(e){var t=T,r=t[e>>=2],s=t[e+1];return new i(E,s,r)}Be(e,{name:r=fe(r),fromWireType:s,argPackAdvance:8,readValueFromPointer:s},{ignoreDuplicateRegistrations:!0})},m:function(e,t){var r="std::string"===(t=fe(t));Be(e,{name:t,fromWireType:function(e){var t,i=T[e>>2],s=e+4;if(r)for(var n=s,a=0;a<=i;++a){var o=s+a;if(a==i||0==x[o]){var d=L(n,o-n);void 0===t?t=d:(t+=String.fromCharCode(0),t+=d),n=o+1}}else{var l=new Array(i);for(a=0;a>2]=i,r&&s)z(t,x,a,i+1);else if(s)for(var o=0;o255&&(Vt(a),Ee("String has UTF-16 code units that do not fit in 8 bits")),x[a+o]=d}else for(o=0;oB,o=1):4===t&&(i=Ft,s=It,a=Pt,n=()=>T,o=2),Be(e,{name:r,fromWireType:function(e){for(var r,s=T[e>>2],a=n(),d=e+4,l=0;l<=s;++l){var u=e+4+l*t;if(l==s||0==a[u>>o]){var h=i(d,u-d);void 0===r?r=h:(r+=String.fromCharCode(0),r+=h),d=u+t}}return Vt(e),r},toWireType:function(e,i){"string"!=typeof i&&Ee("Cannot pass non-string to C++ string type "+r);var n=a(i),d=qt(4+n+t);return T[d>>2]=n>>o,s(i,d+4,n+t),null!==e&&e.push(Vt,d),d},argPackAdvance:8,readValueFromPointer:it,destructorFunction:function(e){Vt(e)}})},o:function(e,t){Be(e,{isVoid:!0,name:t=fe(t),argPackAdvance:0,fromWireType:function(){},toWireType:function(e,t){}})},f:function(){return Date.now()},g:function(e,t,r,i){var s,n;(e=zt[e])(t=Ut.toValue(t),r=void 0===(n=Lt[s=r])?fe(s):n,null,i)},j:wt,i:function(e,t){var r=function(e,t){for(var r,i,s,n=new Array(e),a=0;a>2],i="parameter "+a,s=void 0,void 0===(s=me[r])&&Ee(i+" has unknown type "+ft(r)),s);return n}(e,t),i=r[0],s=i.name+"_$"+r.slice(1).map((function(e){return e.name})).join("_")+"$",n=Rt[s];if(void 0!==n)return n;for(var a=["retType"],o=[i],d="",l=0;l>2]=n,function(e,t,r){for(var i=0;i>2]=r.length;var i=0;return r.forEach((function(e){i+=e.length+1})),T[t>>2]=i,0},l:function(e){try{var t=ue.getStreamFromFD(e);return le.close(t),0}catch(e){if(void 0===le||!(e instanceof le.ErrnoError))throw e;return e.errno}},x:function(e,t){try{var r=ue.getStreamFromFD(e),i=r.tty?2:le.isDir(r.mode)?3:le.isLink(r.mode)?7:4;return U[0|t]=i,0}catch(e){if(void 0===le||!(e instanceof le.ErrnoError))throw e;return e.errno}},B:function(e,t,r,i){try{var s=function(e,t,r,i){for(var s=0,n=0;n>2],o=T[t+4>>2];t+=8;var d=le.read(e,U,a,o,i);if(d<0)return-1;if(s+=d,d>2]=s,0}catch(e){if(void 0===le||!(e instanceof le.ErrnoError))throw e;return e.errno}},s:function(e,t,r,i,s){try{var n=(d=r)+2097152>>>0<4194305-!!(o=t)?(o>>>0)+4294967296*d:NaN;if(isNaN(n))return 61;var a=ue.getStreamFromFD(e);return le.llseek(a,n,i),K=[a.position>>>0,(q=a.position,+Math.abs(q)>=1?q>0?(0|Math.min(+Math.floor(q/4294967296),4294967295))>>>0:~~+Math.ceil((q-+(~~q>>>0))/4294967296)>>>0:0)],k[s>>2]=K[0],k[s+4>>2]=K[1],a.getdents&&0===n&&0===i&&(a.getdents=null),0}catch(e){if(void 0===le||!(e instanceof le.ErrnoError))throw e;return e.errno}var o,d},k:function(e,t,r,i){try{var s=function(e,t,r,i){for(var s=0,n=0;n>2],o=T[t+4>>2];t+=8;var d=le.write(e,U,a,o,i);if(d<0)return-1;s+=d}return s}(ue.getStreamFromFD(e),t,r);return T[i>>2]=s,0}catch(e){if(void 0===le||!(e instanceof le.ErrnoError))throw e;return e.errno}},e:function(e){}};!function(){var e={a:$t};function r(e,r){var i,s,n=e.exports;t.asm=n,b=t.asm.F,i=b.buffer,E=i,t.HEAP8=U=new Int8Array(i),t.HEAP16=A=new Int16Array(i),t.HEAP32=k=new Int32Array(i),t.HEAPU8=x=new Uint8Array(i),t.HEAPU16=B=new Uint16Array(i),t.HEAPU32=T=new Uint32Array(i),t.HEAPF32=C=new Float32Array(i),t.HEAPF64=D=new Float64Array(i),F=t.asm.I,s=t.asm.G,N.unshift(s),V()}function s(e){r(e.instance)}function a(t){return function(){if(!y&&(c||f)){if("function"==typeof fetch&&!J(j))return fetch(j,{credentials:"same-origin"}).then((function(e){if(!e.ok)throw"failed to load wasm binary file at '"+j+"'";return e.arrayBuffer()})).catch((function(){return Q(j)}));if(n)return new Promise((function(e,t){n(j,(function(t){e(new Uint8Array(t))}),t)}))}return Promise.resolve().then((function(){return Q(j)}))}().then((function(t){return WebAssembly.instantiate(t,e)})).then((function(e){return e})).then(t,(function(e){g("failed to asynchronously prepare wasm: "+e),W(e)}))}if($(),t.instantiateWasm)try{return t.instantiateWasm(e,r)}catch(e){return g("Module.instantiateWasm callback failed with error: "+e),!1}(y||"function"!=typeof WebAssembly.instantiateStreaming||Z(j)||J(j)||p||"function"!=typeof fetch?a(s):fetch(j,{credentials:"same-origin"}).then((function(t){return WebAssembly.instantiateStreaming(t,e).then(s,(function(e){return g("wasm streaming compile failed: "+e),g("falling back to ArrayBuffer instantiation"),a(s)}))}))).catch(i)}(),t.___wasm_call_ctors=function(){return(t.___wasm_call_ctors=t.asm.G).apply(null,arguments)};var Vt=t._free=function(){return(Vt=t._free=t.asm.H).apply(null,arguments)},Wt=t.___errno_location=function(){return(Wt=t.___errno_location=t.asm.J).apply(null,arguments)},jt=t.___getTypeName=function(){return(jt=t.___getTypeName=t.asm.K).apply(null,arguments)};t.___embind_register_native_and_builtin_types=function(){return(t.___embind_register_native_and_builtin_types=t.asm.L).apply(null,arguments)};var Yt,qt=t._malloc=function(){return(qt=t._malloc=t.asm.M).apply(null,arguments)},Kt=t._emscripten_builtin_memalign=function(){return(Kt=t._emscripten_builtin_memalign=t.asm.N).apply(null,arguments)},Xt=t.___cxa_is_pointer_type=function(){return(Xt=t.___cxa_is_pointer_type=t.asm.O).apply(null,arguments)};function Zt(e){function i(){Yt||(Yt=!0,t.calledRun=!0,w||(t.noFSInit||le.init.initialized||le.init(),le.ignorePermissions=!1,te(N),r(t),t.onRuntimeInitialized&&t.onRuntimeInitialized(),function(){if(t.postRun)for("function"==typeof t.postRun&&(t.postRun=[t.postRun]);t.postRun.length;)e=t.postRun.shift(),O.unshift(e);var e;te(O)}()))}G>0||(function(){if(t.preRun)for("function"==typeof t.preRun&&(t.preRun=[t.preRun]);t.preRun.length;)e=t.preRun.shift(),M.unshift(e);var e;te(M)}(),G>0||(t.setStatus?(t.setStatus("Running..."),setTimeout((function(){setTimeout((function(){t.setStatus("")}),1),i()}),1)):i()))}if(t.dynCall_viiijj=function(){return(t.dynCall_viiijj=t.asm.P).apply(null,arguments)},t.dynCall_jij=function(){return(t.dynCall_jij=t.asm.Q).apply(null,arguments)},t.dynCall_jii=function(){return(t.dynCall_jii=t.asm.R).apply(null,arguments)},t.dynCall_jiji=function(){return(t.dynCall_jiji=t.asm.S).apply(null,arguments)},H=function e(){Yt||Zt(),Yt||(H=e)},t.preInit)for("function"==typeof t.preInit&&(t.preInit=[t.preInit]);t.preInit.length>0;)t.preInit.pop()();return Zt(),t.ready}),r=1e-6,i="undefined"!=typeof Float32Array?Float32Array:Array;function s(){var e=new i(16);return i!=Float32Array&&(e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=0,e[12]=0,e[13]=0,e[14]=0),e[0]=1,e[5]=1,e[10]=1,e[15]=1,e}function n(e){return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}Math.hypot||(Math.hypot=function(){for(var e=0,t=arguments.length;t--;)e+=arguments[t]*arguments[t];return Math.sqrt(e)});var a,o=function(e,t,r,i,s,n,a){var o=1/(t-r),d=1/(i-s),l=1/(n-a);return e[0]=-2*o,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=-2*d,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=2*l,e[11]=0,e[12]=(t+r)*o,e[13]=(s+i)*d,e[14]=(a+n)*l,e[15]=1,e};function d(e,t,r){var s=new i(3);return s[0]=e,s[1]=t,s[2]=r,s}a=new i(3),i!=Float32Array&&(a[0]=0,a[1]=0,a[2]=0);var l=(e,t)=>{t&&e.pixelStorei(e.UNPACK_ALIGNMENT,1);const i=function(){const t=m(e.VERTEX_SHADER,"\n attribute vec4 aVertexPosition;\n attribute vec2 aTexturePosition;\n uniform mat4 uModelMatrix;\n uniform mat4 uViewMatrix;\n uniform mat4 uProjectionMatrix;\n varying lowp vec2 vTexturePosition;\n void main(void) {\n gl_Position = uProjectionMatrix * uViewMatrix * uModelMatrix * aVertexPosition;\n vTexturePosition = aTexturePosition;\n }\n "),r=m(e.FRAGMENT_SHADER,"\n precision highp float;\n varying highp vec2 vTexturePosition;\n uniform int isyuv;\n uniform sampler2D rgbaTexture;\n uniform sampler2D yTexture;\n uniform sampler2D uTexture;\n uniform sampler2D vTexture;\n\n const mat4 YUV2RGB = mat4( 1.1643828125, 0, 1.59602734375, -.87078515625,\n 1.1643828125, -.39176171875, -.81296875, .52959375,\n 1.1643828125, 2.017234375, 0, -1.081390625,\n 0, 0, 0, 1);\n\n\n void main(void) {\n\n if (isyuv>0) {\n\n highp float y = texture2D(yTexture, vTexturePosition).r;\n highp float u = texture2D(uTexture, vTexturePosition).r;\n highp float v = texture2D(vTexture, vTexturePosition).r;\n gl_FragColor = vec4(y, u, v, 1) * YUV2RGB;\n\n } else {\n gl_FragColor = texture2D(rgbaTexture, vTexturePosition);\n }\n }\n "),i=e.createProgram();if(e.attachShader(i,t),e.attachShader(i,r),e.linkProgram(i),!e.getProgramParameter(i,e.LINK_STATUS))return console.log("Unable to initialize the shader program: "+e.getProgramInfoLog(i)),null;return i}();let a={program:i,attribLocations:{vertexPosition:e.getAttribLocation(i,"aVertexPosition"),texturePosition:e.getAttribLocation(i,"aTexturePosition")},uniformLocations:{projectionMatrix:e.getUniformLocation(i,"uProjectionMatrix"),modelMatrix:e.getUniformLocation(i,"uModelMatrix"),viewMatrix:e.getUniformLocation(i,"uViewMatrix"),rgbatexture:e.getUniformLocation(i,"rgbaTexture"),ytexture:e.getUniformLocation(i,"yTexture"),utexture:e.getUniformLocation(i,"uTexture"),vtexture:e.getUniformLocation(i,"vTexture"),isyuv:e.getUniformLocation(i,"isyuv")}},l=function(){const t=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,t);e.bufferData(e.ARRAY_BUFFER,new Float32Array([-1,-1,-1,1,-1,-1,1,1,-1,-1,1,-1]),e.STATIC_DRAW);var r=[];r=r.concat([0,1],[1,1],[1,0],[0,0]);const i=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,i),e.bufferData(e.ARRAY_BUFFER,new Float32Array(r),e.STATIC_DRAW);const s=e.createBuffer();e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,s);return e.bufferData(e.ELEMENT_ARRAY_BUFFER,new Uint16Array([0,1,2,0,2,3]),e.STATIC_DRAW),{position:t,texPosition:i,indices:s}}(),u=p(),h=p(),c=p(),f=p();function p(){let t=e.createTexture();return e.bindTexture(e.TEXTURE_2D,t),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),t}function m(t,r){const i=e.createShader(t);return e.shaderSource(i,r),e.compileShader(i),e.getShaderParameter(i,e.COMPILE_STATUS)?i:(console.log("An error occurred compiling the shaders: "+e.getShaderInfoLog(i)),e.deleteShader(i),null)}function _(t,i){e.viewport(0,0,t,i),e.clearColor(0,0,0,0),e.clearDepth(1),e.enable(e.DEPTH_TEST),e.depthFunc(e.LEQUAL),e.clear(e.COLOR_BUFFER_BIT|e.DEPTH_BUFFER_BIT);const u=s();o(u,-1,1,-1,1,.1,100);const p=s();n(p);const m=s();!function(e,t,i,s){var a,o,d,l,u,h,c,f,p,m,_=t[0],g=t[1],y=t[2],b=s[0],v=s[1],w=s[2],S=i[0],E=i[1],U=i[2];Math.abs(_-S)>1,(1&t)<<7|r<<3])}function We(e){return je(e)&&e[1]===De.sequenceHeader}function je(e){return e[0]>>4===Ue.AAC}$e((function(e){!function(){var t="undefined"!=typeof window&&void 0!==window.document?window.document:{},r=e.exports,i=function(){for(var e,r=[["requestFullscreen","exitFullscreen","fullscreenElement","fullscreenEnabled","fullscreenchange","fullscreenerror"],["webkitRequestFullscreen","webkitExitFullscreen","webkitFullscreenElement","webkitFullscreenEnabled","webkitfullscreenchange","webkitfullscreenerror"],["webkitRequestFullScreen","webkitCancelFullScreen","webkitCurrentFullScreenElement","webkitCancelFullScreen","webkitfullscreenchange","webkitfullscreenerror"],["mozRequestFullScreen","mozCancelFullScreen","mozFullScreenElement","mozFullScreenEnabled","mozfullscreenchange","mozfullscreenerror"],["msRequestFullscreen","msExitFullscreen","msFullscreenElement","msFullscreenEnabled","MSFullscreenChange","MSFullscreenError"]],i=0,s=r.length,n={};i{if(s=i,"[object Number]"!==Object.prototype.toString.call(s))return;var s;t+=i;const n=Je(),a=n-r;a>=1e3&&(e(t/a*1e3),r=n,t=0)}}function et(){const e=window.navigator.userAgent;return!e.match(/Chrome/gi)&&!!e.match(/Safari/gi)}function tt(e){return null==e}function rt(e){e.close()}function it(e,t){t&&(e=e.filter((e=>e.type&&e.type===t)));let r=e[0],i=null,s=1;if(e.length>0){let t=e[1];t&&t.ts-r.ts>1e5&&(r=t,s=2)}if(r)for(let n=s;n=1e3){e[n-1].ts-r.ts<1e3&&(i=n+1)}}}return i}function st(){return function(e){let t="";if("object"==typeof e)try{t=JSON.stringify(e),t=JSON.parse(t)}catch(r){t=e}else t=e;return t}(v)}function nt(e){return e[0]>>4===Fe.keyFrame&&e[1]===De.sequenceHeader}function at(e){return!0===e||"true"===e}function ot(e){return!0!==e&&"true"!==e}(()=>{try{if("object"==typeof WebAssembly&&"function"==typeof WebAssembly.instantiate){const e=new WebAssembly.Module(Uint8Array.of(0,97,115,109,1,0,0,0));if(e instanceof WebAssembly.Module)return new WebAssembly.Instance(e)instanceof WebAssembly.Instance}}catch(e){}})();var dt=function(e,t,r,i){return new(r||(r=Promise))((function(s,n){function a(e){try{d(i.next(e))}catch(e){n(e)}}function o(e){try{d(i.throw(e))}catch(e){n(e)}}function d(e){var t;e.done?s(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(a,o)}d((i=i.apply(e,t||[])).next())}))};const lt=Symbol(32),ut=Symbol(16),ht=Symbol(8);class ct{constructor(e){this.g=e,this.consumed=0,e&&(this.need=e.next().value)}setG(e){this.g=e,this.demand(e.next().value,!0)}consume(){this.buffer&&this.consumed&&(this.buffer.copyWithin(0,this.consumed),this.buffer=this.buffer.subarray(0,this.buffer.length-this.consumed),this.consumed=0)}demand(e,t){return t&&this.consume(),this.need=e,this.flush()}read(e){return dt(this,void 0,void 0,(function*(){return this.lastReadPromise&&(yield this.lastReadPromise),this.lastReadPromise=new Promise(((t,r)=>{var i;this.reject=r,this.resolve=e=>{delete this.lastReadPromise,delete this.resolve,delete this.need,t(e)};this.demand(e,!0)||null===(i=this.pull)||void 0===i||i.call(this,e)}))}))}readU32(){return this.read(lt)}readU16(){return this.read(ut)}readU8(){return this.read(ht)}close(){var e;this.g&&this.g.return(),this.buffer&&this.buffer.subarray(0,0),null===(e=this.reject)||void 0===e||e.call(this,new Error("EOF")),delete this.lastReadPromise}flush(){if(!this.buffer||!this.need)return;let e=null;const t=this.buffer.subarray(this.consumed);let r=0;const i=e=>t.length<(r=e);if("number"==typeof this.need){if(i(this.need))return;e=t.subarray(0,r)}else if(this.need===lt){if(i(4))return;e=t[0]<<24|t[1]<<16|t[2]<<8|t[3]}else if(this.need===ut){if(i(2))return;e=t[0]<<8|t[1]}else if(this.need===ht){if(i(1))return;e=t[0]}else if("buffer"in this.need){if("byteOffset"in this.need){if(i(this.need.byteLength-this.need.byteOffset))return;new Uint8Array(this.need.buffer,this.need.byteOffset).set(t.subarray(0,r)),e=this.need}else if(this.g)return void this.g.throw(new Error("Unsupported type"))}else{if(i(this.need.byteLength))return;new Uint8Array(this.need).set(t.subarray(0,r)),e=this.need}return this.consumed+=r,this.g?this.demand(this.g.next(e).value,!0):this.resolve&&this.resolve(e),e}write(e){if(e instanceof Uint8Array?this.malloc(e.length).set(e):"buffer"in e?this.malloc(e.byteLength).set(new Uint8Array(e.buffer,e.byteOffset,e.byteLength)):this.malloc(e.byteLength).set(new Uint8Array(e)),!this.g&&!this.resolve)return new Promise((e=>this.pull=e));this.flush()}writeU32(e){this.malloc(4).set([e>>24&255,e>>16&255,e>>8&255,255&e]),this.flush()}writeU16(e){this.malloc(2).set([e>>8&255,255&e]),this.flush()}writeU8(e){this.malloc(1)[0]=e,this.flush()}malloc(e){if(this.buffer){const t=this.buffer.length,r=t+e;if(r<=this.buffer.buffer.byteLength-this.buffer.byteOffset)this.buffer=new Uint8Array(this.buffer.buffer,this.buffer.byteOffset,r);else{const e=new Uint8Array(r);e.set(this.buffer),this.buffer=e}return this.buffer.subarray(t,r)}return this.buffer=new Uint8Array(e),this.buffer}}ct.U32=lt,ct.U16=ut,ct.U8=ht;class ft{constructor(e){this.log=(t,...r)=>{if(e._opt.debug&&e._opt.debugLevel==g){const i=e._opt.debugUuid?`[${e._opt.debugUuid}]`:"";console.log(`EasyPro${i}[✅✅✅][${t}]`,...r)}},this.warn=(t,...r)=>{if(e._opt.debug&&(e._opt.debugLevel==g||e._opt.debugLevel==y)){const i=e._opt.debugUuid?`[${e._opt.debugUuid}]`:"";console.log(`EasyPro${i}[❗❗❗][${t}]`,...r)}},this.error=(t,...r)=>{const i=e._opt.debugUuid?`[${e._opt.debugUuid}]`:"";console.error(`EasyPro${i}[❌❌❌][${t}]`,...r)}}}class pt{constructor(e){this._buffer=e,this._buffer_index=0,this._total_bytes=e.byteLength,this._total_bits=8*e.byteLength,this._current_word=0,this._current_word_bits_left=0}destroy(){this._buffer=null}_fillCurrentWord(){let e=this._total_bytes-this._buffer_index;if(e<=0)return void console.error("ExpGolomb: _fillCurrentWord() but no bytes available",this._total_bytes,this._buffer_index);let t=Math.min(4,e),r=new Uint8Array(4);r.set(this._buffer.subarray(this._buffer_index,this._buffer_index+t)),this._current_word=new DataView(r.buffer).getUint32(0,!1),this._buffer_index+=t,this._current_word_bits_left=8*t}readBits(e){if(e>32&&console.error("ExpGolomb: readBits() bits exceeded max 32bits!"),e<=this._current_word_bits_left){let t=this._current_word>>>32-e;return this._current_word<<=e,this._current_word_bits_left-=e,t}let t=this._current_word_bits_left?this._current_word:0;t>>>=32-this._current_word_bits_left;let r=e-this._current_word_bits_left;this._fillCurrentWord();let i=Math.min(r,this._current_word_bits_left),s=this._current_word>>>32-i;return this._current_word<<=i,this._current_word_bits_left-=i,t=t<>>e)return this._current_word<<=e,this._current_word_bits_left-=e,e;return this._fillCurrentWord(),e+this._skipLeadingZero()}readUEG(){let e=this._skipLeadingZero();return this.readBits(e+1)-1}readSEG(){let e=this.readUEG();return 1&e?e+1>>>1:-1*(e>>>1)}}class mt{static _ebsp2rbsp(e){let t=e,r=t.byteLength,i=new Uint8Array(r),s=0;for(let e=0;e=2&&3===t[e]&&0===t[e-1]&&0===t[e-2]||(i[s]=t[e],s++);return new Uint8Array(i.buffer,0,s)}static parseSPS(e){let t=mt._ebsp2rbsp(e),r=new pt(t);r.readByte();let i=r.readByte();r.readByte();let s=r.readByte();r.readUEG();let n=mt.getProfileString(i),a=mt.getLevelString(s),o=1,d=420,l=[0,420,422,444],u=8;if((100===i||110===i||122===i||244===i||44===i||83===i||86===i||118===i||128===i||138===i||144===i)&&(o=r.readUEG(),3===o&&r.readBits(1),o<=3&&(d=l[o]),u=r.readUEG()+8,r.readUEG(),r.readBits(1),r.readBool())){let e=3!==o?8:12;for(let t=0;t0&&e<16?(v=[1,12,10,16,40,24,20,32,80,18,15,64,160,4,3,2][e-1],w=[1,11,11,11,33,11,11,11,33,11,11,33,99,3,2,1][e-1]):255===e&&(v=r.readByte()<<8|r.readByte(),w=r.readByte()<<8|r.readByte())}if(r.readBool()&&r.readBool(),r.readBool()&&(r.readBits(4),r.readBool()&&r.readBits(24)),r.readBool()&&(r.readUEG(),r.readUEG()),r.readBool()){let e=r.readBits(32),t=r.readBits(32);E=r.readBool(),U=t,x=2*e,S=U/x}}let A=1;1===v&&1===w||(A=v/w);let B=0,k=0;if(0===o)B=1,k=2-m;else{B=3===o?1:2,k=(1===o?2:1)*(2-m)}let T=16*(f+1),C=16*(p+1)*(2-m);T-=(_+g)*B,C-=(y+b)*k;let D=Math.ceil(T*A);return r.destroy(),r=null,{profile_string:n,level_string:a,bit_depth:u,ref_frames:c,chroma_format:d,chroma_format_string:mt.getChromaFormatString(d),frame_rate:{fixed:E,fps:S,fps_den:x,fps_num:U},sar_ratio:{width:v,height:w},codec_size:{width:T,height:C},present_size:{width:D,height:C}}}static parseSPS$2(e){let t=e.subarray(1,4),r="avc1.";for(let e=0;e<3;e++){let i=t[e].toString(16);i.length<2&&(i="0"+i),r+=i}let i=mt._ebsp2rbsp(e),s=new pt(i);s.readByte();let n=s.readByte();s.readByte();let a=s.readByte();s.readUEG();let o=mt.getProfileString(n),d=mt.getLevelString(a),l=1,u=420,h=[0,420,422,444],c=8,f=8;if((100===n||110===n||122===n||244===n||44===n||83===n||86===n||118===n||128===n||138===n||144===n)&&(l=s.readUEG(),3===l&&s.readBits(1),l<=3&&(u=h[l]),c=s.readUEG()+8,f=s.readUEG()+8,s.readBits(1),s.readBool())){let e=3!==l?8:12;for(let t=0;t0&&e<16?(E=[1,12,10,16,40,24,20,32,80,18,15,64,160,4,3,2][e-1],U=[1,11,11,11,33,11,11,11,33,11,11,33,99,3,2,1][e-1]):255===e&&(E=s.readByte()<<8|s.readByte(),U=s.readByte()<<8|s.readByte())}if(s.readBool()&&s.readBool(),s.readBool()&&(s.readBits(4),s.readBool()&&s.readBits(24)),s.readBool()&&(s.readUEG(),s.readUEG()),s.readBool()){let e=s.readBits(32),t=s.readBits(32);A=s.readBool(),B=t,k=2*e,x=B/k}}let T=1;1===E&&1===U||(T=E/U);let C=0,D=0;if(0===l)C=1,D=2-y;else{C=3===l?1:2,D=(1===l?2:1)*(2-y)}let F=16*(_+1),I=16*(g+1)*(2-y);F-=(b+v)*C,I-=(w+S)*D;let P=Math.ceil(F*T);return s.destroy(),s=null,{codec_mimetype:r,profile_idc:n,level_idc:a,profile_string:o,level_string:d,chroma_format_idc:l,bit_depth:c,bit_depth_luma:c,bit_depth_chroma:f,ref_frames:m,chroma_format:u,chroma_format_string:mt.getChromaFormatString(u),frame_rate:{fixed:A,fps:x,fps_den:k,fps_num:B},sar_ratio:{width:E,height:U},codec_size:{width:F,height:I},present_size:{width:P,height:I}}}static _skipScalingList(e,t){let r=8,i=8,s=0;for(let n=0;n=this.buflen)return this.iserro=!0,0;this.iserro=!1,r=this.bufoff+e>8?8-this.bufoff:e,t<<=r,t+=this.buffer[this.bufpos]>>8-this.bufoff-r&255>>8-r,this.bufoff+=r,e-=r,8==this.bufoff&&(this.bufpos++,this.bufoff=0)}return t}look(e){let t=this.bufpos,r=this.bufoff,i=this.read(e);return this.bufpos=t,this.bufoff=r,i}read_golomb(){let e;for(e=0;0===this.read(1)&&!this.iserro;e++);return(1<>>24&255,e>>>16&255,e>>>8&255,255&e]),i=new Uint8Array(e+4);i.set(r,0),i.set(t.sps,4),t.sps=i}if(t.pps){const e=t.pps.byteLength,r=new Uint8Array([e>>>24&255,e>>>16&255,e>>>8&255,255&e]),i=new Uint8Array(e+4);i.set(r,0),i.set(t.pps,4),t.pps=i}return t}function yt({sps:e,pps:t}){const r=[23,0,0,0,0,1,66,0,30,255];r[0]=23,r[6]=e[1],r[7]=e[2],r[8]=e[3],r[10]=225,r[11]=e.byteLength>>8&255,r[12]=255&e.byteLength,r.push(...e,1,t.byteLength>>8&255,255&t.byteLength,...t);return new Uint8Array(r)}function bt(e,t){let r=[];r[0]=t?23:39,r[1]=1,r[2]=0,r[3]=0,r[4]=0;const i=new Uint8Array(r.length+e.byteLength);return i.set(r,0),i.set(e,r.length),i}function vt(e){return 31&e[0]}function wt(e){return e===xe.kSliceSEI}function St(e){return!function(e){return e===xe.sps||e===xe.pps}(e)&&!wt(e)}function Et(e){return e===xe.iFrame}const Ut=e=>{let t=e,r=t.byteLength,i=new Uint8Array(r),s=0;for(let e=0;e=2&&3===t[e]&&0===t[e-1]&&0===t[e-2]||(i[s]=t[e],s++);return new Uint8Array(i.buffer,0,s)},xt=e=>{switch(e){case 0:return"4:0:0";case 1:return"4:2:0";case 2:return"4:2:2";case 3:return"4:4:4";default:return"Unknown"}},At=e=>{let t=Ut(e),r=new pt(t);r.readByte(),r.readByte();let i=0,s=0,n=0,a=0;r.readBits(4);let o=r.readBits(3);r.readBool();let d=r.readBits(2),l=r.readBool(),u=r.readBits(5),h=r.readByte(),c=r.readByte(),f=r.readByte(),p=r.readByte(),m=r.readByte(),_=r.readByte(),g=r.readByte(),y=r.readByte(),b=r.readByte(),v=r.readByte(),w=r.readByte(),S=[],E=[];for(let e=0;e0)for(let e=o;e<8;e++)r.readBits(2);for(let e=0;e1&&r.readSEG();for(let e=0;e0&&e<16?(P=[1,12,10,16,40,24,20,32,80,18,15,64,160,4,3,2][e-1],L=[1,11,11,11,33,11,11,11,33,11,11,33,99,3,2,1][e-1]):255===e&&(P=r.readBits(16),L=r.readBits(16))}if(r.readBool()&&r.readBool(),r.readBool()){r.readBits(3),r.readBool(),r.readBool()&&(r.readByte(),r.readByte(),r.readByte())}if(r.readBool()&&(r.readUEG(),r.readUEG()),r.readBool(),r.readBool(),r.readBool(),F=r.readBool(),F&&(i+=r.readUEG(),s+=r.readUEG(),n+=r.readUEG(),a+=r.readUEG()),r.readBool()){if(R=r.readBits(32),M=r.readBits(32),r.readBool()){if(r.readUEG(),r.readBool()){let e=!1,t=!1,i=!1;e=r.readBool(),t=r.readBool(),(e||t)&&(i=r.readBool(),i&&(r.readByte(),r.readBits(5),r.readBool(),r.readBits(5)),r.readBits(4),r.readBits(4),i&&r.readBits(4),r.readBits(5),r.readBits(5),r.readBits(5));for(let s=0;s<=o;s++){let s=r.readBool();z=s;let n=!1,a=1;s||(n=r.readBool());let o=!1;if(n?r.readSEG():o=r.readBool(),o||(cpbcnt=r.readUEG()+1),e)for(let e=0;e{let t=Ut(e),r=new pt(t);return r.readByte(),r.readByte(),r.readBits(4),r.readBits(2),r.readBits(6),{num_temporal_layers:r.readBits(3)+1,temporal_id_nested:r.readBool()}},kt=e=>{let t=Ut(e),r=new pt(t);r.readByte(),r.readByte(),r.readUEG(),r.readUEG(),r.readBool(),r.readBool(),r.readBits(3),r.readBool(),r.readBool(),r.readUEG(),r.readUEG(),r.readSEG(),r.readBool(),r.readBool(),r.readBool()&&r.readUEG(),r.readSEG(),r.readSEG(),r.readBool(),r.readBool(),r.readBool(),r.readBool();let i=r.readBool(),s=r.readBool(),n=1;return s&&i?n=0:s?n=3:i&&(n=2),{parallelismType:n}};function Tt(e,t=0){return(e[t]<<24>>>0)+(e[t+1]<<16)+(e[t+2]<<8)+(e[t+3]||0)}function Ct(e,t=4){if(e.length<4)return;const r=e.length,i=[];let s,n=0;for(;n+t>>=8),n+=t,s){if(n+s>r)break;i.push(e.subarray(n,n+s)),n+=s}return i}function Dt(e){const t=e.byteLength,r=new Uint8Array(4);r[0]=t>>>24&255,r[1]=t>>>16&255,r[2]=t>>>8&255,r[3]=255&t;const i=new Uint8Array(t+4);return i.set(r,0),i.set(e,4),i}function Ft(e,t){let r=null;return t?e.length>=28&&(r=1+(3&e[26])):e.length>=12&&(r=1+(3&e[9])),r}function It(e,t){let r={},i=e.length,s=[],n=new _t(e);n.read(1),n.read(6),n.read(6),n.read(3);for(let e=2;e0)for(let t=r;t<8;t++)e.read(2);i.sub_layer_profile_space=[],i.sub_layer_tier_flag=[],i.sub_layer_profile_idc=[],i.sub_layer_profile_compatibility_flag=[],i.sub_layer_progressive_source_flag=[],i.sub_layer_interlaced_source_flag=[],i.sub_layer_non_packed_constraint_flag=[],i.sub_layer_frame_only_constraint_flag=[],i.sub_layer_level_idc=[];for(let t=0;t>8,d[14]=255&i.min_spatial_segmentation_idc,d[15]=252|3&i.parallelismType,d[16]=252|3&i.chroma_format_idc,d[17]=248|7&i.bit_depth_luma_minus8,d[18]=248|7&i.bit_depth_chroma_minus8,d[19]=0,d[20]=0,d[21]=(3&i.constant_frame_rate)<<6|(7&i.num_temporal_layers)<<3|(i.temporal_id_nested?1:0)<<2|3,d[22]=3,d[23]=128|Ae.vps,d[24]=0,d[25]=1,d[26]=(65280&e.byteLength)>>8,d[27]=255&e.byteLength,d.set(e,28),d[23+(5+e.byteLength)+0]=128|Ae.sps,d[23+(5+e.byteLength)+1]=0,d[23+(5+e.byteLength)+2]=1,d[23+(5+e.byteLength)+3]=(65280&r.byteLength)>>8,d[23+(5+e.byteLength)+4]=255&r.byteLength,d.set(r,23+(5+e.byteLength)+5),d[23+(5+e.byteLength+5+r.byteLength)+0]=128|Ae.pps,d[23+(5+e.byteLength+5+r.byteLength)+1]=0,d[23+(5+e.byteLength+5+r.byteLength)+2]=1,d[23+(5+e.byteLength+5+r.byteLength)+3]=(65280&t.byteLength)>>8,d[23+(5+e.byteLength+5+r.byteLength)+4]=255&t.byteLength,d.set(t,23+(5+e.byteLength+5+r.byteLength)+5);const l=[28,0,0,0,0],u=new Uint8Array(l.length+d.byteLength);return u.set(l,0),u.set(d,l.length),u}function Lt(e,t){let r=[];r[0]=t?28:44,r[1]=1,r[2]=0,r[3]=0,r[4]=0;const i=new Uint8Array(r.length+e.byteLength);return i.set(r,0),i.set(e,r.length),i}function zt(e){return(126&e[0])>>1}function Rt(e){return!function(e){return e>=32&&e<=40}(e)}function Mt(e){return e>=16&&e<=21}function Nt(e){return parseInt(e)===e}function Ot(e){if(!Nt(e.length))return!1;for(var t=0;t255)return!1;return!0}function Gt(e,t){if(e.buffer&&"Uint8Array"===e.name)return t&&(e=e.slice?e.slice():Array.prototype.slice.call(e)),e;if(Array.isArray(e)){if(!Ot(e))throw new Error("Array contains invalid value: "+e);return new Uint8Array(e)}if(Nt(e.length)&&Ot(e))return new Uint8Array(e);throw new Error("unsupported array-like object")}function Ht(e){return new Uint8Array(e)}function $t(e,t,r,i,s){null==i&&null==s||(e=e.slice?e.slice(i,s):Array.prototype.slice.call(e,i,s)),t.set(e,r)}var Vt,Wt={toBytes:function(e){var t=[],r=0;for(e=encodeURI(e);r191&&i<224?(t.push(String.fromCharCode((31&i)<<6|63&e[r+1])),r+=2):(t.push(String.fromCharCode((15&i)<<12|(63&e[r+1])<<6|63&e[r+2])),r+=3)}return t.join("")}},jt=(Vt="0123456789abcdef",{toBytes:function(e){for(var t=[],r=0;r>4]+Vt[15&i])}return t.join("")}}),Yt={16:10,24:12,32:14},qt=[1,2,4,8,16,32,64,128,27,54,108,216,171,77,154,47,94,188,99,198,151,53,106,212,179,125,250,239,197,145],Kt=[99,124,119,123,242,107,111,197,48,1,103,43,254,215,171,118,202,130,201,125,250,89,71,240,173,212,162,175,156,164,114,192,183,253,147,38,54,63,247,204,52,165,229,241,113,216,49,21,4,199,35,195,24,150,5,154,7,18,128,226,235,39,178,117,9,131,44,26,27,110,90,160,82,59,214,179,41,227,47,132,83,209,0,237,32,252,177,91,106,203,190,57,74,76,88,207,208,239,170,251,67,77,51,133,69,249,2,127,80,60,159,168,81,163,64,143,146,157,56,245,188,182,218,33,16,255,243,210,205,12,19,236,95,151,68,23,196,167,126,61,100,93,25,115,96,129,79,220,34,42,144,136,70,238,184,20,222,94,11,219,224,50,58,10,73,6,36,92,194,211,172,98,145,149,228,121,231,200,55,109,141,213,78,169,108,86,244,234,101,122,174,8,186,120,37,46,28,166,180,198,232,221,116,31,75,189,139,138,112,62,181,102,72,3,246,14,97,53,87,185,134,193,29,158,225,248,152,17,105,217,142,148,155,30,135,233,206,85,40,223,140,161,137,13,191,230,66,104,65,153,45,15,176,84,187,22],Xt=[82,9,106,213,48,54,165,56,191,64,163,158,129,243,215,251,124,227,57,130,155,47,255,135,52,142,67,68,196,222,233,203,84,123,148,50,166,194,35,61,238,76,149,11,66,250,195,78,8,46,161,102,40,217,36,178,118,91,162,73,109,139,209,37,114,248,246,100,134,104,152,22,212,164,92,204,93,101,182,146,108,112,72,80,253,237,185,218,94,21,70,87,167,141,157,132,144,216,171,0,140,188,211,10,247,228,88,5,184,179,69,6,208,44,30,143,202,63,15,2,193,175,189,3,1,19,138,107,58,145,17,65,79,103,220,234,151,242,207,206,240,180,230,115,150,172,116,34,231,173,53,133,226,249,55,232,28,117,223,110,71,241,26,113,29,41,197,137,111,183,98,14,170,24,190,27,252,86,62,75,198,210,121,32,154,219,192,254,120,205,90,244,31,221,168,51,136,7,199,49,177,18,16,89,39,128,236,95,96,81,127,169,25,181,74,13,45,229,122,159,147,201,156,239,160,224,59,77,174,42,245,176,200,235,187,60,131,83,153,97,23,43,4,126,186,119,214,38,225,105,20,99,85,33,12,125],Zt=[3328402341,4168907908,4000806809,4135287693,4294111757,3597364157,3731845041,2445657428,1613770832,33620227,3462883241,1445669757,3892248089,3050821474,1303096294,3967186586,2412431941,528646813,2311702848,4202528135,4026202645,2992200171,2387036105,4226871307,1101901292,3017069671,1604494077,1169141738,597466303,1403299063,3832705686,2613100635,1974974402,3791519004,1033081774,1277568618,1815492186,2118074177,4126668546,2211236943,1748251740,1369810420,3521504564,4193382664,3799085459,2883115123,1647391059,706024767,134480908,2512897874,1176707941,2646852446,806885416,932615841,168101135,798661301,235341577,605164086,461406363,3756188221,3454790438,1311188841,2142417613,3933566367,302582043,495158174,1479289972,874125870,907746093,3698224818,3025820398,1537253627,2756858614,1983593293,3084310113,2108928974,1378429307,3722699582,1580150641,327451799,2790478837,3117535592,0,3253595436,1075847264,3825007647,2041688520,3059440621,3563743934,2378943302,1740553945,1916352843,2487896798,2555137236,2958579944,2244988746,3151024235,3320835882,1336584933,3992714006,2252555205,2588757463,1714631509,293963156,2319795663,3925473552,67240454,4269768577,2689618160,2017213508,631218106,1269344483,2723238387,1571005438,2151694528,93294474,1066570413,563977660,1882732616,4059428100,1673313503,2008463041,2950355573,1109467491,537923632,3858759450,4260623118,3218264685,2177748300,403442708,638784309,3287084079,3193921505,899127202,2286175436,773265209,2479146071,1437050866,4236148354,2050833735,3362022572,3126681063,840505643,3866325909,3227541664,427917720,2655997905,2749160575,1143087718,1412049534,999329963,193497219,2353415882,3354324521,1807268051,672404540,2816401017,3160301282,369822493,2916866934,3688947771,1681011286,1949973070,336202270,2454276571,201721354,1210328172,3093060836,2680341085,3184776046,1135389935,3294782118,965841320,831886756,3554993207,4068047243,3588745010,2345191491,1849112409,3664604599,26054028,2983581028,2622377682,1235855840,3630984372,2891339514,4092916743,3488279077,3395642799,4101667470,1202630377,268961816,1874508501,4034427016,1243948399,1546530418,941366308,1470539505,1941222599,2546386513,3421038627,2715671932,3899946140,1042226977,2521517021,1639824860,227249030,260737669,3765465232,2084453954,1907733956,3429263018,2420656344,100860677,4160157185,470683154,3261161891,1781871967,2924959737,1773779408,394692241,2579611992,974986535,664706745,3655459128,3958962195,731420851,571543859,3530123707,2849626480,126783113,865375399,765172662,1008606754,361203602,3387549984,2278477385,2857719295,1344809080,2782912378,59542671,1503764984,160008576,437062935,1707065306,3622233649,2218934982,3496503480,2185314755,697932208,1512910199,504303377,2075177163,2824099068,1841019862,739644986],Jt=[2781242211,2230877308,2582542199,2381740923,234877682,3184946027,2984144751,1418839493,1348481072,50462977,2848876391,2102799147,434634494,1656084439,3863849899,2599188086,1167051466,2636087938,1082771913,2281340285,368048890,3954334041,3381544775,201060592,3963727277,1739838676,4250903202,3930435503,3206782108,4149453988,2531553906,1536934080,3262494647,484572669,2923271059,1783375398,1517041206,1098792767,49674231,1334037708,1550332980,4098991525,886171109,150598129,2481090929,1940642008,1398944049,1059722517,201851908,1385547719,1699095331,1587397571,674240536,2704774806,252314885,3039795866,151914247,908333586,2602270848,1038082786,651029483,1766729511,3447698098,2682942837,454166793,2652734339,1951935532,775166490,758520603,3000790638,4004797018,4217086112,4137964114,1299594043,1639438038,3464344499,2068982057,1054729187,1901997871,2534638724,4121318227,1757008337,0,750906861,1614815264,535035132,3363418545,3988151131,3201591914,1183697867,3647454910,1265776953,3734260298,3566750796,3903871064,1250283471,1807470800,717615087,3847203498,384695291,3313910595,3617213773,1432761139,2484176261,3481945413,283769337,100925954,2180939647,4037038160,1148730428,3123027871,3813386408,4087501137,4267549603,3229630528,2315620239,2906624658,3156319645,1215313976,82966005,3747855548,3245848246,1974459098,1665278241,807407632,451280895,251524083,1841287890,1283575245,337120268,891687699,801369324,3787349855,2721421207,3431482436,959321879,1469301956,4065699751,2197585534,1199193405,2898814052,3887750493,724703513,2514908019,2696962144,2551808385,3516813135,2141445340,1715741218,2119445034,2872807568,2198571144,3398190662,700968686,3547052216,1009259540,2041044702,3803995742,487983883,1991105499,1004265696,1449407026,1316239930,504629770,3683797321,168560134,1816667172,3837287516,1570751170,1857934291,4014189740,2797888098,2822345105,2754712981,936633572,2347923833,852879335,1133234376,1500395319,3084545389,2348912013,1689376213,3533459022,3762923945,3034082412,4205598294,133428468,634383082,2949277029,2398386810,3913789102,403703816,3580869306,2297460856,1867130149,1918643758,607656988,4049053350,3346248884,1368901318,600565992,2090982877,2632479860,557719327,3717614411,3697393085,2249034635,2232388234,2430627952,1115438654,3295786421,2865522278,3633334344,84280067,33027830,303828494,2747425121,1600795957,4188952407,3496589753,2434238086,1486471617,658119965,3106381470,953803233,334231800,3005978776,857870609,3151128937,1890179545,2298973838,2805175444,3056442267,574365214,2450884487,550103529,1233637070,4289353045,2018519080,2057691103,2399374476,4166623649,2148108681,387583245,3664101311,836232934,3330556482,3100665960,3280093505,2955516313,2002398509,287182607,3413881008,4238890068,3597515707,975967766],Qt=[1671808611,2089089148,2006576759,2072901243,4061003762,1807603307,1873927791,3310653893,810573872,16974337,1739181671,729634347,4263110654,3613570519,2883997099,1989864566,3393556426,2191335298,3376449993,2106063485,4195741690,1508618841,1204391495,4027317232,2917941677,3563566036,2734514082,2951366063,2629772188,2767672228,1922491506,3227229120,3082974647,4246528509,2477669779,644500518,911895606,1061256767,4144166391,3427763148,878471220,2784252325,3845444069,4043897329,1905517169,3631459288,827548209,356461077,67897348,3344078279,593839651,3277757891,405286936,2527147926,84871685,2595565466,118033927,305538066,2157648768,3795705826,3945188843,661212711,2999812018,1973414517,152769033,2208177539,745822252,439235610,455947803,1857215598,1525593178,2700827552,1391895634,994932283,3596728278,3016654259,695947817,3812548067,795958831,2224493444,1408607827,3513301457,0,3979133421,543178784,4229948412,2982705585,1542305371,1790891114,3410398667,3201918910,961245753,1256100938,1289001036,1491644504,3477767631,3496721360,4012557807,2867154858,4212583931,1137018435,1305975373,861234739,2241073541,1171229253,4178635257,33948674,2139225727,1357946960,1011120188,2679776671,2833468328,1374921297,2751356323,1086357568,2408187279,2460827538,2646352285,944271416,4110742005,3168756668,3066132406,3665145818,560153121,271589392,4279952895,4077846003,3530407890,3444343245,202643468,322250259,3962553324,1608629855,2543990167,1154254916,389623319,3294073796,2817676711,2122513534,1028094525,1689045092,1575467613,422261273,1939203699,1621147744,2174228865,1339137615,3699352540,577127458,712922154,2427141008,2290289544,1187679302,3995715566,3100863416,339486740,3732514782,1591917662,186455563,3681988059,3762019296,844522546,978220090,169743370,1239126601,101321734,611076132,1558493276,3260915650,3547250131,2901361580,1655096418,2443721105,2510565781,3828863972,2039214713,3878868455,3359869896,928607799,1840765549,2374762893,3580146133,1322425422,2850048425,1823791212,1459268694,4094161908,3928346602,1706019429,2056189050,2934523822,135794696,3134549946,2022240376,628050469,779246638,472135708,2800834470,3032970164,3327236038,3894660072,3715932637,1956440180,522272287,1272813131,3185336765,2340818315,2323976074,1888542832,1044544574,3049550261,1722469478,1222152264,50660867,4127324150,236067854,1638122081,895445557,1475980887,3117443513,2257655686,3243809217,489110045,2662934430,3778599393,4162055160,2561878936,288563729,1773916777,3648039385,2391345038,2493985684,2612407707,505560094,2274497927,3911240169,3460925390,1442818645,678973480,3749357023,2358182796,2717407649,2306869641,219617805,3218761151,3862026214,1120306242,1756942440,1103331905,2578459033,762796589,252780047,2966125488,1425844308,3151392187,372911126],er=[1667474886,2088535288,2004326894,2071694838,4075949567,1802223062,1869591006,3318043793,808472672,16843522,1734846926,724270422,4278065639,3621216949,2880169549,1987484396,3402253711,2189597983,3385409673,2105378810,4210693615,1499065266,1195886990,4042263547,2913856577,3570689971,2728590687,2947541573,2627518243,2762274643,1920112356,3233831835,3082273397,4261223649,2475929149,640051788,909531756,1061110142,4160160501,3435941763,875846760,2779116625,3857003729,4059105529,1903268834,3638064043,825316194,353713962,67374088,3351728789,589522246,3284360861,404236336,2526454071,84217610,2593830191,117901582,303183396,2155911963,3806477791,3958056653,656894286,2998062463,1970642922,151591698,2206440989,741110872,437923380,454765878,1852748508,1515908788,2694904667,1381168804,993742198,3604373943,3014905469,690584402,3823320797,791638366,2223281939,1398011302,3520161977,0,3991743681,538992704,4244381667,2981218425,1532751286,1785380564,3419096717,3200178535,960056178,1246420628,1280103576,1482221744,3486468741,3503319995,4025428677,2863326543,4227536621,1128514950,1296947098,859002214,2240123921,1162203018,4193849577,33687044,2139062782,1347481760,1010582648,2678045221,2829640523,1364325282,2745433693,1077985408,2408548869,2459086143,2644360225,943212656,4126475505,3166494563,3065430391,3671750063,555836226,269496352,4294908645,4092792573,3537006015,3452783745,202118168,320025894,3974901699,1600119230,2543297077,1145359496,387397934,3301201811,2812801621,2122220284,1027426170,1684319432,1566435258,421079858,1936954854,1616945344,2172753945,1330631070,3705438115,572679748,707427924,2425400123,2290647819,1179044492,4008585671,3099120491,336870440,3739122087,1583276732,185277718,3688593069,3772791771,842159716,976899700,168435220,1229577106,101059084,606366792,1549591736,3267517855,3553849021,2897014595,1650632388,2442242105,2509612081,3840161747,2038008818,3890688725,3368567691,926374254,1835907034,2374863873,3587531953,1313788572,2846482505,1819063512,1448540844,4109633523,3941213647,1701162954,2054852340,2930698567,134748176,3132806511,2021165296,623210314,774795868,471606328,2795958615,3031746419,3334885783,3907527627,3722280097,1953799400,522133822,1263263126,3183336545,2341176845,2324333839,1886425312,1044267644,3048588401,1718004428,1212733584,50529542,4143317495,235803164,1633788866,892690282,1465383342,3115962473,2256965911,3250673817,488449850,2661202215,3789633753,4177007595,2560144171,286339874,1768537042,3654906025,2391705863,2492770099,2610673197,505291324,2273808917,3924369609,3469625735,1431699370,673740880,3755965093,2358021891,2711746649,2307489801,218961690,3217021541,3873845719,1111672452,1751693520,1094828930,2576986153,757954394,252645662,2964376443,1414855848,3149649517,370555436],tr=[1374988112,2118214995,437757123,975658646,1001089995,530400753,2902087851,1273168787,540080725,2910219766,2295101073,4110568485,1340463100,3307916247,641025152,3043140495,3736164937,632953703,1172967064,1576976609,3274667266,2169303058,2370213795,1809054150,59727847,361929877,3211623147,2505202138,3569255213,1484005843,1239443753,2395588676,1975683434,4102977912,2572697195,666464733,3202437046,4035489047,3374361702,2110667444,1675577880,3843699074,2538681184,1649639237,2976151520,3144396420,4269907996,4178062228,1883793496,2403728665,2497604743,1383856311,2876494627,1917518562,3810496343,1716890410,3001755655,800440835,2261089178,3543599269,807962610,599762354,33778362,3977675356,2328828971,2809771154,4077384432,1315562145,1708848333,101039829,3509871135,3299278474,875451293,2733856160,92987698,2767645557,193195065,1080094634,1584504582,3178106961,1042385657,2531067453,3711829422,1306967366,2438237621,1908694277,67556463,1615861247,429456164,3602770327,2302690252,1742315127,2968011453,126454664,3877198648,2043211483,2709260871,2084704233,4169408201,0,159417987,841739592,504459436,1817866830,4245618683,260388950,1034867998,908933415,168810852,1750902305,2606453969,607530554,202008497,2472011535,3035535058,463180190,2160117071,1641816226,1517767529,470948374,3801332234,3231722213,1008918595,303765277,235474187,4069246893,766945465,337553864,1475418501,2943682380,4003061179,2743034109,4144047775,1551037884,1147550661,1543208500,2336434550,3408119516,3069049960,3102011747,3610369226,1113818384,328671808,2227573024,2236228733,3535486456,2935566865,3341394285,496906059,3702665459,226906860,2009195472,733156972,2842737049,294930682,1206477858,2835123396,2700099354,1451044056,573804783,2269728455,3644379585,2362090238,2564033334,2801107407,2776292904,3669462566,1068351396,742039012,1350078989,1784663195,1417561698,4136440770,2430122216,775550814,2193862645,2673705150,1775276924,1876241833,3475313331,3366754619,270040487,3902563182,3678124923,3441850377,1851332852,3969562369,2203032232,3868552805,2868897406,566021896,4011190502,3135740889,1248802510,3936291284,699432150,832877231,708780849,3332740144,899835584,1951317047,4236429990,3767586992,866637845,4043610186,1106041591,2144161806,395441711,1984812685,1139781709,3433712980,3835036895,2664543715,1282050075,3240894392,1181045119,2640243204,25965917,4203181171,4211818798,3009879386,2463879762,3910161971,1842759443,2597806476,933301370,1509430414,3943906441,3467192302,3076639029,3776767469,2051518780,2631065433,1441952575,404016761,1942435775,1408749034,1610459739,3745345300,2017778566,3400528769,3110650942,941896748,3265478751,371049330,3168937228,675039627,4279080257,967311729,135050206,3635733660,1683407248,2076935265,3576870512,1215061108,3501741890],rr=[1347548327,1400783205,3273267108,2520393566,3409685355,4045380933,2880240216,2471224067,1428173050,4138563181,2441661558,636813900,4233094615,3620022987,2149987652,2411029155,1239331162,1730525723,2554718734,3781033664,46346101,310463728,2743944855,3328955385,3875770207,2501218972,3955191162,3667219033,768917123,3545789473,692707433,1150208456,1786102409,2029293177,1805211710,3710368113,3065962831,401639597,1724457132,3028143674,409198410,2196052529,1620529459,1164071807,3769721975,2226875310,486441376,2499348523,1483753576,428819965,2274680428,3075636216,598438867,3799141122,1474502543,711349675,129166120,53458370,2592523643,2782082824,4063242375,2988687269,3120694122,1559041666,730517276,2460449204,4042459122,2706270690,3446004468,3573941694,533804130,2328143614,2637442643,2695033685,839224033,1973745387,957055980,2856345839,106852767,1371368976,4181598602,1033297158,2933734917,1179510461,3046200461,91341917,1862534868,4284502037,605657339,2547432937,3431546947,2003294622,3182487618,2282195339,954669403,3682191598,1201765386,3917234703,3388507166,0,2198438022,1211247597,2887651696,1315723890,4227665663,1443857720,507358933,657861945,1678381017,560487590,3516619604,975451694,2970356327,261314535,3535072918,2652609425,1333838021,2724322336,1767536459,370938394,182621114,3854606378,1128014560,487725847,185469197,2918353863,3106780840,3356761769,2237133081,1286567175,3152976349,4255350624,2683765030,3160175349,3309594171,878443390,1988838185,3704300486,1756818940,1673061617,3403100636,272786309,1075025698,545572369,2105887268,4174560061,296679730,1841768865,1260232239,4091327024,3960309330,3497509347,1814803222,2578018489,4195456072,575138148,3299409036,446754879,3629546796,4011996048,3347532110,3252238545,4270639778,915985419,3483825537,681933534,651868046,2755636671,3828103837,223377554,2607439820,1649704518,3270937875,3901806776,1580087799,4118987695,3198115200,2087309459,2842678573,3016697106,1003007129,2802849917,1860738147,2077965243,164439672,4100872472,32283319,2827177882,1709610350,2125135846,136428751,3874428392,3652904859,3460984630,3572145929,3593056380,2939266226,824852259,818324884,3224740454,930369212,2801566410,2967507152,355706840,1257309336,4148292826,243256656,790073846,2373340630,1296297904,1422699085,3756299780,3818836405,457992840,3099667487,2135319889,77422314,1560382517,1945798516,788204353,1521706781,1385356242,870912086,325965383,2358957921,2050466060,2388260884,2313884476,4006521127,901210569,3990953189,1014646705,1503449823,1062597235,2031621326,3212035895,3931371469,1533017514,350174575,2256028891,2177544179,1052338372,741876788,1606591296,1914052035,213705253,2334669897,1107234197,1899603969,3725069491,2631447780,2422494913,1635502980,1893020342,1950903388,1120974935],ir=[2807058932,1699970625,2764249623,1586903591,1808481195,1173430173,1487645946,59984867,4199882800,1844882806,1989249228,1277555970,3623636965,3419915562,1149249077,2744104290,1514790577,459744698,244860394,3235995134,1963115311,4027744588,2544078150,4190530515,1608975247,2627016082,2062270317,1507497298,2200818878,567498868,1764313568,3359936201,2305455554,2037970062,1047239e3,1910319033,1337376481,2904027272,2892417312,984907214,1243112415,830661914,861968209,2135253587,2011214180,2927934315,2686254721,731183368,1750626376,4246310725,1820824798,4172763771,3542330227,48394827,2404901663,2871682645,671593195,3254988725,2073724613,145085239,2280796200,2779915199,1790575107,2187128086,472615631,3029510009,4075877127,3802222185,4107101658,3201631749,1646252340,4270507174,1402811438,1436590835,3778151818,3950355702,3963161475,4020912224,2667994737,273792366,2331590177,104699613,95345982,3175501286,2377486676,1560637892,3564045318,369057872,4213447064,3919042237,1137477952,2658625497,1119727848,2340947849,1530455833,4007360968,172466556,266959938,516552836,0,2256734592,3980931627,1890328081,1917742170,4294704398,945164165,3575528878,958871085,3647212047,2787207260,1423022939,775562294,1739656202,3876557655,2530391278,2443058075,3310321856,547512796,1265195639,437656594,3121275539,719700128,3762502690,387781147,218828297,3350065803,2830708150,2848461854,428169201,122466165,3720081049,1627235199,648017665,4122762354,1002783846,2117360635,695634755,3336358691,4234721005,4049844452,3704280881,2232435299,574624663,287343814,612205898,1039717051,840019705,2708326185,793451934,821288114,1391201670,3822090177,376187827,3113855344,1224348052,1679968233,2361698556,1058709744,752375421,2431590963,1321699145,3519142200,2734591178,188127444,2177869557,3727205754,2384911031,3215212461,2648976442,2450346104,3432737375,1180849278,331544205,3102249176,4150144569,2952102595,2159976285,2474404304,766078933,313773861,2570832044,2108100632,1668212892,3145456443,2013908262,418672217,3070356634,2594734927,1852171925,3867060991,3473416636,3907448597,2614737639,919489135,164948639,2094410160,2997825956,590424639,2486224549,1723872674,3157750862,3399941250,3501252752,3625268135,2555048196,3673637356,1343127501,4130281361,3599595085,2957853679,1297403050,81781910,3051593425,2283490410,532201772,1367295589,3926170974,895287692,1953757831,1093597963,492483431,3528626907,1446242576,1192455638,1636604631,209336225,344873464,1015671571,669961897,3375740769,3857572124,2973530695,3747192018,1933530610,3464042516,935293895,3454686199,2858115069,1863638845,3683022916,4085369519,3292445032,875313188,1080017571,3279033885,621591778,1233856572,2504130317,24197544,3017672716,3835484340,3247465558,2220981195,3060847922,1551124588,1463996600],sr=[4104605777,1097159550,396673818,660510266,2875968315,2638606623,4200115116,3808662347,821712160,1986918061,3430322568,38544885,3856137295,718002117,893681702,1654886325,2975484382,3122358053,3926825029,4274053469,796197571,1290801793,1184342925,3556361835,2405426947,2459735317,1836772287,1381620373,3196267988,1948373848,3764988233,3385345166,3263785589,2390325492,1480485785,3111247143,3780097726,2293045232,548169417,3459953789,3746175075,439452389,1362321559,1400849762,1685577905,1806599355,2174754046,137073913,1214797936,1174215055,3731654548,2079897426,1943217067,1258480242,529487843,1437280870,3945269170,3049390895,3313212038,923313619,679998e3,3215307299,57326082,377642221,3474729866,2041877159,133361907,1776460110,3673476453,96392454,878845905,2801699524,777231668,4082475170,2330014213,4142626212,2213296395,1626319424,1906247262,1846563261,562755902,3708173718,1040559837,3871163981,1418573201,3294430577,114585348,1343618912,2566595609,3186202582,1078185097,3651041127,3896688048,2307622919,425408743,3371096953,2081048481,1108339068,2216610296,0,2156299017,736970802,292596766,1517440620,251657213,2235061775,2933202493,758720310,265905162,1554391400,1532285339,908999204,174567692,1474760595,4002861748,2610011675,3234156416,3693126241,2001430874,303699484,2478443234,2687165888,585122620,454499602,151849742,2345119218,3064510765,514443284,4044981591,1963412655,2581445614,2137062819,19308535,1928707164,1715193156,4219352155,1126790795,600235211,3992742070,3841024952,836553431,1669664834,2535604243,3323011204,1243905413,3141400786,4180808110,698445255,2653899549,2989552604,2253581325,3252932727,3004591147,1891211689,2487810577,3915653703,4237083816,4030667424,2100090966,865136418,1229899655,953270745,3399679628,3557504664,4118925222,2061379749,3079546586,2915017791,983426092,2022837584,1607244650,2118541908,2366882550,3635996816,972512814,3283088770,1568718495,3499326569,3576539503,621982671,2895723464,410887952,2623762152,1002142683,645401037,1494807662,2595684844,1335535747,2507040230,4293295786,3167684641,367585007,3885750714,1865862730,2668221674,2960971305,2763173681,1059270954,2777952454,2724642869,1320957812,2194319100,2429595872,2815956275,77089521,3973773121,3444575871,2448830231,1305906550,4021308739,2857194700,2516901860,3518358430,1787304780,740276417,1699839814,1592394909,2352307457,2272556026,188821243,1729977011,3687994002,274084841,3594982253,3613494426,2701949495,4162096729,322734571,2837966542,1640576439,484830689,1202797690,3537852828,4067639125,349075736,3342319475,4157467219,4255800159,1030690015,1155237496,2951971274,1757691577,607398968,2738905026,499347990,3794078908,1011452712,227885567,2818666809,213114376,3034881240,1455525988,3414450555,850817237,1817998408,3092726480],nr=[0,235474187,470948374,303765277,941896748,908933415,607530554,708780849,1883793496,2118214995,1817866830,1649639237,1215061108,1181045119,1417561698,1517767529,3767586992,4003061179,4236429990,4069246893,3635733660,3602770327,3299278474,3400528769,2430122216,2664543715,2362090238,2193862645,2835123396,2801107407,3035535058,3135740889,3678124923,3576870512,3341394285,3374361702,3810496343,3977675356,4279080257,4043610186,2876494627,2776292904,3076639029,3110650942,2472011535,2640243204,2403728665,2169303058,1001089995,899835584,666464733,699432150,59727847,226906860,530400753,294930682,1273168787,1172967064,1475418501,1509430414,1942435775,2110667444,1876241833,1641816226,2910219766,2743034109,2976151520,3211623147,2505202138,2606453969,2302690252,2269728455,3711829422,3543599269,3240894392,3475313331,3843699074,3943906441,4178062228,4144047775,1306967366,1139781709,1374988112,1610459739,1975683434,2076935265,1775276924,1742315127,1034867998,866637845,566021896,800440835,92987698,193195065,429456164,395441711,1984812685,2017778566,1784663195,1683407248,1315562145,1080094634,1383856311,1551037884,101039829,135050206,437757123,337553864,1042385657,807962610,573804783,742039012,2531067453,2564033334,2328828971,2227573024,2935566865,2700099354,3001755655,3168937228,3868552805,3902563182,4203181171,4102977912,3736164937,3501741890,3265478751,3433712980,1106041591,1340463100,1576976609,1408749034,2043211483,2009195472,1708848333,1809054150,832877231,1068351396,766945465,599762354,159417987,126454664,361929877,463180190,2709260871,2943682380,3178106961,3009879386,2572697195,2538681184,2236228733,2336434550,3509871135,3745345300,3441850377,3274667266,3910161971,3877198648,4110568485,4211818798,2597806476,2497604743,2261089178,2295101073,2733856160,2902087851,3202437046,2968011453,3936291284,3835036895,4136440770,4169408201,3535486456,3702665459,3467192302,3231722213,2051518780,1951317047,1716890410,1750902305,1113818384,1282050075,1584504582,1350078989,168810852,67556463,371049330,404016761,841739592,1008918595,775550814,540080725,3969562369,3801332234,4035489047,4269907996,3569255213,3669462566,3366754619,3332740144,2631065433,2463879762,2160117071,2395588676,2767645557,2868897406,3102011747,3069049960,202008497,33778362,270040487,504459436,875451293,975658646,675039627,641025152,2084704233,1917518562,1615861247,1851332852,1147550661,1248802510,1484005843,1451044056,933301370,967311729,733156972,632953703,260388950,25965917,328671808,496906059,1206477858,1239443753,1543208500,1441952575,2144161806,1908694277,1675577880,1842759443,3610369226,3644379585,3408119516,3307916247,4011190502,3776767469,4077384432,4245618683,2809771154,2842737049,3144396420,3043140495,2673705150,2438237621,2203032232,2370213795],ar=[0,185469197,370938394,487725847,741876788,657861945,975451694,824852259,1483753576,1400783205,1315723890,1164071807,1950903388,2135319889,1649704518,1767536459,2967507152,3152976349,2801566410,2918353863,2631447780,2547432937,2328143614,2177544179,3901806776,3818836405,4270639778,4118987695,3299409036,3483825537,3535072918,3652904859,2077965243,1893020342,1841768865,1724457132,1474502543,1559041666,1107234197,1257309336,598438867,681933534,901210569,1052338372,261314535,77422314,428819965,310463728,3409685355,3224740454,3710368113,3593056380,3875770207,3960309330,4045380933,4195456072,2471224067,2554718734,2237133081,2388260884,3212035895,3028143674,2842678573,2724322336,4138563181,4255350624,3769721975,3955191162,3667219033,3516619604,3431546947,3347532110,2933734917,2782082824,3099667487,3016697106,2196052529,2313884476,2499348523,2683765030,1179510461,1296297904,1347548327,1533017514,1786102409,1635502980,2087309459,2003294622,507358933,355706840,136428751,53458370,839224033,957055980,605657339,790073846,2373340630,2256028891,2607439820,2422494913,2706270690,2856345839,3075636216,3160175349,3573941694,3725069491,3273267108,3356761769,4181598602,4063242375,4011996048,3828103837,1033297158,915985419,730517276,545572369,296679730,446754879,129166120,213705253,1709610350,1860738147,1945798516,2029293177,1239331162,1120974935,1606591296,1422699085,4148292826,4233094615,3781033664,3931371469,3682191598,3497509347,3446004468,3328955385,2939266226,2755636671,3106780840,2988687269,2198438022,2282195339,2501218972,2652609425,1201765386,1286567175,1371368976,1521706781,1805211710,1620529459,2105887268,1988838185,533804130,350174575,164439672,46346101,870912086,954669403,636813900,788204353,2358957921,2274680428,2592523643,2441661558,2695033685,2880240216,3065962831,3182487618,3572145929,3756299780,3270937875,3388507166,4174560061,4091327024,4006521127,3854606378,1014646705,930369212,711349675,560487590,272786309,457992840,106852767,223377554,1678381017,1862534868,1914052035,2031621326,1211247597,1128014560,1580087799,1428173050,32283319,182621114,401639597,486441376,768917123,651868046,1003007129,818324884,1503449823,1385356242,1333838021,1150208456,1973745387,2125135846,1673061617,1756818940,2970356327,3120694122,2802849917,2887651696,2637442643,2520393566,2334669897,2149987652,3917234703,3799141122,4284502037,4100872472,3309594171,3460984630,3545789473,3629546796,2050466060,1899603969,1814803222,1730525723,1443857720,1560382517,1075025698,1260232239,575138148,692707433,878443390,1062597235,243256656,91341917,409198410,325965383,3403100636,3252238545,3704300486,3620022987,3874428392,3990953189,4042459122,4227665663,2460449204,2578018489,2226875310,2411029155,3198115200,3046200461,2827177882,2743944855],or=[0,218828297,437656594,387781147,875313188,958871085,775562294,590424639,1750626376,1699970625,1917742170,2135253587,1551124588,1367295589,1180849278,1265195639,3501252752,3720081049,3399941250,3350065803,3835484340,3919042237,4270507174,4085369519,3102249176,3051593425,2734591178,2952102595,2361698556,2177869557,2530391278,2614737639,3145456443,3060847922,2708326185,2892417312,2404901663,2187128086,2504130317,2555048196,3542330227,3727205754,3375740769,3292445032,3876557655,3926170974,4246310725,4027744588,1808481195,1723872674,1910319033,2094410160,1608975247,1391201670,1173430173,1224348052,59984867,244860394,428169201,344873464,935293895,984907214,766078933,547512796,1844882806,1627235199,2011214180,2062270317,1507497298,1423022939,1137477952,1321699145,95345982,145085239,532201772,313773861,830661914,1015671571,731183368,648017665,3175501286,2957853679,2807058932,2858115069,2305455554,2220981195,2474404304,2658625497,3575528878,3625268135,3473416636,3254988725,3778151818,3963161475,4213447064,4130281361,3599595085,3683022916,3432737375,3247465558,3802222185,4020912224,4172763771,4122762354,3201631749,3017672716,2764249623,2848461854,2331590177,2280796200,2431590963,2648976442,104699613,188127444,472615631,287343814,840019705,1058709744,671593195,621591778,1852171925,1668212892,1953757831,2037970062,1514790577,1463996600,1080017571,1297403050,3673637356,3623636965,3235995134,3454686199,4007360968,3822090177,4107101658,4190530515,2997825956,3215212461,2830708150,2779915199,2256734592,2340947849,2627016082,2443058075,172466556,122466165,273792366,492483431,1047239e3,861968209,612205898,695634755,1646252340,1863638845,2013908262,1963115311,1446242576,1530455833,1277555970,1093597963,1636604631,1820824798,2073724613,1989249228,1436590835,1487645946,1337376481,1119727848,164948639,81781910,331544205,516552836,1039717051,821288114,669961897,719700128,2973530695,3157750862,2871682645,2787207260,2232435299,2283490410,2667994737,2450346104,3647212047,3564045318,3279033885,3464042516,3980931627,3762502690,4150144569,4199882800,3070356634,3121275539,2904027272,2686254721,2200818878,2384911031,2570832044,2486224549,3747192018,3528626907,3310321856,3359936201,3950355702,3867060991,4049844452,4234721005,1739656202,1790575107,2108100632,1890328081,1402811438,1586903591,1233856572,1149249077,266959938,48394827,369057872,418672217,1002783846,919489135,567498868,752375421,209336225,24197544,376187827,459744698,945164165,895287692,574624663,793451934,1679968233,1764313568,2117360635,1933530610,1343127501,1560637892,1243112415,1192455638,3704280881,3519142200,3336358691,3419915562,3907448597,3857572124,4075877127,4294704398,3029510009,3113855344,2927934315,2744104290,2159976285,2377486676,2594734927,2544078150],dr=[0,151849742,303699484,454499602,607398968,758720310,908999204,1059270954,1214797936,1097159550,1517440620,1400849762,1817998408,1699839814,2118541908,2001430874,2429595872,2581445614,2194319100,2345119218,3034881240,3186202582,2801699524,2951971274,3635996816,3518358430,3399679628,3283088770,4237083816,4118925222,4002861748,3885750714,1002142683,850817237,698445255,548169417,529487843,377642221,227885567,77089521,1943217067,2061379749,1640576439,1757691577,1474760595,1592394909,1174215055,1290801793,2875968315,2724642869,3111247143,2960971305,2405426947,2253581325,2638606623,2487810577,3808662347,3926825029,4044981591,4162096729,3342319475,3459953789,3576539503,3693126241,1986918061,2137062819,1685577905,1836772287,1381620373,1532285339,1078185097,1229899655,1040559837,923313619,740276417,621982671,439452389,322734571,137073913,19308535,3871163981,4021308739,4104605777,4255800159,3263785589,3414450555,3499326569,3651041127,2933202493,2815956275,3167684641,3049390895,2330014213,2213296395,2566595609,2448830231,1305906550,1155237496,1607244650,1455525988,1776460110,1626319424,2079897426,1928707164,96392454,213114376,396673818,514443284,562755902,679998e3,865136418,983426092,3708173718,3557504664,3474729866,3323011204,4180808110,4030667424,3945269170,3794078908,2507040230,2623762152,2272556026,2390325492,2975484382,3092726480,2738905026,2857194700,3973773121,3856137295,4274053469,4157467219,3371096953,3252932727,3673476453,3556361835,2763173681,2915017791,3064510765,3215307299,2156299017,2307622919,2459735317,2610011675,2081048481,1963412655,1846563261,1729977011,1480485785,1362321559,1243905413,1126790795,878845905,1030690015,645401037,796197571,274084841,425408743,38544885,188821243,3613494426,3731654548,3313212038,3430322568,4082475170,4200115116,3780097726,3896688048,2668221674,2516901860,2366882550,2216610296,3141400786,2989552604,2837966542,2687165888,1202797690,1320957812,1437280870,1554391400,1669664834,1787304780,1906247262,2022837584,265905162,114585348,499347990,349075736,736970802,585122620,972512814,821712160,2595684844,2478443234,2293045232,2174754046,3196267988,3079546586,2895723464,2777952454,3537852828,3687994002,3234156416,3385345166,4142626212,4293295786,3841024952,3992742070,174567692,57326082,410887952,292596766,777231668,660510266,1011452712,893681702,1108339068,1258480242,1343618912,1494807662,1715193156,1865862730,1948373848,2100090966,2701949495,2818666809,3004591147,3122358053,2235061775,2352307457,2535604243,2653899549,3915653703,3764988233,4219352155,4067639125,3444575871,3294430577,3746175075,3594982253,836553431,953270745,600235211,718002117,367585007,484830689,133361907,251657213,2041877159,1891211689,1806599355,1654886325,1568718495,1418573201,1335535747,1184342925];function lr(e){for(var t=[],r=0;r>2,this._Ke[r][t%4]=n[t],this._Kd[e-r][t%4]=n[t];for(var a,o=0,d=s;d>16&255]<<24^Kt[a>>8&255]<<16^Kt[255&a]<<8^Kt[a>>24&255]^qt[o]<<24,o+=1,8!=s)for(t=1;t>8&255]<<8^Kt[a>>16&255]<<16^Kt[a>>24&255]<<24;for(t=s/2+1;t>2,u=d%4,this._Ke[l][u]=n[t],this._Kd[e-l][u]=n[t++],d++}for(var l=1;l>24&255]^ar[a>>16&255]^or[a>>8&255]^dr[255&a]},ur.prototype.encrypt=function(e){if(16!=e.length)throw new Error("invalid plaintext size (must be 16 bytes)");for(var t=this._Ke.length-1,r=[0,0,0,0],i=lr(e),s=0;s<4;s++)i[s]^=this._Ke[0][s];for(var n=1;n>24&255]^Jt[i[(s+1)%4]>>16&255]^Qt[i[(s+2)%4]>>8&255]^er[255&i[(s+3)%4]]^this._Ke[n][s];i=r.slice()}var a,o=Ht(16);for(s=0;s<4;s++)a=this._Ke[t][s],o[4*s]=255&(Kt[i[s]>>24&255]^a>>24),o[4*s+1]=255&(Kt[i[(s+1)%4]>>16&255]^a>>16),o[4*s+2]=255&(Kt[i[(s+2)%4]>>8&255]^a>>8),o[4*s+3]=255&(Kt[255&i[(s+3)%4]]^a);return o},ur.prototype.decrypt=function(e){if(16!=e.length)throw new Error("invalid ciphertext size (must be 16 bytes)");for(var t=this._Kd.length-1,r=[0,0,0,0],i=lr(e),s=0;s<4;s++)i[s]^=this._Kd[0][s];for(var n=1;n>24&255]^rr[i[(s+3)%4]>>16&255]^ir[i[(s+2)%4]>>8&255]^sr[255&i[(s+1)%4]]^this._Kd[n][s];i=r.slice()}var a,o=Ht(16);for(s=0;s<4;s++)a=this._Kd[t][s],o[4*s]=255&(Xt[i[s]>>24&255]^a>>24),o[4*s+1]=255&(Xt[i[(s+3)%4]>>16&255]^a>>16),o[4*s+2]=255&(Xt[i[(s+2)%4]>>8&255]^a>>8),o[4*s+3]=255&(Xt[255&i[(s+1)%4]]^a);return o};var hr=function(e){if(!(this instanceof hr))throw Error("AES must be instanitated with `new`");this.description="Electronic Code Block",this.name="ecb",this._aes=new ur(e)};hr.prototype.encrypt=function(e){if((e=Gt(e)).length%16!=0)throw new Error("invalid plaintext size (must be multiple of 16 bytes)");for(var t=Ht(e.length),r=Ht(16),i=0;iNumber.MAX_SAFE_INTEGER)throw new Error("integer value out of safe range");for(var t=15;t>=0;--t)this._counter[t]=e%256,e=parseInt(e/256)},mr.prototype.setBytes=function(e){if(16!=(e=Gt(e,!0)).length)throw new Error("invalid counter bytes size (must be 16 bytes)");this._counter=e},mr.prototype.increment=function(){for(var e=15;e>=0;e--){if(255!==this._counter[e]){this._counter[e]++;break}this._counter[e]=0}};var _r=function(e,t){if(!(this instanceof _r))throw Error("AES must be instanitated with `new`");this.description="Counter",this.name="ctr",t instanceof mr||(t=new mr(t)),this._counter=t,this._remainingCounter=null,this._remainingCounterIndex=16,this._aes=new ur(e)};_r.prototype.encrypt=function(e){for(var t=Gt(e,!0),r=0;r16)throw new Error("PKCS#7 padding byte out of range");for(var r=e.length-t,i=0;i=i&&console.debug("["+n.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)},log:function(e,t){this.debug(e.msg)},info:function(e,t){2>=i&&console.info("["+n.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)},warn:function(e,t){3>=i&&console.warn("["+n.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)},error:function(e,t){4>=i&&console.error("["+n.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)}},s);n.getDurationString=function(e,t){var r;function i(e,t){for(var r=(""+e).split(".");r[0].length0){for(var r="",i=0;i0&&(r+=","),r+="["+n.getDurationString(e.start(i))+","+n.getDurationString(e.end(i))+"]";return r}return"(empty)"},t.Log=n;var a=function(e){if(!(e instanceof ArrayBuffer))throw"Needs an array buffer";this.buffer=e,this.dataview=new DataView(e),this.position=0};a.prototype.getPosition=function(){return this.position},a.prototype.getEndPosition=function(){return this.buffer.byteLength},a.prototype.getLength=function(){return this.buffer.byteLength},a.prototype.seek=function(e){var t=Math.max(0,Math.min(this.buffer.byteLength,e));return this.position=isNaN(t)||!isFinite(t)?0:t,!0},a.prototype.isEos=function(){return this.getPosition()>=this.getEndPosition()},a.prototype.readAnyInt=function(e,t){var r=0;if(this.position+e<=this.buffer.byteLength){switch(e){case 1:r=t?this.dataview.getInt8(this.position):this.dataview.getUint8(this.position);break;case 2:r=t?this.dataview.getInt16(this.position):this.dataview.getUint16(this.position);break;case 3:if(t)throw"No method for reading signed 24 bits values";r=this.dataview.getUint8(this.position)<<16,r|=this.dataview.getUint8(this.position+1)<<8,r|=this.dataview.getUint8(this.position+2);break;case 4:r=t?this.dataview.getInt32(this.position):this.dataview.getUint32(this.position);break;case 8:if(t)throw"No method for reading signed 64 bits values";r=this.dataview.getUint32(this.position)<<32,r|=this.dataview.getUint32(this.position+4);break;default:throw"readInt method not implemented for size: "+e}return this.position+=e,r}throw"Not enough bytes in buffer"},a.prototype.readUint8=function(){return this.readAnyInt(1,!1)},a.prototype.readUint16=function(){return this.readAnyInt(2,!1)},a.prototype.readUint24=function(){return this.readAnyInt(3,!1)},a.prototype.readUint32=function(){return this.readAnyInt(4,!1)},a.prototype.readUint64=function(){return this.readAnyInt(8,!1)},a.prototype.readString=function(e){if(this.position+e<=this.buffer.byteLength){for(var t="",r=0;rthis._byteLength&&(this._byteLength=t);else{for(r<1&&(r=1);t>r;)r*=2;var i=new ArrayBuffer(r),s=new Uint8Array(this._buffer);new Uint8Array(i,0,s.length).set(s),this.buffer=i,this._byteLength=t}}},o.prototype._trimAlloc=function(){if(this._byteLength!=this._buffer.byteLength){var e=new ArrayBuffer(this._byteLength),t=new Uint8Array(e),r=new Uint8Array(this._buffer,0,t.length);t.set(r),this.buffer=e}},o.BIG_ENDIAN=!1,o.LITTLE_ENDIAN=!0,o.prototype._byteLength=0,Object.defineProperty(o.prototype,"byteLength",{get:function(){return this._byteLength-this._byteOffset}}),Object.defineProperty(o.prototype,"buffer",{get:function(){return this._trimAlloc(),this._buffer},set:function(e){this._buffer=e,this._dataView=new DataView(this._buffer,this._byteOffset),this._byteLength=this._buffer.byteLength}}),Object.defineProperty(o.prototype,"byteOffset",{get:function(){return this._byteOffset},set:function(e){this._byteOffset=e,this._dataView=new DataView(this._buffer,this._byteOffset),this._byteLength=this._buffer.byteLength}}),Object.defineProperty(o.prototype,"dataView",{get:function(){return this._dataView},set:function(e){this._byteOffset=e.byteOffset,this._buffer=e.buffer,this._dataView=new DataView(this._buffer,this._byteOffset),this._byteLength=this._byteOffset+e.byteLength}}),o.prototype.seek=function(e){var t=Math.max(0,Math.min(this.byteLength,e));this.position=isNaN(t)||!isFinite(t)?0:t},o.prototype.isEof=function(){return this.position>=this._byteLength},o.prototype.mapUint8Array=function(e){this._realloc(1*e);var t=new Uint8Array(this._buffer,this.byteOffset+this.position,e);return this.position+=1*e,t},o.prototype.readInt32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var r=new Int32Array(e);return o.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),o.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},o.prototype.readInt16Array=function(e,t){e=null==e?this.byteLength-this.position/2:e;var r=new Int16Array(e);return o.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),o.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},o.prototype.readInt8Array=function(e){e=null==e?this.byteLength-this.position:e;var t=new Int8Array(e);return o.memcpy(t.buffer,0,this.buffer,this.byteOffset+this.position,e*t.BYTES_PER_ELEMENT),this.position+=t.byteLength,t},o.prototype.readUint32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var r=new Uint32Array(e);return o.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),o.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},o.prototype.readUint16Array=function(e,t){e=null==e?this.byteLength-this.position/2:e;var r=new Uint16Array(e);return o.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),o.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},o.prototype.readUint8Array=function(e){e=null==e?this.byteLength-this.position:e;var t=new Uint8Array(e);return o.memcpy(t.buffer,0,this.buffer,this.byteOffset+this.position,e*t.BYTES_PER_ELEMENT),this.position+=t.byteLength,t},o.prototype.readFloat64Array=function(e,t){e=null==e?this.byteLength-this.position/8:e;var r=new Float64Array(e);return o.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),o.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},o.prototype.readFloat32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var r=new Float32Array(e);return o.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),o.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},o.prototype.readInt32=function(e){var t=this._dataView.getInt32(this.position,null==e?this.endianness:e);return this.position+=4,t},o.prototype.readInt16=function(e){var t=this._dataView.getInt16(this.position,null==e?this.endianness:e);return this.position+=2,t},o.prototype.readInt8=function(){var e=this._dataView.getInt8(this.position);return this.position+=1,e},o.prototype.readUint32=function(e){var t=this._dataView.getUint32(this.position,null==e?this.endianness:e);return this.position+=4,t},o.prototype.readUint16=function(e){var t=this._dataView.getUint16(this.position,null==e?this.endianness:e);return this.position+=2,t},o.prototype.readUint8=function(){var e=this._dataView.getUint8(this.position);return this.position+=1,e},o.prototype.readFloat32=function(e){var t=this._dataView.getFloat32(this.position,null==e?this.endianness:e);return this.position+=4,t},o.prototype.readFloat64=function(e){var t=this._dataView.getFloat64(this.position,null==e?this.endianness:e);return this.position+=8,t},o.endianness=new Int8Array(new Int16Array([1]).buffer)[0]>0,o.memcpy=function(e,t,r,i,s){var n=new Uint8Array(e,t,s),a=new Uint8Array(r,i,s);n.set(a)},o.arrayToNative=function(e,t){return t==this.endianness?e:this.flipArrayEndianness(e)},o.nativeToEndian=function(e,t){return this.endianness==t?e:this.flipArrayEndianness(e)},o.flipArrayEndianness=function(e){for(var t=new Uint8Array(e.buffer,e.byteOffset,e.byteLength),r=0;rs;i--,s++){var n=t[s];t[s]=t[i],t[i]=n}return e},o.prototype.failurePosition=0,String.fromCharCodeUint8=function(e){for(var t=[],r=0;r>16),this.writeUint8((65280&e)>>8),this.writeUint8(255&e)},o.prototype.adjustUint32=function(e,t){var r=this.position;this.seek(e),this.writeUint32(t),this.seek(r)},o.prototype.mapInt32Array=function(e,t){this._realloc(4*e);var r=new Int32Array(this._buffer,this.byteOffset+this.position,e);return o.arrayToNative(r,null==t?this.endianness:t),this.position+=4*e,r},o.prototype.mapInt16Array=function(e,t){this._realloc(2*e);var r=new Int16Array(this._buffer,this.byteOffset+this.position,e);return o.arrayToNative(r,null==t?this.endianness:t),this.position+=2*e,r},o.prototype.mapInt8Array=function(e){this._realloc(1*e);var t=new Int8Array(this._buffer,this.byteOffset+this.position,e);return this.position+=1*e,t},o.prototype.mapUint32Array=function(e,t){this._realloc(4*e);var r=new Uint32Array(this._buffer,this.byteOffset+this.position,e);return o.arrayToNative(r,null==t?this.endianness:t),this.position+=4*e,r},o.prototype.mapUint16Array=function(e,t){this._realloc(2*e);var r=new Uint16Array(this._buffer,this.byteOffset+this.position,e);return o.arrayToNative(r,null==t?this.endianness:t),this.position+=2*e,r},o.prototype.mapFloat64Array=function(e,t){this._realloc(8*e);var r=new Float64Array(this._buffer,this.byteOffset+this.position,e);return o.arrayToNative(r,null==t?this.endianness:t),this.position+=8*e,r},o.prototype.mapFloat32Array=function(e,t){this._realloc(4*e);var r=new Float32Array(this._buffer,this.byteOffset+this.position,e);return o.arrayToNative(r,null==t?this.endianness:t),this.position+=4*e,r};var l=function(e){this.buffers=[],this.bufferIndex=-1,e&&(this.insertBuffer(e),this.bufferIndex=0)};(l.prototype=new o(new ArrayBuffer,0,o.BIG_ENDIAN)).initialized=function(){var e;return this.bufferIndex>-1||(this.buffers.length>0?0===(e=this.buffers[0]).fileStart?(this.buffer=e,this.bufferIndex=0,n.debug("MultiBufferStream","Stream ready for parsing"),!0):(n.warn("MultiBufferStream","The first buffer should have a fileStart of 0"),this.logBufferLevel(),!1):(n.warn("MultiBufferStream","No buffer to start parsing from"),this.logBufferLevel(),!1))},ArrayBuffer.concat=function(e,t){n.debug("ArrayBuffer","Trying to create a new buffer of size: "+(e.byteLength+t.byteLength));var r=new Uint8Array(e.byteLength+t.byteLength);return r.set(new Uint8Array(e),0),r.set(new Uint8Array(t),e.byteLength),r.buffer},l.prototype.reduceBuffer=function(e,t,r){var i;return(i=new Uint8Array(r)).set(new Uint8Array(e,t,r)),i.buffer.fileStart=e.fileStart+t,i.buffer.usedBytes=0,i.buffer},l.prototype.insertBuffer=function(e){for(var t=!0,r=0;ri.byteLength){this.buffers.splice(r,1),r--;continue}n.warn("MultiBufferStream","Buffer (fileStart: "+e.fileStart+" - Length: "+e.byteLength+") already appended, ignoring")}else e.fileStart+e.byteLength<=i.fileStart||(e=this.reduceBuffer(e,0,i.fileStart-e.fileStart)),n.debug("MultiBufferStream","Appending new buffer (fileStart: "+e.fileStart+" - Length: "+e.byteLength+")"),this.buffers.splice(r,0,e),0===r&&(this.buffer=e);t=!1;break}if(e.fileStart0)){t=!1;break}e=this.reduceBuffer(e,s,a)}}t&&(n.debug("MultiBufferStream","Appending new buffer (fileStart: "+e.fileStart+" - Length: "+e.byteLength+")"),this.buffers.push(e),0===r&&(this.buffer=e))},l.prototype.logBufferLevel=function(e){var t,r,i,s,a,o=[],d="";for(i=0,s=0,t=0;t0&&(d+=a.end-1+"]");var l=e?n.info:n.debug;0===this.buffers.length?l("MultiBufferStream","No more buffer in memory"):l("MultiBufferStream",this.buffers.length+" stored buffer(s) ("+i+"/"+s+" bytes), continuous ranges: "+d)},l.prototype.cleanBuffers=function(){var e,t;for(e=0;e"+this.buffer.byteLength+")"),!0}return!1}return!1},l.prototype.findPosition=function(e,t,r){var i,s=null,a=-1;for(i=!0===e?0:this.bufferIndex;i=t?(n.debug("MultiBufferStream","Found position in existing buffer #"+a),a):-1},l.prototype.findEndContiguousBuf=function(e){var t,r,i,s=void 0!==e?e:this.bufferIndex;if(r=this.buffers[s],this.buffers.length>s+1)for(t=s+1;t>3;return 31===i&&r.data.length>=2&&(i=32+((7&r.data[0])<<3)+((224&r.data[1])>>5)),i}return null},r.DecoderConfigDescriptor=function(e){r.Descriptor.call(this,4,e)},r.DecoderConfigDescriptor.prototype=new r.Descriptor,r.DecoderConfigDescriptor.prototype.parse=function(e){this.oti=e.readUint8(),this.streamType=e.readUint8(),this.bufferSize=e.readUint24(),this.maxBitrate=e.readUint32(),this.avgBitrate=e.readUint32(),this.size-=13,this.parseRemainingDescriptors(e)},r.DecoderSpecificInfo=function(e){r.Descriptor.call(this,5,e)},r.DecoderSpecificInfo.prototype=new r.Descriptor,r.SLConfigDescriptor=function(e){r.Descriptor.call(this,6,e)},r.SLConfigDescriptor.prototype=new r.Descriptor,this};t.MPEG4DescriptorParser=u;var h={ERR_INVALID_DATA:-1,ERR_NOT_ENOUGH_DATA:0,OK:1,BASIC_BOXES:["mdat","idat","free","skip","meco","strk"],FULL_BOXES:["hmhd","nmhd","iods","xml ","bxml","ipro","mere"],CONTAINER_BOXES:[["moov",["trak","pssh"]],["trak"],["edts"],["mdia"],["minf"],["dinf"],["stbl",["sgpd","sbgp"]],["mvex",["trex"]],["moof",["traf"]],["traf",["trun","sgpd","sbgp"]],["vttc"],["tref"],["iref"],["mfra",["tfra"]],["meco"],["hnti"],["hinf"],["strk"],["strd"],["sinf"],["rinf"],["schi"],["trgr"],["udta",["kind"]],["iprp",["ipma"]],["ipco"]],boxCodes:[],fullBoxCodes:[],containerBoxCodes:[],sampleEntryCodes:{},sampleGroupEntryCodes:[],trackGroupTypes:[],UUIDBoxes:{},UUIDs:[],initialize:function(){h.FullBox.prototype=new h.Box,h.ContainerBox.prototype=new h.Box,h.SampleEntry.prototype=new h.Box,h.TrackGroupTypeBox.prototype=new h.FullBox,h.BASIC_BOXES.forEach((function(e){h.createBoxCtor(e)})),h.FULL_BOXES.forEach((function(e){h.createFullBoxCtor(e)})),h.CONTAINER_BOXES.forEach((function(e){h.createContainerBoxCtor(e[0],null,e[1])}))},Box:function(e,t,r){this.type=e,this.size=t,this.uuid=r},FullBox:function(e,t,r){h.Box.call(this,e,t,r),this.flags=0,this.version=0},ContainerBox:function(e,t,r){h.Box.call(this,e,t,r),this.boxes=[]},SampleEntry:function(e,t,r,i){h.ContainerBox.call(this,e,t),this.hdr_size=r,this.start=i},SampleGroupEntry:function(e){this.grouping_type=e},TrackGroupTypeBox:function(e,t){h.FullBox.call(this,e,t)},createBoxCtor:function(e,t){h.boxCodes.push(e),h[e+"Box"]=function(t){h.Box.call(this,e,t)},h[e+"Box"].prototype=new h.Box,t&&(h[e+"Box"].prototype.parse=t)},createFullBoxCtor:function(e,t){h[e+"Box"]=function(t){h.FullBox.call(this,e,t)},h[e+"Box"].prototype=new h.FullBox,h[e+"Box"].prototype.parse=function(e){this.parseFullHeader(e),t&&t.call(this,e)}},addSubBoxArrays:function(e){if(e){this.subBoxNames=e;for(var t=e.length,r=0;rr?(n.error("BoxParser","Box of type '"+u+"' has a size "+l+" greater than its container size "+r),{code:h.ERR_NOT_ENOUGH_DATA,type:u,size:l,hdr_size:d,start:o}):0!==l&&o+l>e.getEndPosition()?(e.seek(o),n.info("BoxParser","Not enough data in stream to parse the entire '"+u+"' box"),{code:h.ERR_NOT_ENOUGH_DATA,type:u,size:l,hdr_size:d,start:o}):t?{code:h.OK,type:u,size:l,hdr_size:d,start:o}:(h[u+"Box"]?i=new h[u+"Box"](l):"uuid"!==u?(n.warn("BoxParser","Unknown box type: '"+u+"'"),(i=new h.Box(u,l)).has_unparsed_data=!0):h.UUIDBoxes[a]?i=new h.UUIDBoxes[a](l):(n.warn("BoxParser","Unknown uuid type: '"+a+"'"),(i=new h.Box(u,l)).uuid=a,i.has_unparsed_data=!0),i.hdr_size=d,i.start=o,i.write===h.Box.prototype.write&&"mdat"!==i.type&&(n.info("BoxParser","'"+c+"' box writing not yet implemented, keeping unparsed data in memory for later write"),i.parseDataAndRewind(e)),i.parse(e),(s=e.getPosition()-(i.start+i.size))<0?(n.warn("BoxParser","Parsing of box '"+c+"' did not read the entire indicated box data size (missing "+-s+" bytes), seeking forward"),e.seek(i.start+i.size)):s>0&&(n.error("BoxParser","Parsing of box '"+c+"' read "+s+" more bytes than the indicated box data size, seeking backwards"),0!==i.size&&e.seek(i.start+i.size)),{code:h.OK,box:i,size:i.size})},h.Box.prototype.parse=function(e){"mdat"!=this.type?this.data=e.readUint8Array(this.size-this.hdr_size):0===this.size?e.seek(e.getEndPosition()):e.seek(this.start+this.size)},h.Box.prototype.parseDataAndRewind=function(e){this.data=e.readUint8Array(this.size-this.hdr_size),e.position-=this.size-this.hdr_size},h.FullBox.prototype.parseDataAndRewind=function(e){this.parseFullHeader(e),this.data=e.readUint8Array(this.size-this.hdr_size),this.hdr_size-=4,e.position-=this.size-this.hdr_size},h.FullBox.prototype.parseFullHeader=function(e){this.version=e.readUint8(),this.flags=e.readUint24(),this.hdr_size+=4},h.FullBox.prototype.parse=function(e){this.parseFullHeader(e),this.data=e.readUint8Array(this.size-this.hdr_size)},h.ContainerBox.prototype.parse=function(e){for(var t,r;e.getPosition()>10&31,t[1]=this.language>>5&31,t[2]=31&this.language,this.languageString=String.fromCharCode(t[0]+96,t[1]+96,t[2]+96)},h.SAMPLE_ENTRY_TYPE_VISUAL="Visual",h.SAMPLE_ENTRY_TYPE_AUDIO="Audio",h.SAMPLE_ENTRY_TYPE_HINT="Hint",h.SAMPLE_ENTRY_TYPE_METADATA="Metadata",h.SAMPLE_ENTRY_TYPE_SUBTITLE="Subtitle",h.SAMPLE_ENTRY_TYPE_SYSTEM="System",h.SAMPLE_ENTRY_TYPE_TEXT="Text",h.SampleEntry.prototype.parseHeader=function(e){e.readUint8Array(6),this.data_reference_index=e.readUint16(),this.hdr_size+=8},h.SampleEntry.prototype.parse=function(e){this.parseHeader(e),this.data=e.readUint8Array(this.size-this.hdr_size)},h.SampleEntry.prototype.parseDataAndRewind=function(e){this.parseHeader(e),this.data=e.readUint8Array(this.size-this.hdr_size),this.hdr_size-=8,e.position-=this.size-this.hdr_size},h.SampleEntry.prototype.parseFooter=function(e){h.ContainerBox.prototype.parse.call(this,e)},h.createMediaSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_HINT),h.createMediaSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_METADATA),h.createMediaSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_SUBTITLE),h.createMediaSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_SYSTEM),h.createMediaSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_TEXT),h.createMediaSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,(function(e){var t;this.parseHeader(e),e.readUint16(),e.readUint16(),e.readUint32Array(3),this.width=e.readUint16(),this.height=e.readUint16(),this.horizresolution=e.readUint32(),this.vertresolution=e.readUint32(),e.readUint32(),this.frame_count=e.readUint16(),t=Math.min(31,e.readUint8()),this.compressorname=e.readString(t),t<31&&e.readString(31-t),this.depth=e.readUint16(),e.readUint16(),this.parseFooter(e)})),h.createMediaSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,(function(e){this.parseHeader(e),e.readUint32Array(2),this.channel_count=e.readUint16(),this.samplesize=e.readUint16(),e.readUint16(),e.readUint16(),this.samplerate=e.readUint32()/65536,this.parseFooter(e)})),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"avc1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"avc2"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"avc3"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"avc4"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"av01"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"hvc1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"hev1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"vvc1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"vvi1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"vvs1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"vvcN"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"vp08"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"vp09"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mp4a"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"ac-3"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"ec-3"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"Opus"),h.createEncryptedSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"encv"),h.createEncryptedSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"enca"),h.createEncryptedSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_SUBTITLE,"encu"),h.createEncryptedSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_SYSTEM,"encs"),h.createEncryptedSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_TEXT,"enct"),h.createEncryptedSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_METADATA,"encm"),h.createBoxCtor("a1lx",(function(e){var t=16*(1+(1&(1&e.readUint8())));this.layer_size=[];for(var r=0;r<3;r++)this.layer_size[r]=16==t?e.readUint16():e.readUint32()})),h.createBoxCtor("a1op",(function(e){this.op_index=e.readUint8()})),h.createFullBoxCtor("auxC",(function(e){this.aux_type=e.readCString();var t=this.size-this.hdr_size-(this.aux_type.length+1);this.aux_subtype=e.readUint8Array(t)})),h.createBoxCtor("av1C",(function(e){var t=e.readUint8();if(t>>7&!1)n.error("av1C marker problem");else if(this.version=127&t,1===this.version)if(t=e.readUint8(),this.seq_profile=t>>5&7,this.seq_level_idx_0=31&t,t=e.readUint8(),this.seq_tier_0=t>>7&1,this.high_bitdepth=t>>6&1,this.twelve_bit=t>>5&1,this.monochrome=t>>4&1,this.chroma_subsampling_x=t>>3&1,this.chroma_subsampling_y=t>>2&1,this.chroma_sample_position=3&t,t=e.readUint8(),this.reserved_1=t>>5&7,0===this.reserved_1){if(this.initial_presentation_delay_present=t>>4&1,1===this.initial_presentation_delay_present)this.initial_presentation_delay_minus_one=15&t;else if(this.reserved_2=15&t,0!==this.reserved_2)return void n.error("av1C reserved_2 parsing problem");var r=this.size-this.hdr_size-4;this.configOBUs=e.readUint8Array(r)}else n.error("av1C reserved_1 parsing problem");else n.error("av1C version "+this.version+" not supported")})),h.createBoxCtor("avcC",(function(e){var t,r;for(this.configurationVersion=e.readUint8(),this.AVCProfileIndication=e.readUint8(),this.profile_compatibility=e.readUint8(),this.AVCLevelIndication=e.readUint8(),this.lengthSizeMinusOne=3&e.readUint8(),this.nb_SPS_nalus=31&e.readUint8(),r=this.size-this.hdr_size-6,this.SPS=[],t=0;t0&&(this.ext=e.readUint8Array(r))})),h.createBoxCtor("btrt",(function(e){this.bufferSizeDB=e.readUint32(),this.maxBitrate=e.readUint32(),this.avgBitrate=e.readUint32()})),h.createBoxCtor("clap",(function(e){this.cleanApertureWidthN=e.readUint32(),this.cleanApertureWidthD=e.readUint32(),this.cleanApertureHeightN=e.readUint32(),this.cleanApertureHeightD=e.readUint32(),this.horizOffN=e.readUint32(),this.horizOffD=e.readUint32(),this.vertOffN=e.readUint32(),this.vertOffD=e.readUint32()})),h.createBoxCtor("clli",(function(e){this.max_content_light_level=e.readUint16(),this.max_pic_average_light_level=e.readUint16()})),h.createFullBoxCtor("co64",(function(e){var t,r;if(t=e.readUint32(),this.chunk_offsets=[],0===this.version)for(r=0;r>7}else("rICC"===this.colour_type||"prof"===this.colour_type)&&(this.ICC_profile=e.readUint8Array(this.size-4))})),h.createFullBoxCtor("cprt",(function(e){this.parseLanguage(e),this.notice=e.readCString()})),h.createFullBoxCtor("cslg",(function(e){0===this.version&&(this.compositionToDTSShift=e.readInt32(),this.leastDecodeToDisplayDelta=e.readInt32(),this.greatestDecodeToDisplayDelta=e.readInt32(),this.compositionStartTime=e.readInt32(),this.compositionEndTime=e.readInt32())})),h.createFullBoxCtor("ctts",(function(e){var t,r;if(t=e.readUint32(),this.sample_counts=[],this.sample_offsets=[],0===this.version)for(r=0;r>6,this.bsid=t>>1&31,this.bsmod=(1&t)<<2|r>>6&3,this.acmod=r>>3&7,this.lfeon=r>>2&1,this.bit_rate_code=3&r|i>>5&7})),h.createBoxCtor("dec3",(function(e){var t=e.readUint16();this.data_rate=t>>3,this.num_ind_sub=7&t,this.ind_subs=[];for(var r=0;r>6,i.bsid=s>>1&31,i.bsmod=(1&s)<<4|n>>4&15,i.acmod=n>>1&7,i.lfeon=1&n,i.num_dep_sub=a>>1&15,i.num_dep_sub>0&&(i.chan_loc=(1&a)<<8|e.readUint8())}})),h.createFullBoxCtor("dfLa",(function(e){var t=[],r=["STREAMINFO","PADDING","APPLICATION","SEEKTABLE","VORBIS_COMMENT","CUESHEET","PICTURE","RESERVED"];for(this.parseFullHeader(e);;){var i=e.readUint8(),s=Math.min(127&i,r.length-1);if(s?e.readUint8Array(e.readUint24()):(e.readUint8Array(13),this.samplerate=e.readUint32()>>12,e.readUint8Array(20)),t.push(r[s]),128&i)break}this.numMetadataBlocks=t.length+" ("+t.join(", ")+")"})),h.createBoxCtor("dimm",(function(e){this.bytessent=e.readUint64()})),h.createBoxCtor("dmax",(function(e){this.time=e.readUint32()})),h.createBoxCtor("dmed",(function(e){this.bytessent=e.readUint64()})),h.createBoxCtor("dOps",(function(e){if(this.Version=e.readUint8(),this.OutputChannelCount=e.readUint8(),this.PreSkip=e.readUint16(),this.InputSampleRate=e.readUint32(),this.OutputGain=e.readInt16(),this.ChannelMappingFamily=e.readUint8(),0!==this.ChannelMappingFamily){this.StreamCount=e.readUint8(),this.CoupledCount=e.readUint8(),this.ChannelMapping=[];for(var t=0;t=4;)this.compatible_brands[r]=e.readString(4),t-=4,r++})),h.createFullBoxCtor("hdlr",(function(e){0===this.version&&(e.readUint32(),this.handler=e.readString(4),e.readUint32Array(3),this.name=e.readString(this.size-this.hdr_size-20),"\0"===this.name[this.name.length-1]&&(this.name=this.name.slice(0,-1)))})),h.createBoxCtor("hvcC",(function(e){var t,r,i,s;this.configurationVersion=e.readUint8(),s=e.readUint8(),this.general_profile_space=s>>6,this.general_tier_flag=(32&s)>>5,this.general_profile_idc=31&s,this.general_profile_compatibility=e.readUint32(),this.general_constraint_indicator=e.readUint8Array(6),this.general_level_idc=e.readUint8(),this.min_spatial_segmentation_idc=4095&e.readUint16(),this.parallelismType=3&e.readUint8(),this.chroma_format_idc=3&e.readUint8(),this.bit_depth_luma_minus8=7&e.readUint8(),this.bit_depth_chroma_minus8=7&e.readUint8(),this.avgFrameRate=e.readUint16(),s=e.readUint8(),this.constantFrameRate=s>>6,this.numTemporalLayers=(13&s)>>3,this.temporalIdNested=(4&s)>>2,this.lengthSizeMinusOne=3&s,this.nalu_arrays=[];var n=e.readUint8();for(t=0;t>7,a.nalu_type=63&s;var o=e.readUint16();for(r=0;r>4&15,this.length_size=15&t,t=e.readUint8(),this.base_offset_size=t>>4&15,1===this.version||2===this.version?this.index_size=15&t:this.index_size=0,this.items=[];var r=0;if(this.version<2)r=e.readUint16();else{if(2!==this.version)throw"version of iloc box not supported";r=e.readUint32()}for(var i=0;i>7,this.axis=1&t})),h.createFullBoxCtor("infe",(function(e){if(0!==this.version&&1!==this.version||(this.item_ID=e.readUint16(),this.item_protection_index=e.readUint16(),this.item_name=e.readCString(),this.content_type=e.readCString(),this.content_encoding=e.readCString()),1===this.version)return this.extension_type=e.readString(4),n.warn("BoxParser","Cannot parse extension type"),void e.seek(this.start+this.size);this.version>=2&&(2===this.version?this.item_ID=e.readUint16():3===this.version&&(this.item_ID=e.readUint32()),this.item_protection_index=e.readUint16(),this.item_type=e.readString(4),this.item_name=e.readCString(),"mime"===this.item_type?(this.content_type=e.readCString(),this.content_encoding=e.readCString()):"uri "===this.item_type&&(this.item_uri_type=e.readCString()))})),h.createFullBoxCtor("ipma",(function(e){var t,r;for(entry_count=e.readUint32(),this.associations=[],t=0;t>7==1,1&this.flags?a.property_index=(127&n)<<8|e.readUint8():a.property_index=127&n}}})),h.createFullBoxCtor("iref",(function(e){var t,r;for(this.references=[];e.getPosition()>7,i.assignment_type=127&s,i.assignment_type){case 0:i.grouping_type=e.readString(4);break;case 1:i.grouping_type=e.readString(4),i.grouping_type_parameter=e.readUint32();break;case 2:case 3:break;case 4:i.sub_track_id=e.readUint32();break;default:n.warn("BoxParser","Unknown leva assignement type")}}})),h.createBoxCtor("lsel",(function(e){this.layer_id=e.readUint16()})),h.createBoxCtor("maxr",(function(e){this.period=e.readUint32(),this.bytes=e.readUint32()})),h.createBoxCtor("mdcv",(function(e){this.display_primaries=[],this.display_primaries[0]={},this.display_primaries[0].x=e.readUint16(),this.display_primaries[0].y=e.readUint16(),this.display_primaries[1]={},this.display_primaries[1].x=e.readUint16(),this.display_primaries[1].y=e.readUint16(),this.display_primaries[2]={},this.display_primaries[2].x=e.readUint16(),this.display_primaries[2].y=e.readUint16(),this.white_point={},this.white_point.x=e.readUint16(),this.white_point.y=e.readUint16(),this.max_display_mastering_luminance=e.readUint32(),this.min_display_mastering_luminance=e.readUint32()})),h.createFullBoxCtor("mdhd",(function(e){1==this.version?(this.creation_time=e.readUint64(),this.modification_time=e.readUint64(),this.timescale=e.readUint32(),this.duration=e.readUint64()):(this.creation_time=e.readUint32(),this.modification_time=e.readUint32(),this.timescale=e.readUint32(),this.duration=e.readUint32()),this.parseLanguage(e),e.readUint16()})),h.createFullBoxCtor("mehd",(function(e){1&this.flags&&(n.warn("BoxParser","mehd box incorrectly uses flags set to 1, converting version to 1"),this.version=1),1==this.version?this.fragment_duration=e.readUint64():this.fragment_duration=e.readUint32()})),h.createFullBoxCtor("meta",(function(e){this.boxes=[],h.ContainerBox.prototype.parse.call(this,e)})),h.createFullBoxCtor("mfhd",(function(e){this.sequence_number=e.readUint32()})),h.createFullBoxCtor("mfro",(function(e){this._size=e.readUint32()})),h.createFullBoxCtor("mvhd",(function(e){1==this.version?(this.creation_time=e.readUint64(),this.modification_time=e.readUint64(),this.timescale=e.readUint32(),this.duration=e.readUint64()):(this.creation_time=e.readUint32(),this.modification_time=e.readUint32(),this.timescale=e.readUint32(),this.duration=e.readUint32()),this.rate=e.readUint32(),this.volume=e.readUint16()>>8,e.readUint16(),e.readUint32Array(2),this.matrix=e.readUint32Array(9),e.readUint32Array(6),this.next_track_id=e.readUint32()})),h.createBoxCtor("npck",(function(e){this.packetssent=e.readUint32()})),h.createBoxCtor("nump",(function(e){this.packetssent=e.readUint64()})),h.createFullBoxCtor("padb",(function(e){var t=e.readUint32();this.padbits=[];for(var r=0;r0){var t=e.readUint32();this.kid=[];for(var r=0;r0&&(this.data=e.readUint8Array(i))})),h.createFullBoxCtor("clef",(function(e){this.width=e.readUint32(),this.height=e.readUint32()})),h.createFullBoxCtor("enof",(function(e){this.width=e.readUint32(),this.height=e.readUint32()})),h.createFullBoxCtor("prof",(function(e){this.width=e.readUint32(),this.height=e.readUint32()})),h.createContainerBoxCtor("tapt",null,["clef","prof","enof"]),h.createBoxCtor("rtp ",(function(e){this.descriptionformat=e.readString(4),this.sdptext=e.readString(this.size-this.hdr_size-4)})),h.createFullBoxCtor("saio",(function(e){1&this.flags&&(this.aux_info_type=e.readUint32(),this.aux_info_type_parameter=e.readUint32());var t=e.readUint32();this.offset=[];for(var r=0;r>7,this.avgRateFlag=t>>6&1,this.durationFlag&&(this.duration=e.readUint32()),this.avgRateFlag&&(this.accurateStatisticsFlag=e.readUint8(),this.avgBitRate=e.readUint16(),this.avgFrameRate=e.readUint16()),this.dependency=[];for(var r=e.readUint8(),i=0;i>7,this.num_leading_samples=127&t})),h.createSampleGroupCtor("rash",(function(e){if(this.operation_point_count=e.readUint16(),this.description_length!==2+(1===this.operation_point_count?2:6*this.operation_point_count)+9)n.warn("BoxParser","Mismatch in "+this.grouping_type+" sample group length"),this.data=e.readUint8Array(this.description_length-2);else{if(1===this.operation_point_count)this.target_rate_share=e.readUint16();else{this.target_rate_share=[],this.available_bitrate=[];for(var t=0;t>4,this.skip_byte_block=15&t,this.isProtected=e.readUint8(),this.Per_Sample_IV_Size=e.readUint8(),this.KID=h.parseHex16(e),this.constant_IV_size=0,this.constant_IV=0,1===this.isProtected&&0===this.Per_Sample_IV_Size&&(this.constant_IV_size=e.readUint8(),this.constant_IV=e.readUint8Array(this.constant_IV_size))})),h.createSampleGroupCtor("stsa",(function(e){n.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),h.createSampleGroupCtor("sync",(function(e){var t=e.readUint8();this.NAL_unit_type=63&t})),h.createSampleGroupCtor("tele",(function(e){var t=e.readUint8();this.level_independently_decodable=t>>7})),h.createSampleGroupCtor("tsas",(function(e){n.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),h.createSampleGroupCtor("tscl",(function(e){n.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),h.createSampleGroupCtor("vipr",(function(e){n.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),h.createFullBoxCtor("sbgp",(function(e){this.grouping_type=e.readString(4),1===this.version?this.grouping_type_parameter=e.readUint32():this.grouping_type_parameter=0,this.entries=[];for(var t=e.readUint32(),r=0;r>6,this.sample_depends_on[i]=t>>4&3,this.sample_is_depended_on[i]=t>>2&3,this.sample_has_redundancy[i]=3&t})),h.createFullBoxCtor("senc"),h.createFullBoxCtor("sgpd",(function(e){this.grouping_type=e.readString(4),n.debug("BoxParser","Found Sample Groups of type "+this.grouping_type),1===this.version?this.default_length=e.readUint32():this.default_length=0,this.version>=2&&(this.default_group_description_index=e.readUint32()),this.entries=[];for(var t=e.readUint32(),r=0;r>31&1,i.referenced_size=2147483647&s,i.subsegment_duration=e.readUint32(),s=e.readUint32(),i.starts_with_SAP=s>>31&1,i.SAP_type=s>>28&7,i.SAP_delta_time=268435455&s}})),h.SingleItemTypeReferenceBox=function(e,t,r,i){h.Box.call(this,e,t),this.hdr_size=r,this.start=i},h.SingleItemTypeReferenceBox.prototype=new h.Box,h.SingleItemTypeReferenceBox.prototype.parse=function(e){this.from_item_ID=e.readUint16();var t=e.readUint16();this.references=[];for(var r=0;r>4&15,this.sample_sizes[t+1]=15&i}else if(8===this.field_size)for(t=0;t0)for(r=0;r>4&15,this.default_skip_byte_block=15&t}this.default_isProtected=e.readUint8(),this.default_Per_Sample_IV_Size=e.readUint8(),this.default_KID=h.parseHex16(e),1===this.default_isProtected&&0===this.default_Per_Sample_IV_Size&&(this.default_constant_IV_size=e.readUint8(),this.default_constant_IV=e.readUint8Array(this.default_constant_IV_size))})),h.createFullBoxCtor("tfdt",(function(e){1==this.version?this.baseMediaDecodeTime=e.readUint64():this.baseMediaDecodeTime=e.readUint32()})),h.createFullBoxCtor("tfhd",(function(e){var t=0;this.track_id=e.readUint32(),this.size-this.hdr_size>t&&this.flags&h.TFHD_FLAG_BASE_DATA_OFFSET?(this.base_data_offset=e.readUint64(),t+=8):this.base_data_offset=0,this.size-this.hdr_size>t&&this.flags&h.TFHD_FLAG_SAMPLE_DESC?(this.default_sample_description_index=e.readUint32(),t+=4):this.default_sample_description_index=0,this.size-this.hdr_size>t&&this.flags&h.TFHD_FLAG_SAMPLE_DUR?(this.default_sample_duration=e.readUint32(),t+=4):this.default_sample_duration=0,this.size-this.hdr_size>t&&this.flags&h.TFHD_FLAG_SAMPLE_SIZE?(this.default_sample_size=e.readUint32(),t+=4):this.default_sample_size=0,this.size-this.hdr_size>t&&this.flags&h.TFHD_FLAG_SAMPLE_FLAGS?(this.default_sample_flags=e.readUint32(),t+=4):this.default_sample_flags=0})),h.createFullBoxCtor("tfra",(function(e){this.track_ID=e.readUint32(),e.readUint24();var t=e.readUint8();this.length_size_of_traf_num=t>>4&3,this.length_size_of_trun_num=t>>2&3,this.length_size_of_sample_num=3&t,this.entries=[];for(var r=e.readUint32(),i=0;i>8,e.readUint16(),this.matrix=e.readInt32Array(9),this.width=e.readUint32(),this.height=e.readUint32()})),h.createBoxCtor("tmax",(function(e){this.time=e.readUint32()})),h.createBoxCtor("tmin",(function(e){this.time=e.readUint32()})),h.createBoxCtor("totl",(function(e){this.bytessent=e.readUint32()})),h.createBoxCtor("tpay",(function(e){this.bytessent=e.readUint32()})),h.createBoxCtor("tpyl",(function(e){this.bytessent=e.readUint64()})),h.TrackGroupTypeBox.prototype.parse=function(e){this.parseFullHeader(e),this.track_group_id=e.readUint32()},h.createTrackGroupCtor("msrc"),h.TrackReferenceTypeBox=function(e,t,r,i){h.Box.call(this,e,t),this.hdr_size=r,this.start=i},h.TrackReferenceTypeBox.prototype=new h.Box,h.TrackReferenceTypeBox.prototype.parse=function(e){this.track_ids=e.readUint32Array((this.size-this.hdr_size)/4)},h.trefBox.prototype.parse=function(e){for(var t,r;e.getPosition()t&&this.flags&h.TRUN_FLAGS_DATA_OFFSET?(this.data_offset=e.readInt32(),t+=4):this.data_offset=0,this.size-this.hdr_size>t&&this.flags&h.TRUN_FLAGS_FIRST_FLAG?(this.first_sample_flags=e.readUint32(),t+=4):this.first_sample_flags=0,this.sample_duration=[],this.sample_size=[],this.sample_flags=[],this.sample_composition_time_offset=[],this.size-this.hdr_size>t)for(var r=0;r0&&(this.location=e.readCString())})),h.createUUIDBox("a5d40b30e81411ddba2f0800200c9a66",!0,!1,(function(e){this.LiveServerManifest=e.readString(this.size-this.hdr_size).replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")})),h.createUUIDBox("d08a4f1810f34a82b6c832d8aba183d3",!0,!1,(function(e){this.system_id=h.parseHex16(e);var t=e.readUint32();t>0&&(this.data=e.readUint8Array(t))})),h.createUUIDBox("a2394f525a9b4f14a2446c427c648df4",!0,!1),h.createUUIDBox("8974dbce7be74c5184f97148f9882554",!0,!1,(function(e){this.default_AlgorithmID=e.readUint24(),this.default_IV_size=e.readUint8(),this.default_KID=h.parseHex16(e)})),h.createUUIDBox("d4807ef2ca3946958e5426cb9e46a79f",!0,!1,(function(e){this.fragment_count=e.readUint8(),this.entries=[];for(var t=0;t>4,this.chromaSubsampling=t>>1&7,this.videoFullRangeFlag=1&t,this.colourPrimaries=e.readUint8(),this.transferCharacteristics=e.readUint8(),this.matrixCoefficients=e.readUint8(),this.codecIntializationDataSize=e.readUint16(),this.codecIntializationData=e.readUint8Array(this.codecIntializationDataSize)):(this.profile=e.readUint8(),this.level=e.readUint8(),t=e.readUint8(),this.bitDepth=t>>4&15,this.colorSpace=15&t,t=e.readUint8(),this.chromaSubsampling=t>>4&15,this.transferFunction=t>>1&7,this.videoFullRangeFlag=1&t,this.codecIntializationDataSize=e.readUint16(),this.codecIntializationData=e.readUint8Array(this.codecIntializationDataSize))})),h.createBoxCtor("vttC",(function(e){this.text=e.readString(this.size-this.hdr_size)})),h.createFullBoxCtor("vvcC",(function(e){var t,r,i={held_bits:void 0,num_held_bits:0,stream_read_1_bytes:function(e){this.held_bits=e.readUint8(),this.num_held_bits=8},stream_read_2_bytes:function(e){this.held_bits=e.readUint16(),this.num_held_bits=16},extract_bits:function(e){var t=this.held_bits>>this.num_held_bits-e&(1<=0;--r){var a=i.extract_bits(1);this.ptl_sublayer_present_mask|=a<1;++r)i.extract_bits(1);for(r=this.num_sublayers-2;r>=0;--r)this.ptl_sublayer_present_mask&1<>=1;t+=h.decimalToHex(i,0),t+=".",0===this.hvcC.general_tier_flag?t+="L":t+="H",t+=this.hvcC.general_level_idc;var s=!1,n="";for(e=5;e>=0;e--)(this.hvcC.general_constraint_indicator[e]||s)&&(n="."+h.decimalToHex(this.hvcC.general_constraint_indicator[e],0)+n,s=!0);t+=n}return t},h.vvc1SampleEntry.prototype.getCodec=h.vvi1SampleEntry.prototype.getCodec=function(){var e,t=h.SampleEntry.prototype.getCodec.call(this);if(this.vvcC){t+="."+this.vvcC.general_profile_idc,this.vvcC.general_tier_flag?t+=".H":t+=".L",t+=this.vvcC.general_level_idc;var r="";if(this.vvcC.general_constraint_info){var i,s=[],n=0;for(n|=this.vvcC.ptl_frame_only_constraint<<7,n|=this.vvcC.ptl_multilayer_enabled<<6,e=0;e>2&63,s.push(n),n&&(i=e),n=this.vvcC.general_constraint_info[e]>>2&3;if(void 0===i)r=".CA";else{r=".C";var a="ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",o=0,d=0;for(e=0;e<=i;++e)for(o=o<<8|s[e],d+=8;d>=5;){r+=a[o>>d-5&31],o&=(1<<(d-=5))-1}d&&(r+=a[31&(o<<=5-d)])}}t+=r}return t},h.mp4aSampleEntry.prototype.getCodec=function(){var e=h.SampleEntry.prototype.getCodec.call(this);if(this.esds&&this.esds.esd){var t=this.esds.esd.getOTI(),r=this.esds.esd.getAudioConfig();return e+"."+h.decimalToHex(t)+(r?"."+r:"")}return e},h.stxtSampleEntry.prototype.getCodec=function(){var e=h.SampleEntry.prototype.getCodec.call(this);return this.mime_format?e+"."+this.mime_format:e},h.vp08SampleEntry.prototype.getCodec=h.vp09SampleEntry.prototype.getCodec=function(){var e=h.SampleEntry.prototype.getCodec.call(this),t=this.vpcC.level;0==t&&(t="00");var r=this.vpcC.bitDepth;return 8==r&&(r="08"),e+".0"+this.vpcC.profile+"."+t+"."+r},h.av01SampleEntry.prototype.getCodec=function(){var e,t=h.SampleEntry.prototype.getCodec.call(this),r=this.av1C.seq_level_idx_0;return r<10&&(r="0"+r),2===this.av1C.seq_profile&&1===this.av1C.high_bitdepth?e=1===this.av1C.twelve_bit?"12":"10":this.av1C.seq_profile<=2&&(e=1===this.av1C.high_bitdepth?"10":"08"),t+"."+this.av1C.seq_profile+"."+r+(this.av1C.seq_tier_0?"H":"M")+"."+e},h.Box.prototype.writeHeader=function(e,t){this.size+=8,this.size>d&&(this.size+=8),"uuid"===this.type&&(this.size+=16),n.debug("BoxWriter","Writing box "+this.type+" of size: "+this.size+" at position "+e.getPosition()+(t||"")),this.size>d?e.writeUint32(1):(this.sizePosition=e.getPosition(),e.writeUint32(this.size)),e.writeString(this.type,null,4),"uuid"===this.type&&e.writeUint8Array(this.uuid),this.size>d&&e.writeUint64(this.size)},h.FullBox.prototype.writeHeader=function(e){this.size+=4,h.Box.prototype.writeHeader.call(this,e," v="+this.version+" f="+this.flags),e.writeUint8(this.version),e.writeUint24(this.flags)},h.Box.prototype.write=function(e){"mdat"===this.type?this.data&&(this.size=this.data.length,this.writeHeader(e),e.writeUint8Array(this.data)):(this.size=this.data?this.data.length:0,this.writeHeader(e),this.data&&e.writeUint8Array(this.data))},h.ContainerBox.prototype.write=function(e){this.size=0,this.writeHeader(e);for(var t=0;t=2&&e.writeUint32(this.default_sample_description_index),e.writeUint32(this.entries.length),t=0;t0)for(t=0;t+1t?1:0,this.flags=0,this.size=4,1===this.version&&(this.size+=4),this.writeHeader(e),1===this.version?e.writeUint64(this.baseMediaDecodeTime):e.writeUint32(this.baseMediaDecodeTime)},h.tfhdBox.prototype.write=function(e){this.version=0,this.size=4,this.flags&h.TFHD_FLAG_BASE_DATA_OFFSET&&(this.size+=8),this.flags&h.TFHD_FLAG_SAMPLE_DESC&&(this.size+=4),this.flags&h.TFHD_FLAG_SAMPLE_DUR&&(this.size+=4),this.flags&h.TFHD_FLAG_SAMPLE_SIZE&&(this.size+=4),this.flags&h.TFHD_FLAG_SAMPLE_FLAGS&&(this.size+=4),this.writeHeader(e),e.writeUint32(this.track_id),this.flags&h.TFHD_FLAG_BASE_DATA_OFFSET&&e.writeUint64(this.base_data_offset),this.flags&h.TFHD_FLAG_SAMPLE_DESC&&e.writeUint32(this.default_sample_description_index),this.flags&h.TFHD_FLAG_SAMPLE_DUR&&e.writeUint32(this.default_sample_duration),this.flags&h.TFHD_FLAG_SAMPLE_SIZE&&e.writeUint32(this.default_sample_size),this.flags&h.TFHD_FLAG_SAMPLE_FLAGS&&e.writeUint32(this.default_sample_flags)},h.tkhdBox.prototype.write=function(e){this.version=0,this.size=80,this.writeHeader(e),e.writeUint32(this.creation_time),e.writeUint32(this.modification_time),e.writeUint32(this.track_id),e.writeUint32(0),e.writeUint32(this.duration),e.writeUint32(0),e.writeUint32(0),e.writeInt16(this.layer),e.writeInt16(this.alternate_group),e.writeInt16(this.volume<<8),e.writeUint16(0),e.writeInt32Array(this.matrix),e.writeUint32(this.width),e.writeUint32(this.height)},h.trexBox.prototype.write=function(e){this.version=0,this.flags=0,this.size=20,this.writeHeader(e),e.writeUint32(this.track_id),e.writeUint32(this.default_sample_description_index),e.writeUint32(this.default_sample_duration),e.writeUint32(this.default_sample_size),e.writeUint32(this.default_sample_flags)},h.trunBox.prototype.write=function(e){this.version=0,this.size=4,this.flags&h.TRUN_FLAGS_DATA_OFFSET&&(this.size+=4),this.flags&h.TRUN_FLAGS_FIRST_FLAG&&(this.size+=4),this.flags&h.TRUN_FLAGS_DURATION&&(this.size+=4*this.sample_duration.length),this.flags&h.TRUN_FLAGS_SIZE&&(this.size+=4*this.sample_size.length),this.flags&h.TRUN_FLAGS_FLAGS&&(this.size+=4*this.sample_flags.length),this.flags&h.TRUN_FLAGS_CTS_OFFSET&&(this.size+=4*this.sample_composition_time_offset.length),this.writeHeader(e),e.writeUint32(this.sample_count),this.flags&h.TRUN_FLAGS_DATA_OFFSET&&(this.data_offset_position=e.getPosition(),e.writeInt32(this.data_offset)),this.flags&h.TRUN_FLAGS_FIRST_FLAG&&e.writeUint32(this.first_sample_flags);for(var t=0;t-1||e[r]instanceof h.Box||t[r]instanceof h.Box||void 0===e[r]||void 0===t[r]||"function"==typeof e[r]||"function"==typeof t[r]||e.subBoxNames&&e.subBoxNames.indexOf(r.slice(0,4))>-1||t.subBoxNames&&t.subBoxNames.indexOf(r.slice(0,4))>-1||"data"===r||"start"===r||"size"===r||"creation_time"===r||"modification_time"===r||h.DIFF_PRIMITIVE_ARRAY_PROP_NAMES.indexOf(r)>-1||e[r]===t[r]))return!1;return!0},h.boxEqual=function(e,t){if(!h.boxEqualFields(e,t))return!1;for(var r=0;r1)for(t=1;t-1&&this.fragmentedTracks.splice(t,1)},p.prototype.setExtractionOptions=function(e,t,r){var i=this.getTrackById(e);if(i){var s={};this.extractedTracks.push(s),s.id=e,s.user=t,s.trak=i,i.nextSample=0,s.nb_samples=1e3,s.samples=[],r&&r.nbSamples&&(s.nb_samples=r.nbSamples)}},p.prototype.unsetExtractionOptions=function(e){for(var t=-1,r=0;r-1&&this.extractedTracks.splice(t,1)},p.prototype.parse=function(){var e,t;if(!this.restoreParsePosition||this.restoreParsePosition())for(;;){if(this.hasIncompleteMdat&&this.hasIncompleteMdat()){if(this.processIncompleteMdat())continue;return}if(this.saveParsePosition&&this.saveParsePosition(),(e=h.parseOneBox(this.stream,false)).code===h.ERR_NOT_ENOUGH_DATA){if(this.processIncompleteBox){if(this.processIncompleteBox(e))continue;return}return}var r;switch(r="uuid"!==(t=e.box).type?t.type:t.uuid,this.boxes.push(t),r){case"mdat":this.mdats.push(t);break;case"moof":this.moofs.push(t);break;case"moov":this.moovStartFound=!0,0===this.mdats.length&&(this.isProgressive=!0);default:void 0!==this[r]&&n.warn("ISOFile","Duplicate Box of type: "+r+", overriding previous occurrence"),this[r]=t}this.updateUsedBytes&&this.updateUsedBytes(t,e)}},p.prototype.checkBuffer=function(e){if(null==e)throw"Buffer must be defined and non empty";if(void 0===e.fileStart)throw"Buffer must have a fileStart property";return 0===e.byteLength?(n.warn("ISOFile","Ignoring empty buffer (fileStart: "+e.fileStart+")"),this.stream.logBufferLevel(),!1):(n.info("ISOFile","Processing buffer (fileStart: "+e.fileStart+")"),e.usedBytes=0,this.stream.insertBuffer(e),this.stream.logBufferLevel(),!!this.stream.initialized()||(n.warn("ISOFile","Not ready to start parsing"),!1))},p.prototype.appendBuffer=function(e,t){var r;if(this.checkBuffer(e))return this.parse(),this.moovStartFound&&!this.moovStartSent&&(this.moovStartSent=!0,this.onMoovStart&&this.onMoovStart()),this.moov?(this.sampleListBuilt||(this.buildSampleLists(),this.sampleListBuilt=!0),this.updateSampleLists(),this.onReady&&!this.readySent&&(this.readySent=!0,this.onReady(this.getInfo())),this.processSamples(t),this.nextSeekPosition?(r=this.nextSeekPosition,this.nextSeekPosition=void 0):r=this.nextParsePosition,this.stream.getEndFilePositionAfter&&(r=this.stream.getEndFilePositionAfter(r))):r=this.nextParsePosition?this.nextParsePosition:0,this.sidx&&this.onSidx&&!this.sidxSent&&(this.onSidx(this.sidx),this.sidxSent=!0),this.meta&&(this.flattenItemInfo&&!this.itemListBuilt&&(this.flattenItemInfo(),this.itemListBuilt=!0),this.processItems&&this.processItems(this.onItem)),this.stream.cleanBuffers&&(n.info("ISOFile","Done processing buffer (fileStart: "+e.fileStart+") - next buffer to fetch should have a fileStart position of "+r),this.stream.logBufferLevel(),this.stream.cleanBuffers(),this.stream.logBufferLevel(!0),n.info("ISOFile","Sample data size in memory: "+this.getAllocatedSampleDataSize())),r},p.prototype.getInfo=function(){var e,t,r,i,s,n,a={},o=new Date("1904-01-01T00:00:00Z").getTime();if(this.moov)for(a.hasMoov=!0,a.duration=this.moov.mvhd.duration,a.timescale=this.moov.mvhd.timescale,a.isFragmented=null!=this.moov.mvex,a.isFragmented&&this.moov.mvex.mehd&&(a.fragment_duration=this.moov.mvex.mehd.fragment_duration),a.isProgressive=this.isProgressive,a.hasIOD=null!=this.moov.iods,a.brands=[],a.brands.push(this.ftyp.major_brand),a.brands=a.brands.concat(this.ftyp.compatible_brands),a.created=new Date(o+1e3*this.moov.mvhd.creation_time),a.modified=new Date(o+1e3*this.moov.mvhd.modification_time),a.tracks=[],a.audioTracks=[],a.videoTracks=[],a.subtitleTracks=[],a.metadataTracks=[],a.hintTracks=[],a.otherTracks=[],e=0;e0?a.mime+='video/mp4; codecs="':a.audioTracks&&a.audioTracks.length>0?a.mime+='audio/mp4; codecs="':a.mime+='application/mp4; codecs="',e=0;e=r.samples.length)&&(n.info("ISOFile","Sending fragmented data on track #"+i.id+" for samples ["+Math.max(0,r.nextSample-i.nb_samples)+","+(r.nextSample-1)+"]"),n.info("ISOFile","Sample data size in memory: "+this.getAllocatedSampleDataSize()),this.onSegment&&this.onSegment(i.id,i.user,i.segmentStream.buffer,r.nextSample,e||r.nextSample>=r.samples.length),i.segmentStream=null,i!==this.fragmentedTracks[t]))break}}if(null!==this.onSamples)for(t=0;t=r.samples.length)&&(n.debug("ISOFile","Sending samples on track #"+a.id+" for sample "+r.nextSample),this.onSamples&&this.onSamples(a.id,a.user,a.samples),a.samples=[],a!==this.extractedTracks[t]))break}}}},p.prototype.getBox=function(e){var t=this.getBoxes(e,!0);return t.length?t[0]:null},p.prototype.getBoxes=function(e,t){var r=[];return p._sweep.call(this,e,r,t),r},p._sweep=function(e,t,r){for(var i in this.type&&this.type==e&&t.push(this),this.boxes){if(t.length&&r)return;p._sweep.call(this.boxes[i],e,t,r)}},p.prototype.getTrackSamplesInfo=function(e){var t=this.getTrackById(e);return t?t.samples:void 0},p.prototype.getTrackSample=function(e,t){var r=this.getTrackById(e);return this.getSample(r,t)},p.prototype.releaseUsedSamples=function(e,t){var r=0,i=this.getTrackById(e);i.lastValidSample||(i.lastValidSample=0);for(var s=i.lastValidSample;se*s.timescale){l=i-1;break}t&&s.is_sync&&(d=i)}for(t&&(l=d),e=r.samples[l].cts,r.nextSample=l;r.samples[l].alreadyRead===r.samples[l].size&&r.samples[l+1];)l++;return a=r.samples[l].offset+r.samples[l].alreadyRead,n.info("ISOFile","Seeking to "+(t?"RAP":"")+" sample #"+r.nextSample+" on track "+r.tkhd.track_id+", time "+n.getDurationString(e,o)+" and offset: "+a),{offset:a,time:e/o}},p.prototype.seek=function(e,t){var r,i,s,a=this.moov,o={offset:1/0,time:1/0};if(this.moov){for(s=0;s-1){o=d;break}switch(o){case"Visual":if(s.add("vmhd").set("graphicsmode",0).set("opcolor",[0,0,0]),n.set("width",t.width).set("height",t.height).set("horizresolution",72<<16).set("vertresolution",72<<16).set("frame_count",1).set("compressorname",t.type+" Compressor").set("depth",24),t.avcDecoderConfigRecord){var c=new h.avcCBox,f=new a(t.avcDecoderConfigRecord);c.parse(f),n.addBox(c)}break;case"Audio":s.add("smhd").set("balance",t.balance||0),n.set("channel_count",t.channel_count||2).set("samplesize",t.samplesize||16).set("samplerate",t.samplerate||65536);break;case"Hint":s.add("hmhd");break;case"Subtitle":if(s.add("sthd"),"stpp"===t.type)n.set("namespace",t.namespace||"nonamespace").set("schema_location",t.schema_location||"").set("auxiliary_mime_types",t.auxiliary_mime_types||"");break;default:s.add("nmhd")}t.description&&n.addBox(t.description),t.description_boxes&&t.description_boxes.forEach((function(e){n.addBox(e)})),s.add("dinf").add("dref").addEntry((new h["url Box"]).set("flags",1));var p=s.add("stbl");return p.add("stsd").addEntry(n),p.add("stts").set("sample_counts",[]).set("sample_deltas",[]),p.add("stsc").set("first_chunk",[]).set("samples_per_chunk",[]).set("sample_description_index",[]),p.add("stco").set("chunk_offsets",[]),p.add("stsz").set("sample_sizes",[]),this.moov.mvex.add("trex").set("track_id",t.id).set("default_sample_description_index",t.default_sample_description_index||1).set("default_sample_duration",t.default_sample_duration||0).set("default_sample_size",t.default_sample_size||0).set("default_sample_flags",t.default_sample_flags||0),this.buildTrakSampleLists(r),t.id}},h.Box.prototype.computeSize=function(e){var t=e||new o;t.endianness=o.BIG_ENDIAN,this.write(t)},p.prototype.addSample=function(e,t,r){var i=r||{},s={},n=this.getTrackById(e);if(null!==n){s.number=n.samples.length,s.track_id=n.tkhd.track_id,s.timescale=n.mdia.mdhd.timescale,s.description_index=i.sample_description_index?i.sample_description_index-1:0,s.description=n.mdia.minf.stbl.stsd.entries[s.description_index],s.data=t,s.size=t.byteLength,s.alreadyRead=s.size,s.duration=i.duration||1,s.cts=i.cts||0,s.dts=i.dts||0,s.is_sync=i.is_sync||!1,s.is_leading=i.is_leading||0,s.depends_on=i.depends_on||0,s.is_depended_on=i.is_depended_on||0,s.has_redundancy=i.has_redundancy||0,s.degradation_priority=i.degradation_priority||0,s.offset=0,s.subsamples=i.subsamples,n.samples.push(s),n.samples_size+=s.size,n.samples_duration+=s.duration,n.first_dts||(n.first_dts=i.dts),this.processSamples();var a=this.createSingleSampleMoof(s);return this.addBox(a),a.computeSize(),a.trafs[0].truns[0].data_offset=a.size+8,this.add("mdat").data=new Uint8Array(t),s}},p.prototype.createSingleSampleMoof=function(e){var t=0;t=e.is_sync?1<<25:65536;var r=new h.moofBox;r.add("mfhd").set("sequence_number",this.nextMoofNumber),this.nextMoofNumber++;var i=r.add("traf"),s=this.getTrackById(e.track_id);return i.add("tfhd").set("track_id",e.track_id).set("flags",h.TFHD_FLAG_DEFAULT_BASE_IS_MOOF),i.add("tfdt").set("baseMediaDecodeTime",e.dts-(s.first_dts||0)),i.add("trun").set("flags",h.TRUN_FLAGS_DATA_OFFSET|h.TRUN_FLAGS_DURATION|h.TRUN_FLAGS_SIZE|h.TRUN_FLAGS_FLAGS|h.TRUN_FLAGS_CTS_OFFSET).set("data_offset",0).set("first_sample_flags",0).set("sample_count",1).set("sample_duration",[e.duration]).set("sample_size",[e.size]).set("sample_flags",[t]).set("sample_composition_time_offset",[e.cts-e.dts]),r},p.prototype.lastMoofIndex=0,p.prototype.samplesDataSize=0,p.prototype.resetTables=function(){var e,t,r,i,s,n;for(this.initial_duration=this.moov.mvhd.duration,this.moov.mvhd.duration=0,e=0;e=2&&(d=s[a].grouping_type+"/0",(o=new l(s[a].grouping_type,0)).is_fragment=!0,t.sample_groups_info[d]||(t.sample_groups_info[d]=o))}else for(a=0;a=2&&(d=i[a].grouping_type+"/0",o=new l(i[a].grouping_type,0),e.sample_groups_info[d]||(e.sample_groups_info[d]=o))},p.setSampleGroupProperties=function(e,t,r,i){var s,n;for(s in t.sample_groups=[],i){var a;if(t.sample_groups[s]={},t.sample_groups[s].grouping_type=i[s].grouping_type,t.sample_groups[s].grouping_type_parameter=i[s].grouping_type_parameter,r>=i[s].last_sample_in_run&&(i[s].last_sample_in_run<0&&(i[s].last_sample_in_run=0),i[s].entry_index++,i[s].entry_index<=i[s].sbgp.entries.length-1&&(i[s].last_sample_in_run+=i[s].sbgp.entries[i[s].entry_index].sample_count)),i[s].entry_index<=i[s].sbgp.entries.length-1?t.sample_groups[s].group_description_index=i[s].sbgp.entries[i[s].entry_index].group_description_index:t.sample_groups[s].group_description_index=-1,0!==t.sample_groups[s].group_description_index)a=i[s].fragment_description?i[s].fragment_description:i[s].description,t.sample_groups[s].group_description_index>0?(n=t.sample_groups[s].group_description_index>65535?(t.sample_groups[s].group_description_index>>16)-1:t.sample_groups[s].group_description_index-1,a&&n>=0&&(t.sample_groups[s].description=a.entries[n])):a&&a.version>=2&&a.default_group_description_index>0&&(t.sample_groups[s].description=a.entries[a.default_group_description_index-1])}},p.process_sdtp=function(e,t,r){t&&(e?(t.is_leading=e.is_leading[r],t.depends_on=e.sample_depends_on[r],t.is_depended_on=e.sample_is_depended_on[r],t.has_redundancy=e.sample_has_redundancy[r]):(t.is_leading=0,t.depends_on=0,t.is_depended_on=0,t.has_redundancy=0))},p.prototype.buildSampleLists=function(){var e,t;for(e=0;eb&&(v++,b<0&&(b=0),b+=n.sample_counts[v]),t>0?(e.samples[t-1].duration=n.sample_deltas[v],e.samples_duration+=e.samples[t-1].duration,A.dts=e.samples[t-1].dts+e.samples[t-1].duration):A.dts=0,a?(t>=w&&(S++,w<0&&(w=0),w+=a.sample_counts[S]),A.cts=e.samples[t].dts+a.sample_offsets[S]):A.cts=A.dts,o?(t==o.sample_numbers[E]-1?(A.is_sync=!0,E++):(A.is_sync=!1,A.degradation_priority=0),l&&l.entries[U].sample_delta+x==t+1&&(A.subsamples=l.entries[U].subsamples,x+=l.entries[U].sample_delta,U++)):A.is_sync=!0,p.process_sdtp(e.mdia.minf.stbl.sdtp,A,A.number),A.degradation_priority=c?c.priority[t]:0,l&&l.entries[U].sample_delta+x==t&&(A.subsamples=l.entries[U].subsamples,x+=l.entries[U].sample_delta),(u.length>0||h.length>0)&&p.setSampleGroupProperties(e,A,t,e.sample_groups_info)}t>0&&(e.samples[t-1].duration=Math.max(e.mdia.mdhd.duration-e.samples[t-1].dts,0),e.samples_duration+=e.samples[t-1].duration)}},p.prototype.updateSampleLists=function(){var e,t,r,i,s,n,a,o,d,l,u,c,f,m,_;if(void 0!==this.moov)for(;this.lastMoofIndex0&&p.initSampleGroups(c,u,u.sbgps,c.mdia.minf.stbl.sgpds,u.sgpds),t=0;t0?m.dts=c.samples[c.samples.length-2].dts+c.samples[c.samples.length-2].duration:(u.tfdt?m.dts=u.tfdt.baseMediaDecodeTime:m.dts=0,c.first_traf_merged=!0),m.cts=m.dts,g.flags&h.TRUN_FLAGS_CTS_OFFSET&&(m.cts=m.dts+g.sample_composition_time_offset[r]),_=a,g.flags&h.TRUN_FLAGS_FLAGS?_=g.sample_flags[r]:0===r&&g.flags&h.TRUN_FLAGS_FIRST_FLAG&&(_=g.first_sample_flags),m.is_sync=!(_>>16&1),m.is_leading=_>>26&3,m.depends_on=_>>24&3,m.is_depended_on=_>>22&3,m.has_redundancy=_>>20&3,m.degradation_priority=65535&_;var y=!!(u.tfhd.flags&h.TFHD_FLAG_BASE_DATA_OFFSET),b=!!(u.tfhd.flags&h.TFHD_FLAG_DEFAULT_BASE_IS_MOOF),v=!!(g.flags&h.TRUN_FLAGS_DATA_OFFSET),w=0;w=y?u.tfhd.base_data_offset:b||0===t?l.start:o,m.offset=0===t&&0===r?v?w+g.data_offset:w:o,o=m.offset+m.size,(u.sbgps.length>0||u.sgpds.length>0||c.mdia.minf.stbl.sbgps.length>0||c.mdia.minf.stbl.sgpds.length>0)&&p.setSampleGroupProperties(c,m,m.number_in_traf,u.sample_groups_info)}}if(u.subs){c.has_fragment_subsamples=!0;var S=u.first_sample_index;for(t=0;t-1))return null;var a=(r=this.stream.buffers[s]).byteLength-(i.offset+i.alreadyRead-r.fileStart);if(i.size-i.alreadyRead<=a)return n.debug("ISOFile","Getting sample #"+t+" data (alreadyRead: "+i.alreadyRead+" offset: "+(i.offset+i.alreadyRead-r.fileStart)+" read size: "+(i.size-i.alreadyRead)+" full size: "+i.size+")"),o.memcpy(i.data.buffer,i.alreadyRead,r,i.offset+i.alreadyRead-r.fileStart,i.size-i.alreadyRead),r.usedBytes+=i.size-i.alreadyRead,this.stream.logBufferLevel(),i.alreadyRead=i.size,i;if(0===a)return null;n.debug("ISOFile","Getting sample #"+t+" partial data (alreadyRead: "+i.alreadyRead+" offset: "+(i.offset+i.alreadyRead-r.fileStart)+" read size: "+a+" full size: "+i.size+")"),o.memcpy(i.data.buffer,i.alreadyRead,r,i.offset+i.alreadyRead-r.fileStart,a),i.alreadyRead+=a,r.usedBytes+=a,this.stream.logBufferLevel()}},p.prototype.releaseSample=function(e,t){var r=e.samples[t];return r.data?(this.samplesDataSize-=r.size,r.data=null,r.alreadyRead=0,r.size):0},p.prototype.getAllocatedSampleDataSize=function(){return this.samplesDataSize},p.prototype.getCodecs=function(){var e,t="";for(e=0;e0&&(t+=","),t+=this.moov.traks[e].mdia.minf.stbl.stsd.entries[0].getCodec()}return t},p.prototype.getTrexById=function(e){var t;if(!this.moov||!this.moov.mvex)return null;for(t=0;t0&&(r.protection=s.ipro.protections[s.iinf.item_infos[e].protection_index-1]),s.iinf.item_infos[e].item_type?r.type=s.iinf.item_infos[e].item_type:r.type="mime",r.content_type=s.iinf.item_infos[e].content_type,r.content_encoding=s.iinf.item_infos[e].content_encoding;if(s.iloc)for(e=0;e0&&h.property_index-1-1))return null;var d=(t=this.stream.buffers[a]).byteLength-(s.offset+s.alreadyRead-t.fileStart);if(!(s.length-s.alreadyRead<=d))return n.debug("ISOFile","Getting item #"+e+" extent #"+i+" partial data (alreadyRead: "+s.alreadyRead+" offset: "+(s.offset+s.alreadyRead-t.fileStart)+" read size: "+d+" full extent size: "+s.length+" full item size: "+r.size+")"),o.memcpy(r.data.buffer,r.alreadyRead,t,s.offset+s.alreadyRead-t.fileStart,d),s.alreadyRead+=d,r.alreadyRead+=d,t.usedBytes+=d,this.stream.logBufferLevel(),null;n.debug("ISOFile","Getting item #"+e+" extent #"+i+" data (alreadyRead: "+s.alreadyRead+" offset: "+(s.offset+s.alreadyRead-t.fileStart)+" read size: "+(s.length-s.alreadyRead)+" full extent size: "+s.length+" full item size: "+r.size+")"),o.memcpy(r.data.buffer,r.alreadyRead,t,s.offset+s.alreadyRead-t.fileStart,s.length-s.alreadyRead),t.usedBytes+=s.length-s.alreadyRead,this.stream.logBufferLevel(),r.alreadyRead+=s.length-s.alreadyRead,s.alreadyRead=s.length}}return r.alreadyRead===r.size?r:null},p.prototype.releaseItem=function(e){var t=this.items[e];if(t.data){this.itemsDataSize-=t.size,t.data=null,t.alreadyRead=0;for(var r=0;r0?this.moov.traks[e].samples[0].duration:0),t.push(i)}return t},h.Box.prototype.printHeader=function(e){this.size+=8,this.size>d&&(this.size+=8),"uuid"===this.type&&(this.size+=16),e.log(e.indent+"size:"+this.size),e.log(e.indent+"type:"+this.type)},h.FullBox.prototype.printHeader=function(e){this.size+=4,h.Box.prototype.printHeader.call(this,e),e.log(e.indent+"version:"+this.version),e.log(e.indent+"flags:"+this.flags)},h.Box.prototype.print=function(e){this.printHeader(e)},h.ContainerBox.prototype.print=function(e){this.printHeader(e);for(var t=0;t>8)),e.log(e.indent+"matrix: "+this.matrix.join(", ")),e.log(e.indent+"next_track_id: "+this.next_track_id)},h.tkhdBox.prototype.print=function(e){h.FullBox.prototype.printHeader.call(this,e),e.log(e.indent+"creation_time: "+this.creation_time),e.log(e.indent+"modification_time: "+this.modification_time),e.log(e.indent+"track_id: "+this.track_id),e.log(e.indent+"duration: "+this.duration),e.log(e.indent+"volume: "+(this.volume>>8)),e.log(e.indent+"matrix: "+this.matrix.join(", ")),e.log(e.indent+"layer: "+this.layer),e.log(e.indent+"alternate_group: "+this.alternate_group),e.log(e.indent+"width: "+this.width),e.log(e.indent+"height: "+this.height)};var m={createFile:function(e,t){var r=void 0===e||e,i=new p(t);return i.discardMdatData=!r,i}};t.createFile=m.createFile}));function br(e){return e.reduce(((e,t)=>256*e+t))}function vr(e){const t=[101,103,119,99],r=e.length-28,i=e.slice(r,r+t.length);return t.every(((e,t)=>e===i[t]))}yr.Log,yr.MP4BoxStream,yr.DataStream,yr.MultiBufferStream,yr.MPEG4DescriptorParser,yr.BoxParser,yr.XMLSubtitlein4Parser,yr.Textin4Parser,yr.ISOFile,yr.createFile;class wr{constructor(){this.s=null,this.a=null,this.l=0,this.c=0,this.u=1/0,this.A=!1,this.d=!1,this.r=4194304,this.n=new Uint8Array([30,158,90,33,244,57,83,165,2,70,35,87,215,231,226,108]),this.t=this.n.slice().reverse()}destroy(){this.s=null,this.a=null,this.l=0,this.c=0,this.u=1/0,this.A=!1,this.d=!1,this.r=4194304,this.n=null,this.t=null}transport(e){if(!this.s&&this.l>50)return e;if(this.l++,this.d)return e;const t=new Uint8Array(e);if(this.A){if(!(this.c~e))}(e.slice(r+32,r+32+t))]}return null}(t,this.t);if(!r)return e;const i=function(e){try{if("object"!=typeof WebAssembly||"function"!=typeof WebAssembly.instantiate)throw null;{const e=new WebAssembly.Module(Uint8Array.of(0,97,115,109,1,0,0,0));if(!(e instanceof WebAssembly.Module&&new WebAssembly.Instance(e)instanceof WebAssembly.Instance))throw null}}catch(e){return new Error("video_error_4")}let t;try{t={env:{__handle_stack_overflow:()=>e(new Error("video_error_1")),memory:new WebAssembly.Memory({initial:256,maximum:256})}}}catch(e){return new Error("video_error_5")}return t}(e);if(i instanceof Error)return console.error(i.message),this.d=!0,e;this.A=!0,this.u=r[1],vr(t)&&this.c++,WebAssembly.instantiate(r[2],i).then((e=>{if("function"!=typeof(t=e.instance.exports).parse||"object"!=typeof t.memory)return this.d=!0,void console.error("video_error_3");var t;this.s=e.instance.exports,this.a=new Uint8Array(this.s.memory.buffer)})).catch((e=>{this.d=!0,console.error("video_error_6")}))}return e}}const Sr=0,Er=32,Ur=16,xr=[214,144,233,254,204,225,61,183,22,182,20,194,40,251,44,5,43,103,154,118,42,190,4,195,170,68,19,38,73,134,6,153,156,66,80,244,145,239,152,122,51,84,11,67,237,207,172,98,228,179,28,169,201,8,232,149,128,223,148,250,117,143,63,166,71,7,167,252,243,115,23,186,131,89,60,25,230,133,79,168,104,107,129,178,113,100,218,139,248,235,15,75,112,86,157,53,30,36,14,94,99,88,209,162,37,34,124,59,1,33,120,135,212,0,70,87,159,211,39,82,76,54,2,231,160,196,200,158,234,191,138,210,64,199,56,181,163,247,242,206,249,97,21,161,224,174,93,164,155,52,26,85,173,147,50,48,245,140,177,227,29,246,226,46,130,102,202,96,192,41,35,171,13,83,78,111,213,219,55,69,222,253,142,47,3,255,106,114,109,108,91,81,141,27,175,146,187,221,188,127,17,217,92,65,31,16,90,216,10,193,49,136,165,205,123,189,45,116,208,18,184,229,180,176,137,105,151,74,12,150,119,126,101,185,241,9,197,110,198,132,24,240,125,236,58,220,77,32,121,238,95,62,215,203,57,72],Ar=[462357,472066609,943670861,1415275113,1886879365,2358483617,2830087869,3301692121,3773296373,4228057617,404694573,876298825,1347903077,1819507329,2291111581,2762715833,3234320085,3705924337,4177462797,337322537,808926789,1280531041,1752135293,2223739545,2695343797,3166948049,3638552301,4110090761,269950501,741554753,1213159005,1684763257];function Br(e){const t=[];for(let r=0,i=e.length;r>>32-r}function Tr(e){return(255&xr[e>>>24&255])<<24|(255&xr[e>>>16&255])<<16|(255&xr[e>>>8&255])<<8|255&xr[255&e]}function Cr(e){return e^kr(e,2)^kr(e,10)^kr(e,18)^kr(e,24)}function Dr(e){return e^kr(e,13)^kr(e,23)}function Fr(e,t,r){const i=new Array(4),s=new Array(4);for(let t=0;t<4;t++)s[0]=255&e[4*t],s[1]=255&e[4*t+1],s[2]=255&e[4*t+2],s[3]=255&e[4*t+3],i[t]=s[0]<<24|s[1]<<16|s[2]<<8|s[3];for(let e,t=0;t<32;t+=4)e=i[1]^i[2]^i[3]^r[t+0],i[0]^=Cr(Tr(e)),e=i[2]^i[3]^i[0]^r[t+1],i[1]^=Cr(Tr(e)),e=i[3]^i[0]^i[1]^r[t+2],i[2]^=Cr(Tr(e)),e=i[0]^i[1]^i[2]^r[t+3],i[3]^=Cr(Tr(e));for(let e=0;e<16;e+=4)t[e]=i[3-e/4]>>>24&255,t[e+1]=i[3-e/4]>>>16&255,t[e+2]=i[3-e/4]>>>8&255,t[e+3]=255&i[3-e/4]}function Ir(e,t,r,{padding:i="pkcs#7",mode:s,iv:n=[],output:a="string"}={}){if("cbc"===s&&("string"==typeof n&&(n=Br(n)),16!==n.length))throw new Error("iv is invalid");if("string"==typeof t&&(t=Br(t)),16!==t.length)throw new Error("key is invalid");if(e="string"==typeof e?r!==Sr?function(e){const t=[];for(let r=0,i=e.length;r>>6),t.push(128|63&i);else if(i<=55295||i>=57344&&i<=65535)t.push(224|i>>>12),t.push(128|i>>>6&63),t.push(128|63&i);else{if(!(i>=65536&&i<=1114111))throw t.push(i),new Error("input is not supported");r++,t.push(240|i>>>18&28),t.push(128|i>>>12&63),t.push(128|i>>>6&63),t.push(128|63&i)}}return t}(e):Br(e):[...e],("pkcs#5"===i||"pkcs#7"===i)&&r!==Sr){const t=Ur-e.length%Ur;for(let r=0;r=Ur;){const t=e.slice(h,h+16),i=new Array(16);if("cbc"===s)for(let e=0;e1===(e=e.toString(16)).length?"0"+e:e)).join(""):function(e){const t=[];for(let r=0,i=e.length;r=240&&e[r]<=247?(t.push(String.fromCodePoint(((7&e[r])<<18)+((63&e[r+1])<<12)+((63&e[r+2])<<6)+(63&e[r+3]))),r+=3):e[r]>=224&&e[r]<=239?(t.push(String.fromCodePoint(((15&e[r])<<12)+((63&e[r+1])<<6)+(63&e[r+2]))),r+=2):e[r]>=192&&e[r]<=223?(t.push(String.fromCodePoint(((31&e[r])<<6)+(63&e[r+1]))),r++):t.push(String.fromCodePoint(e[r]));return t.join("")}(d):d}class Pr{on(e,t,r){const i=this.e||(this.e={});return(i[e]||(i[e]=[])).push({fn:t,ctx:r}),this}once(e,t,r){const i=this;function s(...n){i.off(e,s),t.apply(r,n)}return s._=t,this.on(e,s,r)}emit(e,...t){const r=((this.e||(this.e={}))[e]||[]).slice();for(let e=0;e{delete r[e]})),void delete this.e;const i=r[e],s=[];if(i&&t)for(let e=0,r=i.length;e=2&&!this.isDestroyed;)if(255==this.tempBuffer[this.parsedOffset]){if(!(!1&this.tempBuffer[this.parsedOffset+1])){this.versionLayer=this.tempBuffer[this.parsedOffset+1],this.state=Lr.findFirstStartCode,this.fisrtStartCodeOffset=this.parsedOffset,this.parsedOffset+=2,e=!0;break}this.parsedOffset++}else this.parsedOffset++;if(e)continue;break}if(this.state==Lr.findFirstStartCode){let e=!1;for(;this.tempBuffer.length-this.parsedOffset>=2&&!this.isDestroyed;)if(255==this.tempBuffer[this.parsedOffset]){if(this.tempBuffer[this.parsedOffset+1]==this.versionLayer){this.state=Lr.findSecondStartCode,this.secondStartCodeOffset=this.parsedOffset,this.parsedOffset+=2,e=!0;break}this.parsedOffset++}else this.parsedOffset++;if(e)continue;break}if(this.state==Lr.findSecondStartCode){let e=this.tempBuffer.slice(this.fisrtStartCodeOffset,this.secondStartCodeOffset);this.emit("data",e,t),this.tempBuffer=this.tempBuffer.slice(this.secondStartCodeOffset),this.fisrtStartCodeOffset=0,this.parsedOffset=2,this.state=Lr.findFirstStartCode}}}}function Rr(e,t,r){for(let i=2;ie+t.byteLength),0));let r=0;return e.forEach((e=>{t.set(e,r),r+=e.byteLength})),t}class Nr{static init(){Nr.types={avc1:[],avcC:[],hvc1:[],hvcC:[],av01:[],av1C:[],btrt:[],dinf:[],dref:[],esds:[],ftyp:[],hdlr:[],mdat:[],mdhd:[],mdia:[],mfhd:[],minf:[],moof:[],moov:[],mp4a:[],mvex:[],mvhd:[],sdtp:[],stbl:[],stco:[],stsc:[],stsd:[],stsz:[],stts:[],tfdt:[],tfhd:[],traf:[],trak:[],trun:[],trex:[],tkhd:[],vmhd:[],smhd:[],".mp3":[],Opus:[],dOps:[],"ac-3":[],dac3:[],"ec-3":[],dec3:[]};for(let e in Nr.types)Nr.types.hasOwnProperty(e)&&(Nr.types[e]=[e.charCodeAt(0),e.charCodeAt(1),e.charCodeAt(2),e.charCodeAt(3)]);let e=Nr.constants={};e.FTYP=new Uint8Array([105,115,111,109,0,0,0,1,105,115,111,109,97,118,99,49]),e.STSD_PREFIX=new Uint8Array([0,0,0,0,0,0,0,1]),e.STTS=new Uint8Array([0,0,0,0,0,0,0,0]),e.STSC=e.STCO=e.STTS,e.STSZ=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0]),e.HDLR_VIDEO=new Uint8Array([0,0,0,0,0,0,0,0,118,105,100,101,0,0,0,0,0,0,0,0,0,0,0,0,86,105,100,101,111,72,97,110,100,108,101,114,0]),e.HDLR_AUDIO=new Uint8Array([0,0,0,0,0,0,0,0,115,111,117,110,0,0,0,0,0,0,0,0,0,0,0,0,83,111,117,110,100,72,97,110,100,108,101,114,0]),e.DREF=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,12,117,114,108,32,0,0,0,1]),e.SMHD=new Uint8Array([0,0,0,0,0,0,0,0]),e.VMHD=new Uint8Array([0,0,0,1,0,0,0,0,0,0,0,0])}static box(e){let t=8,r=null,i=Array.prototype.slice.call(arguments,1),s=i.length;for(let e=0;e>>24&255,r[1]=t>>>16&255,r[2]=t>>>8&255,r[3]=255&t,r.set(e,4);let n=8;for(let e=0;e>>24&255,e>>>16&255,e>>>8&255,255&e,t>>>24&255,t>>>16&255,t>>>8&255,255&t,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255]))}static trak(e){return Nr.box(Nr.types.trak,Nr.tkhd(e),Nr.mdia(e))}static tkhd(e){let t=e.id,r=e.duration,i=e.presentWidth,s=e.presentHeight;return Nr.box(Nr.types.tkhd,new Uint8Array([0,0,0,7,0,0,0,0,0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t,0,0,0,0,r>>>24&255,r>>>16&255,r>>>8&255,255&r,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,i>>>8&255,255&i,0,0,s>>>8&255,255&s,0,0]))}static mdia(e){return Nr.box(Nr.types.mdia,Nr.mdhd(e),Nr.hdlr(e),Nr.minf(e))}static mdhd(e){let t=e.timescale,r=e.duration;return Nr.box(Nr.types.mdhd,new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t,r>>>24&255,r>>>16&255,r>>>8&255,255&r,85,196,0,0]))}static hdlr(e){let t=null;return t="audio"===e.type?Nr.constants.HDLR_AUDIO:Nr.constants.HDLR_VIDEO,Nr.box(Nr.types.hdlr,t)}static minf(e){let t=null;return t="audio"===e.type?Nr.box(Nr.types.smhd,Nr.constants.SMHD):Nr.box(Nr.types.vmhd,Nr.constants.VMHD),Nr.box(Nr.types.minf,t,Nr.dinf(),Nr.stbl(e))}static dinf(){return Nr.box(Nr.types.dinf,Nr.box(Nr.types.dref,Nr.constants.DREF))}static stbl(e){return Nr.box(Nr.types.stbl,Nr.stsd(e),Nr.box(Nr.types.stts,Nr.constants.STTS),Nr.box(Nr.types.stsc,Nr.constants.STSC),Nr.box(Nr.types.stsz,Nr.constants.STSZ),Nr.box(Nr.types.stco,Nr.constants.STCO))}static stsd(e){return"audio"===e.type?"mp3"===e.audioType?Nr.box(Nr.types.stsd,Nr.constants.STSD_PREFIX,Nr.mp3(e)):Nr.box(Nr.types.stsd,Nr.constants.STSD_PREFIX,Nr.mp4a(e)):"avc"===e.videoType?Nr.box(Nr.types.stsd,Nr.constants.STSD_PREFIX,Nr.avc1(e)):Nr.box(Nr.types.stsd,Nr.constants.STSD_PREFIX,Nr.hvc1(e))}static mp3(e){let t=e.channelCount,r=e.audioSampleRate,i=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,t,0,16,0,0,0,0,r>>>8&255,255&r,0,0]);return Nr.box(Nr.types[".mp3"],i)}static mp4a(e){let t=e.channelCount,r=e.audioSampleRate,i=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,t,0,16,0,0,0,0,r>>>8&255,255&r,0,0]);return Nr.box(Nr.types.mp4a,i,Nr.esds(e))}static esds(e){let t=e.config||[],r=t.length,i=new Uint8Array([0,0,0,0,3,23+r,0,1,0,4,15+r,64,21,0,0,0,0,0,0,0,0,0,0,0,5].concat([r]).concat(t).concat([6,1,2]));return Nr.box(Nr.types.esds,i)}static avc1(e){let t=e.avcc;const r=e.codecWidth,i=e.codecHeight;let s=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,r>>>8&255,255&r,i>>>8&255,255&i,0,72,0,0,0,72,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,255,255]);return Nr.box(Nr.types.avc1,s,Nr.box(Nr.types.avcC,t))}static hvc1(e){let t=e.avcc;const r=e.codecWidth,i=e.codecHeight;let s=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,r>>>8&255,255&r,i>>>8&255,255&i,0,72,0,0,0,72,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,255,255]);return Nr.box(Nr.types.hvc1,s,Nr.box(Nr.types.hvcC,t))}static mvex(e){return Nr.box(Nr.types.mvex,Nr.trex(e))}static trex(e){let t=e.id,r=new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1]);return Nr.box(Nr.types.trex,r)}static moof(e,t){return Nr.box(Nr.types.moof,Nr.mfhd(e.sequenceNumber),Nr.traf(e,t))}static mfhd(e){let t=new Uint8Array([0,0,0,0,e>>>24&255,e>>>16&255,e>>>8&255,255&e]);return Nr.box(Nr.types.mfhd,t)}static traf(e,t){let r=e.id,i=Nr.box(Nr.types.tfhd,new Uint8Array([0,0,0,0,r>>>24&255,r>>>16&255,r>>>8&255,255&r])),s=Nr.box(Nr.types.tfdt,new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t])),n=Nr.sdtp(e),a=Nr.trun(e,n.byteLength+16+16+8+16+8+8);return Nr.box(Nr.types.traf,i,s,a,n)}static sdtp(e){let t=new Uint8Array(5),r=e.flags;return t[4]=r.isLeading<<6|r.dependsOn<<4|r.isDependedOn<<2|r.hasRedundancy,Nr.box(Nr.types.sdtp,t)}static trun(e,t){let r=new Uint8Array(28);t+=36,r.set([0,0,15,1,0,0,0,1,t>>>24&255,t>>>16&255,t>>>8&255,255&t],0);let i=e.duration,s=e.size,n=e.flags,a=e.cts;return r.set([i>>>24&255,i>>>16&255,i>>>8&255,255&i,s>>>24&255,s>>>16&255,s>>>8&255,255&s,n.isLeading<<2|n.dependsOn,n.isDependedOn<<6|n.hasRedundancy<<4|n.isNonSync,0,0,a>>>24&255,a>>>16&255,a>>>8&255,255&a],12),Nr.box(Nr.types.trun,r)}static mdat(e){return Nr.box(Nr.types.mdat,e)}}function Or(e={},t={},r=!1){let i=[],s=[],n={},a=new AbortController,o=null,d=null,g=null,y=null,v=null,De=null,Fe=!1,$e=!1,Je=!!at(r),dt=!1,lt=null,ut=null,ht=null,pt=[],_t=null,Ut=null,xt=0,At=0,Bt=null,kt=null,Tt=0,Nt=0,Ot=!1,Gt=!1,Ht=!1,$t=null,Vt=null,Wt=null,jt=!1,Yt=()=>{const e=st();return{debug:e.debug,debugLevel:e.debugLevel,debugUuid:e.debugUuid,useOffscreen:e.useOffscreen,useWCS:e.useWCS,useMSE:e.useMSE,videoBuffer:e.videoBuffer,videoBufferDelay:e.videoBufferDelay,openWebglAlignment:e.openWebglAlignment,playType:e.playType,hasAudio:e.hasAudio,hasVideo:e.hasVideo,playbackRate:1,playbackForwardMaxRateDecodeIFrame:e.playbackForwardMaxRateDecodeIFrame,playbackIsCacheBeforeDecodeForFpsRender:e.playbackConfig.isCacheBeforeDecodeForFpsRender,sampleRate:0,networkDelay:e.networkDelay,visibility:!0,useSIMD:e.useSIMD,isRecording:!1,recordType:e.recordType,isNakedFlow:e.isNakedFlow,checkFirstIFrame:e.checkFirstIFrame,audioBufferSize:1024,isM7sCrypto:e.isM7sCrypto,m7sCryptoAudio:e.m7sCryptoAudio,cryptoKey:e.cryptoKey,cryptoIV:e.cryptoIV,isSm4Crypto:e.isSm4Crypto,sm4CryptoKey:e.sm4CryptoKey,isXorCrypto:e.isXorCrypto,isHls265:!1,isFlv:e.isFlv,isFmp4:e.isFmp4,isMpeg4:e.isMpeg4,isTs:e.isTs,isFmp4Private:e.isFmp4Private,isEmitSEI:e.isEmitSEI,isRecordTypeFlv:!1,isWasmMp4:!1,isChrome:!1,isDropSameTimestampGop:e.isDropSameTimestampGop,mseDecodeAudio:e.mseDecodeAudio,nakedFlowH265DemuxUseNew:e.nakedFlowH265DemuxUseNew,mseDecoderUseWorker:e.mseDecoderUseWorker,mseAutoCleanupSourceBuffer:e.mseAutoCleanupSourceBuffer,mseAutoCleanupMaxBackwardDuration:e.mseAutoCleanupMaxBackwardDuration,mseAutoCleanupMinBackwardDuration:e.mseAutoCleanupMinBackwardDuration,mseCorrectTimeDuration:e.mseCorrectTimeDuration}};"VideoEncoder"in self&&(n={hasInit:!1,isEmitInfo:!1,offscreenCanvas:null,offscreenCanvasCtx:null,decoder:new VideoDecoder({output:function(e){if(n.isEmitInfo||(Qt.debug.log("worker","Webcodecs Video Decoder initSize"),postMessage({cmd:S,w:e.codedWidth,h:e.codedHeight}),n.isEmitInfo=!0,n.offscreenCanvas=new OffscreenCanvas(e.codedWidth,e.codedHeight),n.offscreenCanvasCtx=n.offscreenCanvas.getContext("2d")),"function"==typeof e.createImageBitmap)e.createImageBitmap().then((t=>{n.offscreenCanvasCtx.drawImage(t,0,0,e.codedWidth,e.codedHeight);let r=n.offscreenCanvas.transferToImageBitmap();postMessage({cmd:E,buffer:r,delay:Qt.delay,ts:0},[r]),rt(e)}));else{n.offscreenCanvasCtx.drawImage(e,0,0,e.codedWidth,e.codedHeight);let t=n.offscreenCanvas.transferToImageBitmap();postMessage({cmd:E,buffer:t,delay:Qt.delay,ts:0},[t]),rt(e)}},error:function(e){Qt.debug.error("worker","VideoDecoder error",e)}}),decode:function(e,t,r){const i=e[0]>>4==1;if(n.hasInit){const r=new EncodedVideoChunk({data:e.slice(5),timestamp:t,type:i?Be:ke});n.decoder.decode(r)}else if(i&&0===e[1]){const t=15&e[0];postMessage({cmd:T,code:t});const r=new Uint8Array(e);postMessage({cmd:C,buffer:r,codecId:t},[r.buffer]);const i=function(e){let t=e.subarray(1,4),r="avc1.";for(let e=0;e<3;e++){let i=t[e].toString(16);i.length<2&&(i="0"+i),r+=i}return{codec:r,description:e}}(e.slice(5));n.decoder.configure(i),n.hasInit=!0}},reset(){n.hasInit=!1,n.isEmitInfo=!1,n.offscreenCanvas=null,n.offscreenCanvasCtx=null}});let qt=function(){if(jt=!0,Qt.fetchStatus!==Le||ot(Qt._opt.isChrome)){if(a)try{a.abort(),a=null}catch(e){Qt.debug.log("worker","abort catch",e)}}else a=null,Qt.debug.log("worker",`abort() and not abortController.abort() _status is ${Qt.fetchStatus} and _isChrome is ${Qt._opt.isChrome}`)},Kt={init(){Kt.lastBuf=null,Kt.vps=null,Kt.sps=null,Kt.pps=null,Kt.streamType=null,Kt.localDts=0,Kt.isSendSeqHeader=!1},destroy(){Kt.lastBuf=null,Kt.vps=null,Kt.sps=null,Kt.pps=null,Kt.streamType=null,Kt.localDts=0,Kt.isSendSeqHeader=!1},dispatch(e){const t=new Uint8Array(e);Kt.extractNALu$2(t)},getNaluDts(){let e=Kt.localDts;return Kt.localDts=Kt.localDts+40,e},getNaluAudioDts(){const e=Qt._opt.sampleRate,t=Qt._opt.audioBufferSize;return Kt.localDts+parseInt(t/e*1e3)},extractNALu(e){let t,r,i=0,s=e.byteLength,n=0,a=[];for(;i1)for(let e=0;e>1,r!==Ae.vps&&r!==Ae.sps&&r!==Ae.pps||(t=Ee.h265)),t}(e),$t=Kt.streamType===Ee.h265),Kt.streamType===Ee.h264){const t=Kt.handleAddNaluStartCode(e),r=Kt.extractNALu(t);if(0===r.length)return void Qt.debug.warn("worker","handleVideoNalu","h264 naluList.length === 0");const i=[];if(r.forEach((e=>{const t=vt(e);t===xe.pps||t===xe.sps?Kt.handleVideoH264Nalu(e):St(t)&&i.push(e)})),1===i.length)Kt.handleVideoH264Nalu(i[0]);else{const e=function(e){if(0===e.length)return!1;const t=vt(e[0]);for(let r=1;r{Kt.handleVideoH264Nalu(e)}))}}else if(Kt.streamType===Ee.h265)if(Qt._opt.nakedFlowH265DemuxUseNew){const t=Kt.handleAddNaluStartCode(e),r=Kt.extractNALu(t);if(0===r.length)return void Qt.debug.warn("worker","handleVideoNalu","h265 naluList.length === 0");const i=[];if(r.forEach((e=>{const t=zt(e);t===Ae.pps||t===Ae.sps||t===Ae.vps?Kt.handleVideoH265Nalu(e):Rt(t)&&i.push(e)})),1===i.length)Kt.handleVideoH265Nalu(i[0]);else{const e=function(e){if(0===e.length)return!1;const t=zt(e[0]);for(let r=1;r{Kt.handleVideoH265Nalu(e)}))}}else{zt(e)===Ae.pps?Kt.extractH265PPS(e):Kt.handleVideoH265Nalu(e)}},extractH264PPS(e){const t=Kt.handleAddNaluStartCode(e);Kt.extractNALu(t).forEach((e=>{wt(vt(e))?Kt.extractH264SEI(e):Kt.handleVideoH264Nalu(e)}))},extractH265PPS(e){const t=Kt.handleAddNaluStartCode(e);Kt.extractNALu(t).forEach((e=>{const t=zt(e);t===Ae.sei?Kt.extractH265SEI(e):Kt.handleVideoH265Nalu(e)}))},extractH264SEI(e){const t=Kt.handleAddNaluStartCode(e);Kt.extractNALu(t).forEach((e=>{Kt.handleVideoH264Nalu(e)}))},extractH265SEI(e){const t=Kt.handleAddNaluStartCode(e);Kt.extractNALu(t).forEach((e=>{Kt.handleVideoH265Nalu(e)}))},handleAddNaluStartCode(e){const t=[0,0,0,1],r=new Uint8Array(e.length+t.length);return r.set(t),r.set(e,t.length),r},handleVideoH264Nalu(e){const t=vt(e);switch(t){case xe.sps:Kt.sps=e;break;case xe.pps:Kt.pps=e}if(Kt.isSendSeqHeader){if(Kt.sps&&Kt.pps){const e=yt({sps:Kt.sps,pps:Kt.pps}),t=Kt.getNaluDts();Qt.decode(e,{type:X,ts:t,isIFrame:!0,cts:0}),Kt.sps=null,Kt.pps=null}if(St(t)){const r=Et(t),i=Kt.getNaluDts(),s=function(e,t){let r=[];r[0]=t?23:39,r[1]=1,r[2]=0,r[3]=0,r[4]=0,r[5]=e.byteLength>>24&255,r[6]=e.byteLength>>16&255,r[7]=e.byteLength>>8&255,r[8]=255&e.byteLength;const i=new Uint8Array(r.length+e.byteLength);return i.set(r,0),i.set(e,r.length),i}(e,r);Kt.doDecode(s,{type:X,ts:i,isIFrame:r,cts:0})}else Qt.debug.warn("work",`handleVideoH264Nalu Avc Seq Head is ${t}`)}else if(Kt.sps&&Kt.pps){Kt.isSendSeqHeader=!0;const e=yt({sps:Kt.sps,pps:Kt.pps});Qt.decode(e,{type:X,ts:0,isIFrame:!0,cts:0}),Kt.sps=null,Kt.pps=null}},handleVideoH264NaluList(e,t,r){if(Kt.isSendSeqHeader){const i=Kt.getNaluDts(),s=bt(e.reduce(((e,t)=>{const r=Dt(e),i=Dt(t),s=new Uint8Array(r.byteLength+i.byteLength);return s.set(r,0),s.set(i,r.byteLength),s})),t);Kt.doDecode(s,{type:X,ts:i,isIFrame:t,cts:0}),Qt.debug.log("worker",`handleVideoH264NaluList list size is ${e.length} package length is ${s.byteLength} isIFrame is ${t},nalu type is ${r}, dts is ${i}`)}else Qt.debug.warn("worker","handleVideoH264NaluList isSendSeqHeader is false")},handleVideoH265Nalu(e){const t=zt(e);switch(t){case Ae.vps:Kt.vps=e;break;case Ae.sps:Kt.sps=e;break;case Ae.pps:Kt.pps=e}if(Kt.isSendSeqHeader){if(Kt.vps&&Kt.sps&&Kt.pps){const e=Pt({vps:Kt.vps,sps:Kt.sps,pps:Kt.pps}),t=Kt.getNaluDts();Qt.decode(e,{type:X,ts:t,isIFrame:!0,cts:0}),Kt.vps=null,Kt.sps=null,Kt.pps=null}if(Rt(t)){const r=Mt(t),i=Kt.getNaluDts(),s=function(e,t){let r=[];r[0]=t?28:44,r[1]=1,r[2]=0,r[3]=0,r[4]=0,r[5]=e.byteLength>>24&255,r[6]=e.byteLength>>16&255,r[7]=e.byteLength>>8&255,r[8]=255&e.byteLength;const i=new Uint8Array(r.length+e.byteLength);return i.set(r,0),i.set(e,r.length),i}(e,r);Kt.doDecode(s,{type:X,ts:i,isIFrame:r,cts:0})}else Qt.debug.warn("work",`handleVideoH265Nalu HevcSeqHead is ${t}`)}else if(Kt.vps&&Kt.sps&&Kt.pps){Kt.isSendSeqHeader=!0;const e=Pt({vps:Kt.vps,sps:Kt.sps,pps:Kt.pps});Qt.decode(e,{type:X,ts:0,isIFrame:!0,cts:0}),Kt.vps=null,Kt.sps=null,Kt.pps=null}},handleVideoH265NaluList(e,t,r){if(Kt.isSendSeqHeader){const i=Kt.getNaluDts(),s=Lt(e.reduce(((e,t)=>{const r=Dt(e),i=Dt(t),s=new Uint8Array(r.byteLength+i.byteLength);return s.set(r,0),s.set(i,r.byteLength),s})),t);Kt.doDecode(s,{type:X,ts:i,isIFrame:t,cts:0}),Qt.debug.log("worker",`handleVideoH265NaluList list size is ${e.length} package length is ${s.byteLength} isIFrame is ${t},nalu type is ${r}, dts is ${i}`)}else Qt.debug.warn("worker","handleVideoH265NaluList isSendSeqHeader is false")},doDecode(e,t){Qt.calcNetworkDelay(t.ts),t.isIFrame&&Qt.calcIframeIntervalTimestamp(t.ts),postMessage({cmd:P,type:ce,value:e.byteLength}),postMessage({cmd:P,type:fe,value:t.ts}),Qt.decode(e,t)}},Xt={LOG_NAME:"worker fmp4Demuxer",mp4Box:yr.createFile(),offset:0,videoTrackId:null,audioTrackId:null,isHevc:!1,listenMp4Box(){Xt.mp4Box.onReady=Xt.onReady,Xt.mp4Box.onError=Xt.onError,Xt.mp4Box.onSamples=Xt.onSamples},initTransportDescarmber(){Xt.transportDescarmber=new wr},_getSeqHeader(e){const t=Xt.mp4Box.getTrackById(e.id);for(const e of t.mdia.minf.stbl.stsd.entries)if(e.avcC||e.hvcC){const t=new yr.DataStream(void 0,0,yr.DataStream.BIG_ENDIAN);let r=[];e.avcC?(e.avcC.write(t),r=[23,0,0,0,0]):(Xt.isHevc=!0,$t=!0,e.hvcC.write(t),r=[28,0,0,0,0]);const i=new Uint8Array(t.buffer,8),s=new Uint8Array(r.length+i.length);return s.set(r,0),s.set(i,r.length),s}return null},onReady(e){Qt.debug.log(Xt.LOG_NAME,"onReady()",e);const t=e.videoTracks[0],r=e.audioTracks[0];if(t){Xt.videoTrackId=t.id;const e=Xt._getSeqHeader(t);e&&(Qt.debug.log(Xt.LOG_NAME,"seqHeader"),Qt.decodeVideo(e,0,!0,0)),Xt.mp4Box.setExtractionOptions(t.id)}if(r&&Qt._opt.hasAudio){Xt.audioTrackId=r.id;const e=r.audio||{},t=qe.indexOf(e.sample_rate),i=r.codec.replace("mp4a.40.","");Xt.mp4Box.setExtractionOptions(r.id);const s=Ve({profile:parseInt(i,10),sampleRate:t,channel:e.channel_count});Qt.debug.log(Xt.LOG_NAME,"aacADTSHeader"),Qt.decodeAudio(s,0)}Xt.mp4Box.start()},onError(e){Qt.debug.error(Xt.LOG_NAME,"mp4Box onError",e)},onSamples(e,t,r){if(e===Xt.videoTrackId)for(const e of r){const t=e.data,r=e.is_sync,i=1e3*e.cts/e.timescale;e.duration,e.timescale,r&&Qt.calcIframeIntervalTimestamp(i);let s=null;s=Xt.isHevc?Lt(t,r):bt(t,r),postMessage({cmd:P,type:ce,value:s.byteLength}),postMessage({cmd:P,type:fe,value:i}),Qt.decode(s,{type:X,ts:i,isIFrame:r,cts:0})}else if(e===Xt.audioTrackId){if(Qt._opt.hasAudio)for(const e of r){const t=e.data,r=1e3*e.cts/e.timescale;e.duration,e.timescale;const i=new Uint8Array(t.byteLength+2);i.set([175,1],0),i.set(t,2),postMessage({cmd:P,type:he,value:i.byteLength}),Qt.decode(i,{type:K,ts:r,isIFrame:!1,cts:0})}}else Qt.debug.warn(Xt.LOG_NAME,"onSamples() trackId error",e)},dispatch(e){let t=e;"string"!=typeof e?"object"==typeof e?(Xt.transportDescarmber&&(t=Xt.transportDescarmber.transport(t)),t.buffer.fileStart=Xt.offset,Xt.offset+=t.byteLength,Xt.mp4Box.appendBuffer(t.buffer)):Qt.debug.warn(Xt.LOG_NAME,"dispatch()","data is not object",e):Qt.debug.warn(Xt.LOG_NAME,"dispatch()","data is string",e)},destroy(){Xt.mp4Box&&(Xt.mp4Box.flush(),Xt.mp4Box=null),Xt.transportDescarmber&&(Xt.transportDescarmber.destroy(),Xt.transportDescarmber=null),Xt.offset=0,Xt.videoTrackId=null,Xt.audioTrackId=null,Xt.isHevc=!1}},Zt={LOG_NAME:"worker mpeg4Demuxer",lastBuffer:new Uint8Array(0),parsedOffset:0,firstStartCodeOffset:0,secondStartCodeOffset:0,state:"init",hasInitVideoCodec:!1,localDts:0,dispatch(e){const t=new Uint8Array(e);Zt.extractNALu(t)},destroy(){Zt.lastBuffer=new Uint8Array(0),Zt.parsedOffset=0,Zt.firstStartCodeOffset=0,Zt.secondStartCodeOffset=0,Zt.state="init",Zt.hasInitVideoCodec=!1,Zt.localDts=0},extractNALu(e){if(!e||e.byteLength<1)return void Qt.debug.warn(Zt.LOG_NAME,"extractNALu() buffer error",e);const t=new Uint8Array(Zt.lastBuffer.length+e.length);for(t.set(Zt.lastBuffer,0),t.set(new Uint8Array(e),Zt.lastBuffer.length),Zt.lastBuffer=t;;){if("init"===Zt.state){let e=!1;for(;Zt.lastBuffer.length-Zt.parsedOffset>=4;)if(0===Zt.lastBuffer[Zt.parsedOffset])if(0===Zt.lastBuffer[Zt.parsedOffset+1])if(1===Zt.lastBuffer[Zt.parsedOffset+2]){if(182===Zt.lastBuffer[Zt.parsedOffset+3]){Zt.state="findFirstStartCode",Zt.firstStartCodeOffset=Zt.parsedOffset,Zt.parsedOffset+=4,e=!0;break}Zt.parsedOffset++}else Zt.parsedOffset++;else Zt.parsedOffset++;else Zt.parsedOffset++;if(e)continue;break}if("findFirstStartCode"===Zt.state){let e=!1;for(;Zt.lastBuffer.length-Zt.parsedOffset>=4;)if(0===Zt.lastBuffer[Zt.parsedOffset])if(0===Zt.lastBuffer[Zt.parsedOffset+1])if(1===Zt.lastBuffer[Zt.parsedOffset+2]){if(182===Zt.lastBuffer[Zt.parsedOffset+3]){Zt.state="findSecondStartCode",Zt.secondStartCodeOffset=Zt.parsedOffset,Zt.parsedOffset+=4,e=!0;break}Zt.parsedOffset++}else Zt.parsedOffset++;else Zt.parsedOffset++;else Zt.parsedOffset++;if(e)continue;break}if("findSecondStartCode"===Zt.state){if(!(Zt.lastBuffer.length-Zt.parsedOffset>0))break;{let e,t,r=192&Zt.lastBuffer[Zt.parsedOffset];e=0==r?Zt.secondStartCodeOffset-14:Zt.secondStartCodeOffset;let i=0==(192&Zt.lastBuffer[Zt.firstStartCodeOffset+4]);if(i){if(Zt.firstStartCodeOffset-14<0)return void Qt.debug.warn(Zt.LOG_NAME,"firstStartCodeOffset -14 is",Zt.firstStartCodeOffset-14);Zt.hasInitVideoCodec||(Zt.hasInitVideoCodec=!0,Qt.debug.log(Zt.LOG_NAME,"setCodec"),tr.setCodec(Se,"")),t=Zt.lastBuffer.subarray(Zt.firstStartCodeOffset-14,e)}else t=Zt.lastBuffer.subarray(Zt.firstStartCodeOffset,e);let s=Zt.getNaluDts();Zt.hasInitVideoCodec?(postMessage({cmd:P,type:ce,value:t.byteLength}),postMessage({cmd:P,type:fe,value:s}),tr.decode(t,i?1:0,s)):Qt.debug.warn(Zt.LOG_NAME,"has not init video codec"),Zt.lastBuffer=Zt.lastBuffer.subarray(e),Zt.firstStartCodeOffset=0==r?14:0,Zt.parsedOffset=Zt.firstStartCodeOffset+4,Zt.state="findFirstStartCode"}}}},getNaluDts(){let e=Zt.localDts;return Zt.localDts=Zt.localDts+40,e}},Jt={isFirstDispatch:!0,_pmtId:-1,_remainingPacketData:null,_videoPesData:[],_audioPesData:[],_gopId:0,_videoPid:-1,_audioPid:-1,_codecType:ve,_audioCodecType:Ue.AAC,_vps:null,_sps:null,_pps:null,TAG_NAME:"worker TsDemuxer",videoTrack:{samples:[]},audioTrack:{samples:[]},_baseDts:-1,_audioNextPts:void 0,_videoNextDts:void 0,_audioTimestampBreak:!1,_videoTimestampBreak:!1,_lastAudioExceptionGapDot:0,_lastAudioExceptionOverlapDot:0,_lastAudioExceptionLargeGapDot:0,_isSendAACSeqHeader:!1,init(){},dispatch(e){const t=new Uint8Array(e);Jt.demuxAndFix(t,Jt.isFirstDispatch,!0,0),Jt.isFirstDispatch&&(Jt.isFirstDispatch=!1)},_probe:e=>!!e.length&&(71===e[0]&&71===e[188]&&71===e[376]),_parsePES(e){const t=e[8];if(null==t||e.lengthe.length-6)return;let i,s;const n=e[7];return 192&n&&(i=536870912*(14&e[9])+4194304*(255&e[10])+16384*(254&e[11])+128*(255&e[12])+(254&e[13])/2,64&n?(s=536870912*(14&e[14])+4194304*(255&e[15])+16384*(254&e[16])+128*(255&e[17])+(254&e[18])/2,i-s>54e5&&(i=s)):s=i),{data:e.subarray(9+t),pts:i,dts:s,originalPts:i,originalDts:s}},demuxAndFix(e,t,r,i){Jt._demux(e,t,r),Jt._fix(i,t,r)},_initVideoTrack:()=>({samples:[]}),_initAudioTrack:()=>({samples:[]}),_demux(e,t=!1,r=!0){t&&(Jt._pmtId=-1,Jt.videoTrack=Jt._initVideoTrack(),Jt.audioTrack=Jt._initAudioTrack()),!r||t?(Jt._remainingPacketData=null,Jt._videoPesData=[],Jt._audioPesData=[]):(Jt.videoTrack.samples=[],Jt.audioTrack.samples=[],Jt._remainingPacketData&&(e=Mr(Jt._remainingPacketData,e),Jt._remainingPacketData=null));let i=e.length;const s=i%188;s&&(Jt._remainingPacketData=e.subarray(i-s),i-=s);for(let t=0;t>4>1){if(s=t+5+e[t+4],s===t+188)continue}else s=t+4;switch(i){case 0:r&&(s+=e[s]+1),Jt._pmtId=(31&e[s+10])<<8|e[s+11];break;case Jt._pmtId:{r&&(s+=e[s]+1);const t=s+3+((15&e[s+1])<<8|e[s+2])-4;for(s+=12+((15&e[s+10])<<8|e[s+11]);s=t)return[];const s=[];for(;i=r)return;const s=i,n=[],a=(60&e[i+2])>>>2,o=Ye[a];if(!o)throw new Error(`Invalid sampling index: ${a}`);const d=1+((192&e[i+2])>>>6),l=(1&e[i+2])<<2|(192&e[i+3])>>>6;let u,h,c=0;const f=Xe(o);for(;i+7>5,r-i=r?void 0:e.subarray(i),frames:n,samplingFrequencyIndex:a,sampleRate:o,objectType:d,channelCount:l,originCodec:`mp4a.40.${d}`}}(e.data,e.originalPts);if(t){if(Jt.audioTrack.codec=t.codec,Jt.audioTrack.sampleRate=t.sampleRate,Jt.audioTrack.channelCount=t.channelCount,!Jt._isSendAACSeqHeader){const e=Ve({profile:t.objectType,sampleRate:t.samplingFrequencyIndex,channel:t.channelCount});Jt._isSendAACSeqHeader=!0,Qt.debug.log(Jt.TAG_NAME,"aac seq header",`profile: ${t.objectType}, sampleRate:${t.sampleRate},sampleRateIndex: ${t.samplingFrequencyIndex}, channel: ${t.channelCount}`),Qt.decodeAudio(e,0)}if(Jt._isSendAACSeqHeader){const e=[];t.frames.forEach((t=>{const r=t.pts,i=new Uint8Array(t.data.length+2);i.set([175,1],0),i.set(t.data,2);const s={type:K,pts:r,dts:r,payload:i};e.push(s)})),Jt.audioTrack.samples=Jt.audioTrack.samples.concat(e)}else Qt.debug.warn(Jt.TAG_NAME,"aac seq header not send")}else Qt.debug.warn(Jt.TAG_NAME,"aac parseADTS error")}Jt._audioPesData=[]}}else Qt.debug.warn(Jt.TAG_NAME,"Cannot parse audio pes",Jt._audioPesData)},_fix(e=0,t=!1,r=!0){e=Math.round(9e4*e);const i=Jt.videoTrack,s=Jt.audioTrack,n=i.samples,a=s.samples;if(!n.length&&!a.length)return;const o=n[0],d=a[0];let l=0;if(n.length&&a.length&&(l=o.dts-d.pts),Jt._baseDtsInited||Jt._calculateBaseDts(),t&&(Jt._calculateBaseDts(),Jt._baseDts-=e),!r){Jt._videoNextDts=l>0?e+l:e,Jt._audioNextPts=l>0?e:e-l;const t=o?o.dts-Jt._baseDts-Jt._videoNextDts:0,r=d?d.pts-Jt._baseDts-Jt._audioNextPts:0;Math.abs(t||r)>MAX_VIDEO_FRAME_DURATION&&(Jt._calculateBaseDts(Jt.audioTrack,Jt.videoTrack),Jt._baseDts-=e)}Jt._resetBaseDtsWhenStreamBreaked(),Jt._fixAudio(s),Jt._fixVideo(i);let u=i.samples.concat(s.samples);u=u.map((e=>(e.dts=Math.round(e.dts/90),e.pts=Math.round(e.pts/90),e.cts=e.pts-e.dts,e))).sort(((e,t)=>e.dts-t.dts)),u.forEach((e=>{const t=new Uint8Array(e.payload);delete e.payload,e.type===X?Jt._doDecodeVideo({...e,payload:t}):e.type===K&&Jt._doDecodeAudio({...e,payload:t})}))},_calculateBaseDts(){const e=Jt.audioTrack,t=Jt.videoTrack,r=e.samples,i=t.samples;if(!r.length&&!i.length)return!1;let s=1/0,n=1/0;r.length&&(e.baseDts=s=r[0].pts),i.length&&(t.baseDts=n=i[0].dts),Jt._baseDts=Math.min(s,n);const a=n-s;return Number.isFinite(a)&&Math.abs(a)>45e3&&Qt.debug.warn(Jt.TAG_NAME,`large av first frame gap,\n video pts: ${n},\n audio pts: ${s},\n base dts: ${Jt._baseDts},\n detect is: ${a}`),Jt._baseDtsInited=!0,!0},_resetBaseDtsWhenStreamBreaked(){if(Jt._baseDtsInited&&Jt._videoTimestampBreak&&Jt._audioTimestampBreak){if(!Jt._calculateBaseDts(Jt.audioTrack,Jt.videoTrack))return;Jt._baseDts-=Math.min(Jt._audioNextPts,Jt._videoNextDts),Jt._audioLastSample=null,Jt._videoLastSample=null,Jt._videoTimestampBreak=!1,Jt._audioTimestampBreak=!1}},_createVideoSample(e,t,r){if(!e.length)return;const i=Jt._codecType===we,s={isIFrame:!1,type:X,isHevc:i,vps:null,sps:null,pps:null,pts:t,dts:r,payload:null};e.forEach((e=>{const t=i?e[0]>>>1&63:31&e[0];switch(t){case 5:case 16:case 17:case 18:case 19:case 20:case 21:case 22:case 23:if(!i&&5!==t||i&&5===t)break;s.isIFrame=!0,Jt._gopId++;break;case 6:case 39:case 40:if(!i&&6!==t||i&&6===t)break;return void function(e,t){const r=e.length;let i=t?2:1,s=0,n=0,a="";for(;255===e[i];)s+=255,i++;for(s+=e[i++];255===e[i];)n+=255,i++;if(n+=e[i++],5===s&&r>i+16)for(let t=0;t<16;t++)a+=e[i].toString(16),i++;e.subarray(i)}(function(e){const t=e.byteLength,r=[];let i=1;for(;i>>8,n[7]=255&a;let o=8;n.set(e,8),o+=a,n[o]=1;let d=t.byteLength;n[o+1]=d>>>8,n[o+2]=255&d,n.set(t,o+3),o+=3+d,i&&(n[o]=252|s.chroma_format_idc,n[o+1]=248|s.bit_depth_luma-8,n[o+2]=248|s.bit_depth_chroma-8,n[o+3]=0,o+=4);const l=[23,0,0,0,0],u=new Uint8Array(l.length+n.byteLength);return u.set(l,0),u.set(n,l.length),u}({sps:s.sps,pps:s.pps})),n&&(Qt.debug.log(Jt.TAG_NAME,"_createVideoSample","seqHeader"),Qt.decodeVideo(n,X,Math.round(s.pts/90),!0,0)),s.isIFrame&&Qt.calcIframeIntervalTimestamp(Math.round(s.dts/90)),Jt.videoTrack.samples=Jt.videoTrack.samples.concat(s)},_fixAudio(e){const t=e.samples;t.length&&(t.forEach((e=>{e.pts-=Jt._baseDts,e.dts=e.pts})),Jt._doFixAudioInternal(e,t,9e4))},_fixVideo(e){const t=e.samples;if(!t.length)return;if(t.forEach((e=>{e.dts-=Jt._baseDts,e.pts-=Jt._baseDts})),void 0===Jt._videoNextDts){const e=t[0];Jt._videoNextDts=e.dts}const r=t.length;let i=0;const s=t[0],n=t[1],a=Jt._videoNextDts-s.dts;let o;Math.abs(a)>45e3&&(s.dts+=a,s.pts+=a,Qt.debug.warn(Jt.TAG_NAME,`large video gap between chunk,\n next dts is ${Jt._videoNextDts},\n first dts is ${s.dts},\n next dts is ${n.dts},\n duration is ${a}`),n&&Math.abs(n.dts-s.dts)>9e4&&(Jt._videoTimestampBreak=!0,t.forEach(((e,t)=>{0!==t&&(e.dts+=a,e.pts+=a)}))));const d=e.samples[0],l=e.samples[r-1];o=1===r?9e3:Math.floor((l.dts-d.dts)/(r-1));for(let s=0;s9e4||i<0){Jt._videoTimestampBreak=!0,i=Jt._audioTimestampBreak?o:Math.max(i,2700);const r=Jt._audioNextPts||0;a&&a.dts>r&&(i=o),Qt.debug.warn(Jt.TAG_NAME,`large video gap between frames,\n time is ${n/e.timescale},\n dts is ${n},\n origin dts is ${t[s].originalDts},\n next dts is ${Jt._videoNextDts},\n sample Duration is ${i} ,\n ref Sample DurationInt is ${o}`)}t[s].duration=i,Jt._videoNextDts+=i}},_doFixAudioInternal(e,t,r){e.sampleDuration||(e.sampleDuration=Xe(e.timescale,r));const i=e.sampleDuration;if(void 0===Jt._audioNextPts){const e=t[0];Jt._audioNextPts=e.pts}for(let r=0;r=3*i&&a<=Ge&&!et()){Ke(e.codec,e.channelCount)||t[0].data.subarray();const o=Math.floor(a/i);Math.abs(n.pts-Jt._lastAudioExceptionGapDot)>AUDIO_EXCETION_LOG_EMIT_DURATION&&(Jt._lastAudioExceptionGapDot=n.pts),Qt.debug.warn(Jt.TAG_NAME,`audio gap detected,\n pts is ${t.pts},\n originPts is ${t.originalPts},\n count is ${o},\n nextPts is ${s},\n ref sample duration is ${i}`);for(let e=0;e=-9e4?(Math.abs(n.pts-Jt._lastAudioExceptionOverlapDot)>He&&(Jt._lastAudioExceptionOverlapDot=n.pts,Qt.debug.warn(Jt.TAG_NAME,`audio overlap detected,\n pts is ${n.pts},\n originPts is ${n.originalPts},\n nextPts is ${s},\n ref sample duration is ${i}`)),t.splice(r,1),r--):(Math.abs(a)>=Ge&&(Jt._audioTimestampBreak=!0,Math.abs(n.pts-Jt._lastAudioExceptionLargeGapDot)>He&&(Jt._lastAudioExceptionLargeGapDot=n.pts,Qt.debug.warn(Jt.TAG_NAME,`large audio gap detected,\n time is ${n.pts/1e3}\n pts is ${n.pts},\n originPts is ${n.originalPts},\n nextPts is ${s},\n sample duration is ${a}\n ref sample duration is ${i}`))),n.dts=n.pts=s,Jt._audioNextPts+=i)}},_doDecodeVideo(e){const t=new Uint8Array(e.payload);let r=null;r=e.isHevc?Lt(t,e.isIFrame):bt(t,e.isIFrame),postMessage({cmd:P,type:ce,value:r.byteLength}),postMessage({cmd:P,type:fe,value:e.dts});const i=e.pts-e.dts;let s=Qt.cryptoPayload(r,e.isIFrame);Qt.decode(s,{type:X,ts:e.dts,isIFrame:e.isIFrame,cts:i})},_doDecodeAudio(){const e=new Uint8Array(sample.payload);postMessage({cmd:P,type:he,value:e.byteLength});let t=e;at(Qt._opt.m7sCryptoAudio)&&(t=Qt.cryptoPayloadAudio(e)),Qt.decode(t,{type:K,ts:sample.dts,isIFrame:!1,cts:0})},destroy(){Jt.videoTrack=null,Jt.audioTrack=null,Jt.tempSampleListInfo={},Jt._baseDts=-1,Jt._baseDtsInited=!1,Jt._basefps=50,Jt._hasCalcFps=!1,Jt._audioNextPts=void 0,Jt._videoNextDts=void 0,Jt._audioTimestampBreak=!1,Jt._videoTimestampBreak=!1,Jt._lastAudioExceptionGapDot=0,Jt._lastAudioExceptionOverlapDot=0,Jt._lastAudioExceptionLargeGapDot=0,Jt._isForHls=!0,Jt._isSendAACSeqHeader=!1,Qt.debug.log(Jt.TAG_NAME,"destroy")}},Qt={isPlayer:!0,isPlayback:!1,dropping:!1,isPushDropping:!1,isWorkerFetch:!1,isDestroyed:!1,fetchStatus:Pe,_opt:Yt(),mp3Demuxer:null,delay:-1,pushLatestDelay:-1,firstTimestamp:null,startTimestamp:null,preDelayTimestamp:null,stopId:null,streamFps:null,streamAudioFps:null,streamVideoFps:null,writableStream:null,networkDelay:0,webglObj:null,startStreamRateAndStatsInterval:function(){Qt.stopStreamRateAndStatsInterval(),g=setInterval((()=>{d&&d(0);const e=JSON.stringify({demuxBufferDelay:Qt.getVideoBufferLength(),audioDemuxBufferDelay:Qt.getAudioBufferLength(),flvBufferByteLength:Qt.getFlvBufferLength(),netBuf:Qt.networkDelay||0,pushLatestDelay:Qt.pushLatestDelay||0,latestDelay:Qt.delay,isStreamTsMoreThanLocal:dt});postMessage({cmd:P,type:me,value:e})}),1e3)},stopStreamRateAndStatsInterval:function(){g&&(clearInterval(g),g=null)},useOffscreen:function(){return Qt._opt.useOffscreen&&"undefined"!=typeof OffscreenCanvas},getDelay:function(e,t){if(!e||Qt._opt.hasVideo&&!Je)return-1;if(t===K)return Qt.delay;if(Qt.preDelayTimestamp&&Qt.preDelayTimestamp>e)return Qt.preDelayTimestamp-e>1e3&&Qt.debug.warn("worker",`getDelay() and preDelayTimestamp is ${Qt.preDelayTimestamp} > timestamp is ${e} more than ${Qt.preDelayTimestamp-e}ms and return ${Qt.delay}`),Qt.preDelayTimestamp=e,Qt.delay;if(Qt.firstTimestamp){if(e){const t=Date.now()-Qt.startTimestamp,r=e-Qt.firstTimestamp;t>=r?(dt=!1,Qt.delay=t-r):(dt=!0,Qt.delay=r-t)}}else Qt.firstTimestamp=e,Qt.startTimestamp=Date.now(),Qt.delay=-1;return Qt.preDelayTimestamp=e,Qt.delay},getDelayNotUpdateDelay:function(e,t){if(!e||Qt._opt.hasVideo&&!Je)return-1;if(t===K)return Qt.pushLatestDelay;if(Qt.preDelayTimestamp&&Qt.preDelayTimestamp-e>1e3)return Qt.debug.warn("worker",`getDelayNotUpdateDelay() and preDelayTimestamp is ${Qt.preDelayTimestamp} > timestamp is ${e} more than ${Qt.preDelayTimestamp-e}ms and return -1`),-1;if(Qt.firstTimestamp){let t=-1;if(e){const r=Date.now()-Qt.startTimestamp,i=e-Qt.firstTimestamp;r>=i?(dt=!1,t=r-i):(dt=!0,t=i-r)}return t}return-1},resetDelay:function(){Qt.firstTimestamp=null,Qt.startTimestamp=null,Qt.delay=-1,Qt.dropping=!1},resetAllDelay:function(){Qt.resetDelay(),Qt.preDelayTimestamp=null},doDecode:function(e){Qt._opt.isEmitSEI&&e.type===X&&Qt.isWorkerFetch&&Qt.findSei(e.payload,e.ts),Qt._opt.useWCS&&Qt.useOffscreen()&&e.type===X&&n.decode?n.decode(e.payload,e.ts,e.cts):e.decoder.decode(e.payload,e.ts,e.isIFrame,e.cts)},decodeNext(e){if(0===i.length)return;const t=e.ts,s=i[0],n=e.type===X&&nt(e.payload);if(ot(r))n&&(Qt.debug.log("worker",`decode data type is ${e.type} and\n ts is ${t} next data type is ${s.type} ts is ${s.ts}\n isVideoSqeHeader is ${n}`),i.shift(),Qt.doDecode(s));else{const r=s.ts-t,a=s.type===K&&e.type===X;(r<=20||a||n)&&(Qt.debug.log("worker",`decode data type is ${e.type} and\n ts is ${t} next data type is ${s.type} ts is ${s.ts}\n diff is ${r} and isVideoAndNextAudio is ${a} and isVideoSqeHeader is ${n}`),i.shift(),Qt.doDecode(s))}},init:function(){Qt.debug.log("worker","init and opt is",JSON.stringify(Qt._opt));const e=Qt._opt.playType===p,t=Qt._opt.playType===m;if(Kt.init(),Qt.isPlayer=e,Qt.isPlayback=t,Qt.isPlaybackCacheBeforeDecodeForFpsRender())Qt.debug.log("worker","playback and playbackIsCacheBeforeDecodeForFpsRender is true");else{Qt.debug.log("worker","setInterval()");const t=Qt._opt.videoBuffer+Qt._opt.videoBufferDelay,r=()=>{let r=null;if(i.length){if(Qt.isPushDropping)return void Qt.debug.warn("worker",`loop() isPushDropping is true and bufferList length is ${i.length}`);if(Qt.dropping){for(r=i.shift(),Qt.debug.warn("worker",`loop() dropBuffer is dropping and isIFrame ${r.isIFrame} and delay is ${Qt.delay} and bufferlist is ${i.length}`);!r.isIFrame&&i.length;)r=i.shift();const e=Qt.getDelayNotUpdateDelay(r.ts,r.type);r.isIFrame&&e<=Qt.getNotDroppingDelayTs()&&(Qt.debug.log("worker","loop() is dropping = false, is iFrame"),Qt.dropping=!1,Qt.doDecode(r),Qt.decodeNext(r))}else if(Qt.isPlayback||Qt.isPlayUseMSE()||0===Qt._opt.videoBuffer)for(;i.length;)r=i.shift(),Qt.doDecode(r);else if(r=i[0],-1===Qt.getDelay(r.ts,r.type))Qt.debug.log("worker","loop() common dumex delay is -1 ,data.ts is",r.ts),i.shift(),Qt.doDecode(r),Qt.decodeNext(r);else if(Qt.delay>t&&e)Qt.hasIframeInBufferList()?(Qt.debug.log("worker",`delay is ${Qt.delay} > maxDelay ${t}, set dropping is true`),Qt.resetAllDelay(),Qt.dropping=!0,postMessage({cmd:z})):(i.shift(),Qt.doDecode(r),Qt.decodeNext(r));else for(;i.length;){if(r=i[0],!(Qt.getDelay(r.ts,r.type)>Qt._opt.videoBuffer)){Qt.delay<0&&Qt.debug.warn("worker",`loop() do not decode and delay is ${Qt.delay}, bufferList is ${i.length}`);break}i.shift(),Qt.doDecode(r)}}else-1!==Qt.delay&&Qt.debug.log("worker","loop() bufferList is empty and reset delay"),Qt.resetAllDelay()};Qt.stopId=setInterval((()=>{let e=(new Date).getTime();lt||(lt=e);const t=e-lt;t>100&&Qt.debug.warn("worker",`loop demux diff time is ${t}`),r(),lt=(new Date).getTime()}),20)}ot(Qt._opt.checkFirstIFrame)&&(Je=!0)},playbackCacheLoop:function(){Qt.stopId&&(clearInterval(Qt.stopId),Qt.stopId=null);const e=()=>{let e=null;i.length&&(e=i.shift(),Qt.doDecode(e))};e();const t=Math.ceil(1e3/(Qt.streamFps*Qt._opt.playbackRate));Qt.debug.log("worker",`playbackCacheLoop fragDuration is ${t}, streamFps is ${Qt.streamFps}, streamAudioFps is ${Qt.streamAudioFps} ,streamVideoFps is ${Qt.streamVideoFps} playbackRate is ${Qt._opt.playbackRate}`),Qt.stopId=setInterval(e,t)},close:function(){if(Qt.debug.log("worker","close"),Qt.isDestroyed=!0,qt(),!o||1!==o.readyState&&2!==o.readyState?o&&Qt.debug.log("worker",`close() and socket.readyState is ${o.readyState}`):(jt=!0,o.close(1e3,"Client disconnecting")),o=null,Qt.stopStreamRateAndStatsInterval(),Qt.stopId&&(clearInterval(Qt.stopId),Qt.stopId=null),Qt.mp3Demuxer&&(Qt.mp3Demuxer.destroy(),Qt.mp3Demuxer=null),Qt.writableStream&&ot(Qt.writableStream.locked)&&Qt.writableStream.close().catch((e=>{Qt.debug.log("worker","close() and writableStream.close() error",e)})),Qt.writableStream=null,er)try{er.clear&&er.clear(),er=null}catch(e){Qt.debug.warn("worker","close() and audioDecoder.clear error",e)}if(tr)try{tr.clear&&tr.clear(),tr=null}catch(e){Qt.debug.warn("worker","close() and videoDecoder.clear error",e)}d=null,lt=null,dt=!1,n&&(n.reset&&n.reset(),n=null),Qt.firstTimestamp=null,Qt.startTimestamp=null,Qt.networkDelay=0,Qt.streamFps=null,Qt.streamAudioFps=null,Qt.streamVideoFps=null,Qt.delay=-1,Qt.pushLatestDelay=-1,Qt.preDelayTimestamp=null,Qt.dropping=!1,Qt.isPushDropping=!1,Qt.isPlayer=!0,Qt.isPlayback=!1,Qt.isWorkerFetch=!1,Qt._opt=Yt(),Qt.webglObj&&(Qt.webglObj.destroy(),Qt.offscreenCanvas.removeEventListener("webglcontextlost",Qt.onOffscreenCanvasWebglContextLost),Qt.offscreenCanvas.removeEventListener("webglcontextrestored",Qt.onOffscreenCanvasWebglContextRestored),Qt.offscreenCanvas=null,Qt.offscreenCanvasGL=null,Qt.offscreenCanvasCtx=null),i=[],s=[],y=null,v=null,De=null,Fe=!1,$e=!1,Je=!1,Ot=!1,Gt=!1,Ht=!1,$t=null,Vt=null,pt=[],xt=0,At=0,ut=null,ht=null,Bt=null,kt=null,Wt=null,Tt=0,Nt=0,_t=null,Ut=null,Qt.fetchStatus=Pe,Kt.destroy(),Xt.destroy(),Zt.destroy(),Jt.destroy(),postMessage({cmd:G})},pushBuffer:function(e,t){if(t.type===K&&We(e)){if(Qt.debug.log("worker",`pushBuffer audio ts is ${t.ts}, isAacCodecPacket is true`),Qt._opt.isRecordTypeFlv){const t=new Uint8Array(e);postMessage({cmd:W,buffer:t},[t.buffer])}Qt.decodeAudio(e,t.ts)}else if(t.type===X&&t.isIFrame&&nt(e)){if(Qt.debug.log("worker",`pushBuffer video ts is ${t.ts}, isVideoSequenceHeader is true`),Qt._opt.isRecordTypeFlv){const t=new Uint8Array(e);postMessage({cmd:j,buffer:t},[t.buffer])}Qt.decodeVideo(e,t.ts,t.isIFrame,t.cts)}else{if(Qt._opt.isRecording)if(Qt._opt.isRecordTypeFlv){const r=new Uint8Array(e);postMessage({cmd:Y,type:t.type,buffer:r,ts:t.ts},[r.buffer])}else if(Qt._opt.recordType===_)if(t.type===X){const r=new Uint8Array(e).slice(5);postMessage({cmd:D,buffer:r,isIFrame:t.isIFrame,ts:t.ts,cts:t.cts},[r.buffer])}else if(t.type===K&&Qt._opt.isWasmMp4){const r=new Uint8Array(e),i=je(r)?r.slice(2):r.slice(1);postMessage({cmd:B,buffer:i,ts:t.ts},[i.buffer])}if(Qt.isPlayer&&Tt>0&&kt>0&&t.type===X){const e=t.ts-kt,r=Tt+Tt/2;e>r&&Qt.debug.log("worker",`pushBuffer video\n ts is ${t.ts}, preTimestamp is ${kt},\n diff is ${e} and preTimestampDuration is ${Tt} and maxDiff is ${r}\n maybe trigger black screen or flower screen\n `)}if(Qt.isPlayer&&kt>0&&t.type===X&&t.tsb&&(Qt.debug.warn("worker",`pushBuffer,\n preTimestamp is ${kt}, options.ts is ${t.ts},\n diff is ${kt-t.ts} more than 3600000,\n and resetAllDelay`),Qt.resetAllDelay(),kt=null,Tt=0),Qt.isPlayer&&kt>0&&t.ts<=kt&&t.type===X&&(Qt.debug.warn("worker",`pushBuffer,\n options.ts is ${t.ts} less than (or equal) preTimestamp is ${kt} and\n payloadBufferSize is ${e.byteLength} and prevPayloadBufferSize is ${Nt}`),Qt._opt.isDropSameTimestampGop&&Je)){const e=Qt.hasIframeInBufferList(),t=ot(Qt.isPushDropping);return Qt.debug.log("worker",`pushBuffer, isDropSameTimestampGop is true and\n hasIframe is ${e} and isNotPushDropping is ${t} and next dropBuffer`),void(e&&t?Qt.dropBuffer$2():(Qt.clearBuffer(!0),at(Qt._opt.checkFirstIFrame)&&at(r)&&postMessage({cmd:q})))}if(Qt.isPlayer&&Je){const e=Qt._opt.videoBuffer+Qt._opt.videoBufferDelay,r=Qt.getDelayNotUpdateDelay(t.ts,t.type);Qt.pushLatestDelay=r,r>e&&Qt.delay0&&Qt.hasIframeInBufferList()&&!1===Qt.isPushDropping&&(Qt.debug.log("worker",`pushBuffer(), pushLatestDelay is ${r} more than ${e} and decoder.delay is ${Qt.delay} and has iIframe and next decoder.dropBuffer$2()`),Qt.dropBuffer$2())}if(Qt.isPlayer&&t.type===X&&(kt>0&&(Tt=t.ts-kt),Nt=e.byteLength,kt=t.ts),t.type===K?i.push({ts:t.ts,payload:e,decoder:{decode:Qt.decodeAudio},type:K,isIFrame:!1}):t.type===X&&i.push({ts:t.ts,cts:t.cts,payload:e,decoder:{decode:Qt.decodeVideo},type:X,isIFrame:t.isIFrame}),Qt.isPlaybackCacheBeforeDecodeForFpsRender()&&(tt(Qt.streamVideoFps)||tt(Qt.streamAudioFps))){let e=Qt.streamVideoFps,t=Qt.streamAudioFps;if(tt(Qt.streamVideoFps)&&(e=it(i,X),e&&(Qt.streamVideoFps=e,postMessage({cmd:R,value:Qt.streamVideoFps}),Qt.streamFps=t?e+t:e,ot(Qt._opt.hasAudio)&&(Qt.debug.log("worker","playbackCacheBeforeDecodeForFpsRender, _opt.hasAudio is false and set streamAudioFps is 0"),Qt.streamAudioFps=0),Qt.playbackCacheLoop())),tt(Qt.streamAudioFps)&&(t=it(i,K),t&&(Qt.streamAudioFps=t,Qt.streamFps=e?e+t:t,Qt.playbackCacheLoop())),tt(Qt.streamVideoFps)&&tt(Qt.streamAudioFps)){const r=i.map((e=>({type:e.type,ts:e.ts})));Qt.debug.log("worker",`playbackCacheBeforeDecodeForFpsRender, calc streamAudioFps is ${t}, streamVideoFps is ${e}, bufferListLength is ${i.length}, and ts list is ${JSON.stringify(r)}`)}const r=Qt.getAudioBufferLength()>0,s=r?60:40;i.length>=s&&(Qt.debug.warn("worker",`playbackCacheBeforeDecodeForFpsRender, bufferListLength is ${i.length} more than ${s}, and hasAudio is ${r} an set streamFps is 25`),Qt.streamVideoFps=25,postMessage({cmd:R,value:Qt.streamVideoFps}),r?(Qt.streamAudioFps=25,Qt.streamFps=Qt.streamVideoFps+Qt.streamAudioFps):Qt.streamFps=Qt.streamVideoFps,Qt.playbackCacheLoop())}}},getVideoBufferLength(){let e=0;return i.forEach((t=>{t.type===X&&(e+=1)})),e},hasIframeInBufferList:()=>i.some((e=>e.type===X&&e.isIFrame)),isAllIframeInBufferList(){const e=Qt.getVideoBufferLength();let t=0;return i.forEach((e=>{e.type===X&&e.isIFrame&&(t+=1)})),e===t},getNotDroppingDelayTs:()=>Qt._opt.videoBuffer+Qt._opt.videoBufferDelay/2,getAudioBufferLength(){let e=0;return i.forEach((t=>{t.type===K&&(e+=1)})),e},getFlvBufferLength(){let e=0;return y&&y.buffer&&(e=y.buffer.byteLength),Qt._opt.isNakedFlow&&Kt.lastBuf&&(e=Kt.lastBuf.byteLength),e},fetchStream:function(e,t){Qt.debug.log("worker","fetchStream, url is "+e,"options:",JSON.stringify(t)),Qt.isWorkerFetch=!0,t.isFlv?Qt._opt.isFlv=!0:t.isFmp4?Qt._opt.isFmp4=!0:t.isMpeg4?Qt._opt.isMpeg4=!0:t.isNakedFlow?Qt._opt.isNakedFlow=!0:t.isTs&&(Qt._opt.isTs=!0),d=Qe((e=>{postMessage({cmd:P,type:ue,value:e})})),Qt.startStreamRateAndStatsInterval(),t.isFmp4&&(Xt.listenMp4Box(),Qt._opt.isFmp4Private&&Xt.initTransportDescarmber()),t.protocol===h?(y=new ct(Qt.demuxFlv()),fetch(e,{signal:a.signal}).then((e=>{if(at(jt))return Qt.debug.log("worker","request abort and run res.body.cancel()"),Qt.fetchStatus=Pe,void e.body.cancel();if(!function(e){return e.ok&&e.status>=200&&e.status<=299}(e))return Qt.debug.warn("worker",`fetch response status is ${e.status} and ok is ${e.ok} and emit error and next abort()`),qt(),void postMessage({cmd:P,type:ye.fetchError,value:`fetch response status is ${e.status} and ok is ${e.ok}`});if(postMessage({cmd:P,type:pe}),"undefined"!=typeof WritableStream)Qt.writableStream=new WritableStream({write:e=>a&&a.signal&&a.signal.aborted?(Qt.debug.log("worker","writableStream write() and abortController.signal.aborted is true so return"),void(Qt.fetchStatus=ze)):at(jt)?(Qt.debug.log("worker","writableStream write() and requestAbort is true so return"),void(Qt.fetchStatus=ze)):(Qt.fetchStatus=Le,d(e.byteLength),void(t.isFlv?y.write(e):t.isFmp4?Qt.demuxFmp4(e):t.isMpeg4?Qt.demuxMpeg4(e):t.isTs&&Qt.demuxTs(e))),close:()=>{Qt.fetchStatus=ze,y=null,qt(),postMessage({cmd:P,type:le,value:c,msg:"fetch done"})},abort:e=>{if(a&&a.signal&&a.signal.aborted)return Qt.debug.log("worker","writableStream abort() and abortController.signal.aborted is true so return"),void(Qt.fetchStatus=ze);y=null,e.name!==Ce&&(qt(),postMessage({cmd:P,type:ye.fetchError,value:e.toString()}))}}),e.body.pipeTo(Qt.writableStream);else{const r=e.body.getReader(),i=()=>{r.read().then((({done:e,value:r})=>e?(Qt.fetchStatus=ze,y=null,qt(),void postMessage({cmd:P,type:le,value:c,msg:"fetch done"})):a&&a.signal&&a.signal.aborted?(Qt.debug.log("worker","fetchNext().then() and abortController.signal.aborted is true so return"),void(Qt.fetchStatus=ze)):at(jt)?(Qt.debug.log("worker","fetchNext().then() and requestAbort is true so return"),void(Qt.fetchStatus=ze)):(Qt.fetchStatus=Le,d(r.byteLength),t.isFlv?y.write(r):t.isFmp4?Qt.demuxFmp4(r):t.isMpeg4&&Qt.demuxMpeg4(r),void i()))).catch((e=>{if(a&&a.signal&&a.signal.aborted)return Qt.debug.log("worker","fetchNext().catch() and abortController.signal.aborted is true so return"),void(Qt.fetchStatus=ze);y=null,e.name!==Ce&&(qt(),postMessage({cmd:P,type:ye.fetchError,value:e.toString()}))}))};i()}})).catch((e=>{a&&a.signal&&a.signal.aborted?Qt.debug.log("worker","fetch().catch() and abortController.signal.aborted is true so return"):e.name!==Ce&&(qt(),postMessage({cmd:P,type:ye.fetchError,value:e.toString()}),y=null)}))):t.protocol===u&&(t.isFlv&&(y=new ct(Qt.demuxFlv())),o=new WebSocket(e),o.binaryType="arraybuffer",o.onopen=()=>{Qt.debug.log("worker","fetchStream, WebsocketStream socket open"),postMessage({cmd:P,type:pe}),postMessage({cmd:P,type:ge})},o.onclose=e=>{Qt.debug.log("worker",`fetchStream, WebsocketStream socket close and code is ${e.code}`),1006===e.code&&Qt.debug.error("worker",`fetchStream, WebsocketStream socket close abnormally and code is ${e.code}`),at(jt)?Qt.debug.log("worker","fetchStream, WebsocketStream socket close and requestAbort is true so return"):(y=null,postMessage({cmd:P,type:le,value:f,msg:e.code}))},o.onerror=e=>{Qt.debug.error("worker","fetchStream, WebsocketStream socket error",e),y=null,postMessage({cmd:P,type:ye.websocketError,value:e.isTrusted?"websocket user aborted":"websocket error"})},o.onmessage=e=>{d(e.data.byteLength),t.isFlv?y.write(e.data):t.isFmp4?Qt.demuxFmp4(e.data):t.isMpeg4?Qt.demuxMpeg4(e.data):Qt._opt.isNakedFlow?Qt.demuxNakedFlow(e.data):Qt.demuxM7s(e.data)})},demuxFlv:function*(){yield 9;const e=new ArrayBuffer(4),t=new Uint8Array(e),r=new Uint32Array(e);for(;;){t[3]=0;const e=yield 15,i=e[4];t[0]=e[7],t[1]=e[6],t[2]=e[5];const s=r[0];t[0]=e[10],t[1]=e[9],t[2]=e[8],t[3]=e[11];let n=r[0];const a=(yield s).slice();switch(i){case Z:if(a.byteLength>0){let e=a;at(Qt._opt.m7sCryptoAudio)&&(e=Qt.cryptoPayloadAudio(a)),Qt.decode(e,{type:K,ts:n})}else Qt.debug.warn("worker",`demuxFlv() type is audio and payload.byteLength is ${a.byteLength} and return`);break;case J:if(a.byteLength>=6){const e=a[0];if(Qt._isEnhancedH265Header(e))Qt._decodeEnhancedH265Video(a,n);else{a[0];const e=a[0]>>4===Ie;if(e&&nt(a)&&null===$t){const e=15&a[0];$t=e===we,Vt=Ft(a,$t),Qt.debug.log("worker",`demuxFlv() isVideoSequenceHeader is true and isHevc is ${$t} and nalUnitSize is ${Vt}`)}e&&Qt.calcIframeIntervalTimestamp(n),Qt.isPlayer&&Qt.calcNetworkDelay(n),r[0]=a[4],r[1]=a[3],r[2]=a[2],r[3]=0;let t=r[0],i=Qt.cryptoPayload(a,e);Qt.decode(i,{type:X,ts:n,isIFrame:e,cts:t})}}else Qt.debug.warn("worker",`demuxFlv() type is video and payload.byteLength is ${a.byteLength} and return`);break;case Q:postMessage({cmd:V,buffer:a},[a.buffer]);break;default:Qt.debug.log("worker",`demuxFlv() type is ${i}`)}}},decode:function(e,t){t.type===K?Qt._opt.hasAudio&&(postMessage({cmd:P,type:he,value:e.byteLength}),Qt.isPlayer?Qt.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts}):Qt.isPlayback&&(Qt.isPlaybackOnlyDecodeIFrame()||(Qt.isPlaybackCacheBeforeDecodeForFpsRender(),Qt.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts})))):t.type===X&&Qt._opt.hasVideo&&(postMessage({cmd:P,type:ce,value:e.byteLength}),postMessage({cmd:P,type:fe,value:t.ts}),Qt.isPlayer?Qt.pushBuffer(e,{type:t.type,ts:t.ts,isIFrame:t.isIFrame,cts:t.cts}):Qt.isPlayback&&(Qt.isPlaybackOnlyDecodeIFrame()?t.isIFrame&&Qt.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts,isIFrame:t.isIFrame}):(Qt.isPlaybackCacheBeforeDecodeForFpsRender(),Qt.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts,isIFrame:t.isIFrame}))))},cryptoPayload:function(e,t){let r=e;return Qt._opt.isM7sCrypto?Qt._opt.cryptoIV&&Qt._opt.cryptoIV.byteLength>0&&Qt._opt.cryptoKey&&Qt._opt.cryptoKey.byteLength>0?r=function(e,t,r,i=!1){t=new Uint8Array(t),r=new Uint8Array(r);const s=e.byteLength;let n=5;for(;ns)break;let d=e[n+4],l=!1;if(i?(d=d>>>1&63,l=[0,1,2,3,4,5,6,7,8,9,16,17,18,19,20,21].includes(d)):(d&=31,l=1===d||5===d),l){const i=e.slice(n+4+2,n+4+o);let s=new gr.ModeOfOperation.ctr(t,new gr.Counter(r));const a=s.decrypt(i);s=null,e.set(a,n+4+2)}n=n+4+o}var a;return e}(e,Qt._opt.cryptoKey,Qt._opt.cryptoIV,$t):Qt.debug.error("worker",`isM7sCrypto cryptoKey.length is ${Qt._opt.cryptoKey&&Qt._opt.cryptoKey.byteLength} or cryptoIV.length is ${Qt._opt.cryptoIV&&Qt._opt.cryptoIV.byteLength} null`):Qt._opt.isSm4Crypto?Qt._opt.sm4CryptoKey&&t?r=function(e,t,r=!1){const i=e.byteLength;let s=5;for(;si)break;let o=e[s+4],d=!1;if(r?(o=o>>>1&63,d=[0,1,2,3,4,5,6,7,8,9,16,17,18,19,20,21].includes(o)):(o&=31,d=1===o||5===o),d){const r=Ir(e.slice(s+4+2,s+4+a),t,0,{padding:"none",output:"array"});e.set(r,s+4+2)}s=s+4+a}var n;return e}(e,Qt._opt.sm4CryptoKey):Qt._opt.sm4CryptoKey||Qt.debug.error("worker","isSm4Crypto opt.sm4CryptoKey is null"):Qt._opt.isXorCrypto&&(Qt._opt.cryptoIV&&Qt._opt.cryptoIV.byteLength>0&&Qt._opt.cryptoKey&&Qt._opt.cryptoKey.byteLength>0?r=function(e,t,r,i=!1){const s=e.byteLength;let n=5;for(;ns)break;let d=e[n+4],l=!1;if(i?(d=d>>>1&63,l=[0,1,2,3,4,5,6,7,8,9,16,17,18,19,20,21].includes(d)):(d&=31,l=1===d||5===d),l){const i=Rr(e.slice(n+4,n+4+o),t,r);e.set(i,n+4)}n=n+4+o}var a;return e}(e,Qt._opt.cryptoKey,Qt._opt.cryptoIV,$t):Qt.debug.error("worker",`isXorCrypto cryptoKey.length is ${Qt._opt.cryptoKey&&Qt._opt.cryptoKey.byteLength} or cryptoIV.length is ${Qt._opt.cryptoIV&&Qt._opt.cryptoIV.byteLength} null`)),r},cryptoPayloadAudio:function(e){let t=e;if(Qt._opt.isM7sCrypto)if(Qt._opt.cryptoIV&&Qt._opt.cryptoIV.byteLength>0&&Qt._opt.cryptoKey&&Qt._opt.cryptoKey.byteLength>0){e[0]>>4===Ue.AAC&&(t=function(e,t,r){if(e.byteLength<=30)return e;const i=e.slice(32);let s=new gr.ModeOfOperation.ctr(t,new gr.Counter(r));const n=s.decrypt(i);return s=null,e.set(n,32),e}(e,Qt._opt.cryptoKey,Qt._opt.cryptoIV))}else Qt.debug.error("worker",`isM7sCrypto cryptoKey.length is ${Qt._opt.cryptoKey&&Qt._opt.cryptoKey.byteLength} or cryptoIV.length is ${Qt._opt.cryptoIV&&Qt._opt.cryptoIV.byteLength} null`);return t},setCodecAudio:function(e,t){const r=e[0]>>4,i=e[0]>>1&1;if(Wt=r===Ue.AAC?i?16:8:0===i?8:16,er&&er.setCodec)if(We(e)||r===Ue.ALAW||r===Ue.MULAW||r===Ue.MP3){Qt.debug.log("worker",`setCodecAudio: init audio codec, codeId is ${r}`);const i=r===Ue.AAC?e.slice(2):new Uint8Array(0);er.setCodec(r,Qt._opt.sampleRate,i),r===Ue.AAC&&postMessage({cmd:k,buffer:i},[i.buffer]),$e=!0,r!==Ue.AAC&&(r===Ue.MP3?(Qt.mp3Demuxer||(Qt.mp3Demuxer=new zr(Qt),Qt.mp3Demuxer.on("data",((e,t)=>{er.decode(e,t)}))),Qt.mp3Demuxer.dispatch(e.slice(1),t)):er.decode(e.slice(1),t))}else Qt.debug.warn("worker","setCodecAudio: hasInitAudioCodec is false, codecId is ",r);else Qt.debug.error("worker","setCodecAudio: audioDecoder or audioDecoder.setCodec is null")},decodeAudio:function(e,t){if(Qt.isDestroyed)Qt.debug.log("worker","decodeAudio, decoder is destroyed and return");else if(at(r)&&at(Qt._opt.mseDecodeAudio))postMessage({cmd:I,payload:e,ts:t,cts:t},[e.buffer]);else{const r=e[0]>>4;$e?r===Ue.MP3?Qt.mp3Demuxer.dispatch(e.slice(1),t):er.decode(r===Ue.AAC?e.slice(2):e.slice(1),t):Qt.setCodecAudio(e,t)}},setCodecVideo:function(e){const t=15&e[0];if(tr&&tr.setCodec)if(nt(e))if(t===ve||t===we){Qt.debug.log("worker",`setCodecVideo: init video codec , codecId is ${t}`);const r=e.slice(5);if(t===ve&&Qt._opt.useSIMD){const e=gt(r);if(e.codecWidth>4080||e.codecHeight>4080)return postMessage({cmd:O}),void Qt.debug.warn("worker",`setCodecVideo: SIMD H264 decode video width is too large, width is ${e.codecWidth}, height is ${e.codecHeight}`)}const i=new Uint8Array(e);Fe=!0,tr.setCodec(t,r),postMessage({cmd:T,code:t}),postMessage({cmd:C,buffer:i,codecId:t},[i.buffer])}else Qt.debug.warn("worker",`setCodecVideo: hasInitVideoCodec is false, codecId is ${t} is not H264 or H265`);else Qt.debug.warn("worker",`decodeVideo: hasInitVideoCodec is false, codecId is ${t} and frameType is ${e[0]>>4} and packetType is ${e[1]}`);else Qt.debug.error("worker","setCodecVideo: videoDecoder or videoDecoder.setCodec is null")},decodeVideo:function(e,t,i,s=0){if(Qt.isDestroyed)Qt.debug.log("worker","decodeVideo, decoder is destroyed and return");else if(at(r))postMessage({cmd:F,payload:e,isIFrame:i,ts:t,cts:s,delay:Qt.delay},[e.buffer]);else if(Fe)if(!Je&&i&&(Je=!0),Je){if(i&&nt(e)){const t=15&e[0];let r={};if(t===ve){r=gt(e.slice(5))}else t===we&&(r=function(e){let t={codecWidth:0,codecHeight:0,videoType:Te.h265,width:0,height:0,profile:0,level:0};e=e.slice(5);do{let r={};if(e.length<23){console.warn("parseHEVCDecoderConfigurationRecord$2",`arrayBuffer.length ${e.length} < 23`);break}if(r.configurationVersion=e[0],1!=r.configurationVersion)break;r.general_profile_space=e[1]>>6&3,r.general_tier_flag=e[1]>>5&1,r.general_profile_idc=31&e[1],r.general_profile_compatibility_flags=e[2]<<24|e[3]<<16|e[4]<<8|e[5],r.general_constraint_indicator_flags=e[6]<<24|e[7]<<16|e[8]<<8|e[9],r.general_constraint_indicator_flags=r.general_constraint_indicator_flags<<16|e[10]<<8|e[11],r.general_level_idc=e[12],r.min_spatial_segmentation_idc=(15&e[13])<<8|e[14],r.parallelismType=3&e[15],r.chromaFormat=3&e[16],r.bitDepthLumaMinus8=7&e[17],r.bitDepthChromaMinus8=7&e[18],r.avgFrameRate=e[19]<<8|e[20],r.constantFrameRate=e[21]>>6&3,r.numTemporalLayers=e[21]>>3&7,r.temporalIdNested=e[21]>>2&1,r.lengthSizeMinusOne=3&e[21];let i=e[22],s=e.slice(23);for(let e=0;e0){let e=i.findIndex((e=>at(e.isIFrame)&&e.type===X));if(Qt.isAllIframeInBufferList())for(let t=0;t=Qt.getNotDroppingDelayTs()){Qt.debug.log("worker",`dropBuffer$2() isAllIframeInBufferList() is true, and index is ${t} and tempDelay is ${s} and notDroppingDelayTs is ${Qt.getNotDroppingDelayTs()}`),e=t;break}}if(e>=0){Qt.isPushDropping=!0,postMessage({cmd:z});const t=i.length;i=i.slice(e);const r=i.shift();Qt.resetAllDelay(),Qt.getDelay(r.ts,r.type),Qt.doDecode(r),Qt.isPushDropping=!1,Qt.debug.log("worker",`dropBuffer$2() iFrameIndex is ${e},and old bufferList length is ${t} ,new bufferList is ${i.length} and new delay is ${Qt.delay} `)}else Qt.isPushDropping=!1}0===i.length&&(Qt.isPushDropping=!1)},demuxM7s:function(e){const t=new DataView(e),r=t.getUint32(1,!1),i=t.getUint8(0),s=new ArrayBuffer(4),n=new Uint32Array(s);switch(i){case K:Qt.decode(new Uint8Array(e,5),{type:K,ts:r});break;case X:if(t.byteLength>=11){const i=new Uint8Array(e,5),s=i[0];if(Qt._isEnhancedH265Header(s))Qt._decodeEnhancedH265Video(i,r);else{const e=t.getUint8(5)>>4==1;if(e&&(Qt.calcIframeIntervalTimestamp(r),nt(i)&&null===$t)){const e=15&i[0];$t=e===we}Qt.isPlayer&&Qt.calcNetworkDelay(r),n[0]=i[4],n[1]=i[3],n[2]=i[2],n[3]=0;let s=n[0],a=Qt.cryptoPayload(i,e);Qt.decode(a,{type:X,ts:r,isIFrame:e,cts:s})}}else Qt.debug.warn("worker",`demuxM7s() type is video and arrayBuffer length is ${e.byteLength} and return`)}},demuxNakedFlow:function(e){Kt.dispatch(e)},demuxFmp4:function(e){const t=new Uint8Array(e);Xt.dispatch(t)},demuxMpeg4:function(e){Zt.dispatch(e)},demuxTs:function(e){Jt.dispatch(e)},_decodeEnhancedH265Video:function(e,t){const r=e[0],i=48&r,s=15&r,n=e.slice(1,5),a=new ArrayBuffer(4),o=new Uint32Array(a),d="a"==String.fromCharCode(n[0]);if($t=ot(d),s===Re){if(i===Oe){const r=e.slice(5);if(d);else{const i=new Uint8Array(5+r.length);i.set([28,0,0,0,0],0),i.set(r,5),Vt=Ft(e,$t),Qt.debug.log("worker",`demuxFlv() isVideoSequenceHeader(enhancedH265) is true and isHevc is ${$t} and nalUnitSize is ${Vt}`),Qt.decode(i,{type:X,ts:t,isIFrame:!0,cts:0})}}}else if(s===Me){let r=e,s=0;const n=i===Oe;if(n&&Qt.calcIframeIntervalTimestamp(t),d);else{o[0]=e[4],o[1]=e[3],o[2]=e[2],o[3]=0,s=o[0];r=Lt(e.slice(8),n),r=Qt.cryptoPayload(r,n),Qt.decode(r,{type:X,ts:t,isIFrame:n,cts:s})}}else if(s===Ne){const r=i===Oe;r&&Qt.calcIframeIntervalTimestamp(t);let s=Lt(e.slice(5),r);s=Qt.cryptoPayload(s,r),Qt.decode(s,{type:X,ts:t,isIFrame:r,cts:0})}},_isEnhancedH265Header:function(e){return!(128&~e)},findSei:function(e,t){let r=4;tt(Vt)||(r=Vt);Ct(e.slice(5),r).forEach((e=>{const r=$t?e[0]>>>1&63:31&e[0];($t&&(r===Ae.suffixSei||r===Ae.prefixSei)||ot($t)&&r===xe.kSliceSEI)&&postMessage({cmd:$,buffer:e,ts:t},[e.buffer])}))},flvHasUnitTypeIDR(e,t){const r=Ct(e.slice(5));let i=!1;return r.forEach((e=>{const r=t?e[0]>>>1&63:31&e[0];(t&&(r===Ae.iFrame||r===Ae.nLp)||ot(t)&&r===xe.iFrame)&&(i=!0)})),i},calcNetworkDelay:function(e){if(!(Je&&e>0))return;null===ut?(ut=e,ht=Ze()):et?r-t:0;Qt.networkDelay=i,i>Qt._opt.networkDelay&&Qt._opt.playType===p&&(Qt.debug.warn("worker",`calcNetworkDelay now dts:${e}, start dts is ${ut} vs start is ${t},local diff is ${r} ,delay is ${i}`),postMessage({cmd:P,type:_e,value:i}))},calcIframeIntervalTimestamp:function(e){null===Bt?Bt=e:Bt=Qt._opt.playbackForwardMaxRateDecodeIFrame},isPlayUseMSE:function(){return Qt.isPlayer&&Qt._opt.useMSE&&at(r)},isPlayUseMSEAndDecoderInWorker:function(){return Qt.isPlayUseMSE()&&Qt._opt.mseDecoderUseWorker},playbackUpdatePlaybackRate:function(){Qt.clearBuffer(!0)},onOffscreenCanvasWebglContextLost:function(e){Qt.debug.error("worker","handleOffscreenCanvasWebglContextLost and next try to create webgl"),e.preventDefault(),Ot=!0,Qt.webglObj.destroy(),Qt.webglObj=null,Qt.offscreenCanvasGL=null,setTimeout((()=>{Qt.offscreenCanvasGL=Qt.offscreenCanvas.getContext("webgl"),Qt.offscreenCanvasGL&&Qt.offscreenCanvasGL.getContextAttributes().stencil?(Qt.webglObj=l(Qt.offscreenCanvasGL,Qt._opt.openWebglAlignment),Ot=!1):Qt.debug.error("worker","handleOffscreenCanvasWebglContextLost, stencil is false")}),500)},onOffscreenCanvasWebglContextRestored:function(e){Qt.debug.log("worker","handleOffscreenCanvasWebglContextRestored"),e.preventDefault()},videoInfo:function(e,t,r){postMessage({cmd:T,code:e}),postMessage({cmd:S,w:t,h:r}),v=t,De=r,Qt.useOffscreen()&&(Qt.offscreenCanvas=new OffscreenCanvas(t,r),Qt.offscreenCanvasGL=Qt.offscreenCanvas.getContext("webgl"),Qt.webglObj=l(Qt.offscreenCanvasGL,Qt._opt.openWebglAlignment),Qt.offscreenCanvas.addEventListener("webglcontextlost",Qt.onOffscreenCanvasWebglContextLost,!1),Qt.offscreenCanvas.addEventListener("webglcontextrestored",Qt.onOffscreenCanvasWebglContextRestored,!1))},audioInfo:function(e,t,r){postMessage({cmd:A,code:e}),postMessage({cmd:x,sampleRate:t,channels:r,depth:Wt}),At=r},yuvData:function(t,r){if(Qt.isDestroyed)return void Qt.debug.log("worker","yuvData, decoder is destroyed and return");const i=v*De*3/2;let s=e.HEAPU8.subarray(t,t+i),n=new Uint8Array(s);if(_t=null,Qt.useOffscreen())try{if(Ot)return;Qt.webglObj.renderYUV(v,De,n);let e=Qt.offscreenCanvas.transferToImageBitmap();postMessage({cmd:E,buffer:e,delay:Qt.delay,ts:r},[e])}catch(e){Qt.debug.error("worker","yuvData, transferToImageBitmap error is",e)}else postMessage({cmd:E,output:n,delay:Qt.delay,ts:r},[n.buffer])},pcmData:function(e,r,i){if(Qt.isDestroyed)return void Qt.debug.log("worker","pcmData, decoder is destroyed and return");let n=r,a=[],o=0,d=Qt._opt.audioBufferSize;for(let r=0;r<2;r++){let i=t.HEAPU32[(e>>2)+r]>>2;a[r]=t.HEAPF32.subarray(i,i+n)}if(xt){if(!(n>=(r=d-xt)))return xt+=n,s[0]=Float32Array.of(...s[0],...a[0]),void(2==At&&(s[1]=Float32Array.of(...s[1],...a[1])));pt[0]=Float32Array.of(...s[0],...a[0].subarray(0,r)),2==At&&(pt[1]=Float32Array.of(...s[1],...a[1].subarray(0,r))),postMessage({cmd:U,buffer:pt,ts:i},pt.map((e=>e.buffer))),o=r,n-=r}for(xt=n;xt>=d;xt-=d)pt[0]=a[0].slice(o,o+=d),2==At&&(pt[1]=a[1].slice(o-d,o)),postMessage({cmd:U,buffer:pt,ts:i},pt.map((e=>e.buffer)));xt&&(s[0]=a[0].slice(o),2==At&&(s[1]=a[1].slice(o)))},errorInfo:function(e){null===_t&&(_t=Ze());const t=Ze(),r=(i=Ut>0?2*Ut:5e3,s=1e3,n=5e3,Math.max(Math.min(i,Math.max(s,n)),Math.min(s,n)));var i,s,n;const a=t-_t;a>r&&(Qt.debug.warn("worker",`errorInfo() emit simdDecodeError and\n iframeIntervalTimestamp is ${Ut} and diff is ${a} and maxDiff is ${r}\n and replay`),Ht=!0,postMessage({cmd:N}))},sendWebsocketMessage:function(e){o?o.readyState===be?o.send(e):Qt.debug.error("worker","socket is not open"):Qt.debug.error("worker","socket is null")},timeEnd:function(){},postStreamToMain(e,t){postMessage({cmd:H,type:t,buffer:e},[e.buffer])}};Qt.debug=new ft(Qt);let er=null;t.AudioDecoder&&(er=new t.AudioDecoder(Qt));let tr=null;e.VideoDecoder&&(tr=new e.VideoDecoder(Qt)),postMessage({cmd:w}),self.onmessage=function(e){let t=e.data;switch(t.cmd){case ee:try{Qt._opt=Object.assign(Qt._opt,JSON.parse(t.opt))}catch(e){}Qt.init();break;case te:Qt.pushBuffer(t.buffer,t.options);break;case re:Qt.decodeAudio(t.buffer,t.ts);break;case ie:Qt.decodeVideo(t.buffer,t.ts,t.isIFrame);break;case ae:Qt.clearBuffer(t.needClear);break;case oe:Qt.fetchStream(t.url,JSON.parse(t.opt));break;case se:Qt.close();break;case ne:Qt.debug.log("worker","updateConfig",t.key,t.value),Qt._opt[t.key]=t.value,"playbackRate"===t.key&&(Qt.playbackUpdatePlaybackRate(),Qt.isPlaybackCacheBeforeDecodeForFpsRender()&&Qt.playbackCacheLoop());break;case de:Qt.sendWebsocketMessage(t.message)}}}Nr.init(),Date.now||(Date.now=function(){return(new Date).getTime()}),t({printErr:function(e){console.warn("EasyPro[❌❌❌][worker]:",e)}}).then((e=>{Or(e,e)}))})); diff --git a/demo/js/decoder-pro-audio.wasm b/html-demo/js/decoder-pro-audio.wasm similarity index 100% rename from demo/js/decoder-pro-audio.wasm rename to html-demo/js/decoder-pro-audio.wasm diff --git a/html-demo/js/decoder-pro-hard-not-wasm.js b/html-demo/js/decoder-pro-hard-not-wasm.js new file mode 100644 index 0000000..20940b1 --- /dev/null +++ b/html-demo/js/decoder-pro-hard-not-wasm.js @@ -0,0 +1 @@ +!function(e){"function"==typeof define&&define.amd?define(e):e()}((function(){"use strict";var e=1e-6,t="undefined"!=typeof Float32Array?Float32Array:Array;function i(){var e=new t(16);return t!=Float32Array&&(e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=0,e[12]=0,e[13]=0,e[14]=0),e[0]=1,e[5]=1,e[10]=1,e[15]=1,e}function r(e){return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}Math.hypot||(Math.hypot=function(){for(var e=0,t=arguments.length;t--;)e+=arguments[t]*arguments[t];return Math.sqrt(e)});var s,n=function(e,t,i,r,s,n,a){var o=1/(t-i),d=1/(r-s),l=1/(n-a);return e[0]=-2*o,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=-2*d,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=2*l,e[11]=0,e[12]=(t+i)*o,e[13]=(s+r)*d,e[14]=(a+n)*l,e[15]=1,e};function a(e,i,r){var s=new t(3);return s[0]=e,s[1]=i,s[2]=r,s}s=new t(3),t!=Float32Array&&(s[0]=0,s[1]=0,s[2]=0);var o=(t,s)=>{s&&t.pixelStorei(t.UNPACK_ALIGNMENT,1);const o=function(){const e=m(t.VERTEX_SHADER,"\n attribute vec4 aVertexPosition;\n attribute vec2 aTexturePosition;\n uniform mat4 uModelMatrix;\n uniform mat4 uViewMatrix;\n uniform mat4 uProjectionMatrix;\n varying lowp vec2 vTexturePosition;\n void main(void) {\n gl_Position = uProjectionMatrix * uViewMatrix * uModelMatrix * aVertexPosition;\n vTexturePosition = aTexturePosition;\n }\n "),i=m(t.FRAGMENT_SHADER,"\n precision highp float;\n varying highp vec2 vTexturePosition;\n uniform int isyuv;\n uniform sampler2D rgbaTexture;\n uniform sampler2D yTexture;\n uniform sampler2D uTexture;\n uniform sampler2D vTexture;\n\n const mat4 YUV2RGB = mat4( 1.1643828125, 0, 1.59602734375, -.87078515625,\n 1.1643828125, -.39176171875, -.81296875, .52959375,\n 1.1643828125, 2.017234375, 0, -1.081390625,\n 0, 0, 0, 1);\n\n\n void main(void) {\n\n if (isyuv>0) {\n\n highp float y = texture2D(yTexture, vTexturePosition).r;\n highp float u = texture2D(uTexture, vTexturePosition).r;\n highp float v = texture2D(vTexture, vTexturePosition).r;\n gl_FragColor = vec4(y, u, v, 1) * YUV2RGB;\n\n } else {\n gl_FragColor = texture2D(rgbaTexture, vTexturePosition);\n }\n }\n "),r=t.createProgram();if(t.attachShader(r,e),t.attachShader(r,i),t.linkProgram(r),!t.getProgramParameter(r,t.LINK_STATUS))return console.log("Unable to initialize the shader program: "+t.getProgramInfoLog(r)),null;return r}();let d={program:o,attribLocations:{vertexPosition:t.getAttribLocation(o,"aVertexPosition"),texturePosition:t.getAttribLocation(o,"aTexturePosition")},uniformLocations:{projectionMatrix:t.getUniformLocation(o,"uProjectionMatrix"),modelMatrix:t.getUniformLocation(o,"uModelMatrix"),viewMatrix:t.getUniformLocation(o,"uViewMatrix"),rgbatexture:t.getUniformLocation(o,"rgbaTexture"),ytexture:t.getUniformLocation(o,"yTexture"),utexture:t.getUniformLocation(o,"uTexture"),vtexture:t.getUniformLocation(o,"vTexture"),isyuv:t.getUniformLocation(o,"isyuv")}},l=function(){const e=t.createBuffer();t.bindBuffer(t.ARRAY_BUFFER,e);t.bufferData(t.ARRAY_BUFFER,new Float32Array([-1,-1,-1,1,-1,-1,1,1,-1,-1,1,-1]),t.STATIC_DRAW);var i=[];i=i.concat([0,1],[1,1],[1,0],[0,0]);const r=t.createBuffer();t.bindBuffer(t.ARRAY_BUFFER,r),t.bufferData(t.ARRAY_BUFFER,new Float32Array(i),t.STATIC_DRAW);const s=t.createBuffer();t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,s);return t.bufferData(t.ELEMENT_ARRAY_BUFFER,new Uint16Array([0,1,2,0,2,3]),t.STATIC_DRAW),{position:e,texPosition:r,indices:s}}(),h=c(),f=c(),p=c(),u=c();function c(){let e=t.createTexture();return t.bindTexture(t.TEXTURE_2D,e),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),e}function m(e,i){const r=t.createShader(e);return t.shaderSource(r,i),t.compileShader(r),t.getShaderParameter(r,t.COMPILE_STATUS)?r:(console.log("An error occurred compiling the shaders: "+t.getShaderInfoLog(r)),t.deleteShader(r),null)}function _(s,o){t.viewport(0,0,s,o),t.clearColor(0,0,0,0),t.clearDepth(1),t.enable(t.DEPTH_TEST),t.depthFunc(t.LEQUAL),t.clear(t.COLOR_BUFFER_BIT|t.DEPTH_BUFFER_BIT);const h=i();n(h,-1,1,-1,1,.1,100);const c=i();r(c);const m=i();!function(t,i,s,n){var a,o,d,l,h,f,p,u,c,m,_=i[0],g=i[1],y=i[2],b=n[0],v=n[1],w=n[2],S=s[0],U=s[1],x=s[2];Math.abs(_-S)>1,(1&t)<<7|i<<3])}function Ve(e){return $e(e)&&e[1]===ke.sequenceHeader}function $e(e){return e[0]>>4===Se.AAC}Ge((function(e){!function(){var t="undefined"!=typeof window&&void 0!==window.document?window.document:{},i=e.exports,r=function(){for(var e,i=[["requestFullscreen","exitFullscreen","fullscreenElement","fullscreenEnabled","fullscreenchange","fullscreenerror"],["webkitRequestFullscreen","webkitExitFullscreen","webkitFullscreenElement","webkitFullscreenEnabled","webkitfullscreenchange","webkitfullscreenerror"],["webkitRequestFullScreen","webkitCancelFullScreen","webkitCurrentFullScreenElement","webkitCancelFullScreen","webkitfullscreenchange","webkitfullscreenerror"],["mozRequestFullScreen","mozCancelFullScreen","mozFullScreenElement","mozFullScreenEnabled","mozfullscreenchange","mozfullscreenerror"],["msRequestFullscreen","msExitFullscreen","msFullscreenElement","msFullscreenEnabled","MSFullscreenChange","MSFullscreenError"]],r=0,s=i.length,n={};r{if(s=r,"[object Number]"!==Object.prototype.toString.call(s))return;var s;t+=r;const n=Xe(),a=n-i;a>=1e3&&(e(t/a*1e3),i=n,t=0)}}function Je(){const e=window.navigator.userAgent;return!e.match(/Chrome/gi)&&!!e.match(/Safari/gi)}function Qe(e){return null==e}function et(e){e.close()}function tt(e,t){t&&(e=e.filter((e=>e.type&&e.type===t)));let i=e[0],r=null,s=1;if(e.length>0){let t=e[1];t&&t.ts-i.ts>1e5&&(i=t,s=2)}if(i)for(let n=s;n=1e3){e[n-1].ts-i.ts<1e3&&(r=n+1)}}}return r}function it(){return function(e){let t="";if("object"==typeof e)try{t=JSON.stringify(e),t=JSON.parse(t)}catch(i){t=e}else t=e;return t}(y)}function rt(e){return e[0]>>4===Ce.keyFrame&&e[1]===ke.sequenceHeader}function st(e){return!0===e||"true"===e}function nt(e){return!0!==e&&"true"!==e}(()=>{try{if("object"==typeof WebAssembly&&"function"==typeof WebAssembly.instantiate){const e=new WebAssembly.Module(Uint8Array.of(0,97,115,109,1,0,0,0));if(e instanceof WebAssembly.Module)return new WebAssembly.Instance(e)instanceof WebAssembly.Instance}}catch(e){}})();var at=function(e,t,i,r){return new(i||(i=Promise))((function(s,n){function a(e){try{d(r.next(e))}catch(e){n(e)}}function o(e){try{d(r.throw(e))}catch(e){n(e)}}function d(e){var t;e.done?s(e.value):(t=e.value,t instanceof i?t:new i((function(e){e(t)}))).then(a,o)}d((r=r.apply(e,t||[])).next())}))};const ot=Symbol(32),dt=Symbol(16),lt=Symbol(8);class ht{constructor(e){this.g=e,this.consumed=0,e&&(this.need=e.next().value)}setG(e){this.g=e,this.demand(e.next().value,!0)}consume(){this.buffer&&this.consumed&&(this.buffer.copyWithin(0,this.consumed),this.buffer=this.buffer.subarray(0,this.buffer.length-this.consumed),this.consumed=0)}demand(e,t){return t&&this.consume(),this.need=e,this.flush()}read(e){return at(this,void 0,void 0,(function*(){return this.lastReadPromise&&(yield this.lastReadPromise),this.lastReadPromise=new Promise(((t,i)=>{var r;this.reject=i,this.resolve=e=>{delete this.lastReadPromise,delete this.resolve,delete this.need,t(e)};this.demand(e,!0)||null===(r=this.pull)||void 0===r||r.call(this,e)}))}))}readU32(){return this.read(ot)}readU16(){return this.read(dt)}readU8(){return this.read(lt)}close(){var e;this.g&&this.g.return(),this.buffer&&this.buffer.subarray(0,0),null===(e=this.reject)||void 0===e||e.call(this,new Error("EOF")),delete this.lastReadPromise}flush(){if(!this.buffer||!this.need)return;let e=null;const t=this.buffer.subarray(this.consumed);let i=0;const r=e=>t.length<(i=e);if("number"==typeof this.need){if(r(this.need))return;e=t.subarray(0,i)}else if(this.need===ot){if(r(4))return;e=t[0]<<24|t[1]<<16|t[2]<<8|t[3]}else if(this.need===dt){if(r(2))return;e=t[0]<<8|t[1]}else if(this.need===lt){if(r(1))return;e=t[0]}else if("buffer"in this.need){if("byteOffset"in this.need){if(r(this.need.byteLength-this.need.byteOffset))return;new Uint8Array(this.need.buffer,this.need.byteOffset).set(t.subarray(0,i)),e=this.need}else if(this.g)return void this.g.throw(new Error("Unsupported type"))}else{if(r(this.need.byteLength))return;new Uint8Array(this.need).set(t.subarray(0,i)),e=this.need}return this.consumed+=i,this.g?this.demand(this.g.next(e).value,!0):this.resolve&&this.resolve(e),e}write(e){if(e instanceof Uint8Array?this.malloc(e.length).set(e):"buffer"in e?this.malloc(e.byteLength).set(new Uint8Array(e.buffer,e.byteOffset,e.byteLength)):this.malloc(e.byteLength).set(new Uint8Array(e)),!this.g&&!this.resolve)return new Promise((e=>this.pull=e));this.flush()}writeU32(e){this.malloc(4).set([e>>24&255,e>>16&255,e>>8&255,255&e]),this.flush()}writeU16(e){this.malloc(2).set([e>>8&255,255&e]),this.flush()}writeU8(e){this.malloc(1)[0]=e,this.flush()}malloc(e){if(this.buffer){const t=this.buffer.length,i=t+e;if(i<=this.buffer.buffer.byteLength-this.buffer.byteOffset)this.buffer=new Uint8Array(this.buffer.buffer,this.buffer.byteOffset,i);else{const e=new Uint8Array(i);e.set(this.buffer),this.buffer=e}return this.buffer.subarray(t,i)}return this.buffer=new Uint8Array(e),this.buffer}}ht.U32=ot,ht.U16=dt,ht.U8=lt;class ft{constructor(e){this.log=(t,...i)=>{if(e._opt.debug&&e._opt.debugLevel==m){const r=e._opt.debugUuid?`[${e._opt.debugUuid}]`:"";console.log(`EasyPro${r}[✅✅✅][${t}]`,...i)}},this.warn=(t,...i)=>{if(e._opt.debug&&(e._opt.debugLevel==m||e._opt.debugLevel==_)){const r=e._opt.debugUuid?`[${e._opt.debugUuid}]`:"";console.log(`EasyPro${r}[❗❗❗][${t}]`,...i)}},this.error=(t,...i)=>{const r=e._opt.debugUuid?`[${e._opt.debugUuid}]`:"";console.error(`EasyPro${r}[❌❌❌][${t}]`,...i)}}}class pt{constructor(e){this._buffer=e,this._buffer_index=0,this._total_bytes=e.byteLength,this._total_bits=8*e.byteLength,this._current_word=0,this._current_word_bits_left=0}destroy(){this._buffer=null}_fillCurrentWord(){let e=this._total_bytes-this._buffer_index;if(e<=0)return void console.error("ExpGolomb: _fillCurrentWord() but no bytes available",this._total_bytes,this._buffer_index);let t=Math.min(4,e),i=new Uint8Array(4);i.set(this._buffer.subarray(this._buffer_index,this._buffer_index+t)),this._current_word=new DataView(i.buffer).getUint32(0,!1),this._buffer_index+=t,this._current_word_bits_left=8*t}readBits(e){if(e>32&&console.error("ExpGolomb: readBits() bits exceeded max 32bits!"),e<=this._current_word_bits_left){let t=this._current_word>>>32-e;return this._current_word<<=e,this._current_word_bits_left-=e,t}let t=this._current_word_bits_left?this._current_word:0;t>>>=32-this._current_word_bits_left;let i=e-this._current_word_bits_left;this._fillCurrentWord();let r=Math.min(i,this._current_word_bits_left),s=this._current_word>>>32-r;return this._current_word<<=r,this._current_word_bits_left-=r,t=t<>>e)return this._current_word<<=e,this._current_word_bits_left-=e,e;return this._fillCurrentWord(),e+this._skipLeadingZero()}readUEG(){let e=this._skipLeadingZero();return this.readBits(e+1)-1}readSEG(){let e=this.readUEG();return 1&e?e+1>>>1:-1*(e>>>1)}}class ut{static _ebsp2rbsp(e){let t=e,i=t.byteLength,r=new Uint8Array(i),s=0;for(let e=0;e=2&&3===t[e]&&0===t[e-1]&&0===t[e-2]||(r[s]=t[e],s++);return new Uint8Array(r.buffer,0,s)}static parseSPS(e){let t=ut._ebsp2rbsp(e),i=new pt(t);i.readByte();let r=i.readByte();i.readByte();let s=i.readByte();i.readUEG();let n=ut.getProfileString(r),a=ut.getLevelString(s),o=1,d=420,l=[0,420,422,444],h=8;if((100===r||110===r||122===r||244===r||44===r||83===r||86===r||118===r||128===r||138===r||144===r)&&(o=i.readUEG(),3===o&&i.readBits(1),o<=3&&(d=l[o]),h=i.readUEG()+8,i.readUEG(),i.readBits(1),i.readBool())){let e=3!==o?8:12;for(let t=0;t0&&e<16?(v=[1,12,10,16,40,24,20,32,80,18,15,64,160,4,3,2][e-1],w=[1,11,11,11,33,11,11,11,33,11,11,33,99,3,2,1][e-1]):255===e&&(v=i.readByte()<<8|i.readByte(),w=i.readByte()<<8|i.readByte())}if(i.readBool()&&i.readBool(),i.readBool()&&(i.readBits(4),i.readBool()&&i.readBits(24)),i.readBool()&&(i.readUEG(),i.readUEG()),i.readBool()){let e=i.readBits(32),t=i.readBits(32);U=i.readBool(),x=t,E=2*e,S=x/E}}let A=1;1===v&&1===w||(A=v/w);let B=0,T=0;if(0===o)B=1,T=2-m;else{B=3===o?1:2,T=(1===o?2:1)*(2-m)}let k=16*(u+1),C=16*(c+1)*(2-m);k-=(_+g)*B,C-=(y+b)*T;let D=Math.ceil(k*A);return i.destroy(),i=null,{profile_string:n,level_string:a,bit_depth:h,ref_frames:p,chroma_format:d,chroma_format_string:ut.getChromaFormatString(d),frame_rate:{fixed:U,fps:S,fps_den:E,fps_num:x},sar_ratio:{width:v,height:w},codec_size:{width:k,height:C},present_size:{width:D,height:C}}}static parseSPS$2(e){let t=e.subarray(1,4),i="avc1.";for(let e=0;e<3;e++){let r=t[e].toString(16);r.length<2&&(r="0"+r),i+=r}let r=ut._ebsp2rbsp(e),s=new pt(r);s.readByte();let n=s.readByte();s.readByte();let a=s.readByte();s.readUEG();let o=ut.getProfileString(n),d=ut.getLevelString(a),l=1,h=420,f=[0,420,422,444],p=8,u=8;if((100===n||110===n||122===n||244===n||44===n||83===n||86===n||118===n||128===n||138===n||144===n)&&(l=s.readUEG(),3===l&&s.readBits(1),l<=3&&(h=f[l]),p=s.readUEG()+8,u=s.readUEG()+8,s.readBits(1),s.readBool())){let e=3!==l?8:12;for(let t=0;t0&&e<16?(U=[1,12,10,16,40,24,20,32,80,18,15,64,160,4,3,2][e-1],x=[1,11,11,11,33,11,11,11,33,11,11,33,99,3,2,1][e-1]):255===e&&(U=s.readByte()<<8|s.readByte(),x=s.readByte()<<8|s.readByte())}if(s.readBool()&&s.readBool(),s.readBool()&&(s.readBits(4),s.readBool()&&s.readBits(24)),s.readBool()&&(s.readUEG(),s.readUEG()),s.readBool()){let e=s.readBits(32),t=s.readBits(32);A=s.readBool(),B=t,T=2*e,E=B/T}}let k=1;1===U&&1===x||(k=U/x);let C=0,D=0;if(0===l)C=1,D=2-y;else{C=3===l?1:2,D=(1===l?2:1)*(2-y)}let I=16*(_+1),F=16*(g+1)*(2-y);I-=(b+v)*C,F-=(w+S)*D;let L=Math.ceil(I*k);return s.destroy(),s=null,{codec_mimetype:i,profile_idc:n,level_idc:a,profile_string:o,level_string:d,chroma_format_idc:l,bit_depth:p,bit_depth_luma:p,bit_depth_chroma:u,ref_frames:m,chroma_format:h,chroma_format_string:ut.getChromaFormatString(h),frame_rate:{fixed:A,fps:E,fps_den:T,fps_num:B},sar_ratio:{width:U,height:x},codec_size:{width:I,height:F},present_size:{width:L,height:F}}}static _skipScalingList(e,t){let i=8,r=8,s=0;for(let n=0;n=this.buflen)return this.iserro=!0,0;this.iserro=!1,i=this.bufoff+e>8?8-this.bufoff:e,t<<=i,t+=this.buffer[this.bufpos]>>8-this.bufoff-i&255>>8-i,this.bufoff+=i,e-=i,8==this.bufoff&&(this.bufpos++,this.bufoff=0)}return t}look(e){let t=this.bufpos,i=this.bufoff,r=this.read(e);return this.bufpos=t,this.bufoff=i,r}read_golomb(){let e;for(e=0;0===this.read(1)&&!this.iserro;e++);return(1<>>24&255,e>>>16&255,e>>>8&255,255&e]),r=new Uint8Array(e+4);r.set(i,0),r.set(t.sps,4),t.sps=r}if(t.pps){const e=t.pps.byteLength,i=new Uint8Array([e>>>24&255,e>>>16&255,e>>>8&255,255&e]),r=new Uint8Array(e+4);r.set(i,0),r.set(t.pps,4),t.pps=r}return t}function _t({sps:e,pps:t}){const i=[23,0,0,0,0,1,66,0,30,255];i[0]=23,i[6]=e[1],i[7]=e[2],i[8]=e[3],i[10]=225,i[11]=e.byteLength>>8&255,i[12]=255&e.byteLength,i.push(...e,1,t.byteLength>>8&255,255&t.byteLength,...t);return new Uint8Array(i)}function gt(e,t){let i=[];i[0]=t?23:39,i[1]=1,i[2]=0,i[3]=0,i[4]=0;const r=new Uint8Array(i.length+e.byteLength);return r.set(i,0),r.set(e,i.length),r}function yt(e){return 31&e[0]}function bt(e){return e===Ue.kSliceSEI}function vt(e){return!function(e){return e===Ue.sps||e===Ue.pps}(e)&&!bt(e)}function wt(e){return e===Ue.iFrame}const St=e=>{let t=e,i=t.byteLength,r=new Uint8Array(i),s=0;for(let e=0;e=2&&3===t[e]&&0===t[e-1]&&0===t[e-2]||(r[s]=t[e],s++);return new Uint8Array(r.buffer,0,s)},Ut=e=>{switch(e){case 0:return"4:0:0";case 1:return"4:2:0";case 2:return"4:2:2";case 3:return"4:4:4";default:return"Unknown"}},xt=e=>{let t=St(e),i=new pt(t);i.readByte(),i.readByte();let r=0,s=0,n=0,a=0;i.readBits(4);let o=i.readBits(3);i.readBool();let d=i.readBits(2),l=i.readBool(),h=i.readBits(5),f=i.readByte(),p=i.readByte(),u=i.readByte(),c=i.readByte(),m=i.readByte(),_=i.readByte(),g=i.readByte(),y=i.readByte(),b=i.readByte(),v=i.readByte(),w=i.readByte(),S=[],U=[];for(let e=0;e0)for(let e=o;e<8;e++)i.readBits(2);for(let e=0;e1&&i.readSEG();for(let e=0;e0&&e<16?(L=[1,12,10,16,40,24,20,32,80,18,15,64,160,4,3,2][e-1],P=[1,11,11,11,33,11,11,11,33,11,11,33,99,3,2,1][e-1]):255===e&&(L=i.readBits(16),P=i.readBits(16))}if(i.readBool()&&i.readBool(),i.readBool()){i.readBits(3),i.readBool(),i.readBool()&&(i.readByte(),i.readByte(),i.readByte())}if(i.readBool()&&(i.readUEG(),i.readUEG()),i.readBool(),i.readBool(),i.readBool(),I=i.readBool(),I&&(r+=i.readUEG(),s+=i.readUEG(),n+=i.readUEG(),a+=i.readUEG()),i.readBool()){if(R=i.readBits(32),M=i.readBits(32),i.readBool()){if(i.readUEG(),i.readBool()){let e=!1,t=!1,r=!1;e=i.readBool(),t=i.readBool(),(e||t)&&(r=i.readBool(),r&&(i.readByte(),i.readBits(5),i.readBool(),i.readBits(5)),i.readBits(4),i.readBits(4),r&&i.readBits(4),i.readBits(5),i.readBits(5),i.readBits(5));for(let s=0;s<=o;s++){let s=i.readBool();z=s;let n=!1,a=1;s||(n=i.readBool());let o=!1;if(n?i.readSEG():o=i.readBool(),o||(cpbcnt=i.readUEG()+1),e)for(let e=0;e{let t=St(e),i=new pt(t);return i.readByte(),i.readByte(),i.readBits(4),i.readBits(2),i.readBits(6),{num_temporal_layers:i.readBits(3)+1,temporal_id_nested:i.readBool()}},At=e=>{let t=St(e),i=new pt(t);i.readByte(),i.readByte(),i.readUEG(),i.readUEG(),i.readBool(),i.readBool(),i.readBits(3),i.readBool(),i.readBool(),i.readUEG(),i.readUEG(),i.readSEG(),i.readBool(),i.readBool(),i.readBool()&&i.readUEG(),i.readSEG(),i.readSEG(),i.readBool(),i.readBool(),i.readBool(),i.readBool();let r=i.readBool(),s=i.readBool(),n=1;return s&&r?n=0:s?n=3:r&&(n=2),{parallelismType:n}};function Bt(e,t=0){return(e[t]<<24>>>0)+(e[t+1]<<16)+(e[t+2]<<8)+(e[t+3]||0)}function Tt(e,t=4){if(e.length<4)return;const i=e.length,r=[];let s,n=0;for(;n+t>>=8),n+=t,s){if(n+s>i)break;r.push(e.subarray(n,n+s)),n+=s}return r}function kt(e){const t=e.byteLength,i=new Uint8Array(4);i[0]=t>>>24&255,i[1]=t>>>16&255,i[2]=t>>>8&255,i[3]=255&t;const r=new Uint8Array(t+4);return r.set(i,0),r.set(e,4),r}function Ct(e,t){let i=null;return t?e.length>=28&&(i=1+(3&e[26])):e.length>=12&&(i=1+(3&e[9])),i}function Dt(e,t){let i={},r=e.length,s=[],n=new ct(e);n.read(1),n.read(6),n.read(6),n.read(3);for(let e=2;e0)for(let t=i;t<8;t++)e.read(2);r.sub_layer_profile_space=[],r.sub_layer_tier_flag=[],r.sub_layer_profile_idc=[],r.sub_layer_profile_compatibility_flag=[],r.sub_layer_progressive_source_flag=[],r.sub_layer_interlaced_source_flag=[],r.sub_layer_non_packed_constraint_flag=[],r.sub_layer_frame_only_constraint_flag=[],r.sub_layer_level_idc=[];for(let t=0;t>8,d[14]=255&r.min_spatial_segmentation_idc,d[15]=252|3&r.parallelismType,d[16]=252|3&r.chroma_format_idc,d[17]=248|7&r.bit_depth_luma_minus8,d[18]=248|7&r.bit_depth_chroma_minus8,d[19]=0,d[20]=0,d[21]=(3&r.constant_frame_rate)<<6|(7&r.num_temporal_layers)<<3|(r.temporal_id_nested?1:0)<<2|3,d[22]=3,d[23]=128|xe.vps,d[24]=0,d[25]=1,d[26]=(65280&e.byteLength)>>8,d[27]=255&e.byteLength,d.set(e,28),d[23+(5+e.byteLength)+0]=128|xe.sps,d[23+(5+e.byteLength)+1]=0,d[23+(5+e.byteLength)+2]=1,d[23+(5+e.byteLength)+3]=(65280&i.byteLength)>>8,d[23+(5+e.byteLength)+4]=255&i.byteLength,d.set(i,23+(5+e.byteLength)+5),d[23+(5+e.byteLength+5+i.byteLength)+0]=128|xe.pps,d[23+(5+e.byteLength+5+i.byteLength)+1]=0,d[23+(5+e.byteLength+5+i.byteLength)+2]=1,d[23+(5+e.byteLength+5+i.byteLength)+3]=(65280&t.byteLength)>>8,d[23+(5+e.byteLength+5+i.byteLength)+4]=255&t.byteLength,d.set(t,23+(5+e.byteLength+5+i.byteLength)+5);const l=[28,0,0,0,0],h=new Uint8Array(l.length+d.byteLength);return h.set(l,0),h.set(d,l.length),h}function Ft(e,t){let i=[];i[0]=t?28:44,i[1]=1,i[2]=0,i[3]=0,i[4]=0;const r=new Uint8Array(i.length+e.byteLength);return r.set(i,0),r.set(e,i.length),r}function Lt(e){return(126&e[0])>>1}function Pt(e){return!function(e){return e>=32&&e<=40}(e)}function zt(e){return e>=16&&e<=21}function Rt(e){return parseInt(e)===e}function Mt(e){if(!Rt(e.length))return!1;for(var t=0;t255)return!1;return!0}function Nt(e,t){if(e.buffer&&"Uint8Array"===e.name)return t&&(e=e.slice?e.slice():Array.prototype.slice.call(e)),e;if(Array.isArray(e)){if(!Mt(e))throw new Error("Array contains invalid value: "+e);return new Uint8Array(e)}if(Rt(e.length)&&Mt(e))return new Uint8Array(e);throw new Error("unsupported array-like object")}function Ot(e){return new Uint8Array(e)}function Gt(e,t,i,r,s){null==r&&null==s||(e=e.slice?e.slice(r,s):Array.prototype.slice.call(e,r,s)),t.set(e,i)}var Ht,Vt={toBytes:function(e){var t=[],i=0;for(e=encodeURI(e);i191&&r<224?(t.push(String.fromCharCode((31&r)<<6|63&e[i+1])),i+=2):(t.push(String.fromCharCode((15&r)<<12|(63&e[i+1])<<6|63&e[i+2])),i+=3)}return t.join("")}},$t=(Ht="0123456789abcdef",{toBytes:function(e){for(var t=[],i=0;i>4]+Ht[15&r])}return t.join("")}}),Wt={16:10,24:12,32:14},Yt=[1,2,4,8,16,32,64,128,27,54,108,216,171,77,154,47,94,188,99,198,151,53,106,212,179,125,250,239,197,145],jt=[99,124,119,123,242,107,111,197,48,1,103,43,254,215,171,118,202,130,201,125,250,89,71,240,173,212,162,175,156,164,114,192,183,253,147,38,54,63,247,204,52,165,229,241,113,216,49,21,4,199,35,195,24,150,5,154,7,18,128,226,235,39,178,117,9,131,44,26,27,110,90,160,82,59,214,179,41,227,47,132,83,209,0,237,32,252,177,91,106,203,190,57,74,76,88,207,208,239,170,251,67,77,51,133,69,249,2,127,80,60,159,168,81,163,64,143,146,157,56,245,188,182,218,33,16,255,243,210,205,12,19,236,95,151,68,23,196,167,126,61,100,93,25,115,96,129,79,220,34,42,144,136,70,238,184,20,222,94,11,219,224,50,58,10,73,6,36,92,194,211,172,98,145,149,228,121,231,200,55,109,141,213,78,169,108,86,244,234,101,122,174,8,186,120,37,46,28,166,180,198,232,221,116,31,75,189,139,138,112,62,181,102,72,3,246,14,97,53,87,185,134,193,29,158,225,248,152,17,105,217,142,148,155,30,135,233,206,85,40,223,140,161,137,13,191,230,66,104,65,153,45,15,176,84,187,22],qt=[82,9,106,213,48,54,165,56,191,64,163,158,129,243,215,251,124,227,57,130,155,47,255,135,52,142,67,68,196,222,233,203,84,123,148,50,166,194,35,61,238,76,149,11,66,250,195,78,8,46,161,102,40,217,36,178,118,91,162,73,109,139,209,37,114,248,246,100,134,104,152,22,212,164,92,204,93,101,182,146,108,112,72,80,253,237,185,218,94,21,70,87,167,141,157,132,144,216,171,0,140,188,211,10,247,228,88,5,184,179,69,6,208,44,30,143,202,63,15,2,193,175,189,3,1,19,138,107,58,145,17,65,79,103,220,234,151,242,207,206,240,180,230,115,150,172,116,34,231,173,53,133,226,249,55,232,28,117,223,110,71,241,26,113,29,41,197,137,111,183,98,14,170,24,190,27,252,86,62,75,198,210,121,32,154,219,192,254,120,205,90,244,31,221,168,51,136,7,199,49,177,18,16,89,39,128,236,95,96,81,127,169,25,181,74,13,45,229,122,159,147,201,156,239,160,224,59,77,174,42,245,176,200,235,187,60,131,83,153,97,23,43,4,126,186,119,214,38,225,105,20,99,85,33,12,125],Kt=[3328402341,4168907908,4000806809,4135287693,4294111757,3597364157,3731845041,2445657428,1613770832,33620227,3462883241,1445669757,3892248089,3050821474,1303096294,3967186586,2412431941,528646813,2311702848,4202528135,4026202645,2992200171,2387036105,4226871307,1101901292,3017069671,1604494077,1169141738,597466303,1403299063,3832705686,2613100635,1974974402,3791519004,1033081774,1277568618,1815492186,2118074177,4126668546,2211236943,1748251740,1369810420,3521504564,4193382664,3799085459,2883115123,1647391059,706024767,134480908,2512897874,1176707941,2646852446,806885416,932615841,168101135,798661301,235341577,605164086,461406363,3756188221,3454790438,1311188841,2142417613,3933566367,302582043,495158174,1479289972,874125870,907746093,3698224818,3025820398,1537253627,2756858614,1983593293,3084310113,2108928974,1378429307,3722699582,1580150641,327451799,2790478837,3117535592,0,3253595436,1075847264,3825007647,2041688520,3059440621,3563743934,2378943302,1740553945,1916352843,2487896798,2555137236,2958579944,2244988746,3151024235,3320835882,1336584933,3992714006,2252555205,2588757463,1714631509,293963156,2319795663,3925473552,67240454,4269768577,2689618160,2017213508,631218106,1269344483,2723238387,1571005438,2151694528,93294474,1066570413,563977660,1882732616,4059428100,1673313503,2008463041,2950355573,1109467491,537923632,3858759450,4260623118,3218264685,2177748300,403442708,638784309,3287084079,3193921505,899127202,2286175436,773265209,2479146071,1437050866,4236148354,2050833735,3362022572,3126681063,840505643,3866325909,3227541664,427917720,2655997905,2749160575,1143087718,1412049534,999329963,193497219,2353415882,3354324521,1807268051,672404540,2816401017,3160301282,369822493,2916866934,3688947771,1681011286,1949973070,336202270,2454276571,201721354,1210328172,3093060836,2680341085,3184776046,1135389935,3294782118,965841320,831886756,3554993207,4068047243,3588745010,2345191491,1849112409,3664604599,26054028,2983581028,2622377682,1235855840,3630984372,2891339514,4092916743,3488279077,3395642799,4101667470,1202630377,268961816,1874508501,4034427016,1243948399,1546530418,941366308,1470539505,1941222599,2546386513,3421038627,2715671932,3899946140,1042226977,2521517021,1639824860,227249030,260737669,3765465232,2084453954,1907733956,3429263018,2420656344,100860677,4160157185,470683154,3261161891,1781871967,2924959737,1773779408,394692241,2579611992,974986535,664706745,3655459128,3958962195,731420851,571543859,3530123707,2849626480,126783113,865375399,765172662,1008606754,361203602,3387549984,2278477385,2857719295,1344809080,2782912378,59542671,1503764984,160008576,437062935,1707065306,3622233649,2218934982,3496503480,2185314755,697932208,1512910199,504303377,2075177163,2824099068,1841019862,739644986],Xt=[2781242211,2230877308,2582542199,2381740923,234877682,3184946027,2984144751,1418839493,1348481072,50462977,2848876391,2102799147,434634494,1656084439,3863849899,2599188086,1167051466,2636087938,1082771913,2281340285,368048890,3954334041,3381544775,201060592,3963727277,1739838676,4250903202,3930435503,3206782108,4149453988,2531553906,1536934080,3262494647,484572669,2923271059,1783375398,1517041206,1098792767,49674231,1334037708,1550332980,4098991525,886171109,150598129,2481090929,1940642008,1398944049,1059722517,201851908,1385547719,1699095331,1587397571,674240536,2704774806,252314885,3039795866,151914247,908333586,2602270848,1038082786,651029483,1766729511,3447698098,2682942837,454166793,2652734339,1951935532,775166490,758520603,3000790638,4004797018,4217086112,4137964114,1299594043,1639438038,3464344499,2068982057,1054729187,1901997871,2534638724,4121318227,1757008337,0,750906861,1614815264,535035132,3363418545,3988151131,3201591914,1183697867,3647454910,1265776953,3734260298,3566750796,3903871064,1250283471,1807470800,717615087,3847203498,384695291,3313910595,3617213773,1432761139,2484176261,3481945413,283769337,100925954,2180939647,4037038160,1148730428,3123027871,3813386408,4087501137,4267549603,3229630528,2315620239,2906624658,3156319645,1215313976,82966005,3747855548,3245848246,1974459098,1665278241,807407632,451280895,251524083,1841287890,1283575245,337120268,891687699,801369324,3787349855,2721421207,3431482436,959321879,1469301956,4065699751,2197585534,1199193405,2898814052,3887750493,724703513,2514908019,2696962144,2551808385,3516813135,2141445340,1715741218,2119445034,2872807568,2198571144,3398190662,700968686,3547052216,1009259540,2041044702,3803995742,487983883,1991105499,1004265696,1449407026,1316239930,504629770,3683797321,168560134,1816667172,3837287516,1570751170,1857934291,4014189740,2797888098,2822345105,2754712981,936633572,2347923833,852879335,1133234376,1500395319,3084545389,2348912013,1689376213,3533459022,3762923945,3034082412,4205598294,133428468,634383082,2949277029,2398386810,3913789102,403703816,3580869306,2297460856,1867130149,1918643758,607656988,4049053350,3346248884,1368901318,600565992,2090982877,2632479860,557719327,3717614411,3697393085,2249034635,2232388234,2430627952,1115438654,3295786421,2865522278,3633334344,84280067,33027830,303828494,2747425121,1600795957,4188952407,3496589753,2434238086,1486471617,658119965,3106381470,953803233,334231800,3005978776,857870609,3151128937,1890179545,2298973838,2805175444,3056442267,574365214,2450884487,550103529,1233637070,4289353045,2018519080,2057691103,2399374476,4166623649,2148108681,387583245,3664101311,836232934,3330556482,3100665960,3280093505,2955516313,2002398509,287182607,3413881008,4238890068,3597515707,975967766],Zt=[1671808611,2089089148,2006576759,2072901243,4061003762,1807603307,1873927791,3310653893,810573872,16974337,1739181671,729634347,4263110654,3613570519,2883997099,1989864566,3393556426,2191335298,3376449993,2106063485,4195741690,1508618841,1204391495,4027317232,2917941677,3563566036,2734514082,2951366063,2629772188,2767672228,1922491506,3227229120,3082974647,4246528509,2477669779,644500518,911895606,1061256767,4144166391,3427763148,878471220,2784252325,3845444069,4043897329,1905517169,3631459288,827548209,356461077,67897348,3344078279,593839651,3277757891,405286936,2527147926,84871685,2595565466,118033927,305538066,2157648768,3795705826,3945188843,661212711,2999812018,1973414517,152769033,2208177539,745822252,439235610,455947803,1857215598,1525593178,2700827552,1391895634,994932283,3596728278,3016654259,695947817,3812548067,795958831,2224493444,1408607827,3513301457,0,3979133421,543178784,4229948412,2982705585,1542305371,1790891114,3410398667,3201918910,961245753,1256100938,1289001036,1491644504,3477767631,3496721360,4012557807,2867154858,4212583931,1137018435,1305975373,861234739,2241073541,1171229253,4178635257,33948674,2139225727,1357946960,1011120188,2679776671,2833468328,1374921297,2751356323,1086357568,2408187279,2460827538,2646352285,944271416,4110742005,3168756668,3066132406,3665145818,560153121,271589392,4279952895,4077846003,3530407890,3444343245,202643468,322250259,3962553324,1608629855,2543990167,1154254916,389623319,3294073796,2817676711,2122513534,1028094525,1689045092,1575467613,422261273,1939203699,1621147744,2174228865,1339137615,3699352540,577127458,712922154,2427141008,2290289544,1187679302,3995715566,3100863416,339486740,3732514782,1591917662,186455563,3681988059,3762019296,844522546,978220090,169743370,1239126601,101321734,611076132,1558493276,3260915650,3547250131,2901361580,1655096418,2443721105,2510565781,3828863972,2039214713,3878868455,3359869896,928607799,1840765549,2374762893,3580146133,1322425422,2850048425,1823791212,1459268694,4094161908,3928346602,1706019429,2056189050,2934523822,135794696,3134549946,2022240376,628050469,779246638,472135708,2800834470,3032970164,3327236038,3894660072,3715932637,1956440180,522272287,1272813131,3185336765,2340818315,2323976074,1888542832,1044544574,3049550261,1722469478,1222152264,50660867,4127324150,236067854,1638122081,895445557,1475980887,3117443513,2257655686,3243809217,489110045,2662934430,3778599393,4162055160,2561878936,288563729,1773916777,3648039385,2391345038,2493985684,2612407707,505560094,2274497927,3911240169,3460925390,1442818645,678973480,3749357023,2358182796,2717407649,2306869641,219617805,3218761151,3862026214,1120306242,1756942440,1103331905,2578459033,762796589,252780047,2966125488,1425844308,3151392187,372911126],Jt=[1667474886,2088535288,2004326894,2071694838,4075949567,1802223062,1869591006,3318043793,808472672,16843522,1734846926,724270422,4278065639,3621216949,2880169549,1987484396,3402253711,2189597983,3385409673,2105378810,4210693615,1499065266,1195886990,4042263547,2913856577,3570689971,2728590687,2947541573,2627518243,2762274643,1920112356,3233831835,3082273397,4261223649,2475929149,640051788,909531756,1061110142,4160160501,3435941763,875846760,2779116625,3857003729,4059105529,1903268834,3638064043,825316194,353713962,67374088,3351728789,589522246,3284360861,404236336,2526454071,84217610,2593830191,117901582,303183396,2155911963,3806477791,3958056653,656894286,2998062463,1970642922,151591698,2206440989,741110872,437923380,454765878,1852748508,1515908788,2694904667,1381168804,993742198,3604373943,3014905469,690584402,3823320797,791638366,2223281939,1398011302,3520161977,0,3991743681,538992704,4244381667,2981218425,1532751286,1785380564,3419096717,3200178535,960056178,1246420628,1280103576,1482221744,3486468741,3503319995,4025428677,2863326543,4227536621,1128514950,1296947098,859002214,2240123921,1162203018,4193849577,33687044,2139062782,1347481760,1010582648,2678045221,2829640523,1364325282,2745433693,1077985408,2408548869,2459086143,2644360225,943212656,4126475505,3166494563,3065430391,3671750063,555836226,269496352,4294908645,4092792573,3537006015,3452783745,202118168,320025894,3974901699,1600119230,2543297077,1145359496,387397934,3301201811,2812801621,2122220284,1027426170,1684319432,1566435258,421079858,1936954854,1616945344,2172753945,1330631070,3705438115,572679748,707427924,2425400123,2290647819,1179044492,4008585671,3099120491,336870440,3739122087,1583276732,185277718,3688593069,3772791771,842159716,976899700,168435220,1229577106,101059084,606366792,1549591736,3267517855,3553849021,2897014595,1650632388,2442242105,2509612081,3840161747,2038008818,3890688725,3368567691,926374254,1835907034,2374863873,3587531953,1313788572,2846482505,1819063512,1448540844,4109633523,3941213647,1701162954,2054852340,2930698567,134748176,3132806511,2021165296,623210314,774795868,471606328,2795958615,3031746419,3334885783,3907527627,3722280097,1953799400,522133822,1263263126,3183336545,2341176845,2324333839,1886425312,1044267644,3048588401,1718004428,1212733584,50529542,4143317495,235803164,1633788866,892690282,1465383342,3115962473,2256965911,3250673817,488449850,2661202215,3789633753,4177007595,2560144171,286339874,1768537042,3654906025,2391705863,2492770099,2610673197,505291324,2273808917,3924369609,3469625735,1431699370,673740880,3755965093,2358021891,2711746649,2307489801,218961690,3217021541,3873845719,1111672452,1751693520,1094828930,2576986153,757954394,252645662,2964376443,1414855848,3149649517,370555436],Qt=[1374988112,2118214995,437757123,975658646,1001089995,530400753,2902087851,1273168787,540080725,2910219766,2295101073,4110568485,1340463100,3307916247,641025152,3043140495,3736164937,632953703,1172967064,1576976609,3274667266,2169303058,2370213795,1809054150,59727847,361929877,3211623147,2505202138,3569255213,1484005843,1239443753,2395588676,1975683434,4102977912,2572697195,666464733,3202437046,4035489047,3374361702,2110667444,1675577880,3843699074,2538681184,1649639237,2976151520,3144396420,4269907996,4178062228,1883793496,2403728665,2497604743,1383856311,2876494627,1917518562,3810496343,1716890410,3001755655,800440835,2261089178,3543599269,807962610,599762354,33778362,3977675356,2328828971,2809771154,4077384432,1315562145,1708848333,101039829,3509871135,3299278474,875451293,2733856160,92987698,2767645557,193195065,1080094634,1584504582,3178106961,1042385657,2531067453,3711829422,1306967366,2438237621,1908694277,67556463,1615861247,429456164,3602770327,2302690252,1742315127,2968011453,126454664,3877198648,2043211483,2709260871,2084704233,4169408201,0,159417987,841739592,504459436,1817866830,4245618683,260388950,1034867998,908933415,168810852,1750902305,2606453969,607530554,202008497,2472011535,3035535058,463180190,2160117071,1641816226,1517767529,470948374,3801332234,3231722213,1008918595,303765277,235474187,4069246893,766945465,337553864,1475418501,2943682380,4003061179,2743034109,4144047775,1551037884,1147550661,1543208500,2336434550,3408119516,3069049960,3102011747,3610369226,1113818384,328671808,2227573024,2236228733,3535486456,2935566865,3341394285,496906059,3702665459,226906860,2009195472,733156972,2842737049,294930682,1206477858,2835123396,2700099354,1451044056,573804783,2269728455,3644379585,2362090238,2564033334,2801107407,2776292904,3669462566,1068351396,742039012,1350078989,1784663195,1417561698,4136440770,2430122216,775550814,2193862645,2673705150,1775276924,1876241833,3475313331,3366754619,270040487,3902563182,3678124923,3441850377,1851332852,3969562369,2203032232,3868552805,2868897406,566021896,4011190502,3135740889,1248802510,3936291284,699432150,832877231,708780849,3332740144,899835584,1951317047,4236429990,3767586992,866637845,4043610186,1106041591,2144161806,395441711,1984812685,1139781709,3433712980,3835036895,2664543715,1282050075,3240894392,1181045119,2640243204,25965917,4203181171,4211818798,3009879386,2463879762,3910161971,1842759443,2597806476,933301370,1509430414,3943906441,3467192302,3076639029,3776767469,2051518780,2631065433,1441952575,404016761,1942435775,1408749034,1610459739,3745345300,2017778566,3400528769,3110650942,941896748,3265478751,371049330,3168937228,675039627,4279080257,967311729,135050206,3635733660,1683407248,2076935265,3576870512,1215061108,3501741890],ei=[1347548327,1400783205,3273267108,2520393566,3409685355,4045380933,2880240216,2471224067,1428173050,4138563181,2441661558,636813900,4233094615,3620022987,2149987652,2411029155,1239331162,1730525723,2554718734,3781033664,46346101,310463728,2743944855,3328955385,3875770207,2501218972,3955191162,3667219033,768917123,3545789473,692707433,1150208456,1786102409,2029293177,1805211710,3710368113,3065962831,401639597,1724457132,3028143674,409198410,2196052529,1620529459,1164071807,3769721975,2226875310,486441376,2499348523,1483753576,428819965,2274680428,3075636216,598438867,3799141122,1474502543,711349675,129166120,53458370,2592523643,2782082824,4063242375,2988687269,3120694122,1559041666,730517276,2460449204,4042459122,2706270690,3446004468,3573941694,533804130,2328143614,2637442643,2695033685,839224033,1973745387,957055980,2856345839,106852767,1371368976,4181598602,1033297158,2933734917,1179510461,3046200461,91341917,1862534868,4284502037,605657339,2547432937,3431546947,2003294622,3182487618,2282195339,954669403,3682191598,1201765386,3917234703,3388507166,0,2198438022,1211247597,2887651696,1315723890,4227665663,1443857720,507358933,657861945,1678381017,560487590,3516619604,975451694,2970356327,261314535,3535072918,2652609425,1333838021,2724322336,1767536459,370938394,182621114,3854606378,1128014560,487725847,185469197,2918353863,3106780840,3356761769,2237133081,1286567175,3152976349,4255350624,2683765030,3160175349,3309594171,878443390,1988838185,3704300486,1756818940,1673061617,3403100636,272786309,1075025698,545572369,2105887268,4174560061,296679730,1841768865,1260232239,4091327024,3960309330,3497509347,1814803222,2578018489,4195456072,575138148,3299409036,446754879,3629546796,4011996048,3347532110,3252238545,4270639778,915985419,3483825537,681933534,651868046,2755636671,3828103837,223377554,2607439820,1649704518,3270937875,3901806776,1580087799,4118987695,3198115200,2087309459,2842678573,3016697106,1003007129,2802849917,1860738147,2077965243,164439672,4100872472,32283319,2827177882,1709610350,2125135846,136428751,3874428392,3652904859,3460984630,3572145929,3593056380,2939266226,824852259,818324884,3224740454,930369212,2801566410,2967507152,355706840,1257309336,4148292826,243256656,790073846,2373340630,1296297904,1422699085,3756299780,3818836405,457992840,3099667487,2135319889,77422314,1560382517,1945798516,788204353,1521706781,1385356242,870912086,325965383,2358957921,2050466060,2388260884,2313884476,4006521127,901210569,3990953189,1014646705,1503449823,1062597235,2031621326,3212035895,3931371469,1533017514,350174575,2256028891,2177544179,1052338372,741876788,1606591296,1914052035,213705253,2334669897,1107234197,1899603969,3725069491,2631447780,2422494913,1635502980,1893020342,1950903388,1120974935],ti=[2807058932,1699970625,2764249623,1586903591,1808481195,1173430173,1487645946,59984867,4199882800,1844882806,1989249228,1277555970,3623636965,3419915562,1149249077,2744104290,1514790577,459744698,244860394,3235995134,1963115311,4027744588,2544078150,4190530515,1608975247,2627016082,2062270317,1507497298,2200818878,567498868,1764313568,3359936201,2305455554,2037970062,1047239e3,1910319033,1337376481,2904027272,2892417312,984907214,1243112415,830661914,861968209,2135253587,2011214180,2927934315,2686254721,731183368,1750626376,4246310725,1820824798,4172763771,3542330227,48394827,2404901663,2871682645,671593195,3254988725,2073724613,145085239,2280796200,2779915199,1790575107,2187128086,472615631,3029510009,4075877127,3802222185,4107101658,3201631749,1646252340,4270507174,1402811438,1436590835,3778151818,3950355702,3963161475,4020912224,2667994737,273792366,2331590177,104699613,95345982,3175501286,2377486676,1560637892,3564045318,369057872,4213447064,3919042237,1137477952,2658625497,1119727848,2340947849,1530455833,4007360968,172466556,266959938,516552836,0,2256734592,3980931627,1890328081,1917742170,4294704398,945164165,3575528878,958871085,3647212047,2787207260,1423022939,775562294,1739656202,3876557655,2530391278,2443058075,3310321856,547512796,1265195639,437656594,3121275539,719700128,3762502690,387781147,218828297,3350065803,2830708150,2848461854,428169201,122466165,3720081049,1627235199,648017665,4122762354,1002783846,2117360635,695634755,3336358691,4234721005,4049844452,3704280881,2232435299,574624663,287343814,612205898,1039717051,840019705,2708326185,793451934,821288114,1391201670,3822090177,376187827,3113855344,1224348052,1679968233,2361698556,1058709744,752375421,2431590963,1321699145,3519142200,2734591178,188127444,2177869557,3727205754,2384911031,3215212461,2648976442,2450346104,3432737375,1180849278,331544205,3102249176,4150144569,2952102595,2159976285,2474404304,766078933,313773861,2570832044,2108100632,1668212892,3145456443,2013908262,418672217,3070356634,2594734927,1852171925,3867060991,3473416636,3907448597,2614737639,919489135,164948639,2094410160,2997825956,590424639,2486224549,1723872674,3157750862,3399941250,3501252752,3625268135,2555048196,3673637356,1343127501,4130281361,3599595085,2957853679,1297403050,81781910,3051593425,2283490410,532201772,1367295589,3926170974,895287692,1953757831,1093597963,492483431,3528626907,1446242576,1192455638,1636604631,209336225,344873464,1015671571,669961897,3375740769,3857572124,2973530695,3747192018,1933530610,3464042516,935293895,3454686199,2858115069,1863638845,3683022916,4085369519,3292445032,875313188,1080017571,3279033885,621591778,1233856572,2504130317,24197544,3017672716,3835484340,3247465558,2220981195,3060847922,1551124588,1463996600],ii=[4104605777,1097159550,396673818,660510266,2875968315,2638606623,4200115116,3808662347,821712160,1986918061,3430322568,38544885,3856137295,718002117,893681702,1654886325,2975484382,3122358053,3926825029,4274053469,796197571,1290801793,1184342925,3556361835,2405426947,2459735317,1836772287,1381620373,3196267988,1948373848,3764988233,3385345166,3263785589,2390325492,1480485785,3111247143,3780097726,2293045232,548169417,3459953789,3746175075,439452389,1362321559,1400849762,1685577905,1806599355,2174754046,137073913,1214797936,1174215055,3731654548,2079897426,1943217067,1258480242,529487843,1437280870,3945269170,3049390895,3313212038,923313619,679998e3,3215307299,57326082,377642221,3474729866,2041877159,133361907,1776460110,3673476453,96392454,878845905,2801699524,777231668,4082475170,2330014213,4142626212,2213296395,1626319424,1906247262,1846563261,562755902,3708173718,1040559837,3871163981,1418573201,3294430577,114585348,1343618912,2566595609,3186202582,1078185097,3651041127,3896688048,2307622919,425408743,3371096953,2081048481,1108339068,2216610296,0,2156299017,736970802,292596766,1517440620,251657213,2235061775,2933202493,758720310,265905162,1554391400,1532285339,908999204,174567692,1474760595,4002861748,2610011675,3234156416,3693126241,2001430874,303699484,2478443234,2687165888,585122620,454499602,151849742,2345119218,3064510765,514443284,4044981591,1963412655,2581445614,2137062819,19308535,1928707164,1715193156,4219352155,1126790795,600235211,3992742070,3841024952,836553431,1669664834,2535604243,3323011204,1243905413,3141400786,4180808110,698445255,2653899549,2989552604,2253581325,3252932727,3004591147,1891211689,2487810577,3915653703,4237083816,4030667424,2100090966,865136418,1229899655,953270745,3399679628,3557504664,4118925222,2061379749,3079546586,2915017791,983426092,2022837584,1607244650,2118541908,2366882550,3635996816,972512814,3283088770,1568718495,3499326569,3576539503,621982671,2895723464,410887952,2623762152,1002142683,645401037,1494807662,2595684844,1335535747,2507040230,4293295786,3167684641,367585007,3885750714,1865862730,2668221674,2960971305,2763173681,1059270954,2777952454,2724642869,1320957812,2194319100,2429595872,2815956275,77089521,3973773121,3444575871,2448830231,1305906550,4021308739,2857194700,2516901860,3518358430,1787304780,740276417,1699839814,1592394909,2352307457,2272556026,188821243,1729977011,3687994002,274084841,3594982253,3613494426,2701949495,4162096729,322734571,2837966542,1640576439,484830689,1202797690,3537852828,4067639125,349075736,3342319475,4157467219,4255800159,1030690015,1155237496,2951971274,1757691577,607398968,2738905026,499347990,3794078908,1011452712,227885567,2818666809,213114376,3034881240,1455525988,3414450555,850817237,1817998408,3092726480],ri=[0,235474187,470948374,303765277,941896748,908933415,607530554,708780849,1883793496,2118214995,1817866830,1649639237,1215061108,1181045119,1417561698,1517767529,3767586992,4003061179,4236429990,4069246893,3635733660,3602770327,3299278474,3400528769,2430122216,2664543715,2362090238,2193862645,2835123396,2801107407,3035535058,3135740889,3678124923,3576870512,3341394285,3374361702,3810496343,3977675356,4279080257,4043610186,2876494627,2776292904,3076639029,3110650942,2472011535,2640243204,2403728665,2169303058,1001089995,899835584,666464733,699432150,59727847,226906860,530400753,294930682,1273168787,1172967064,1475418501,1509430414,1942435775,2110667444,1876241833,1641816226,2910219766,2743034109,2976151520,3211623147,2505202138,2606453969,2302690252,2269728455,3711829422,3543599269,3240894392,3475313331,3843699074,3943906441,4178062228,4144047775,1306967366,1139781709,1374988112,1610459739,1975683434,2076935265,1775276924,1742315127,1034867998,866637845,566021896,800440835,92987698,193195065,429456164,395441711,1984812685,2017778566,1784663195,1683407248,1315562145,1080094634,1383856311,1551037884,101039829,135050206,437757123,337553864,1042385657,807962610,573804783,742039012,2531067453,2564033334,2328828971,2227573024,2935566865,2700099354,3001755655,3168937228,3868552805,3902563182,4203181171,4102977912,3736164937,3501741890,3265478751,3433712980,1106041591,1340463100,1576976609,1408749034,2043211483,2009195472,1708848333,1809054150,832877231,1068351396,766945465,599762354,159417987,126454664,361929877,463180190,2709260871,2943682380,3178106961,3009879386,2572697195,2538681184,2236228733,2336434550,3509871135,3745345300,3441850377,3274667266,3910161971,3877198648,4110568485,4211818798,2597806476,2497604743,2261089178,2295101073,2733856160,2902087851,3202437046,2968011453,3936291284,3835036895,4136440770,4169408201,3535486456,3702665459,3467192302,3231722213,2051518780,1951317047,1716890410,1750902305,1113818384,1282050075,1584504582,1350078989,168810852,67556463,371049330,404016761,841739592,1008918595,775550814,540080725,3969562369,3801332234,4035489047,4269907996,3569255213,3669462566,3366754619,3332740144,2631065433,2463879762,2160117071,2395588676,2767645557,2868897406,3102011747,3069049960,202008497,33778362,270040487,504459436,875451293,975658646,675039627,641025152,2084704233,1917518562,1615861247,1851332852,1147550661,1248802510,1484005843,1451044056,933301370,967311729,733156972,632953703,260388950,25965917,328671808,496906059,1206477858,1239443753,1543208500,1441952575,2144161806,1908694277,1675577880,1842759443,3610369226,3644379585,3408119516,3307916247,4011190502,3776767469,4077384432,4245618683,2809771154,2842737049,3144396420,3043140495,2673705150,2438237621,2203032232,2370213795],si=[0,185469197,370938394,487725847,741876788,657861945,975451694,824852259,1483753576,1400783205,1315723890,1164071807,1950903388,2135319889,1649704518,1767536459,2967507152,3152976349,2801566410,2918353863,2631447780,2547432937,2328143614,2177544179,3901806776,3818836405,4270639778,4118987695,3299409036,3483825537,3535072918,3652904859,2077965243,1893020342,1841768865,1724457132,1474502543,1559041666,1107234197,1257309336,598438867,681933534,901210569,1052338372,261314535,77422314,428819965,310463728,3409685355,3224740454,3710368113,3593056380,3875770207,3960309330,4045380933,4195456072,2471224067,2554718734,2237133081,2388260884,3212035895,3028143674,2842678573,2724322336,4138563181,4255350624,3769721975,3955191162,3667219033,3516619604,3431546947,3347532110,2933734917,2782082824,3099667487,3016697106,2196052529,2313884476,2499348523,2683765030,1179510461,1296297904,1347548327,1533017514,1786102409,1635502980,2087309459,2003294622,507358933,355706840,136428751,53458370,839224033,957055980,605657339,790073846,2373340630,2256028891,2607439820,2422494913,2706270690,2856345839,3075636216,3160175349,3573941694,3725069491,3273267108,3356761769,4181598602,4063242375,4011996048,3828103837,1033297158,915985419,730517276,545572369,296679730,446754879,129166120,213705253,1709610350,1860738147,1945798516,2029293177,1239331162,1120974935,1606591296,1422699085,4148292826,4233094615,3781033664,3931371469,3682191598,3497509347,3446004468,3328955385,2939266226,2755636671,3106780840,2988687269,2198438022,2282195339,2501218972,2652609425,1201765386,1286567175,1371368976,1521706781,1805211710,1620529459,2105887268,1988838185,533804130,350174575,164439672,46346101,870912086,954669403,636813900,788204353,2358957921,2274680428,2592523643,2441661558,2695033685,2880240216,3065962831,3182487618,3572145929,3756299780,3270937875,3388507166,4174560061,4091327024,4006521127,3854606378,1014646705,930369212,711349675,560487590,272786309,457992840,106852767,223377554,1678381017,1862534868,1914052035,2031621326,1211247597,1128014560,1580087799,1428173050,32283319,182621114,401639597,486441376,768917123,651868046,1003007129,818324884,1503449823,1385356242,1333838021,1150208456,1973745387,2125135846,1673061617,1756818940,2970356327,3120694122,2802849917,2887651696,2637442643,2520393566,2334669897,2149987652,3917234703,3799141122,4284502037,4100872472,3309594171,3460984630,3545789473,3629546796,2050466060,1899603969,1814803222,1730525723,1443857720,1560382517,1075025698,1260232239,575138148,692707433,878443390,1062597235,243256656,91341917,409198410,325965383,3403100636,3252238545,3704300486,3620022987,3874428392,3990953189,4042459122,4227665663,2460449204,2578018489,2226875310,2411029155,3198115200,3046200461,2827177882,2743944855],ni=[0,218828297,437656594,387781147,875313188,958871085,775562294,590424639,1750626376,1699970625,1917742170,2135253587,1551124588,1367295589,1180849278,1265195639,3501252752,3720081049,3399941250,3350065803,3835484340,3919042237,4270507174,4085369519,3102249176,3051593425,2734591178,2952102595,2361698556,2177869557,2530391278,2614737639,3145456443,3060847922,2708326185,2892417312,2404901663,2187128086,2504130317,2555048196,3542330227,3727205754,3375740769,3292445032,3876557655,3926170974,4246310725,4027744588,1808481195,1723872674,1910319033,2094410160,1608975247,1391201670,1173430173,1224348052,59984867,244860394,428169201,344873464,935293895,984907214,766078933,547512796,1844882806,1627235199,2011214180,2062270317,1507497298,1423022939,1137477952,1321699145,95345982,145085239,532201772,313773861,830661914,1015671571,731183368,648017665,3175501286,2957853679,2807058932,2858115069,2305455554,2220981195,2474404304,2658625497,3575528878,3625268135,3473416636,3254988725,3778151818,3963161475,4213447064,4130281361,3599595085,3683022916,3432737375,3247465558,3802222185,4020912224,4172763771,4122762354,3201631749,3017672716,2764249623,2848461854,2331590177,2280796200,2431590963,2648976442,104699613,188127444,472615631,287343814,840019705,1058709744,671593195,621591778,1852171925,1668212892,1953757831,2037970062,1514790577,1463996600,1080017571,1297403050,3673637356,3623636965,3235995134,3454686199,4007360968,3822090177,4107101658,4190530515,2997825956,3215212461,2830708150,2779915199,2256734592,2340947849,2627016082,2443058075,172466556,122466165,273792366,492483431,1047239e3,861968209,612205898,695634755,1646252340,1863638845,2013908262,1963115311,1446242576,1530455833,1277555970,1093597963,1636604631,1820824798,2073724613,1989249228,1436590835,1487645946,1337376481,1119727848,164948639,81781910,331544205,516552836,1039717051,821288114,669961897,719700128,2973530695,3157750862,2871682645,2787207260,2232435299,2283490410,2667994737,2450346104,3647212047,3564045318,3279033885,3464042516,3980931627,3762502690,4150144569,4199882800,3070356634,3121275539,2904027272,2686254721,2200818878,2384911031,2570832044,2486224549,3747192018,3528626907,3310321856,3359936201,3950355702,3867060991,4049844452,4234721005,1739656202,1790575107,2108100632,1890328081,1402811438,1586903591,1233856572,1149249077,266959938,48394827,369057872,418672217,1002783846,919489135,567498868,752375421,209336225,24197544,376187827,459744698,945164165,895287692,574624663,793451934,1679968233,1764313568,2117360635,1933530610,1343127501,1560637892,1243112415,1192455638,3704280881,3519142200,3336358691,3419915562,3907448597,3857572124,4075877127,4294704398,3029510009,3113855344,2927934315,2744104290,2159976285,2377486676,2594734927,2544078150],ai=[0,151849742,303699484,454499602,607398968,758720310,908999204,1059270954,1214797936,1097159550,1517440620,1400849762,1817998408,1699839814,2118541908,2001430874,2429595872,2581445614,2194319100,2345119218,3034881240,3186202582,2801699524,2951971274,3635996816,3518358430,3399679628,3283088770,4237083816,4118925222,4002861748,3885750714,1002142683,850817237,698445255,548169417,529487843,377642221,227885567,77089521,1943217067,2061379749,1640576439,1757691577,1474760595,1592394909,1174215055,1290801793,2875968315,2724642869,3111247143,2960971305,2405426947,2253581325,2638606623,2487810577,3808662347,3926825029,4044981591,4162096729,3342319475,3459953789,3576539503,3693126241,1986918061,2137062819,1685577905,1836772287,1381620373,1532285339,1078185097,1229899655,1040559837,923313619,740276417,621982671,439452389,322734571,137073913,19308535,3871163981,4021308739,4104605777,4255800159,3263785589,3414450555,3499326569,3651041127,2933202493,2815956275,3167684641,3049390895,2330014213,2213296395,2566595609,2448830231,1305906550,1155237496,1607244650,1455525988,1776460110,1626319424,2079897426,1928707164,96392454,213114376,396673818,514443284,562755902,679998e3,865136418,983426092,3708173718,3557504664,3474729866,3323011204,4180808110,4030667424,3945269170,3794078908,2507040230,2623762152,2272556026,2390325492,2975484382,3092726480,2738905026,2857194700,3973773121,3856137295,4274053469,4157467219,3371096953,3252932727,3673476453,3556361835,2763173681,2915017791,3064510765,3215307299,2156299017,2307622919,2459735317,2610011675,2081048481,1963412655,1846563261,1729977011,1480485785,1362321559,1243905413,1126790795,878845905,1030690015,645401037,796197571,274084841,425408743,38544885,188821243,3613494426,3731654548,3313212038,3430322568,4082475170,4200115116,3780097726,3896688048,2668221674,2516901860,2366882550,2216610296,3141400786,2989552604,2837966542,2687165888,1202797690,1320957812,1437280870,1554391400,1669664834,1787304780,1906247262,2022837584,265905162,114585348,499347990,349075736,736970802,585122620,972512814,821712160,2595684844,2478443234,2293045232,2174754046,3196267988,3079546586,2895723464,2777952454,3537852828,3687994002,3234156416,3385345166,4142626212,4293295786,3841024952,3992742070,174567692,57326082,410887952,292596766,777231668,660510266,1011452712,893681702,1108339068,1258480242,1343618912,1494807662,1715193156,1865862730,1948373848,2100090966,2701949495,2818666809,3004591147,3122358053,2235061775,2352307457,2535604243,2653899549,3915653703,3764988233,4219352155,4067639125,3444575871,3294430577,3746175075,3594982253,836553431,953270745,600235211,718002117,367585007,484830689,133361907,251657213,2041877159,1891211689,1806599355,1654886325,1568718495,1418573201,1335535747,1184342925];function oi(e){for(var t=[],i=0;i>2,this._Ke[i][t%4]=n[t],this._Kd[e-i][t%4]=n[t];for(var a,o=0,d=s;d>16&255]<<24^jt[a>>8&255]<<16^jt[255&a]<<8^jt[a>>24&255]^Yt[o]<<24,o+=1,8!=s)for(t=1;t>8&255]<<8^jt[a>>16&255]<<16^jt[a>>24&255]<<24;for(t=s/2+1;t>2,h=d%4,this._Ke[l][h]=n[t],this._Kd[e-l][h]=n[t++],d++}for(var l=1;l>24&255]^si[a>>16&255]^ni[a>>8&255]^ai[255&a]},di.prototype.encrypt=function(e){if(16!=e.length)throw new Error("invalid plaintext size (must be 16 bytes)");for(var t=this._Ke.length-1,i=[0,0,0,0],r=oi(e),s=0;s<4;s++)r[s]^=this._Ke[0][s];for(var n=1;n>24&255]^Xt[r[(s+1)%4]>>16&255]^Zt[r[(s+2)%4]>>8&255]^Jt[255&r[(s+3)%4]]^this._Ke[n][s];r=i.slice()}var a,o=Ot(16);for(s=0;s<4;s++)a=this._Ke[t][s],o[4*s]=255&(jt[r[s]>>24&255]^a>>24),o[4*s+1]=255&(jt[r[(s+1)%4]>>16&255]^a>>16),o[4*s+2]=255&(jt[r[(s+2)%4]>>8&255]^a>>8),o[4*s+3]=255&(jt[255&r[(s+3)%4]]^a);return o},di.prototype.decrypt=function(e){if(16!=e.length)throw new Error("invalid ciphertext size (must be 16 bytes)");for(var t=this._Kd.length-1,i=[0,0,0,0],r=oi(e),s=0;s<4;s++)r[s]^=this._Kd[0][s];for(var n=1;n>24&255]^ei[r[(s+3)%4]>>16&255]^ti[r[(s+2)%4]>>8&255]^ii[255&r[(s+1)%4]]^this._Kd[n][s];r=i.slice()}var a,o=Ot(16);for(s=0;s<4;s++)a=this._Kd[t][s],o[4*s]=255&(qt[r[s]>>24&255]^a>>24),o[4*s+1]=255&(qt[r[(s+3)%4]>>16&255]^a>>16),o[4*s+2]=255&(qt[r[(s+2)%4]>>8&255]^a>>8),o[4*s+3]=255&(qt[255&r[(s+1)%4]]^a);return o};var li=function(e){if(!(this instanceof li))throw Error("AES must be instanitated with `new`");this.description="Electronic Code Block",this.name="ecb",this._aes=new di(e)};li.prototype.encrypt=function(e){if((e=Nt(e)).length%16!=0)throw new Error("invalid plaintext size (must be multiple of 16 bytes)");for(var t=Ot(e.length),i=Ot(16),r=0;rNumber.MAX_SAFE_INTEGER)throw new Error("integer value out of safe range");for(var t=15;t>=0;--t)this._counter[t]=e%256,e=parseInt(e/256)},ui.prototype.setBytes=function(e){if(16!=(e=Nt(e,!0)).length)throw new Error("invalid counter bytes size (must be 16 bytes)");this._counter=e},ui.prototype.increment=function(){for(var e=15;e>=0;e--){if(255!==this._counter[e]){this._counter[e]++;break}this._counter[e]=0}};var ci=function(e,t){if(!(this instanceof ci))throw Error("AES must be instanitated with `new`");this.description="Counter",this.name="ctr",t instanceof ui||(t=new ui(t)),this._counter=t,this._remainingCounter=null,this._remainingCounterIndex=16,this._aes=new di(e)};ci.prototype.encrypt=function(e){for(var t=Nt(e,!0),i=0;i16)throw new Error("PKCS#7 padding byte out of range");for(var i=e.length-t,r=0;r=r&&console.debug("["+n.getDurationString(new Date-i,1e3)+"]","["+e+"]",t)},log:function(e,t){this.debug(e.msg)},info:function(e,t){2>=r&&console.info("["+n.getDurationString(new Date-i,1e3)+"]","["+e+"]",t)},warn:function(e,t){3>=r&&console.warn("["+n.getDurationString(new Date-i,1e3)+"]","["+e+"]",t)},error:function(e,t){4>=r&&console.error("["+n.getDurationString(new Date-i,1e3)+"]","["+e+"]",t)}},s);n.getDurationString=function(e,t){var i;function r(e,t){for(var i=(""+e).split(".");i[0].length0){for(var i="",r=0;r0&&(i+=","),i+="["+n.getDurationString(e.start(r))+","+n.getDurationString(e.end(r))+"]";return i}return"(empty)"},t.Log=n;var a=function(e){if(!(e instanceof ArrayBuffer))throw"Needs an array buffer";this.buffer=e,this.dataview=new DataView(e),this.position=0};a.prototype.getPosition=function(){return this.position},a.prototype.getEndPosition=function(){return this.buffer.byteLength},a.prototype.getLength=function(){return this.buffer.byteLength},a.prototype.seek=function(e){var t=Math.max(0,Math.min(this.buffer.byteLength,e));return this.position=isNaN(t)||!isFinite(t)?0:t,!0},a.prototype.isEos=function(){return this.getPosition()>=this.getEndPosition()},a.prototype.readAnyInt=function(e,t){var i=0;if(this.position+e<=this.buffer.byteLength){switch(e){case 1:i=t?this.dataview.getInt8(this.position):this.dataview.getUint8(this.position);break;case 2:i=t?this.dataview.getInt16(this.position):this.dataview.getUint16(this.position);break;case 3:if(t)throw"No method for reading signed 24 bits values";i=this.dataview.getUint8(this.position)<<16,i|=this.dataview.getUint8(this.position+1)<<8,i|=this.dataview.getUint8(this.position+2);break;case 4:i=t?this.dataview.getInt32(this.position):this.dataview.getUint32(this.position);break;case 8:if(t)throw"No method for reading signed 64 bits values";i=this.dataview.getUint32(this.position)<<32,i|=this.dataview.getUint32(this.position+4);break;default:throw"readInt method not implemented for size: "+e}return this.position+=e,i}throw"Not enough bytes in buffer"},a.prototype.readUint8=function(){return this.readAnyInt(1,!1)},a.prototype.readUint16=function(){return this.readAnyInt(2,!1)},a.prototype.readUint24=function(){return this.readAnyInt(3,!1)},a.prototype.readUint32=function(){return this.readAnyInt(4,!1)},a.prototype.readUint64=function(){return this.readAnyInt(8,!1)},a.prototype.readString=function(e){if(this.position+e<=this.buffer.byteLength){for(var t="",i=0;ithis._byteLength&&(this._byteLength=t);else{for(i<1&&(i=1);t>i;)i*=2;var r=new ArrayBuffer(i),s=new Uint8Array(this._buffer);new Uint8Array(r,0,s.length).set(s),this.buffer=r,this._byteLength=t}}},o.prototype._trimAlloc=function(){if(this._byteLength!=this._buffer.byteLength){var e=new ArrayBuffer(this._byteLength),t=new Uint8Array(e),i=new Uint8Array(this._buffer,0,t.length);t.set(i),this.buffer=e}},o.BIG_ENDIAN=!1,o.LITTLE_ENDIAN=!0,o.prototype._byteLength=0,Object.defineProperty(o.prototype,"byteLength",{get:function(){return this._byteLength-this._byteOffset}}),Object.defineProperty(o.prototype,"buffer",{get:function(){return this._trimAlloc(),this._buffer},set:function(e){this._buffer=e,this._dataView=new DataView(this._buffer,this._byteOffset),this._byteLength=this._buffer.byteLength}}),Object.defineProperty(o.prototype,"byteOffset",{get:function(){return this._byteOffset},set:function(e){this._byteOffset=e,this._dataView=new DataView(this._buffer,this._byteOffset),this._byteLength=this._buffer.byteLength}}),Object.defineProperty(o.prototype,"dataView",{get:function(){return this._dataView},set:function(e){this._byteOffset=e.byteOffset,this._buffer=e.buffer,this._dataView=new DataView(this._buffer,this._byteOffset),this._byteLength=this._byteOffset+e.byteLength}}),o.prototype.seek=function(e){var t=Math.max(0,Math.min(this.byteLength,e));this.position=isNaN(t)||!isFinite(t)?0:t},o.prototype.isEof=function(){return this.position>=this._byteLength},o.prototype.mapUint8Array=function(e){this._realloc(1*e);var t=new Uint8Array(this._buffer,this.byteOffset+this.position,e);return this.position+=1*e,t},o.prototype.readInt32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var i=new Int32Array(e);return o.memcpy(i.buffer,0,this.buffer,this.byteOffset+this.position,e*i.BYTES_PER_ELEMENT),o.arrayToNative(i,null==t?this.endianness:t),this.position+=i.byteLength,i},o.prototype.readInt16Array=function(e,t){e=null==e?this.byteLength-this.position/2:e;var i=new Int16Array(e);return o.memcpy(i.buffer,0,this.buffer,this.byteOffset+this.position,e*i.BYTES_PER_ELEMENT),o.arrayToNative(i,null==t?this.endianness:t),this.position+=i.byteLength,i},o.prototype.readInt8Array=function(e){e=null==e?this.byteLength-this.position:e;var t=new Int8Array(e);return o.memcpy(t.buffer,0,this.buffer,this.byteOffset+this.position,e*t.BYTES_PER_ELEMENT),this.position+=t.byteLength,t},o.prototype.readUint32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var i=new Uint32Array(e);return o.memcpy(i.buffer,0,this.buffer,this.byteOffset+this.position,e*i.BYTES_PER_ELEMENT),o.arrayToNative(i,null==t?this.endianness:t),this.position+=i.byteLength,i},o.prototype.readUint16Array=function(e,t){e=null==e?this.byteLength-this.position/2:e;var i=new Uint16Array(e);return o.memcpy(i.buffer,0,this.buffer,this.byteOffset+this.position,e*i.BYTES_PER_ELEMENT),o.arrayToNative(i,null==t?this.endianness:t),this.position+=i.byteLength,i},o.prototype.readUint8Array=function(e){e=null==e?this.byteLength-this.position:e;var t=new Uint8Array(e);return o.memcpy(t.buffer,0,this.buffer,this.byteOffset+this.position,e*t.BYTES_PER_ELEMENT),this.position+=t.byteLength,t},o.prototype.readFloat64Array=function(e,t){e=null==e?this.byteLength-this.position/8:e;var i=new Float64Array(e);return o.memcpy(i.buffer,0,this.buffer,this.byteOffset+this.position,e*i.BYTES_PER_ELEMENT),o.arrayToNative(i,null==t?this.endianness:t),this.position+=i.byteLength,i},o.prototype.readFloat32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var i=new Float32Array(e);return o.memcpy(i.buffer,0,this.buffer,this.byteOffset+this.position,e*i.BYTES_PER_ELEMENT),o.arrayToNative(i,null==t?this.endianness:t),this.position+=i.byteLength,i},o.prototype.readInt32=function(e){var t=this._dataView.getInt32(this.position,null==e?this.endianness:e);return this.position+=4,t},o.prototype.readInt16=function(e){var t=this._dataView.getInt16(this.position,null==e?this.endianness:e);return this.position+=2,t},o.prototype.readInt8=function(){var e=this._dataView.getInt8(this.position);return this.position+=1,e},o.prototype.readUint32=function(e){var t=this._dataView.getUint32(this.position,null==e?this.endianness:e);return this.position+=4,t},o.prototype.readUint16=function(e){var t=this._dataView.getUint16(this.position,null==e?this.endianness:e);return this.position+=2,t},o.prototype.readUint8=function(){var e=this._dataView.getUint8(this.position);return this.position+=1,e},o.prototype.readFloat32=function(e){var t=this._dataView.getFloat32(this.position,null==e?this.endianness:e);return this.position+=4,t},o.prototype.readFloat64=function(e){var t=this._dataView.getFloat64(this.position,null==e?this.endianness:e);return this.position+=8,t},o.endianness=new Int8Array(new Int16Array([1]).buffer)[0]>0,o.memcpy=function(e,t,i,r,s){var n=new Uint8Array(e,t,s),a=new Uint8Array(i,r,s);n.set(a)},o.arrayToNative=function(e,t){return t==this.endianness?e:this.flipArrayEndianness(e)},o.nativeToEndian=function(e,t){return this.endianness==t?e:this.flipArrayEndianness(e)},o.flipArrayEndianness=function(e){for(var t=new Uint8Array(e.buffer,e.byteOffset,e.byteLength),i=0;is;r--,s++){var n=t[s];t[s]=t[r],t[r]=n}return e},o.prototype.failurePosition=0,String.fromCharCodeUint8=function(e){for(var t=[],i=0;i>16),this.writeUint8((65280&e)>>8),this.writeUint8(255&e)},o.prototype.adjustUint32=function(e,t){var i=this.position;this.seek(e),this.writeUint32(t),this.seek(i)},o.prototype.mapInt32Array=function(e,t){this._realloc(4*e);var i=new Int32Array(this._buffer,this.byteOffset+this.position,e);return o.arrayToNative(i,null==t?this.endianness:t),this.position+=4*e,i},o.prototype.mapInt16Array=function(e,t){this._realloc(2*e);var i=new Int16Array(this._buffer,this.byteOffset+this.position,e);return o.arrayToNative(i,null==t?this.endianness:t),this.position+=2*e,i},o.prototype.mapInt8Array=function(e){this._realloc(1*e);var t=new Int8Array(this._buffer,this.byteOffset+this.position,e);return this.position+=1*e,t},o.prototype.mapUint32Array=function(e,t){this._realloc(4*e);var i=new Uint32Array(this._buffer,this.byteOffset+this.position,e);return o.arrayToNative(i,null==t?this.endianness:t),this.position+=4*e,i},o.prototype.mapUint16Array=function(e,t){this._realloc(2*e);var i=new Uint16Array(this._buffer,this.byteOffset+this.position,e);return o.arrayToNative(i,null==t?this.endianness:t),this.position+=2*e,i},o.prototype.mapFloat64Array=function(e,t){this._realloc(8*e);var i=new Float64Array(this._buffer,this.byteOffset+this.position,e);return o.arrayToNative(i,null==t?this.endianness:t),this.position+=8*e,i},o.prototype.mapFloat32Array=function(e,t){this._realloc(4*e);var i=new Float32Array(this._buffer,this.byteOffset+this.position,e);return o.arrayToNative(i,null==t?this.endianness:t),this.position+=4*e,i};var l=function(e){this.buffers=[],this.bufferIndex=-1,e&&(this.insertBuffer(e),this.bufferIndex=0)};(l.prototype=new o(new ArrayBuffer,0,o.BIG_ENDIAN)).initialized=function(){var e;return this.bufferIndex>-1||(this.buffers.length>0?0===(e=this.buffers[0]).fileStart?(this.buffer=e,this.bufferIndex=0,n.debug("MultiBufferStream","Stream ready for parsing"),!0):(n.warn("MultiBufferStream","The first buffer should have a fileStart of 0"),this.logBufferLevel(),!1):(n.warn("MultiBufferStream","No buffer to start parsing from"),this.logBufferLevel(),!1))},ArrayBuffer.concat=function(e,t){n.debug("ArrayBuffer","Trying to create a new buffer of size: "+(e.byteLength+t.byteLength));var i=new Uint8Array(e.byteLength+t.byteLength);return i.set(new Uint8Array(e),0),i.set(new Uint8Array(t),e.byteLength),i.buffer},l.prototype.reduceBuffer=function(e,t,i){var r;return(r=new Uint8Array(i)).set(new Uint8Array(e,t,i)),r.buffer.fileStart=e.fileStart+t,r.buffer.usedBytes=0,r.buffer},l.prototype.insertBuffer=function(e){for(var t=!0,i=0;ir.byteLength){this.buffers.splice(i,1),i--;continue}n.warn("MultiBufferStream","Buffer (fileStart: "+e.fileStart+" - Length: "+e.byteLength+") already appended, ignoring")}else e.fileStart+e.byteLength<=r.fileStart||(e=this.reduceBuffer(e,0,r.fileStart-e.fileStart)),n.debug("MultiBufferStream","Appending new buffer (fileStart: "+e.fileStart+" - Length: "+e.byteLength+")"),this.buffers.splice(i,0,e),0===i&&(this.buffer=e);t=!1;break}if(e.fileStart0)){t=!1;break}e=this.reduceBuffer(e,s,a)}}t&&(n.debug("MultiBufferStream","Appending new buffer (fileStart: "+e.fileStart+" - Length: "+e.byteLength+")"),this.buffers.push(e),0===i&&(this.buffer=e))},l.prototype.logBufferLevel=function(e){var t,i,r,s,a,o=[],d="";for(r=0,s=0,t=0;t0&&(d+=a.end-1+"]");var l=e?n.info:n.debug;0===this.buffers.length?l("MultiBufferStream","No more buffer in memory"):l("MultiBufferStream",this.buffers.length+" stored buffer(s) ("+r+"/"+s+" bytes), continuous ranges: "+d)},l.prototype.cleanBuffers=function(){var e,t;for(e=0;e"+this.buffer.byteLength+")"),!0}return!1}return!1},l.prototype.findPosition=function(e,t,i){var r,s=null,a=-1;for(r=!0===e?0:this.bufferIndex;r=t?(n.debug("MultiBufferStream","Found position in existing buffer #"+a),a):-1},l.prototype.findEndContiguousBuf=function(e){var t,i,r,s=void 0!==e?e:this.bufferIndex;if(i=this.buffers[s],this.buffers.length>s+1)for(t=s+1;t>3;return 31===r&&i.data.length>=2&&(r=32+((7&i.data[0])<<3)+((224&i.data[1])>>5)),r}return null},i.DecoderConfigDescriptor=function(e){i.Descriptor.call(this,4,e)},i.DecoderConfigDescriptor.prototype=new i.Descriptor,i.DecoderConfigDescriptor.prototype.parse=function(e){this.oti=e.readUint8(),this.streamType=e.readUint8(),this.bufferSize=e.readUint24(),this.maxBitrate=e.readUint32(),this.avgBitrate=e.readUint32(),this.size-=13,this.parseRemainingDescriptors(e)},i.DecoderSpecificInfo=function(e){i.Descriptor.call(this,5,e)},i.DecoderSpecificInfo.prototype=new i.Descriptor,i.SLConfigDescriptor=function(e){i.Descriptor.call(this,6,e)},i.SLConfigDescriptor.prototype=new i.Descriptor,this};t.MPEG4DescriptorParser=h;var f={ERR_INVALID_DATA:-1,ERR_NOT_ENOUGH_DATA:0,OK:1,BASIC_BOXES:["mdat","idat","free","skip","meco","strk"],FULL_BOXES:["hmhd","nmhd","iods","xml ","bxml","ipro","mere"],CONTAINER_BOXES:[["moov",["trak","pssh"]],["trak"],["edts"],["mdia"],["minf"],["dinf"],["stbl",["sgpd","sbgp"]],["mvex",["trex"]],["moof",["traf"]],["traf",["trun","sgpd","sbgp"]],["vttc"],["tref"],["iref"],["mfra",["tfra"]],["meco"],["hnti"],["hinf"],["strk"],["strd"],["sinf"],["rinf"],["schi"],["trgr"],["udta",["kind"]],["iprp",["ipma"]],["ipco"]],boxCodes:[],fullBoxCodes:[],containerBoxCodes:[],sampleEntryCodes:{},sampleGroupEntryCodes:[],trackGroupTypes:[],UUIDBoxes:{},UUIDs:[],initialize:function(){f.FullBox.prototype=new f.Box,f.ContainerBox.prototype=new f.Box,f.SampleEntry.prototype=new f.Box,f.TrackGroupTypeBox.prototype=new f.FullBox,f.BASIC_BOXES.forEach((function(e){f.createBoxCtor(e)})),f.FULL_BOXES.forEach((function(e){f.createFullBoxCtor(e)})),f.CONTAINER_BOXES.forEach((function(e){f.createContainerBoxCtor(e[0],null,e[1])}))},Box:function(e,t,i){this.type=e,this.size=t,this.uuid=i},FullBox:function(e,t,i){f.Box.call(this,e,t,i),this.flags=0,this.version=0},ContainerBox:function(e,t,i){f.Box.call(this,e,t,i),this.boxes=[]},SampleEntry:function(e,t,i,r){f.ContainerBox.call(this,e,t),this.hdr_size=i,this.start=r},SampleGroupEntry:function(e){this.grouping_type=e},TrackGroupTypeBox:function(e,t){f.FullBox.call(this,e,t)},createBoxCtor:function(e,t){f.boxCodes.push(e),f[e+"Box"]=function(t){f.Box.call(this,e,t)},f[e+"Box"].prototype=new f.Box,t&&(f[e+"Box"].prototype.parse=t)},createFullBoxCtor:function(e,t){f[e+"Box"]=function(t){f.FullBox.call(this,e,t)},f[e+"Box"].prototype=new f.FullBox,f[e+"Box"].prototype.parse=function(e){this.parseFullHeader(e),t&&t.call(this,e)}},addSubBoxArrays:function(e){if(e){this.subBoxNames=e;for(var t=e.length,i=0;ii?(n.error("BoxParser","Box of type '"+h+"' has a size "+l+" greater than its container size "+i),{code:f.ERR_NOT_ENOUGH_DATA,type:h,size:l,hdr_size:d,start:o}):0!==l&&o+l>e.getEndPosition()?(e.seek(o),n.info("BoxParser","Not enough data in stream to parse the entire '"+h+"' box"),{code:f.ERR_NOT_ENOUGH_DATA,type:h,size:l,hdr_size:d,start:o}):t?{code:f.OK,type:h,size:l,hdr_size:d,start:o}:(f[h+"Box"]?r=new f[h+"Box"](l):"uuid"!==h?(n.warn("BoxParser","Unknown box type: '"+h+"'"),(r=new f.Box(h,l)).has_unparsed_data=!0):f.UUIDBoxes[a]?r=new f.UUIDBoxes[a](l):(n.warn("BoxParser","Unknown uuid type: '"+a+"'"),(r=new f.Box(h,l)).uuid=a,r.has_unparsed_data=!0),r.hdr_size=d,r.start=o,r.write===f.Box.prototype.write&&"mdat"!==r.type&&(n.info("BoxParser","'"+p+"' box writing not yet implemented, keeping unparsed data in memory for later write"),r.parseDataAndRewind(e)),r.parse(e),(s=e.getPosition()-(r.start+r.size))<0?(n.warn("BoxParser","Parsing of box '"+p+"' did not read the entire indicated box data size (missing "+-s+" bytes), seeking forward"),e.seek(r.start+r.size)):s>0&&(n.error("BoxParser","Parsing of box '"+p+"' read "+s+" more bytes than the indicated box data size, seeking backwards"),0!==r.size&&e.seek(r.start+r.size)),{code:f.OK,box:r,size:r.size})},f.Box.prototype.parse=function(e){"mdat"!=this.type?this.data=e.readUint8Array(this.size-this.hdr_size):0===this.size?e.seek(e.getEndPosition()):e.seek(this.start+this.size)},f.Box.prototype.parseDataAndRewind=function(e){this.data=e.readUint8Array(this.size-this.hdr_size),e.position-=this.size-this.hdr_size},f.FullBox.prototype.parseDataAndRewind=function(e){this.parseFullHeader(e),this.data=e.readUint8Array(this.size-this.hdr_size),this.hdr_size-=4,e.position-=this.size-this.hdr_size},f.FullBox.prototype.parseFullHeader=function(e){this.version=e.readUint8(),this.flags=e.readUint24(),this.hdr_size+=4},f.FullBox.prototype.parse=function(e){this.parseFullHeader(e),this.data=e.readUint8Array(this.size-this.hdr_size)},f.ContainerBox.prototype.parse=function(e){for(var t,i;e.getPosition()>10&31,t[1]=this.language>>5&31,t[2]=31&this.language,this.languageString=String.fromCharCode(t[0]+96,t[1]+96,t[2]+96)},f.SAMPLE_ENTRY_TYPE_VISUAL="Visual",f.SAMPLE_ENTRY_TYPE_AUDIO="Audio",f.SAMPLE_ENTRY_TYPE_HINT="Hint",f.SAMPLE_ENTRY_TYPE_METADATA="Metadata",f.SAMPLE_ENTRY_TYPE_SUBTITLE="Subtitle",f.SAMPLE_ENTRY_TYPE_SYSTEM="System",f.SAMPLE_ENTRY_TYPE_TEXT="Text",f.SampleEntry.prototype.parseHeader=function(e){e.readUint8Array(6),this.data_reference_index=e.readUint16(),this.hdr_size+=8},f.SampleEntry.prototype.parse=function(e){this.parseHeader(e),this.data=e.readUint8Array(this.size-this.hdr_size)},f.SampleEntry.prototype.parseDataAndRewind=function(e){this.parseHeader(e),this.data=e.readUint8Array(this.size-this.hdr_size),this.hdr_size-=8,e.position-=this.size-this.hdr_size},f.SampleEntry.prototype.parseFooter=function(e){f.ContainerBox.prototype.parse.call(this,e)},f.createMediaSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_HINT),f.createMediaSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_METADATA),f.createMediaSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_SUBTITLE),f.createMediaSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_SYSTEM),f.createMediaSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_TEXT),f.createMediaSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_VISUAL,(function(e){var t;this.parseHeader(e),e.readUint16(),e.readUint16(),e.readUint32Array(3),this.width=e.readUint16(),this.height=e.readUint16(),this.horizresolution=e.readUint32(),this.vertresolution=e.readUint32(),e.readUint32(),this.frame_count=e.readUint16(),t=Math.min(31,e.readUint8()),this.compressorname=e.readString(t),t<31&&e.readString(31-t),this.depth=e.readUint16(),e.readUint16(),this.parseFooter(e)})),f.createMediaSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_AUDIO,(function(e){this.parseHeader(e),e.readUint32Array(2),this.channel_count=e.readUint16(),this.samplesize=e.readUint16(),e.readUint16(),e.readUint16(),this.samplerate=e.readUint32()/65536,this.parseFooter(e)})),f.createSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_VISUAL,"avc1"),f.createSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_VISUAL,"avc2"),f.createSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_VISUAL,"avc3"),f.createSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_VISUAL,"avc4"),f.createSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_VISUAL,"av01"),f.createSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_VISUAL,"hvc1"),f.createSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_VISUAL,"hev1"),f.createSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_VISUAL,"vvc1"),f.createSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_VISUAL,"vvi1"),f.createSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_VISUAL,"vvs1"),f.createSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_VISUAL,"vvcN"),f.createSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_VISUAL,"vp08"),f.createSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_VISUAL,"vp09"),f.createSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_AUDIO,"mp4a"),f.createSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_AUDIO,"ac-3"),f.createSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_AUDIO,"ec-3"),f.createSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_AUDIO,"Opus"),f.createEncryptedSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_VISUAL,"encv"),f.createEncryptedSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_AUDIO,"enca"),f.createEncryptedSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_SUBTITLE,"encu"),f.createEncryptedSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_SYSTEM,"encs"),f.createEncryptedSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_TEXT,"enct"),f.createEncryptedSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_METADATA,"encm"),f.createBoxCtor("a1lx",(function(e){var t=16*(1+(1&(1&e.readUint8())));this.layer_size=[];for(var i=0;i<3;i++)this.layer_size[i]=16==t?e.readUint16():e.readUint32()})),f.createBoxCtor("a1op",(function(e){this.op_index=e.readUint8()})),f.createFullBoxCtor("auxC",(function(e){this.aux_type=e.readCString();var t=this.size-this.hdr_size-(this.aux_type.length+1);this.aux_subtype=e.readUint8Array(t)})),f.createBoxCtor("av1C",(function(e){var t=e.readUint8();if(t>>7&!1)n.error("av1C marker problem");else if(this.version=127&t,1===this.version)if(t=e.readUint8(),this.seq_profile=t>>5&7,this.seq_level_idx_0=31&t,t=e.readUint8(),this.seq_tier_0=t>>7&1,this.high_bitdepth=t>>6&1,this.twelve_bit=t>>5&1,this.monochrome=t>>4&1,this.chroma_subsampling_x=t>>3&1,this.chroma_subsampling_y=t>>2&1,this.chroma_sample_position=3&t,t=e.readUint8(),this.reserved_1=t>>5&7,0===this.reserved_1){if(this.initial_presentation_delay_present=t>>4&1,1===this.initial_presentation_delay_present)this.initial_presentation_delay_minus_one=15&t;else if(this.reserved_2=15&t,0!==this.reserved_2)return void n.error("av1C reserved_2 parsing problem");var i=this.size-this.hdr_size-4;this.configOBUs=e.readUint8Array(i)}else n.error("av1C reserved_1 parsing problem");else n.error("av1C version "+this.version+" not supported")})),f.createBoxCtor("avcC",(function(e){var t,i;for(this.configurationVersion=e.readUint8(),this.AVCProfileIndication=e.readUint8(),this.profile_compatibility=e.readUint8(),this.AVCLevelIndication=e.readUint8(),this.lengthSizeMinusOne=3&e.readUint8(),this.nb_SPS_nalus=31&e.readUint8(),i=this.size-this.hdr_size-6,this.SPS=[],t=0;t0&&(this.ext=e.readUint8Array(i))})),f.createBoxCtor("btrt",(function(e){this.bufferSizeDB=e.readUint32(),this.maxBitrate=e.readUint32(),this.avgBitrate=e.readUint32()})),f.createBoxCtor("clap",(function(e){this.cleanApertureWidthN=e.readUint32(),this.cleanApertureWidthD=e.readUint32(),this.cleanApertureHeightN=e.readUint32(),this.cleanApertureHeightD=e.readUint32(),this.horizOffN=e.readUint32(),this.horizOffD=e.readUint32(),this.vertOffN=e.readUint32(),this.vertOffD=e.readUint32()})),f.createBoxCtor("clli",(function(e){this.max_content_light_level=e.readUint16(),this.max_pic_average_light_level=e.readUint16()})),f.createFullBoxCtor("co64",(function(e){var t,i;if(t=e.readUint32(),this.chunk_offsets=[],0===this.version)for(i=0;i>7}else("rICC"===this.colour_type||"prof"===this.colour_type)&&(this.ICC_profile=e.readUint8Array(this.size-4))})),f.createFullBoxCtor("cprt",(function(e){this.parseLanguage(e),this.notice=e.readCString()})),f.createFullBoxCtor("cslg",(function(e){0===this.version&&(this.compositionToDTSShift=e.readInt32(),this.leastDecodeToDisplayDelta=e.readInt32(),this.greatestDecodeToDisplayDelta=e.readInt32(),this.compositionStartTime=e.readInt32(),this.compositionEndTime=e.readInt32())})),f.createFullBoxCtor("ctts",(function(e){var t,i;if(t=e.readUint32(),this.sample_counts=[],this.sample_offsets=[],0===this.version)for(i=0;i>6,this.bsid=t>>1&31,this.bsmod=(1&t)<<2|i>>6&3,this.acmod=i>>3&7,this.lfeon=i>>2&1,this.bit_rate_code=3&i|r>>5&7})),f.createBoxCtor("dec3",(function(e){var t=e.readUint16();this.data_rate=t>>3,this.num_ind_sub=7&t,this.ind_subs=[];for(var i=0;i>6,r.bsid=s>>1&31,r.bsmod=(1&s)<<4|n>>4&15,r.acmod=n>>1&7,r.lfeon=1&n,r.num_dep_sub=a>>1&15,r.num_dep_sub>0&&(r.chan_loc=(1&a)<<8|e.readUint8())}})),f.createFullBoxCtor("dfLa",(function(e){var t=[],i=["STREAMINFO","PADDING","APPLICATION","SEEKTABLE","VORBIS_COMMENT","CUESHEET","PICTURE","RESERVED"];for(this.parseFullHeader(e);;){var r=e.readUint8(),s=Math.min(127&r,i.length-1);if(s?e.readUint8Array(e.readUint24()):(e.readUint8Array(13),this.samplerate=e.readUint32()>>12,e.readUint8Array(20)),t.push(i[s]),128&r)break}this.numMetadataBlocks=t.length+" ("+t.join(", ")+")"})),f.createBoxCtor("dimm",(function(e){this.bytessent=e.readUint64()})),f.createBoxCtor("dmax",(function(e){this.time=e.readUint32()})),f.createBoxCtor("dmed",(function(e){this.bytessent=e.readUint64()})),f.createBoxCtor("dOps",(function(e){if(this.Version=e.readUint8(),this.OutputChannelCount=e.readUint8(),this.PreSkip=e.readUint16(),this.InputSampleRate=e.readUint32(),this.OutputGain=e.readInt16(),this.ChannelMappingFamily=e.readUint8(),0!==this.ChannelMappingFamily){this.StreamCount=e.readUint8(),this.CoupledCount=e.readUint8(),this.ChannelMapping=[];for(var t=0;t=4;)this.compatible_brands[i]=e.readString(4),t-=4,i++})),f.createFullBoxCtor("hdlr",(function(e){0===this.version&&(e.readUint32(),this.handler=e.readString(4),e.readUint32Array(3),this.name=e.readString(this.size-this.hdr_size-20),"\0"===this.name[this.name.length-1]&&(this.name=this.name.slice(0,-1)))})),f.createBoxCtor("hvcC",(function(e){var t,i,r,s;this.configurationVersion=e.readUint8(),s=e.readUint8(),this.general_profile_space=s>>6,this.general_tier_flag=(32&s)>>5,this.general_profile_idc=31&s,this.general_profile_compatibility=e.readUint32(),this.general_constraint_indicator=e.readUint8Array(6),this.general_level_idc=e.readUint8(),this.min_spatial_segmentation_idc=4095&e.readUint16(),this.parallelismType=3&e.readUint8(),this.chroma_format_idc=3&e.readUint8(),this.bit_depth_luma_minus8=7&e.readUint8(),this.bit_depth_chroma_minus8=7&e.readUint8(),this.avgFrameRate=e.readUint16(),s=e.readUint8(),this.constantFrameRate=s>>6,this.numTemporalLayers=(13&s)>>3,this.temporalIdNested=(4&s)>>2,this.lengthSizeMinusOne=3&s,this.nalu_arrays=[];var n=e.readUint8();for(t=0;t>7,a.nalu_type=63&s;var o=e.readUint16();for(i=0;i>4&15,this.length_size=15&t,t=e.readUint8(),this.base_offset_size=t>>4&15,1===this.version||2===this.version?this.index_size=15&t:this.index_size=0,this.items=[];var i=0;if(this.version<2)i=e.readUint16();else{if(2!==this.version)throw"version of iloc box not supported";i=e.readUint32()}for(var r=0;r>7,this.axis=1&t})),f.createFullBoxCtor("infe",(function(e){if(0!==this.version&&1!==this.version||(this.item_ID=e.readUint16(),this.item_protection_index=e.readUint16(),this.item_name=e.readCString(),this.content_type=e.readCString(),this.content_encoding=e.readCString()),1===this.version)return this.extension_type=e.readString(4),n.warn("BoxParser","Cannot parse extension type"),void e.seek(this.start+this.size);this.version>=2&&(2===this.version?this.item_ID=e.readUint16():3===this.version&&(this.item_ID=e.readUint32()),this.item_protection_index=e.readUint16(),this.item_type=e.readString(4),this.item_name=e.readCString(),"mime"===this.item_type?(this.content_type=e.readCString(),this.content_encoding=e.readCString()):"uri "===this.item_type&&(this.item_uri_type=e.readCString()))})),f.createFullBoxCtor("ipma",(function(e){var t,i;for(entry_count=e.readUint32(),this.associations=[],t=0;t>7==1,1&this.flags?a.property_index=(127&n)<<8|e.readUint8():a.property_index=127&n}}})),f.createFullBoxCtor("iref",(function(e){var t,i;for(this.references=[];e.getPosition()>7,r.assignment_type=127&s,r.assignment_type){case 0:r.grouping_type=e.readString(4);break;case 1:r.grouping_type=e.readString(4),r.grouping_type_parameter=e.readUint32();break;case 2:case 3:break;case 4:r.sub_track_id=e.readUint32();break;default:n.warn("BoxParser","Unknown leva assignement type")}}})),f.createBoxCtor("lsel",(function(e){this.layer_id=e.readUint16()})),f.createBoxCtor("maxr",(function(e){this.period=e.readUint32(),this.bytes=e.readUint32()})),f.createBoxCtor("mdcv",(function(e){this.display_primaries=[],this.display_primaries[0]={},this.display_primaries[0].x=e.readUint16(),this.display_primaries[0].y=e.readUint16(),this.display_primaries[1]={},this.display_primaries[1].x=e.readUint16(),this.display_primaries[1].y=e.readUint16(),this.display_primaries[2]={},this.display_primaries[2].x=e.readUint16(),this.display_primaries[2].y=e.readUint16(),this.white_point={},this.white_point.x=e.readUint16(),this.white_point.y=e.readUint16(),this.max_display_mastering_luminance=e.readUint32(),this.min_display_mastering_luminance=e.readUint32()})),f.createFullBoxCtor("mdhd",(function(e){1==this.version?(this.creation_time=e.readUint64(),this.modification_time=e.readUint64(),this.timescale=e.readUint32(),this.duration=e.readUint64()):(this.creation_time=e.readUint32(),this.modification_time=e.readUint32(),this.timescale=e.readUint32(),this.duration=e.readUint32()),this.parseLanguage(e),e.readUint16()})),f.createFullBoxCtor("mehd",(function(e){1&this.flags&&(n.warn("BoxParser","mehd box incorrectly uses flags set to 1, converting version to 1"),this.version=1),1==this.version?this.fragment_duration=e.readUint64():this.fragment_duration=e.readUint32()})),f.createFullBoxCtor("meta",(function(e){this.boxes=[],f.ContainerBox.prototype.parse.call(this,e)})),f.createFullBoxCtor("mfhd",(function(e){this.sequence_number=e.readUint32()})),f.createFullBoxCtor("mfro",(function(e){this._size=e.readUint32()})),f.createFullBoxCtor("mvhd",(function(e){1==this.version?(this.creation_time=e.readUint64(),this.modification_time=e.readUint64(),this.timescale=e.readUint32(),this.duration=e.readUint64()):(this.creation_time=e.readUint32(),this.modification_time=e.readUint32(),this.timescale=e.readUint32(),this.duration=e.readUint32()),this.rate=e.readUint32(),this.volume=e.readUint16()>>8,e.readUint16(),e.readUint32Array(2),this.matrix=e.readUint32Array(9),e.readUint32Array(6),this.next_track_id=e.readUint32()})),f.createBoxCtor("npck",(function(e){this.packetssent=e.readUint32()})),f.createBoxCtor("nump",(function(e){this.packetssent=e.readUint64()})),f.createFullBoxCtor("padb",(function(e){var t=e.readUint32();this.padbits=[];for(var i=0;i0){var t=e.readUint32();this.kid=[];for(var i=0;i0&&(this.data=e.readUint8Array(r))})),f.createFullBoxCtor("clef",(function(e){this.width=e.readUint32(),this.height=e.readUint32()})),f.createFullBoxCtor("enof",(function(e){this.width=e.readUint32(),this.height=e.readUint32()})),f.createFullBoxCtor("prof",(function(e){this.width=e.readUint32(),this.height=e.readUint32()})),f.createContainerBoxCtor("tapt",null,["clef","prof","enof"]),f.createBoxCtor("rtp ",(function(e){this.descriptionformat=e.readString(4),this.sdptext=e.readString(this.size-this.hdr_size-4)})),f.createFullBoxCtor("saio",(function(e){1&this.flags&&(this.aux_info_type=e.readUint32(),this.aux_info_type_parameter=e.readUint32());var t=e.readUint32();this.offset=[];for(var i=0;i>7,this.avgRateFlag=t>>6&1,this.durationFlag&&(this.duration=e.readUint32()),this.avgRateFlag&&(this.accurateStatisticsFlag=e.readUint8(),this.avgBitRate=e.readUint16(),this.avgFrameRate=e.readUint16()),this.dependency=[];for(var i=e.readUint8(),r=0;r>7,this.num_leading_samples=127&t})),f.createSampleGroupCtor("rash",(function(e){if(this.operation_point_count=e.readUint16(),this.description_length!==2+(1===this.operation_point_count?2:6*this.operation_point_count)+9)n.warn("BoxParser","Mismatch in "+this.grouping_type+" sample group length"),this.data=e.readUint8Array(this.description_length-2);else{if(1===this.operation_point_count)this.target_rate_share=e.readUint16();else{this.target_rate_share=[],this.available_bitrate=[];for(var t=0;t>4,this.skip_byte_block=15&t,this.isProtected=e.readUint8(),this.Per_Sample_IV_Size=e.readUint8(),this.KID=f.parseHex16(e),this.constant_IV_size=0,this.constant_IV=0,1===this.isProtected&&0===this.Per_Sample_IV_Size&&(this.constant_IV_size=e.readUint8(),this.constant_IV=e.readUint8Array(this.constant_IV_size))})),f.createSampleGroupCtor("stsa",(function(e){n.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),f.createSampleGroupCtor("sync",(function(e){var t=e.readUint8();this.NAL_unit_type=63&t})),f.createSampleGroupCtor("tele",(function(e){var t=e.readUint8();this.level_independently_decodable=t>>7})),f.createSampleGroupCtor("tsas",(function(e){n.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),f.createSampleGroupCtor("tscl",(function(e){n.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),f.createSampleGroupCtor("vipr",(function(e){n.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),f.createFullBoxCtor("sbgp",(function(e){this.grouping_type=e.readString(4),1===this.version?this.grouping_type_parameter=e.readUint32():this.grouping_type_parameter=0,this.entries=[];for(var t=e.readUint32(),i=0;i>6,this.sample_depends_on[r]=t>>4&3,this.sample_is_depended_on[r]=t>>2&3,this.sample_has_redundancy[r]=3&t})),f.createFullBoxCtor("senc"),f.createFullBoxCtor("sgpd",(function(e){this.grouping_type=e.readString(4),n.debug("BoxParser","Found Sample Groups of type "+this.grouping_type),1===this.version?this.default_length=e.readUint32():this.default_length=0,this.version>=2&&(this.default_group_description_index=e.readUint32()),this.entries=[];for(var t=e.readUint32(),i=0;i>31&1,r.referenced_size=2147483647&s,r.subsegment_duration=e.readUint32(),s=e.readUint32(),r.starts_with_SAP=s>>31&1,r.SAP_type=s>>28&7,r.SAP_delta_time=268435455&s}})),f.SingleItemTypeReferenceBox=function(e,t,i,r){f.Box.call(this,e,t),this.hdr_size=i,this.start=r},f.SingleItemTypeReferenceBox.prototype=new f.Box,f.SingleItemTypeReferenceBox.prototype.parse=function(e){this.from_item_ID=e.readUint16();var t=e.readUint16();this.references=[];for(var i=0;i>4&15,this.sample_sizes[t+1]=15&r}else if(8===this.field_size)for(t=0;t0)for(i=0;i>4&15,this.default_skip_byte_block=15&t}this.default_isProtected=e.readUint8(),this.default_Per_Sample_IV_Size=e.readUint8(),this.default_KID=f.parseHex16(e),1===this.default_isProtected&&0===this.default_Per_Sample_IV_Size&&(this.default_constant_IV_size=e.readUint8(),this.default_constant_IV=e.readUint8Array(this.default_constant_IV_size))})),f.createFullBoxCtor("tfdt",(function(e){1==this.version?this.baseMediaDecodeTime=e.readUint64():this.baseMediaDecodeTime=e.readUint32()})),f.createFullBoxCtor("tfhd",(function(e){var t=0;this.track_id=e.readUint32(),this.size-this.hdr_size>t&&this.flags&f.TFHD_FLAG_BASE_DATA_OFFSET?(this.base_data_offset=e.readUint64(),t+=8):this.base_data_offset=0,this.size-this.hdr_size>t&&this.flags&f.TFHD_FLAG_SAMPLE_DESC?(this.default_sample_description_index=e.readUint32(),t+=4):this.default_sample_description_index=0,this.size-this.hdr_size>t&&this.flags&f.TFHD_FLAG_SAMPLE_DUR?(this.default_sample_duration=e.readUint32(),t+=4):this.default_sample_duration=0,this.size-this.hdr_size>t&&this.flags&f.TFHD_FLAG_SAMPLE_SIZE?(this.default_sample_size=e.readUint32(),t+=4):this.default_sample_size=0,this.size-this.hdr_size>t&&this.flags&f.TFHD_FLAG_SAMPLE_FLAGS?(this.default_sample_flags=e.readUint32(),t+=4):this.default_sample_flags=0})),f.createFullBoxCtor("tfra",(function(e){this.track_ID=e.readUint32(),e.readUint24();var t=e.readUint8();this.length_size_of_traf_num=t>>4&3,this.length_size_of_trun_num=t>>2&3,this.length_size_of_sample_num=3&t,this.entries=[];for(var i=e.readUint32(),r=0;r>8,e.readUint16(),this.matrix=e.readInt32Array(9),this.width=e.readUint32(),this.height=e.readUint32()})),f.createBoxCtor("tmax",(function(e){this.time=e.readUint32()})),f.createBoxCtor("tmin",(function(e){this.time=e.readUint32()})),f.createBoxCtor("totl",(function(e){this.bytessent=e.readUint32()})),f.createBoxCtor("tpay",(function(e){this.bytessent=e.readUint32()})),f.createBoxCtor("tpyl",(function(e){this.bytessent=e.readUint64()})),f.TrackGroupTypeBox.prototype.parse=function(e){this.parseFullHeader(e),this.track_group_id=e.readUint32()},f.createTrackGroupCtor("msrc"),f.TrackReferenceTypeBox=function(e,t,i,r){f.Box.call(this,e,t),this.hdr_size=i,this.start=r},f.TrackReferenceTypeBox.prototype=new f.Box,f.TrackReferenceTypeBox.prototype.parse=function(e){this.track_ids=e.readUint32Array((this.size-this.hdr_size)/4)},f.trefBox.prototype.parse=function(e){for(var t,i;e.getPosition()t&&this.flags&f.TRUN_FLAGS_DATA_OFFSET?(this.data_offset=e.readInt32(),t+=4):this.data_offset=0,this.size-this.hdr_size>t&&this.flags&f.TRUN_FLAGS_FIRST_FLAG?(this.first_sample_flags=e.readUint32(),t+=4):this.first_sample_flags=0,this.sample_duration=[],this.sample_size=[],this.sample_flags=[],this.sample_composition_time_offset=[],this.size-this.hdr_size>t)for(var i=0;i0&&(this.location=e.readCString())})),f.createUUIDBox("a5d40b30e81411ddba2f0800200c9a66",!0,!1,(function(e){this.LiveServerManifest=e.readString(this.size-this.hdr_size).replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")})),f.createUUIDBox("d08a4f1810f34a82b6c832d8aba183d3",!0,!1,(function(e){this.system_id=f.parseHex16(e);var t=e.readUint32();t>0&&(this.data=e.readUint8Array(t))})),f.createUUIDBox("a2394f525a9b4f14a2446c427c648df4",!0,!1),f.createUUIDBox("8974dbce7be74c5184f97148f9882554",!0,!1,(function(e){this.default_AlgorithmID=e.readUint24(),this.default_IV_size=e.readUint8(),this.default_KID=f.parseHex16(e)})),f.createUUIDBox("d4807ef2ca3946958e5426cb9e46a79f",!0,!1,(function(e){this.fragment_count=e.readUint8(),this.entries=[];for(var t=0;t>4,this.chromaSubsampling=t>>1&7,this.videoFullRangeFlag=1&t,this.colourPrimaries=e.readUint8(),this.transferCharacteristics=e.readUint8(),this.matrixCoefficients=e.readUint8(),this.codecIntializationDataSize=e.readUint16(),this.codecIntializationData=e.readUint8Array(this.codecIntializationDataSize)):(this.profile=e.readUint8(),this.level=e.readUint8(),t=e.readUint8(),this.bitDepth=t>>4&15,this.colorSpace=15&t,t=e.readUint8(),this.chromaSubsampling=t>>4&15,this.transferFunction=t>>1&7,this.videoFullRangeFlag=1&t,this.codecIntializationDataSize=e.readUint16(),this.codecIntializationData=e.readUint8Array(this.codecIntializationDataSize))})),f.createBoxCtor("vttC",(function(e){this.text=e.readString(this.size-this.hdr_size)})),f.createFullBoxCtor("vvcC",(function(e){var t,i,r={held_bits:void 0,num_held_bits:0,stream_read_1_bytes:function(e){this.held_bits=e.readUint8(),this.num_held_bits=8},stream_read_2_bytes:function(e){this.held_bits=e.readUint16(),this.num_held_bits=16},extract_bits:function(e){var t=this.held_bits>>this.num_held_bits-e&(1<=0;--i){var a=r.extract_bits(1);this.ptl_sublayer_present_mask|=a<1;++i)r.extract_bits(1);for(i=this.num_sublayers-2;i>=0;--i)this.ptl_sublayer_present_mask&1<>=1;t+=f.decimalToHex(r,0),t+=".",0===this.hvcC.general_tier_flag?t+="L":t+="H",t+=this.hvcC.general_level_idc;var s=!1,n="";for(e=5;e>=0;e--)(this.hvcC.general_constraint_indicator[e]||s)&&(n="."+f.decimalToHex(this.hvcC.general_constraint_indicator[e],0)+n,s=!0);t+=n}return t},f.vvc1SampleEntry.prototype.getCodec=f.vvi1SampleEntry.prototype.getCodec=function(){var e,t=f.SampleEntry.prototype.getCodec.call(this);if(this.vvcC){t+="."+this.vvcC.general_profile_idc,this.vvcC.general_tier_flag?t+=".H":t+=".L",t+=this.vvcC.general_level_idc;var i="";if(this.vvcC.general_constraint_info){var r,s=[],n=0;for(n|=this.vvcC.ptl_frame_only_constraint<<7,n|=this.vvcC.ptl_multilayer_enabled<<6,e=0;e>2&63,s.push(n),n&&(r=e),n=this.vvcC.general_constraint_info[e]>>2&3;if(void 0===r)i=".CA";else{i=".C";var a="ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",o=0,d=0;for(e=0;e<=r;++e)for(o=o<<8|s[e],d+=8;d>=5;){i+=a[o>>d-5&31],o&=(1<<(d-=5))-1}d&&(i+=a[31&(o<<=5-d)])}}t+=i}return t},f.mp4aSampleEntry.prototype.getCodec=function(){var e=f.SampleEntry.prototype.getCodec.call(this);if(this.esds&&this.esds.esd){var t=this.esds.esd.getOTI(),i=this.esds.esd.getAudioConfig();return e+"."+f.decimalToHex(t)+(i?"."+i:"")}return e},f.stxtSampleEntry.prototype.getCodec=function(){var e=f.SampleEntry.prototype.getCodec.call(this);return this.mime_format?e+"."+this.mime_format:e},f.vp08SampleEntry.prototype.getCodec=f.vp09SampleEntry.prototype.getCodec=function(){var e=f.SampleEntry.prototype.getCodec.call(this),t=this.vpcC.level;0==t&&(t="00");var i=this.vpcC.bitDepth;return 8==i&&(i="08"),e+".0"+this.vpcC.profile+"."+t+"."+i},f.av01SampleEntry.prototype.getCodec=function(){var e,t=f.SampleEntry.prototype.getCodec.call(this),i=this.av1C.seq_level_idx_0;return i<10&&(i="0"+i),2===this.av1C.seq_profile&&1===this.av1C.high_bitdepth?e=1===this.av1C.twelve_bit?"12":"10":this.av1C.seq_profile<=2&&(e=1===this.av1C.high_bitdepth?"10":"08"),t+"."+this.av1C.seq_profile+"."+i+(this.av1C.seq_tier_0?"H":"M")+"."+e},f.Box.prototype.writeHeader=function(e,t){this.size+=8,this.size>d&&(this.size+=8),"uuid"===this.type&&(this.size+=16),n.debug("BoxWriter","Writing box "+this.type+" of size: "+this.size+" at position "+e.getPosition()+(t||"")),this.size>d?e.writeUint32(1):(this.sizePosition=e.getPosition(),e.writeUint32(this.size)),e.writeString(this.type,null,4),"uuid"===this.type&&e.writeUint8Array(this.uuid),this.size>d&&e.writeUint64(this.size)},f.FullBox.prototype.writeHeader=function(e){this.size+=4,f.Box.prototype.writeHeader.call(this,e," v="+this.version+" f="+this.flags),e.writeUint8(this.version),e.writeUint24(this.flags)},f.Box.prototype.write=function(e){"mdat"===this.type?this.data&&(this.size=this.data.length,this.writeHeader(e),e.writeUint8Array(this.data)):(this.size=this.data?this.data.length:0,this.writeHeader(e),this.data&&e.writeUint8Array(this.data))},f.ContainerBox.prototype.write=function(e){this.size=0,this.writeHeader(e);for(var t=0;t=2&&e.writeUint32(this.default_sample_description_index),e.writeUint32(this.entries.length),t=0;t0)for(t=0;t+1t?1:0,this.flags=0,this.size=4,1===this.version&&(this.size+=4),this.writeHeader(e),1===this.version?e.writeUint64(this.baseMediaDecodeTime):e.writeUint32(this.baseMediaDecodeTime)},f.tfhdBox.prototype.write=function(e){this.version=0,this.size=4,this.flags&f.TFHD_FLAG_BASE_DATA_OFFSET&&(this.size+=8),this.flags&f.TFHD_FLAG_SAMPLE_DESC&&(this.size+=4),this.flags&f.TFHD_FLAG_SAMPLE_DUR&&(this.size+=4),this.flags&f.TFHD_FLAG_SAMPLE_SIZE&&(this.size+=4),this.flags&f.TFHD_FLAG_SAMPLE_FLAGS&&(this.size+=4),this.writeHeader(e),e.writeUint32(this.track_id),this.flags&f.TFHD_FLAG_BASE_DATA_OFFSET&&e.writeUint64(this.base_data_offset),this.flags&f.TFHD_FLAG_SAMPLE_DESC&&e.writeUint32(this.default_sample_description_index),this.flags&f.TFHD_FLAG_SAMPLE_DUR&&e.writeUint32(this.default_sample_duration),this.flags&f.TFHD_FLAG_SAMPLE_SIZE&&e.writeUint32(this.default_sample_size),this.flags&f.TFHD_FLAG_SAMPLE_FLAGS&&e.writeUint32(this.default_sample_flags)},f.tkhdBox.prototype.write=function(e){this.version=0,this.size=80,this.writeHeader(e),e.writeUint32(this.creation_time),e.writeUint32(this.modification_time),e.writeUint32(this.track_id),e.writeUint32(0),e.writeUint32(this.duration),e.writeUint32(0),e.writeUint32(0),e.writeInt16(this.layer),e.writeInt16(this.alternate_group),e.writeInt16(this.volume<<8),e.writeUint16(0),e.writeInt32Array(this.matrix),e.writeUint32(this.width),e.writeUint32(this.height)},f.trexBox.prototype.write=function(e){this.version=0,this.flags=0,this.size=20,this.writeHeader(e),e.writeUint32(this.track_id),e.writeUint32(this.default_sample_description_index),e.writeUint32(this.default_sample_duration),e.writeUint32(this.default_sample_size),e.writeUint32(this.default_sample_flags)},f.trunBox.prototype.write=function(e){this.version=0,this.size=4,this.flags&f.TRUN_FLAGS_DATA_OFFSET&&(this.size+=4),this.flags&f.TRUN_FLAGS_FIRST_FLAG&&(this.size+=4),this.flags&f.TRUN_FLAGS_DURATION&&(this.size+=4*this.sample_duration.length),this.flags&f.TRUN_FLAGS_SIZE&&(this.size+=4*this.sample_size.length),this.flags&f.TRUN_FLAGS_FLAGS&&(this.size+=4*this.sample_flags.length),this.flags&f.TRUN_FLAGS_CTS_OFFSET&&(this.size+=4*this.sample_composition_time_offset.length),this.writeHeader(e),e.writeUint32(this.sample_count),this.flags&f.TRUN_FLAGS_DATA_OFFSET&&(this.data_offset_position=e.getPosition(),e.writeInt32(this.data_offset)),this.flags&f.TRUN_FLAGS_FIRST_FLAG&&e.writeUint32(this.first_sample_flags);for(var t=0;t-1||e[i]instanceof f.Box||t[i]instanceof f.Box||void 0===e[i]||void 0===t[i]||"function"==typeof e[i]||"function"==typeof t[i]||e.subBoxNames&&e.subBoxNames.indexOf(i.slice(0,4))>-1||t.subBoxNames&&t.subBoxNames.indexOf(i.slice(0,4))>-1||"data"===i||"start"===i||"size"===i||"creation_time"===i||"modification_time"===i||f.DIFF_PRIMITIVE_ARRAY_PROP_NAMES.indexOf(i)>-1||e[i]===t[i]))return!1;return!0},f.boxEqual=function(e,t){if(!f.boxEqualFields(e,t))return!1;for(var i=0;i1)for(t=1;t-1&&this.fragmentedTracks.splice(t,1)},c.prototype.setExtractionOptions=function(e,t,i){var r=this.getTrackById(e);if(r){var s={};this.extractedTracks.push(s),s.id=e,s.user=t,s.trak=r,r.nextSample=0,s.nb_samples=1e3,s.samples=[],i&&i.nbSamples&&(s.nb_samples=i.nbSamples)}},c.prototype.unsetExtractionOptions=function(e){for(var t=-1,i=0;i-1&&this.extractedTracks.splice(t,1)},c.prototype.parse=function(){var e,t;if(!this.restoreParsePosition||this.restoreParsePosition())for(;;){if(this.hasIncompleteMdat&&this.hasIncompleteMdat()){if(this.processIncompleteMdat())continue;return}if(this.saveParsePosition&&this.saveParsePosition(),(e=f.parseOneBox(this.stream,false)).code===f.ERR_NOT_ENOUGH_DATA){if(this.processIncompleteBox){if(this.processIncompleteBox(e))continue;return}return}var i;switch(i="uuid"!==(t=e.box).type?t.type:t.uuid,this.boxes.push(t),i){case"mdat":this.mdats.push(t);break;case"moof":this.moofs.push(t);break;case"moov":this.moovStartFound=!0,0===this.mdats.length&&(this.isProgressive=!0);default:void 0!==this[i]&&n.warn("ISOFile","Duplicate Box of type: "+i+", overriding previous occurrence"),this[i]=t}this.updateUsedBytes&&this.updateUsedBytes(t,e)}},c.prototype.checkBuffer=function(e){if(null==e)throw"Buffer must be defined and non empty";if(void 0===e.fileStart)throw"Buffer must have a fileStart property";return 0===e.byteLength?(n.warn("ISOFile","Ignoring empty buffer (fileStart: "+e.fileStart+")"),this.stream.logBufferLevel(),!1):(n.info("ISOFile","Processing buffer (fileStart: "+e.fileStart+")"),e.usedBytes=0,this.stream.insertBuffer(e),this.stream.logBufferLevel(),!!this.stream.initialized()||(n.warn("ISOFile","Not ready to start parsing"),!1))},c.prototype.appendBuffer=function(e,t){var i;if(this.checkBuffer(e))return this.parse(),this.moovStartFound&&!this.moovStartSent&&(this.moovStartSent=!0,this.onMoovStart&&this.onMoovStart()),this.moov?(this.sampleListBuilt||(this.buildSampleLists(),this.sampleListBuilt=!0),this.updateSampleLists(),this.onReady&&!this.readySent&&(this.readySent=!0,this.onReady(this.getInfo())),this.processSamples(t),this.nextSeekPosition?(i=this.nextSeekPosition,this.nextSeekPosition=void 0):i=this.nextParsePosition,this.stream.getEndFilePositionAfter&&(i=this.stream.getEndFilePositionAfter(i))):i=this.nextParsePosition?this.nextParsePosition:0,this.sidx&&this.onSidx&&!this.sidxSent&&(this.onSidx(this.sidx),this.sidxSent=!0),this.meta&&(this.flattenItemInfo&&!this.itemListBuilt&&(this.flattenItemInfo(),this.itemListBuilt=!0),this.processItems&&this.processItems(this.onItem)),this.stream.cleanBuffers&&(n.info("ISOFile","Done processing buffer (fileStart: "+e.fileStart+") - next buffer to fetch should have a fileStart position of "+i),this.stream.logBufferLevel(),this.stream.cleanBuffers(),this.stream.logBufferLevel(!0),n.info("ISOFile","Sample data size in memory: "+this.getAllocatedSampleDataSize())),i},c.prototype.getInfo=function(){var e,t,i,r,s,n,a={},o=new Date("1904-01-01T00:00:00Z").getTime();if(this.moov)for(a.hasMoov=!0,a.duration=this.moov.mvhd.duration,a.timescale=this.moov.mvhd.timescale,a.isFragmented=null!=this.moov.mvex,a.isFragmented&&this.moov.mvex.mehd&&(a.fragment_duration=this.moov.mvex.mehd.fragment_duration),a.isProgressive=this.isProgressive,a.hasIOD=null!=this.moov.iods,a.brands=[],a.brands.push(this.ftyp.major_brand),a.brands=a.brands.concat(this.ftyp.compatible_brands),a.created=new Date(o+1e3*this.moov.mvhd.creation_time),a.modified=new Date(o+1e3*this.moov.mvhd.modification_time),a.tracks=[],a.audioTracks=[],a.videoTracks=[],a.subtitleTracks=[],a.metadataTracks=[],a.hintTracks=[],a.otherTracks=[],e=0;e0?a.mime+='video/mp4; codecs="':a.audioTracks&&a.audioTracks.length>0?a.mime+='audio/mp4; codecs="':a.mime+='application/mp4; codecs="',e=0;e=i.samples.length)&&(n.info("ISOFile","Sending fragmented data on track #"+r.id+" for samples ["+Math.max(0,i.nextSample-r.nb_samples)+","+(i.nextSample-1)+"]"),n.info("ISOFile","Sample data size in memory: "+this.getAllocatedSampleDataSize()),this.onSegment&&this.onSegment(r.id,r.user,r.segmentStream.buffer,i.nextSample,e||i.nextSample>=i.samples.length),r.segmentStream=null,r!==this.fragmentedTracks[t]))break}}if(null!==this.onSamples)for(t=0;t=i.samples.length)&&(n.debug("ISOFile","Sending samples on track #"+a.id+" for sample "+i.nextSample),this.onSamples&&this.onSamples(a.id,a.user,a.samples),a.samples=[],a!==this.extractedTracks[t]))break}}}},c.prototype.getBox=function(e){var t=this.getBoxes(e,!0);return t.length?t[0]:null},c.prototype.getBoxes=function(e,t){var i=[];return c._sweep.call(this,e,i,t),i},c._sweep=function(e,t,i){for(var r in this.type&&this.type==e&&t.push(this),this.boxes){if(t.length&&i)return;c._sweep.call(this.boxes[r],e,t,i)}},c.prototype.getTrackSamplesInfo=function(e){var t=this.getTrackById(e);return t?t.samples:void 0},c.prototype.getTrackSample=function(e,t){var i=this.getTrackById(e);return this.getSample(i,t)},c.prototype.releaseUsedSamples=function(e,t){var i=0,r=this.getTrackById(e);r.lastValidSample||(r.lastValidSample=0);for(var s=r.lastValidSample;se*s.timescale){l=r-1;break}t&&s.is_sync&&(d=r)}for(t&&(l=d),e=i.samples[l].cts,i.nextSample=l;i.samples[l].alreadyRead===i.samples[l].size&&i.samples[l+1];)l++;return a=i.samples[l].offset+i.samples[l].alreadyRead,n.info("ISOFile","Seeking to "+(t?"RAP":"")+" sample #"+i.nextSample+" on track "+i.tkhd.track_id+", time "+n.getDurationString(e,o)+" and offset: "+a),{offset:a,time:e/o}},c.prototype.seek=function(e,t){var i,r,s,a=this.moov,o={offset:1/0,time:1/0};if(this.moov){for(s=0;s-1){o=d;break}switch(o){case"Visual":if(s.add("vmhd").set("graphicsmode",0).set("opcolor",[0,0,0]),n.set("width",t.width).set("height",t.height).set("horizresolution",72<<16).set("vertresolution",72<<16).set("frame_count",1).set("compressorname",t.type+" Compressor").set("depth",24),t.avcDecoderConfigRecord){var p=new f.avcCBox,u=new a(t.avcDecoderConfigRecord);p.parse(u),n.addBox(p)}break;case"Audio":s.add("smhd").set("balance",t.balance||0),n.set("channel_count",t.channel_count||2).set("samplesize",t.samplesize||16).set("samplerate",t.samplerate||65536);break;case"Hint":s.add("hmhd");break;case"Subtitle":if(s.add("sthd"),"stpp"===t.type)n.set("namespace",t.namespace||"nonamespace").set("schema_location",t.schema_location||"").set("auxiliary_mime_types",t.auxiliary_mime_types||"");break;default:s.add("nmhd")}t.description&&n.addBox(t.description),t.description_boxes&&t.description_boxes.forEach((function(e){n.addBox(e)})),s.add("dinf").add("dref").addEntry((new f["url Box"]).set("flags",1));var c=s.add("stbl");return c.add("stsd").addEntry(n),c.add("stts").set("sample_counts",[]).set("sample_deltas",[]),c.add("stsc").set("first_chunk",[]).set("samples_per_chunk",[]).set("sample_description_index",[]),c.add("stco").set("chunk_offsets",[]),c.add("stsz").set("sample_sizes",[]),this.moov.mvex.add("trex").set("track_id",t.id).set("default_sample_description_index",t.default_sample_description_index||1).set("default_sample_duration",t.default_sample_duration||0).set("default_sample_size",t.default_sample_size||0).set("default_sample_flags",t.default_sample_flags||0),this.buildTrakSampleLists(i),t.id}},f.Box.prototype.computeSize=function(e){var t=e||new o;t.endianness=o.BIG_ENDIAN,this.write(t)},c.prototype.addSample=function(e,t,i){var r=i||{},s={},n=this.getTrackById(e);if(null!==n){s.number=n.samples.length,s.track_id=n.tkhd.track_id,s.timescale=n.mdia.mdhd.timescale,s.description_index=r.sample_description_index?r.sample_description_index-1:0,s.description=n.mdia.minf.stbl.stsd.entries[s.description_index],s.data=t,s.size=t.byteLength,s.alreadyRead=s.size,s.duration=r.duration||1,s.cts=r.cts||0,s.dts=r.dts||0,s.is_sync=r.is_sync||!1,s.is_leading=r.is_leading||0,s.depends_on=r.depends_on||0,s.is_depended_on=r.is_depended_on||0,s.has_redundancy=r.has_redundancy||0,s.degradation_priority=r.degradation_priority||0,s.offset=0,s.subsamples=r.subsamples,n.samples.push(s),n.samples_size+=s.size,n.samples_duration+=s.duration,n.first_dts||(n.first_dts=r.dts),this.processSamples();var a=this.createSingleSampleMoof(s);return this.addBox(a),a.computeSize(),a.trafs[0].truns[0].data_offset=a.size+8,this.add("mdat").data=new Uint8Array(t),s}},c.prototype.createSingleSampleMoof=function(e){var t=0;t=e.is_sync?1<<25:65536;var i=new f.moofBox;i.add("mfhd").set("sequence_number",this.nextMoofNumber),this.nextMoofNumber++;var r=i.add("traf"),s=this.getTrackById(e.track_id);return r.add("tfhd").set("track_id",e.track_id).set("flags",f.TFHD_FLAG_DEFAULT_BASE_IS_MOOF),r.add("tfdt").set("baseMediaDecodeTime",e.dts-(s.first_dts||0)),r.add("trun").set("flags",f.TRUN_FLAGS_DATA_OFFSET|f.TRUN_FLAGS_DURATION|f.TRUN_FLAGS_SIZE|f.TRUN_FLAGS_FLAGS|f.TRUN_FLAGS_CTS_OFFSET).set("data_offset",0).set("first_sample_flags",0).set("sample_count",1).set("sample_duration",[e.duration]).set("sample_size",[e.size]).set("sample_flags",[t]).set("sample_composition_time_offset",[e.cts-e.dts]),i},c.prototype.lastMoofIndex=0,c.prototype.samplesDataSize=0,c.prototype.resetTables=function(){var e,t,i,r,s,n;for(this.initial_duration=this.moov.mvhd.duration,this.moov.mvhd.duration=0,e=0;e=2&&(d=s[a].grouping_type+"/0",(o=new l(s[a].grouping_type,0)).is_fragment=!0,t.sample_groups_info[d]||(t.sample_groups_info[d]=o))}else for(a=0;a=2&&(d=r[a].grouping_type+"/0",o=new l(r[a].grouping_type,0),e.sample_groups_info[d]||(e.sample_groups_info[d]=o))},c.setSampleGroupProperties=function(e,t,i,r){var s,n;for(s in t.sample_groups=[],r){var a;if(t.sample_groups[s]={},t.sample_groups[s].grouping_type=r[s].grouping_type,t.sample_groups[s].grouping_type_parameter=r[s].grouping_type_parameter,i>=r[s].last_sample_in_run&&(r[s].last_sample_in_run<0&&(r[s].last_sample_in_run=0),r[s].entry_index++,r[s].entry_index<=r[s].sbgp.entries.length-1&&(r[s].last_sample_in_run+=r[s].sbgp.entries[r[s].entry_index].sample_count)),r[s].entry_index<=r[s].sbgp.entries.length-1?t.sample_groups[s].group_description_index=r[s].sbgp.entries[r[s].entry_index].group_description_index:t.sample_groups[s].group_description_index=-1,0!==t.sample_groups[s].group_description_index)a=r[s].fragment_description?r[s].fragment_description:r[s].description,t.sample_groups[s].group_description_index>0?(n=t.sample_groups[s].group_description_index>65535?(t.sample_groups[s].group_description_index>>16)-1:t.sample_groups[s].group_description_index-1,a&&n>=0&&(t.sample_groups[s].description=a.entries[n])):a&&a.version>=2&&a.default_group_description_index>0&&(t.sample_groups[s].description=a.entries[a.default_group_description_index-1])}},c.process_sdtp=function(e,t,i){t&&(e?(t.is_leading=e.is_leading[i],t.depends_on=e.sample_depends_on[i],t.is_depended_on=e.sample_is_depended_on[i],t.has_redundancy=e.sample_has_redundancy[i]):(t.is_leading=0,t.depends_on=0,t.is_depended_on=0,t.has_redundancy=0))},c.prototype.buildSampleLists=function(){var e,t;for(e=0;eb&&(v++,b<0&&(b=0),b+=n.sample_counts[v]),t>0?(e.samples[t-1].duration=n.sample_deltas[v],e.samples_duration+=e.samples[t-1].duration,A.dts=e.samples[t-1].dts+e.samples[t-1].duration):A.dts=0,a?(t>=w&&(S++,w<0&&(w=0),w+=a.sample_counts[S]),A.cts=e.samples[t].dts+a.sample_offsets[S]):A.cts=A.dts,o?(t==o.sample_numbers[U]-1?(A.is_sync=!0,U++):(A.is_sync=!1,A.degradation_priority=0),l&&l.entries[x].sample_delta+E==t+1&&(A.subsamples=l.entries[x].subsamples,E+=l.entries[x].sample_delta,x++)):A.is_sync=!0,c.process_sdtp(e.mdia.minf.stbl.sdtp,A,A.number),A.degradation_priority=p?p.priority[t]:0,l&&l.entries[x].sample_delta+E==t&&(A.subsamples=l.entries[x].subsamples,E+=l.entries[x].sample_delta),(h.length>0||f.length>0)&&c.setSampleGroupProperties(e,A,t,e.sample_groups_info)}t>0&&(e.samples[t-1].duration=Math.max(e.mdia.mdhd.duration-e.samples[t-1].dts,0),e.samples_duration+=e.samples[t-1].duration)}},c.prototype.updateSampleLists=function(){var e,t,i,r,s,n,a,o,d,l,h,p,u,m,_;if(void 0!==this.moov)for(;this.lastMoofIndex0&&c.initSampleGroups(p,h,h.sbgps,p.mdia.minf.stbl.sgpds,h.sgpds),t=0;t0?m.dts=p.samples[p.samples.length-2].dts+p.samples[p.samples.length-2].duration:(h.tfdt?m.dts=h.tfdt.baseMediaDecodeTime:m.dts=0,p.first_traf_merged=!0),m.cts=m.dts,g.flags&f.TRUN_FLAGS_CTS_OFFSET&&(m.cts=m.dts+g.sample_composition_time_offset[i]),_=a,g.flags&f.TRUN_FLAGS_FLAGS?_=g.sample_flags[i]:0===i&&g.flags&f.TRUN_FLAGS_FIRST_FLAG&&(_=g.first_sample_flags),m.is_sync=!(_>>16&1),m.is_leading=_>>26&3,m.depends_on=_>>24&3,m.is_depended_on=_>>22&3,m.has_redundancy=_>>20&3,m.degradation_priority=65535&_;var y=!!(h.tfhd.flags&f.TFHD_FLAG_BASE_DATA_OFFSET),b=!!(h.tfhd.flags&f.TFHD_FLAG_DEFAULT_BASE_IS_MOOF),v=!!(g.flags&f.TRUN_FLAGS_DATA_OFFSET),w=0;w=y?h.tfhd.base_data_offset:b||0===t?l.start:o,m.offset=0===t&&0===i?v?w+g.data_offset:w:o,o=m.offset+m.size,(h.sbgps.length>0||h.sgpds.length>0||p.mdia.minf.stbl.sbgps.length>0||p.mdia.minf.stbl.sgpds.length>0)&&c.setSampleGroupProperties(p,m,m.number_in_traf,h.sample_groups_info)}}if(h.subs){p.has_fragment_subsamples=!0;var S=h.first_sample_index;for(t=0;t-1))return null;var a=(i=this.stream.buffers[s]).byteLength-(r.offset+r.alreadyRead-i.fileStart);if(r.size-r.alreadyRead<=a)return n.debug("ISOFile","Getting sample #"+t+" data (alreadyRead: "+r.alreadyRead+" offset: "+(r.offset+r.alreadyRead-i.fileStart)+" read size: "+(r.size-r.alreadyRead)+" full size: "+r.size+")"),o.memcpy(r.data.buffer,r.alreadyRead,i,r.offset+r.alreadyRead-i.fileStart,r.size-r.alreadyRead),i.usedBytes+=r.size-r.alreadyRead,this.stream.logBufferLevel(),r.alreadyRead=r.size,r;if(0===a)return null;n.debug("ISOFile","Getting sample #"+t+" partial data (alreadyRead: "+r.alreadyRead+" offset: "+(r.offset+r.alreadyRead-i.fileStart)+" read size: "+a+" full size: "+r.size+")"),o.memcpy(r.data.buffer,r.alreadyRead,i,r.offset+r.alreadyRead-i.fileStart,a),r.alreadyRead+=a,i.usedBytes+=a,this.stream.logBufferLevel()}},c.prototype.releaseSample=function(e,t){var i=e.samples[t];return i.data?(this.samplesDataSize-=i.size,i.data=null,i.alreadyRead=0,i.size):0},c.prototype.getAllocatedSampleDataSize=function(){return this.samplesDataSize},c.prototype.getCodecs=function(){var e,t="";for(e=0;e0&&(t+=","),t+=this.moov.traks[e].mdia.minf.stbl.stsd.entries[0].getCodec()}return t},c.prototype.getTrexById=function(e){var t;if(!this.moov||!this.moov.mvex)return null;for(t=0;t0&&(i.protection=s.ipro.protections[s.iinf.item_infos[e].protection_index-1]),s.iinf.item_infos[e].item_type?i.type=s.iinf.item_infos[e].item_type:i.type="mime",i.content_type=s.iinf.item_infos[e].content_type,i.content_encoding=s.iinf.item_infos[e].content_encoding;if(s.iloc)for(e=0;e0&&f.property_index-1-1))return null;var d=(t=this.stream.buffers[a]).byteLength-(s.offset+s.alreadyRead-t.fileStart);if(!(s.length-s.alreadyRead<=d))return n.debug("ISOFile","Getting item #"+e+" extent #"+r+" partial data (alreadyRead: "+s.alreadyRead+" offset: "+(s.offset+s.alreadyRead-t.fileStart)+" read size: "+d+" full extent size: "+s.length+" full item size: "+i.size+")"),o.memcpy(i.data.buffer,i.alreadyRead,t,s.offset+s.alreadyRead-t.fileStart,d),s.alreadyRead+=d,i.alreadyRead+=d,t.usedBytes+=d,this.stream.logBufferLevel(),null;n.debug("ISOFile","Getting item #"+e+" extent #"+r+" data (alreadyRead: "+s.alreadyRead+" offset: "+(s.offset+s.alreadyRead-t.fileStart)+" read size: "+(s.length-s.alreadyRead)+" full extent size: "+s.length+" full item size: "+i.size+")"),o.memcpy(i.data.buffer,i.alreadyRead,t,s.offset+s.alreadyRead-t.fileStart,s.length-s.alreadyRead),t.usedBytes+=s.length-s.alreadyRead,this.stream.logBufferLevel(),i.alreadyRead+=s.length-s.alreadyRead,s.alreadyRead=s.length}}return i.alreadyRead===i.size?i:null},c.prototype.releaseItem=function(e){var t=this.items[e];if(t.data){this.itemsDataSize-=t.size,t.data=null,t.alreadyRead=0;for(var i=0;i0?this.moov.traks[e].samples[0].duration:0),t.push(r)}return t},f.Box.prototype.printHeader=function(e){this.size+=8,this.size>d&&(this.size+=8),"uuid"===this.type&&(this.size+=16),e.log(e.indent+"size:"+this.size),e.log(e.indent+"type:"+this.type)},f.FullBox.prototype.printHeader=function(e){this.size+=4,f.Box.prototype.printHeader.call(this,e),e.log(e.indent+"version:"+this.version),e.log(e.indent+"flags:"+this.flags)},f.Box.prototype.print=function(e){this.printHeader(e)},f.ContainerBox.prototype.print=function(e){this.printHeader(e);for(var t=0;t>8)),e.log(e.indent+"matrix: "+this.matrix.join(", ")),e.log(e.indent+"next_track_id: "+this.next_track_id)},f.tkhdBox.prototype.print=function(e){f.FullBox.prototype.printHeader.call(this,e),e.log(e.indent+"creation_time: "+this.creation_time),e.log(e.indent+"modification_time: "+this.modification_time),e.log(e.indent+"track_id: "+this.track_id),e.log(e.indent+"duration: "+this.duration),e.log(e.indent+"volume: "+(this.volume>>8)),e.log(e.indent+"matrix: "+this.matrix.join(", ")),e.log(e.indent+"layer: "+this.layer),e.log(e.indent+"alternate_group: "+this.alternate_group),e.log(e.indent+"width: "+this.width),e.log(e.indent+"height: "+this.height)};var m={createFile:function(e,t){var i=void 0===e||e,r=new c(t);return r.discardMdatData=!i,r}};t.createFile=m.createFile}));function gi(e){return e.reduce(((e,t)=>256*e+t))}function yi(e){const t=[101,103,119,99],i=e.length-28,r=e.slice(i,i+t.length);return t.every(((e,t)=>e===r[t]))}_i.Log,_i.MP4BoxStream,_i.DataStream,_i.MultiBufferStream,_i.MPEG4DescriptorParser,_i.BoxParser,_i.XMLSubtitlein4Parser,_i.Textin4Parser,_i.ISOFile,_i.createFile;class bi{constructor(){this.s=null,this.a=null,this.l=0,this.c=0,this.u=1/0,this.A=!1,this.d=!1,this.r=4194304,this.n=new Uint8Array([30,158,90,33,244,57,83,165,2,70,35,87,215,231,226,108]),this.t=this.n.slice().reverse()}destroy(){this.s=null,this.a=null,this.l=0,this.c=0,this.u=1/0,this.A=!1,this.d=!1,this.r=4194304,this.n=null,this.t=null}transport(e){if(!this.s&&this.l>50)return e;if(this.l++,this.d)return e;const t=new Uint8Array(e);if(this.A){if(!(this.c~e))}(e.slice(i+32,i+32+t))]}return null}(t,this.t);if(!i)return e;const r=function(e){try{if("object"!=typeof WebAssembly||"function"!=typeof WebAssembly.instantiate)throw null;{const e=new WebAssembly.Module(Uint8Array.of(0,97,115,109,1,0,0,0));if(!(e instanceof WebAssembly.Module&&new WebAssembly.Instance(e)instanceof WebAssembly.Instance))throw null}}catch(e){return new Error("video_error_4")}let t;try{t={env:{__handle_stack_overflow:()=>e(new Error("video_error_1")),memory:new WebAssembly.Memory({initial:256,maximum:256})}}}catch(e){return new Error("video_error_5")}return t}(e);if(r instanceof Error)return console.error(r.message),this.d=!0,e;this.A=!0,this.u=i[1],yi(t)&&this.c++,WebAssembly.instantiate(i[2],r).then((e=>{if("function"!=typeof(t=e.instance.exports).parse||"object"!=typeof t.memory)return this.d=!0,void console.error("video_error_3");var t;this.s=e.instance.exports,this.a=new Uint8Array(this.s.memory.buffer)})).catch((e=>{this.d=!0,console.error("video_error_6")}))}return e}}const vi=0,wi=32,Si=16,Ui=[214,144,233,254,204,225,61,183,22,182,20,194,40,251,44,5,43,103,154,118,42,190,4,195,170,68,19,38,73,134,6,153,156,66,80,244,145,239,152,122,51,84,11,67,237,207,172,98,228,179,28,169,201,8,232,149,128,223,148,250,117,143,63,166,71,7,167,252,243,115,23,186,131,89,60,25,230,133,79,168,104,107,129,178,113,100,218,139,248,235,15,75,112,86,157,53,30,36,14,94,99,88,209,162,37,34,124,59,1,33,120,135,212,0,70,87,159,211,39,82,76,54,2,231,160,196,200,158,234,191,138,210,64,199,56,181,163,247,242,206,249,97,21,161,224,174,93,164,155,52,26,85,173,147,50,48,245,140,177,227,29,246,226,46,130,102,202,96,192,41,35,171,13,83,78,111,213,219,55,69,222,253,142,47,3,255,106,114,109,108,91,81,141,27,175,146,187,221,188,127,17,217,92,65,31,16,90,216,10,193,49,136,165,205,123,189,45,116,208,18,184,229,180,176,137,105,151,74,12,150,119,126,101,185,241,9,197,110,198,132,24,240,125,236,58,220,77,32,121,238,95,62,215,203,57,72],xi=[462357,472066609,943670861,1415275113,1886879365,2358483617,2830087869,3301692121,3773296373,4228057617,404694573,876298825,1347903077,1819507329,2291111581,2762715833,3234320085,3705924337,4177462797,337322537,808926789,1280531041,1752135293,2223739545,2695343797,3166948049,3638552301,4110090761,269950501,741554753,1213159005,1684763257];function Ei(e){const t=[];for(let i=0,r=e.length;i>>32-i}function Bi(e){return(255&Ui[e>>>24&255])<<24|(255&Ui[e>>>16&255])<<16|(255&Ui[e>>>8&255])<<8|255&Ui[255&e]}function Ti(e){return e^Ai(e,2)^Ai(e,10)^Ai(e,18)^Ai(e,24)}function ki(e){return e^Ai(e,13)^Ai(e,23)}function Ci(e,t,i){const r=new Array(4),s=new Array(4);for(let t=0;t<4;t++)s[0]=255&e[4*t],s[1]=255&e[4*t+1],s[2]=255&e[4*t+2],s[3]=255&e[4*t+3],r[t]=s[0]<<24|s[1]<<16|s[2]<<8|s[3];for(let e,t=0;t<32;t+=4)e=r[1]^r[2]^r[3]^i[t+0],r[0]^=Ti(Bi(e)),e=r[2]^r[3]^r[0]^i[t+1],r[1]^=Ti(Bi(e)),e=r[3]^r[0]^r[1]^i[t+2],r[2]^=Ti(Bi(e)),e=r[0]^r[1]^r[2]^i[t+3],r[3]^=Ti(Bi(e));for(let e=0;e<16;e+=4)t[e]=r[3-e/4]>>>24&255,t[e+1]=r[3-e/4]>>>16&255,t[e+2]=r[3-e/4]>>>8&255,t[e+3]=255&r[3-e/4]}function Di(e,t,i,{padding:r="pkcs#7",mode:s,iv:n=[],output:a="string"}={}){if("cbc"===s&&("string"==typeof n&&(n=Ei(n)),16!==n.length))throw new Error("iv is invalid");if("string"==typeof t&&(t=Ei(t)),16!==t.length)throw new Error("key is invalid");if(e="string"==typeof e?i!==vi?function(e){const t=[];for(let i=0,r=e.length;i>>6),t.push(128|63&r);else if(r<=55295||r>=57344&&r<=65535)t.push(224|r>>>12),t.push(128|r>>>6&63),t.push(128|63&r);else{if(!(r>=65536&&r<=1114111))throw t.push(r),new Error("input is not supported");i++,t.push(240|r>>>18&28),t.push(128|r>>>12&63),t.push(128|r>>>6&63),t.push(128|63&r)}}return t}(e):Ei(e):[...e],("pkcs#5"===r||"pkcs#7"===r)&&i!==vi){const t=Si-e.length%Si;for(let i=0;i=Si;){const t=e.slice(f,f+16),r=new Array(16);if("cbc"===s)for(let e=0;e1===(e=e.toString(16)).length?"0"+e:e)).join(""):function(e){const t=[];for(let i=0,r=e.length;i=240&&e[i]<=247?(t.push(String.fromCodePoint(((7&e[i])<<18)+((63&e[i+1])<<12)+((63&e[i+2])<<6)+(63&e[i+3]))),i+=3):e[i]>=224&&e[i]<=239?(t.push(String.fromCodePoint(((15&e[i])<<12)+((63&e[i+1])<<6)+(63&e[i+2]))),i+=2):e[i]>=192&&e[i]<=223?(t.push(String.fromCodePoint(((31&e[i])<<6)+(63&e[i+1]))),i++):t.push(String.fromCodePoint(e[i]));return t.join("")}(d):d}class Ii{on(e,t,i){const r=this.e||(this.e={});return(r[e]||(r[e]=[])).push({fn:t,ctx:i}),this}once(e,t,i){const r=this;function s(...n){r.off(e,s),t.apply(i,n)}return s._=t,this.on(e,s,i)}emit(e,...t){const i=((this.e||(this.e={}))[e]||[]).slice();for(let e=0;e{delete i[e]})),void delete this.e;const r=i[e],s=[];if(r&&t)for(let e=0,i=r.length;e=2&&!this.isDestroyed;)if(255==this.tempBuffer[this.parsedOffset]){if(!(!1&this.tempBuffer[this.parsedOffset+1])){this.versionLayer=this.tempBuffer[this.parsedOffset+1],this.state=Fi.findFirstStartCode,this.fisrtStartCodeOffset=this.parsedOffset,this.parsedOffset+=2,e=!0;break}this.parsedOffset++}else this.parsedOffset++;if(e)continue;break}if(this.state==Fi.findFirstStartCode){let e=!1;for(;this.tempBuffer.length-this.parsedOffset>=2&&!this.isDestroyed;)if(255==this.tempBuffer[this.parsedOffset]){if(this.tempBuffer[this.parsedOffset+1]==this.versionLayer){this.state=Fi.findSecondStartCode,this.secondStartCodeOffset=this.parsedOffset,this.parsedOffset+=2,e=!0;break}this.parsedOffset++}else this.parsedOffset++;if(e)continue;break}if(this.state==Fi.findSecondStartCode){let e=this.tempBuffer.slice(this.fisrtStartCodeOffset,this.secondStartCodeOffset);this.emit("data",e,t),this.tempBuffer=this.tempBuffer.slice(this.secondStartCodeOffset),this.fisrtStartCodeOffset=0,this.parsedOffset=2,this.state=Fi.findFirstStartCode}}}}function Pi(e,t,i){for(let r=2;re+t.byteLength),0));let i=0;return e.forEach((e=>{t.set(e,i),i+=e.byteLength})),t}class Ri{static init(){Ri.types={avc1:[],avcC:[],hvc1:[],hvcC:[],av01:[],av1C:[],btrt:[],dinf:[],dref:[],esds:[],ftyp:[],hdlr:[],mdat:[],mdhd:[],mdia:[],mfhd:[],minf:[],moof:[],moov:[],mp4a:[],mvex:[],mvhd:[],sdtp:[],stbl:[],stco:[],stsc:[],stsd:[],stsz:[],stts:[],tfdt:[],tfhd:[],traf:[],trak:[],trun:[],trex:[],tkhd:[],vmhd:[],smhd:[],".mp3":[],Opus:[],dOps:[],"ac-3":[],dac3:[],"ec-3":[],dec3:[]};for(let e in Ri.types)Ri.types.hasOwnProperty(e)&&(Ri.types[e]=[e.charCodeAt(0),e.charCodeAt(1),e.charCodeAt(2),e.charCodeAt(3)]);let e=Ri.constants={};e.FTYP=new Uint8Array([105,115,111,109,0,0,0,1,105,115,111,109,97,118,99,49]),e.STSD_PREFIX=new Uint8Array([0,0,0,0,0,0,0,1]),e.STTS=new Uint8Array([0,0,0,0,0,0,0,0]),e.STSC=e.STCO=e.STTS,e.STSZ=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0]),e.HDLR_VIDEO=new Uint8Array([0,0,0,0,0,0,0,0,118,105,100,101,0,0,0,0,0,0,0,0,0,0,0,0,86,105,100,101,111,72,97,110,100,108,101,114,0]),e.HDLR_AUDIO=new Uint8Array([0,0,0,0,0,0,0,0,115,111,117,110,0,0,0,0,0,0,0,0,0,0,0,0,83,111,117,110,100,72,97,110,100,108,101,114,0]),e.DREF=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,12,117,114,108,32,0,0,0,1]),e.SMHD=new Uint8Array([0,0,0,0,0,0,0,0]),e.VMHD=new Uint8Array([0,0,0,1,0,0,0,0,0,0,0,0])}static box(e){let t=8,i=null,r=Array.prototype.slice.call(arguments,1),s=r.length;for(let e=0;e>>24&255,i[1]=t>>>16&255,i[2]=t>>>8&255,i[3]=255&t,i.set(e,4);let n=8;for(let e=0;e>>24&255,e>>>16&255,e>>>8&255,255&e,t>>>24&255,t>>>16&255,t>>>8&255,255&t,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255]))}static trak(e){return Ri.box(Ri.types.trak,Ri.tkhd(e),Ri.mdia(e))}static tkhd(e){let t=e.id,i=e.duration,r=e.presentWidth,s=e.presentHeight;return Ri.box(Ri.types.tkhd,new Uint8Array([0,0,0,7,0,0,0,0,0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t,0,0,0,0,i>>>24&255,i>>>16&255,i>>>8&255,255&i,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,r>>>8&255,255&r,0,0,s>>>8&255,255&s,0,0]))}static mdia(e){return Ri.box(Ri.types.mdia,Ri.mdhd(e),Ri.hdlr(e),Ri.minf(e))}static mdhd(e){let t=e.timescale,i=e.duration;return Ri.box(Ri.types.mdhd,new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t,i>>>24&255,i>>>16&255,i>>>8&255,255&i,85,196,0,0]))}static hdlr(e){let t=null;return t="audio"===e.type?Ri.constants.HDLR_AUDIO:Ri.constants.HDLR_VIDEO,Ri.box(Ri.types.hdlr,t)}static minf(e){let t=null;return t="audio"===e.type?Ri.box(Ri.types.smhd,Ri.constants.SMHD):Ri.box(Ri.types.vmhd,Ri.constants.VMHD),Ri.box(Ri.types.minf,t,Ri.dinf(),Ri.stbl(e))}static dinf(){return Ri.box(Ri.types.dinf,Ri.box(Ri.types.dref,Ri.constants.DREF))}static stbl(e){return Ri.box(Ri.types.stbl,Ri.stsd(e),Ri.box(Ri.types.stts,Ri.constants.STTS),Ri.box(Ri.types.stsc,Ri.constants.STSC),Ri.box(Ri.types.stsz,Ri.constants.STSZ),Ri.box(Ri.types.stco,Ri.constants.STCO))}static stsd(e){return"audio"===e.type?"mp3"===e.audioType?Ri.box(Ri.types.stsd,Ri.constants.STSD_PREFIX,Ri.mp3(e)):Ri.box(Ri.types.stsd,Ri.constants.STSD_PREFIX,Ri.mp4a(e)):"avc"===e.videoType?Ri.box(Ri.types.stsd,Ri.constants.STSD_PREFIX,Ri.avc1(e)):Ri.box(Ri.types.stsd,Ri.constants.STSD_PREFIX,Ri.hvc1(e))}static mp3(e){let t=e.channelCount,i=e.audioSampleRate,r=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,t,0,16,0,0,0,0,i>>>8&255,255&i,0,0]);return Ri.box(Ri.types[".mp3"],r)}static mp4a(e){let t=e.channelCount,i=e.audioSampleRate,r=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,t,0,16,0,0,0,0,i>>>8&255,255&i,0,0]);return Ri.box(Ri.types.mp4a,r,Ri.esds(e))}static esds(e){let t=e.config||[],i=t.length,r=new Uint8Array([0,0,0,0,3,23+i,0,1,0,4,15+i,64,21,0,0,0,0,0,0,0,0,0,0,0,5].concat([i]).concat(t).concat([6,1,2]));return Ri.box(Ri.types.esds,r)}static avc1(e){let t=e.avcc;const i=e.codecWidth,r=e.codecHeight;let s=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,i>>>8&255,255&i,r>>>8&255,255&r,0,72,0,0,0,72,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,255,255]);return Ri.box(Ri.types.avc1,s,Ri.box(Ri.types.avcC,t))}static hvc1(e){let t=e.avcc;const i=e.codecWidth,r=e.codecHeight;let s=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,i>>>8&255,255&i,r>>>8&255,255&r,0,72,0,0,0,72,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,255,255]);return Ri.box(Ri.types.hvc1,s,Ri.box(Ri.types.hvcC,t))}static mvex(e){return Ri.box(Ri.types.mvex,Ri.trex(e))}static trex(e){let t=e.id,i=new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1]);return Ri.box(Ri.types.trex,i)}static moof(e,t){return Ri.box(Ri.types.moof,Ri.mfhd(e.sequenceNumber),Ri.traf(e,t))}static mfhd(e){let t=new Uint8Array([0,0,0,0,e>>>24&255,e>>>16&255,e>>>8&255,255&e]);return Ri.box(Ri.types.mfhd,t)}static traf(e,t){let i=e.id,r=Ri.box(Ri.types.tfhd,new Uint8Array([0,0,0,0,i>>>24&255,i>>>16&255,i>>>8&255,255&i])),s=Ri.box(Ri.types.tfdt,new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t])),n=Ri.sdtp(e),a=Ri.trun(e,n.byteLength+16+16+8+16+8+8);return Ri.box(Ri.types.traf,r,s,a,n)}static sdtp(e){let t=new Uint8Array(5),i=e.flags;return t[4]=i.isLeading<<6|i.dependsOn<<4|i.isDependedOn<<2|i.hasRedundancy,Ri.box(Ri.types.sdtp,t)}static trun(e,t){let i=new Uint8Array(28);t+=36,i.set([0,0,15,1,0,0,0,1,t>>>24&255,t>>>16&255,t>>>8&255,255&t],0);let r=e.duration,s=e.size,n=e.flags,a=e.cts;return i.set([r>>>24&255,r>>>16&255,r>>>8&255,255&r,s>>>24&255,s>>>16&255,s>>>8&255,255&s,n.isLeading<<2|n.dependsOn,n.isDependedOn<<6|n.hasRedundancy<<4|n.isNonSync,0,0,a>>>24&255,a>>>16&255,a>>>8&255,255&a],12),Ri.box(Ri.types.trun,i)}static mdat(e){return Ri.box(Ri.types.mdat,e)}}Ri.init(),Date.now||(Date.now=function(){return(new Date).getTime()}),function(e={},t={},i=!1){let r=[],s=[],n={},a=new AbortController,m=null,_=null,y=null,ke=null,Ce=null,Ge=null,Xe=!1,at=!1,ot=!!st(i),dt=!1,lt=null,pt=null,ct=null,St=[],Ut=null,xt=null,Et=0,At=0,Bt=null,Rt=null,Mt=0,Nt=0,Ot=!1,Gt=!1,Ht=!1,Vt=null,$t=null,Wt=null,Yt=!1,jt=()=>{const e=it();return{debug:e.debug,debugLevel:e.debugLevel,debugUuid:e.debugUuid,useOffscreen:e.useOffscreen,useWCS:e.useWCS,useMSE:e.useMSE,videoBuffer:e.videoBuffer,videoBufferDelay:e.videoBufferDelay,openWebglAlignment:e.openWebglAlignment,playType:e.playType,hasAudio:e.hasAudio,hasVideo:e.hasVideo,playbackRate:1,playbackForwardMaxRateDecodeIFrame:e.playbackForwardMaxRateDecodeIFrame,playbackIsCacheBeforeDecodeForFpsRender:e.playbackConfig.isCacheBeforeDecodeForFpsRender,sampleRate:0,networkDelay:e.networkDelay,visibility:!0,useSIMD:e.useSIMD,isRecording:!1,recordType:e.recordType,isNakedFlow:e.isNakedFlow,checkFirstIFrame:e.checkFirstIFrame,audioBufferSize:1024,isM7sCrypto:e.isM7sCrypto,m7sCryptoAudio:e.m7sCryptoAudio,cryptoKey:e.cryptoKey,cryptoIV:e.cryptoIV,isSm4Crypto:e.isSm4Crypto,sm4CryptoKey:e.sm4CryptoKey,isXorCrypto:e.isXorCrypto,isHls265:!1,isFlv:e.isFlv,isFmp4:e.isFmp4,isMpeg4:e.isMpeg4,isTs:e.isTs,isFmp4Private:e.isFmp4Private,isEmitSEI:e.isEmitSEI,isRecordTypeFlv:!1,isWasmMp4:!1,isChrome:!1,isDropSameTimestampGop:e.isDropSameTimestampGop,mseDecodeAudio:e.mseDecodeAudio,nakedFlowH265DemuxUseNew:e.nakedFlowH265DemuxUseNew,mseDecoderUseWorker:e.mseDecoderUseWorker,mseAutoCleanupSourceBuffer:e.mseAutoCleanupSourceBuffer,mseAutoCleanupMaxBackwardDuration:e.mseAutoCleanupMaxBackwardDuration,mseAutoCleanupMinBackwardDuration:e.mseAutoCleanupMinBackwardDuration,mseCorrectTimeDuration:e.mseCorrectTimeDuration}};"VideoEncoder"in self&&(n={hasInit:!1,isEmitInfo:!1,offscreenCanvas:null,offscreenCanvasCtx:null,decoder:new VideoDecoder({output:function(e){if(n.isEmitInfo||(Qt.debug.log("worker","Webcodecs Video Decoder initSize"),postMessage({cmd:v,w:e.codedWidth,h:e.codedHeight}),n.isEmitInfo=!0,n.offscreenCanvas=new OffscreenCanvas(e.codedWidth,e.codedHeight),n.offscreenCanvasCtx=n.offscreenCanvas.getContext("2d")),"function"==typeof e.createImageBitmap)e.createImageBitmap().then((t=>{n.offscreenCanvasCtx.drawImage(t,0,0,e.codedWidth,e.codedHeight);let i=n.offscreenCanvas.transferToImageBitmap();postMessage({cmd:w,buffer:i,delay:Qt.delay,ts:0},[i]),et(e)}));else{n.offscreenCanvasCtx.drawImage(e,0,0,e.codedWidth,e.codedHeight);let t=n.offscreenCanvas.transferToImageBitmap();postMessage({cmd:w,buffer:t,delay:Qt.delay,ts:0},[t]),et(e)}},error:function(e){Qt.debug.error("worker","VideoDecoder error",e)}}),decode:function(e,t,i){const r=e[0]>>4==1;if(n.hasInit){const i=new EncodedVideoChunk({data:e.slice(5),timestamp:t,type:r?Ee:Ae});n.decoder.decode(i)}else if(r&&0===e[1]){const t=15&e[0];postMessage({cmd:B,code:t});const i=new Uint8Array(e);postMessage({cmd:T,buffer:i,codecId:t},[i.buffer]);const r=function(e){let t=e.subarray(1,4),i="avc1.";for(let e=0;e<3;e++){let r=t[e].toString(16);r.length<2&&(r="0"+r),i+=r}return{codec:i,description:e}}(e.slice(5));n.decoder.configure(r),n.hasInit=!0}},reset(){n.hasInit=!1,n.isEmitInfo=!1,n.offscreenCanvas=null,n.offscreenCanvasCtx=null}});let qt=function(){if(Yt=!0,Qt.fetchStatus!==Fe||nt(Qt._opt.isChrome)){if(a)try{a.abort(),a=null}catch(e){Qt.debug.log("worker","abort catch",e)}}else a=null,Qt.debug.log("worker",`abort() and not abortController.abort() _status is ${Qt.fetchStatus} and _isChrome is ${Qt._opt.isChrome}`)},Kt={init(){Kt.lastBuf=null,Kt.vps=null,Kt.sps=null,Kt.pps=null,Kt.streamType=null,Kt.localDts=0,Kt.isSendSeqHeader=!1},destroy(){Kt.lastBuf=null,Kt.vps=null,Kt.sps=null,Kt.pps=null,Kt.streamType=null,Kt.localDts=0,Kt.isSendSeqHeader=!1},dispatch(e){const t=new Uint8Array(e);Kt.extractNALu$2(t)},getNaluDts(){let e=Kt.localDts;return Kt.localDts=Kt.localDts+40,e},getNaluAudioDts(){const e=Qt._opt.sampleRate,t=Qt._opt.audioBufferSize;return Kt.localDts+parseInt(t/e*1e3)},extractNALu(e){let t,i,r=0,s=e.byteLength,n=0,a=[];for(;r1)for(let e=0;e>1,i!==xe.vps&&i!==xe.sps&&i!==xe.pps||(t=we.h265)),t}(e),Vt=Kt.streamType===we.h265),Kt.streamType===we.h264){const t=Kt.handleAddNaluStartCode(e),i=Kt.extractNALu(t);if(0===i.length)return void Qt.debug.warn("worker","handleVideoNalu","h264 naluList.length === 0");const r=[];if(i.forEach((e=>{const t=yt(e);t===Ue.pps||t===Ue.sps?Kt.handleVideoH264Nalu(e):vt(t)&&r.push(e)})),1===r.length)Kt.handleVideoH264Nalu(r[0]);else{const e=function(e){if(0===e.length)return!1;const t=yt(e[0]);for(let i=1;i{Kt.handleVideoH264Nalu(e)}))}}else if(Kt.streamType===we.h265)if(Qt._opt.nakedFlowH265DemuxUseNew){const t=Kt.handleAddNaluStartCode(e),i=Kt.extractNALu(t);if(0===i.length)return void Qt.debug.warn("worker","handleVideoNalu","h265 naluList.length === 0");const r=[];if(i.forEach((e=>{const t=Lt(e);t===xe.pps||t===xe.sps||t===xe.vps?Kt.handleVideoH265Nalu(e):Pt(t)&&r.push(e)})),1===r.length)Kt.handleVideoH265Nalu(r[0]);else{const e=function(e){if(0===e.length)return!1;const t=Lt(e[0]);for(let i=1;i{Kt.handleVideoH265Nalu(e)}))}}else{Lt(e)===xe.pps?Kt.extractH265PPS(e):Kt.handleVideoH265Nalu(e)}},extractH264PPS(e){const t=Kt.handleAddNaluStartCode(e);Kt.extractNALu(t).forEach((e=>{bt(yt(e))?Kt.extractH264SEI(e):Kt.handleVideoH264Nalu(e)}))},extractH265PPS(e){const t=Kt.handleAddNaluStartCode(e);Kt.extractNALu(t).forEach((e=>{const t=Lt(e);t===xe.sei?Kt.extractH265SEI(e):Kt.handleVideoH265Nalu(e)}))},extractH264SEI(e){const t=Kt.handleAddNaluStartCode(e);Kt.extractNALu(t).forEach((e=>{Kt.handleVideoH264Nalu(e)}))},extractH265SEI(e){const t=Kt.handleAddNaluStartCode(e);Kt.extractNALu(t).forEach((e=>{Kt.handleVideoH265Nalu(e)}))},handleAddNaluStartCode(e){const t=[0,0,0,1],i=new Uint8Array(e.length+t.length);return i.set(t),i.set(e,t.length),i},handleVideoH264Nalu(e){const t=yt(e);switch(t){case Ue.sps:Kt.sps=e;break;case Ue.pps:Kt.pps=e}if(Kt.isSendSeqHeader){if(Kt.sps&&Kt.pps){const e=_t({sps:Kt.sps,pps:Kt.pps}),t=Kt.getNaluDts();Qt.decode(e,{type:q,ts:t,isIFrame:!0,cts:0}),Kt.sps=null,Kt.pps=null}if(vt(t)){const i=wt(t),r=Kt.getNaluDts(),s=function(e,t){let i=[];i[0]=t?23:39,i[1]=1,i[2]=0,i[3]=0,i[4]=0,i[5]=e.byteLength>>24&255,i[6]=e.byteLength>>16&255,i[7]=e.byteLength>>8&255,i[8]=255&e.byteLength;const r=new Uint8Array(i.length+e.byteLength);return r.set(i,0),r.set(e,i.length),r}(e,i);Kt.doDecode(s,{type:q,ts:r,isIFrame:i,cts:0})}else Qt.debug.warn("work",`handleVideoH264Nalu Avc Seq Head is ${t}`)}else if(Kt.sps&&Kt.pps){Kt.isSendSeqHeader=!0;const e=_t({sps:Kt.sps,pps:Kt.pps});Qt.decode(e,{type:q,ts:0,isIFrame:!0,cts:0}),Kt.sps=null,Kt.pps=null}},handleVideoH264NaluList(e,t,i){if(Kt.isSendSeqHeader){const r=Kt.getNaluDts(),s=gt(e.reduce(((e,t)=>{const i=kt(e),r=kt(t),s=new Uint8Array(i.byteLength+r.byteLength);return s.set(i,0),s.set(r,i.byteLength),s})),t);Kt.doDecode(s,{type:q,ts:r,isIFrame:t,cts:0}),Qt.debug.log("worker",`handleVideoH264NaluList list size is ${e.length} package length is ${s.byteLength} isIFrame is ${t},nalu type is ${i}, dts is ${r}`)}else Qt.debug.warn("worker","handleVideoH264NaluList isSendSeqHeader is false")},handleVideoH265Nalu(e){const t=Lt(e);switch(t){case xe.vps:Kt.vps=e;break;case xe.sps:Kt.sps=e;break;case xe.pps:Kt.pps=e}if(Kt.isSendSeqHeader){if(Kt.vps&&Kt.sps&&Kt.pps){const e=It({vps:Kt.vps,sps:Kt.sps,pps:Kt.pps}),t=Kt.getNaluDts();Qt.decode(e,{type:q,ts:t,isIFrame:!0,cts:0}),Kt.vps=null,Kt.sps=null,Kt.pps=null}if(Pt(t)){const i=zt(t),r=Kt.getNaluDts(),s=function(e,t){let i=[];i[0]=t?28:44,i[1]=1,i[2]=0,i[3]=0,i[4]=0,i[5]=e.byteLength>>24&255,i[6]=e.byteLength>>16&255,i[7]=e.byteLength>>8&255,i[8]=255&e.byteLength;const r=new Uint8Array(i.length+e.byteLength);return r.set(i,0),r.set(e,i.length),r}(e,i);Kt.doDecode(s,{type:q,ts:r,isIFrame:i,cts:0})}else Qt.debug.warn("work",`handleVideoH265Nalu HevcSeqHead is ${t}`)}else if(Kt.vps&&Kt.sps&&Kt.pps){Kt.isSendSeqHeader=!0;const e=It({vps:Kt.vps,sps:Kt.sps,pps:Kt.pps});Qt.decode(e,{type:q,ts:0,isIFrame:!0,cts:0}),Kt.vps=null,Kt.sps=null,Kt.pps=null}},handleVideoH265NaluList(e,t,i){if(Kt.isSendSeqHeader){const r=Kt.getNaluDts(),s=Ft(e.reduce(((e,t)=>{const i=kt(e),r=kt(t),s=new Uint8Array(i.byteLength+r.byteLength);return s.set(i,0),s.set(r,i.byteLength),s})),t);Kt.doDecode(s,{type:q,ts:r,isIFrame:t,cts:0}),Qt.debug.log("worker",`handleVideoH265NaluList list size is ${e.length} package length is ${s.byteLength} isIFrame is ${t},nalu type is ${i}, dts is ${r}`)}else Qt.debug.warn("worker","handleVideoH265NaluList isSendSeqHeader is false")},doDecode(e,t){Qt.calcNetworkDelay(t.ts),t.isIFrame&&Qt.calcIframeIntervalTimestamp(t.ts),postMessage({cmd:I,type:he,value:e.byteLength}),postMessage({cmd:I,type:fe,value:t.ts}),Qt.decode(e,t)}},Xt={LOG_NAME:"worker fmp4Demuxer",mp4Box:_i.createFile(),offset:0,videoTrackId:null,audioTrackId:null,isHevc:!1,listenMp4Box(){Xt.mp4Box.onReady=Xt.onReady,Xt.mp4Box.onError=Xt.onError,Xt.mp4Box.onSamples=Xt.onSamples},initTransportDescarmber(){Xt.transportDescarmber=new bi},_getSeqHeader(e){const t=Xt.mp4Box.getTrackById(e.id);for(const e of t.mdia.minf.stbl.stsd.entries)if(e.avcC||e.hvcC){const t=new _i.DataStream(void 0,0,_i.DataStream.BIG_ENDIAN);let i=[];e.avcC?(e.avcC.write(t),i=[23,0,0,0,0]):(Xt.isHevc=!0,Vt=!0,e.hvcC.write(t),i=[28,0,0,0,0]);const r=new Uint8Array(t.buffer,8),s=new Uint8Array(i.length+r.length);return s.set(i,0),s.set(r,i.length),s}return null},onReady(e){Qt.debug.log(Xt.LOG_NAME,"onReady()",e);const t=e.videoTracks[0],i=e.audioTracks[0];if(t){Xt.videoTrackId=t.id;const e=Xt._getSeqHeader(t);e&&(Qt.debug.log(Xt.LOG_NAME,"seqHeader"),Qt.decodeVideo(e,0,!0,0)),Xt.mp4Box.setExtractionOptions(t.id)}if(i&&Qt._opt.hasAudio){Xt.audioTrackId=i.id;const e=i.audio||{},t=Ye.indexOf(e.sample_rate),r=i.codec.replace("mp4a.40.","");Xt.mp4Box.setExtractionOptions(i.id);const s=He({profile:parseInt(r,10),sampleRate:t,channel:e.channel_count});Qt.debug.log(Xt.LOG_NAME,"aacADTSHeader"),Qt.decodeAudio(s,0)}Xt.mp4Box.start()},onError(e){Qt.debug.error(Xt.LOG_NAME,"mp4Box onError",e)},onSamples(e,t,i){if(e===Xt.videoTrackId)for(const e of i){const t=e.data,i=e.is_sync,r=1e3*e.cts/e.timescale;e.duration,e.timescale,i&&Qt.calcIframeIntervalTimestamp(r);let s=null;s=Xt.isHevc?Ft(t,i):gt(t,i),postMessage({cmd:I,type:he,value:s.byteLength}),postMessage({cmd:I,type:fe,value:r}),Qt.decode(s,{type:q,ts:r,isIFrame:i,cts:0})}else if(e===Xt.audioTrackId){if(Qt._opt.hasAudio)for(const e of i){const t=e.data,i=1e3*e.cts/e.timescale;e.duration,e.timescale;const r=new Uint8Array(t.byteLength+2);r.set([175,1],0),r.set(t,2),postMessage({cmd:I,type:le,value:r.byteLength}),Qt.decode(r,{type:j,ts:i,isIFrame:!1,cts:0})}}else Qt.debug.warn(Xt.LOG_NAME,"onSamples() trackId error",e)},dispatch(e){let t=e;"string"!=typeof e?"object"==typeof e?(Xt.transportDescarmber&&(t=Xt.transportDescarmber.transport(t)),t.buffer.fileStart=Xt.offset,Xt.offset+=t.byteLength,Xt.mp4Box.appendBuffer(t.buffer)):Qt.debug.warn(Xt.LOG_NAME,"dispatch()","data is not object",e):Qt.debug.warn(Xt.LOG_NAME,"dispatch()","data is string",e)},destroy(){Xt.mp4Box&&(Xt.mp4Box.flush(),Xt.mp4Box=null),Xt.transportDescarmber&&(Xt.transportDescarmber.destroy(),Xt.transportDescarmber=null),Xt.offset=0,Xt.videoTrackId=null,Xt.audioTrackId=null,Xt.isHevc=!1}},Zt={LOG_NAME:"worker mpeg4Demuxer",lastBuffer:new Uint8Array(0),parsedOffset:0,firstStartCodeOffset:0,secondStartCodeOffset:0,state:"init",hasInitVideoCodec:!1,localDts:0,dispatch(e){const t=new Uint8Array(e);Zt.extractNALu(t)},destroy(){Zt.lastBuffer=new Uint8Array(0),Zt.parsedOffset=0,Zt.firstStartCodeOffset=0,Zt.secondStartCodeOffset=0,Zt.state="init",Zt.hasInitVideoCodec=!1,Zt.localDts=0},extractNALu(e){if(!e||e.byteLength<1)return void Qt.debug.warn(Zt.LOG_NAME,"extractNALu() buffer error",e);const t=new Uint8Array(Zt.lastBuffer.length+e.length);for(t.set(Zt.lastBuffer,0),t.set(new Uint8Array(e),Zt.lastBuffer.length),Zt.lastBuffer=t;;){if("init"===Zt.state){let e=!1;for(;Zt.lastBuffer.length-Zt.parsedOffset>=4;)if(0===Zt.lastBuffer[Zt.parsedOffset])if(0===Zt.lastBuffer[Zt.parsedOffset+1])if(1===Zt.lastBuffer[Zt.parsedOffset+2]){if(182===Zt.lastBuffer[Zt.parsedOffset+3]){Zt.state="findFirstStartCode",Zt.firstStartCodeOffset=Zt.parsedOffset,Zt.parsedOffset+=4,e=!0;break}Zt.parsedOffset++}else Zt.parsedOffset++;else Zt.parsedOffset++;else Zt.parsedOffset++;if(e)continue;break}if("findFirstStartCode"===Zt.state){let e=!1;for(;Zt.lastBuffer.length-Zt.parsedOffset>=4;)if(0===Zt.lastBuffer[Zt.parsedOffset])if(0===Zt.lastBuffer[Zt.parsedOffset+1])if(1===Zt.lastBuffer[Zt.parsedOffset+2]){if(182===Zt.lastBuffer[Zt.parsedOffset+3]){Zt.state="findSecondStartCode",Zt.secondStartCodeOffset=Zt.parsedOffset,Zt.parsedOffset+=4,e=!0;break}Zt.parsedOffset++}else Zt.parsedOffset++;else Zt.parsedOffset++;else Zt.parsedOffset++;if(e)continue;break}if("findSecondStartCode"===Zt.state){if(!(Zt.lastBuffer.length-Zt.parsedOffset>0))break;{let e,t,i=192&Zt.lastBuffer[Zt.parsedOffset];e=0==i?Zt.secondStartCodeOffset-14:Zt.secondStartCodeOffset;let r=0==(192&Zt.lastBuffer[Zt.firstStartCodeOffset+4]);if(r){if(Zt.firstStartCodeOffset-14<0)return void Qt.debug.warn(Zt.LOG_NAME,"firstStartCodeOffset -14 is",Zt.firstStartCodeOffset-14);Zt.hasInitVideoCodec||(Zt.hasInitVideoCodec=!0,Qt.debug.log(Zt.LOG_NAME,"setCodec"),ti.setCodec(ve,"")),t=Zt.lastBuffer.subarray(Zt.firstStartCodeOffset-14,e)}else t=Zt.lastBuffer.subarray(Zt.firstStartCodeOffset,e);let s=Zt.getNaluDts();Zt.hasInitVideoCodec?(postMessage({cmd:I,type:he,value:t.byteLength}),postMessage({cmd:I,type:fe,value:s}),ti.decode(t,r?1:0,s)):Qt.debug.warn(Zt.LOG_NAME,"has not init video codec"),Zt.lastBuffer=Zt.lastBuffer.subarray(e),Zt.firstStartCodeOffset=0==i?14:0,Zt.parsedOffset=Zt.firstStartCodeOffset+4,Zt.state="findFirstStartCode"}}}},getNaluDts(){let e=Zt.localDts;return Zt.localDts=Zt.localDts+40,e}},Jt={isFirstDispatch:!0,_pmtId:-1,_remainingPacketData:null,_videoPesData:[],_audioPesData:[],_gopId:0,_videoPid:-1,_audioPid:-1,_codecType:ye,_audioCodecType:Se.AAC,_vps:null,_sps:null,_pps:null,TAG_NAME:"worker TsDemuxer",videoTrack:{samples:[]},audioTrack:{samples:[]},_baseDts:-1,_audioNextPts:void 0,_videoNextDts:void 0,_audioTimestampBreak:!1,_videoTimestampBreak:!1,_lastAudioExceptionGapDot:0,_lastAudioExceptionOverlapDot:0,_lastAudioExceptionLargeGapDot:0,_isSendAACSeqHeader:!1,init(){},dispatch(e){const t=new Uint8Array(e);Jt.demuxAndFix(t,Jt.isFirstDispatch,!0,0),Jt.isFirstDispatch&&(Jt.isFirstDispatch=!1)},_probe:e=>!!e.length&&(71===e[0]&&71===e[188]&&71===e[376]),_parsePES(e){const t=e[8];if(null==t||e.lengthe.length-6)return;let r,s;const n=e[7];return 192&n&&(r=536870912*(14&e[9])+4194304*(255&e[10])+16384*(254&e[11])+128*(255&e[12])+(254&e[13])/2,64&n?(s=536870912*(14&e[14])+4194304*(255&e[15])+16384*(254&e[16])+128*(255&e[17])+(254&e[18])/2,r-s>54e5&&(r=s)):s=r),{data:e.subarray(9+t),pts:r,dts:s,originalPts:r,originalDts:s}},demuxAndFix(e,t,i,r){Jt._demux(e,t,i),Jt._fix(r,t,i)},_initVideoTrack:()=>({samples:[]}),_initAudioTrack:()=>({samples:[]}),_demux(e,t=!1,i=!0){t&&(Jt._pmtId=-1,Jt.videoTrack=Jt._initVideoTrack(),Jt.audioTrack=Jt._initAudioTrack()),!i||t?(Jt._remainingPacketData=null,Jt._videoPesData=[],Jt._audioPesData=[]):(Jt.videoTrack.samples=[],Jt.audioTrack.samples=[],Jt._remainingPacketData&&(e=zi(Jt._remainingPacketData,e),Jt._remainingPacketData=null));let r=e.length;const s=r%188;s&&(Jt._remainingPacketData=e.subarray(r-s),r-=s);for(let t=0;t>4>1){if(s=t+5+e[t+4],s===t+188)continue}else s=t+4;switch(r){case 0:i&&(s+=e[s]+1),Jt._pmtId=(31&e[s+10])<<8|e[s+11];break;case Jt._pmtId:{i&&(s+=e[s]+1);const t=s+3+((15&e[s+1])<<8|e[s+2])-4;for(s+=12+((15&e[s+10])<<8|e[s+11]);s=t)return[];const s=[];for(;r=i)return;const s=r,n=[],a=(60&e[r+2])>>>2,o=We[a];if(!o)throw new Error(`Invalid sampling index: ${a}`);const d=1+((192&e[r+2])>>>6),l=(1&e[r+2])<<2|(192&e[r+3])>>>6;let h,f,p=0;const u=qe(o);for(;r+7>5,i-r=i?void 0:e.subarray(r),frames:n,samplingFrequencyIndex:a,sampleRate:o,objectType:d,channelCount:l,originCodec:`mp4a.40.${d}`}}(e.data,e.originalPts);if(t){if(Jt.audioTrack.codec=t.codec,Jt.audioTrack.sampleRate=t.sampleRate,Jt.audioTrack.channelCount=t.channelCount,!Jt._isSendAACSeqHeader){const e=He({profile:t.objectType,sampleRate:t.samplingFrequencyIndex,channel:t.channelCount});Jt._isSendAACSeqHeader=!0,Qt.debug.log(Jt.TAG_NAME,"aac seq header",`profile: ${t.objectType}, sampleRate:${t.sampleRate},sampleRateIndex: ${t.samplingFrequencyIndex}, channel: ${t.channelCount}`),Qt.decodeAudio(e,0)}if(Jt._isSendAACSeqHeader){const e=[];t.frames.forEach((t=>{const i=t.pts,r=new Uint8Array(t.data.length+2);r.set([175,1],0),r.set(t.data,2);const s={type:j,pts:i,dts:i,payload:r};e.push(s)})),Jt.audioTrack.samples=Jt.audioTrack.samples.concat(e)}else Qt.debug.warn(Jt.TAG_NAME,"aac seq header not send")}else Qt.debug.warn(Jt.TAG_NAME,"aac parseADTS error")}Jt._audioPesData=[]}}else Qt.debug.warn(Jt.TAG_NAME,"Cannot parse audio pes",Jt._audioPesData)},_fix(e=0,t=!1,i=!0){e=Math.round(9e4*e);const r=Jt.videoTrack,s=Jt.audioTrack,n=r.samples,a=s.samples;if(!n.length&&!a.length)return;const o=n[0],d=a[0];let l=0;if(n.length&&a.length&&(l=o.dts-d.pts),Jt._baseDtsInited||Jt._calculateBaseDts(),t&&(Jt._calculateBaseDts(),Jt._baseDts-=e),!i){Jt._videoNextDts=l>0?e+l:e,Jt._audioNextPts=l>0?e:e-l;const t=o?o.dts-Jt._baseDts-Jt._videoNextDts:0,i=d?d.pts-Jt._baseDts-Jt._audioNextPts:0;Math.abs(t||i)>MAX_VIDEO_FRAME_DURATION&&(Jt._calculateBaseDts(Jt.audioTrack,Jt.videoTrack),Jt._baseDts-=e)}Jt._resetBaseDtsWhenStreamBreaked(),Jt._fixAudio(s),Jt._fixVideo(r);let h=r.samples.concat(s.samples);h=h.map((e=>(e.dts=Math.round(e.dts/90),e.pts=Math.round(e.pts/90),e.cts=e.pts-e.dts,e))).sort(((e,t)=>e.dts-t.dts)),h.forEach((e=>{const t=new Uint8Array(e.payload);delete e.payload,e.type===q?Jt._doDecodeVideo({...e,payload:t}):e.type===j&&Jt._doDecodeAudio({...e,payload:t})}))},_calculateBaseDts(){const e=Jt.audioTrack,t=Jt.videoTrack,i=e.samples,r=t.samples;if(!i.length&&!r.length)return!1;let s=1/0,n=1/0;i.length&&(e.baseDts=s=i[0].pts),r.length&&(t.baseDts=n=r[0].dts),Jt._baseDts=Math.min(s,n);const a=n-s;return Number.isFinite(a)&&Math.abs(a)>45e3&&Qt.debug.warn(Jt.TAG_NAME,`large av first frame gap,\n video pts: ${n},\n audio pts: ${s},\n base dts: ${Jt._baseDts},\n detect is: ${a}`),Jt._baseDtsInited=!0,!0},_resetBaseDtsWhenStreamBreaked(){if(Jt._baseDtsInited&&Jt._videoTimestampBreak&&Jt._audioTimestampBreak){if(!Jt._calculateBaseDts(Jt.audioTrack,Jt.videoTrack))return;Jt._baseDts-=Math.min(Jt._audioNextPts,Jt._videoNextDts),Jt._audioLastSample=null,Jt._videoLastSample=null,Jt._videoTimestampBreak=!1,Jt._audioTimestampBreak=!1}},_createVideoSample(e,t,i){if(!e.length)return;const r=Jt._codecType===be,s={isIFrame:!1,type:q,isHevc:r,vps:null,sps:null,pps:null,pts:t,dts:i,payload:null};e.forEach((e=>{const t=r?e[0]>>>1&63:31&e[0];switch(t){case 5:case 16:case 17:case 18:case 19:case 20:case 21:case 22:case 23:if(!r&&5!==t||r&&5===t)break;s.isIFrame=!0,Jt._gopId++;break;case 6:case 39:case 40:if(!r&&6!==t||r&&6===t)break;return void function(e,t){const i=e.length;let r=t?2:1,s=0,n=0,a="";for(;255===e[r];)s+=255,r++;for(s+=e[r++];255===e[r];)n+=255,r++;if(n+=e[r++],5===s&&i>r+16)for(let t=0;t<16;t++)a+=e[r].toString(16),r++;e.subarray(r)}(function(e){const t=e.byteLength,i=[];let r=1;for(;r>>8,n[7]=255&a;let o=8;n.set(e,8),o+=a,n[o]=1;let d=t.byteLength;n[o+1]=d>>>8,n[o+2]=255&d,n.set(t,o+3),o+=3+d,r&&(n[o]=252|s.chroma_format_idc,n[o+1]=248|s.bit_depth_luma-8,n[o+2]=248|s.bit_depth_chroma-8,n[o+3]=0,o+=4);const l=[23,0,0,0,0],h=new Uint8Array(l.length+n.byteLength);return h.set(l,0),h.set(n,l.length),h}({sps:s.sps,pps:s.pps})),n&&(Qt.debug.log(Jt.TAG_NAME,"_createVideoSample","seqHeader"),Qt.decodeVideo(n,q,Math.round(s.pts/90),!0,0)),s.isIFrame&&Qt.calcIframeIntervalTimestamp(Math.round(s.dts/90)),Jt.videoTrack.samples=Jt.videoTrack.samples.concat(s)},_fixAudio(e){const t=e.samples;t.length&&(t.forEach((e=>{e.pts-=Jt._baseDts,e.dts=e.pts})),Jt._doFixAudioInternal(e,t,9e4))},_fixVideo(e){const t=e.samples;if(!t.length)return;if(t.forEach((e=>{e.dts-=Jt._baseDts,e.pts-=Jt._baseDts})),void 0===Jt._videoNextDts){const e=t[0];Jt._videoNextDts=e.dts}const i=t.length;let r=0;const s=t[0],n=t[1],a=Jt._videoNextDts-s.dts;let o;Math.abs(a)>45e3&&(s.dts+=a,s.pts+=a,Qt.debug.warn(Jt.TAG_NAME,`large video gap between chunk,\n next dts is ${Jt._videoNextDts},\n first dts is ${s.dts},\n next dts is ${n.dts},\n duration is ${a}`),n&&Math.abs(n.dts-s.dts)>9e4&&(Jt._videoTimestampBreak=!0,t.forEach(((e,t)=>{0!==t&&(e.dts+=a,e.pts+=a)}))));const d=e.samples[0],l=e.samples[i-1];o=1===i?9e3:Math.floor((l.dts-d.dts)/(i-1));for(let s=0;s9e4||r<0){Jt._videoTimestampBreak=!0,r=Jt._audioTimestampBreak?o:Math.max(r,2700);const i=Jt._audioNextPts||0;a&&a.dts>i&&(r=o),Qt.debug.warn(Jt.TAG_NAME,`large video gap between frames,\n time is ${n/e.timescale},\n dts is ${n},\n origin dts is ${t[s].originalDts},\n next dts is ${Jt._videoNextDts},\n sample Duration is ${r} ,\n ref Sample DurationInt is ${o}`)}t[s].duration=r,Jt._videoNextDts+=r}},_doFixAudioInternal(e,t,i){e.sampleDuration||(e.sampleDuration=qe(e.timescale,i));const r=e.sampleDuration;if(void 0===Jt._audioNextPts){const e=t[0];Jt._audioNextPts=e.pts}for(let i=0;i=3*r&&a<=Ne&&!Je()){je(e.codec,e.channelCount)||t[0].data.subarray();const o=Math.floor(a/r);Math.abs(n.pts-Jt._lastAudioExceptionGapDot)>AUDIO_EXCETION_LOG_EMIT_DURATION&&(Jt._lastAudioExceptionGapDot=n.pts),Qt.debug.warn(Jt.TAG_NAME,`audio gap detected,\n pts is ${t.pts},\n originPts is ${t.originalPts},\n count is ${o},\n nextPts is ${s},\n ref sample duration is ${r}`);for(let e=0;e=-9e4?(Math.abs(n.pts-Jt._lastAudioExceptionOverlapDot)>Oe&&(Jt._lastAudioExceptionOverlapDot=n.pts,Qt.debug.warn(Jt.TAG_NAME,`audio overlap detected,\n pts is ${n.pts},\n originPts is ${n.originalPts},\n nextPts is ${s},\n ref sample duration is ${r}`)),t.splice(i,1),i--):(Math.abs(a)>=Ne&&(Jt._audioTimestampBreak=!0,Math.abs(n.pts-Jt._lastAudioExceptionLargeGapDot)>Oe&&(Jt._lastAudioExceptionLargeGapDot=n.pts,Qt.debug.warn(Jt.TAG_NAME,`large audio gap detected,\n time is ${n.pts/1e3}\n pts is ${n.pts},\n originPts is ${n.originalPts},\n nextPts is ${s},\n sample duration is ${a}\n ref sample duration is ${r}`))),n.dts=n.pts=s,Jt._audioNextPts+=r)}},_doDecodeVideo(e){const t=new Uint8Array(e.payload);let i=null;i=e.isHevc?Ft(t,e.isIFrame):gt(t,e.isIFrame),postMessage({cmd:I,type:he,value:i.byteLength}),postMessage({cmd:I,type:fe,value:e.dts});const r=e.pts-e.dts;let s=Qt.cryptoPayload(i,e.isIFrame);Qt.decode(s,{type:q,ts:e.dts,isIFrame:e.isIFrame,cts:r})},_doDecodeAudio(){const e=new Uint8Array(sample.payload);postMessage({cmd:I,type:le,value:e.byteLength});let t=e;st(Qt._opt.m7sCryptoAudio)&&(t=Qt.cryptoPayloadAudio(e)),Qt.decode(t,{type:j,ts:sample.dts,isIFrame:!1,cts:0})},destroy(){Jt.videoTrack=null,Jt.audioTrack=null,Jt.tempSampleListInfo={},Jt._baseDts=-1,Jt._baseDtsInited=!1,Jt._basefps=50,Jt._hasCalcFps=!1,Jt._audioNextPts=void 0,Jt._videoNextDts=void 0,Jt._audioTimestampBreak=!1,Jt._videoTimestampBreak=!1,Jt._lastAudioExceptionGapDot=0,Jt._lastAudioExceptionOverlapDot=0,Jt._lastAudioExceptionLargeGapDot=0,Jt._isForHls=!0,Jt._isSendAACSeqHeader=!1,Qt.debug.log(Jt.TAG_NAME,"destroy")}},Qt={isPlayer:!0,isPlayback:!1,dropping:!1,isPushDropping:!1,isWorkerFetch:!1,isDestroyed:!1,fetchStatus:Ie,_opt:jt(),mp3Demuxer:null,delay:-1,pushLatestDelay:-1,firstTimestamp:null,startTimestamp:null,preDelayTimestamp:null,stopId:null,streamFps:null,streamAudioFps:null,streamVideoFps:null,writableStream:null,networkDelay:0,webglObj:null,startStreamRateAndStatsInterval:function(){Qt.stopStreamRateAndStatsInterval(),y=setInterval((()=>{_&&_(0);const e=JSON.stringify({demuxBufferDelay:Qt.getVideoBufferLength(),audioDemuxBufferDelay:Qt.getAudioBufferLength(),flvBufferByteLength:Qt.getFlvBufferLength(),netBuf:Qt.networkDelay||0,pushLatestDelay:Qt.pushLatestDelay||0,latestDelay:Qt.delay,isStreamTsMoreThanLocal:dt});postMessage({cmd:I,type:ue,value:e})}),1e3)},stopStreamRateAndStatsInterval:function(){y&&(clearInterval(y),y=null)},useOffscreen:function(){return Qt._opt.useOffscreen&&"undefined"!=typeof OffscreenCanvas},getDelay:function(e,t){if(!e||Qt._opt.hasVideo&&!ot)return-1;if(t===j)return Qt.delay;if(Qt.preDelayTimestamp&&Qt.preDelayTimestamp>e)return Qt.preDelayTimestamp-e>1e3&&Qt.debug.warn("worker",`getDelay() and preDelayTimestamp is ${Qt.preDelayTimestamp} > timestamp is ${e} more than ${Qt.preDelayTimestamp-e}ms and return ${Qt.delay}`),Qt.preDelayTimestamp=e,Qt.delay;if(Qt.firstTimestamp){if(e){const t=Date.now()-Qt.startTimestamp,i=e-Qt.firstTimestamp;t>=i?(dt=!1,Qt.delay=t-i):(dt=!0,Qt.delay=i-t)}}else Qt.firstTimestamp=e,Qt.startTimestamp=Date.now(),Qt.delay=-1;return Qt.preDelayTimestamp=e,Qt.delay},getDelayNotUpdateDelay:function(e,t){if(!e||Qt._opt.hasVideo&&!ot)return-1;if(t===j)return Qt.pushLatestDelay;if(Qt.preDelayTimestamp&&Qt.preDelayTimestamp-e>1e3)return Qt.debug.warn("worker",`getDelayNotUpdateDelay() and preDelayTimestamp is ${Qt.preDelayTimestamp} > timestamp is ${e} more than ${Qt.preDelayTimestamp-e}ms and return -1`),-1;if(Qt.firstTimestamp){let t=-1;if(e){const i=Date.now()-Qt.startTimestamp,r=e-Qt.firstTimestamp;i>=r?(dt=!1,t=i-r):(dt=!0,t=r-i)}return t}return-1},resetDelay:function(){Qt.firstTimestamp=null,Qt.startTimestamp=null,Qt.delay=-1,Qt.dropping=!1},resetAllDelay:function(){Qt.resetDelay(),Qt.preDelayTimestamp=null},doDecode:function(e){Qt._opt.isEmitSEI&&e.type===q&&Qt.isWorkerFetch&&Qt.findSei(e.payload,e.ts),Qt._opt.useWCS&&Qt.useOffscreen()&&e.type===q&&n.decode?n.decode(e.payload,e.ts,e.cts):e.decoder.decode(e.payload,e.ts,e.isIFrame,e.cts)},decodeNext(e){if(0===r.length)return;const t=e.ts,s=r[0],n=e.type===q&&rt(e.payload);if(nt(i))n&&(Qt.debug.log("worker",`decode data type is ${e.type} and\n ts is ${t} next data type is ${s.type} ts is ${s.ts}\n isVideoSqeHeader is ${n}`),r.shift(),Qt.doDecode(s));else{const i=s.ts-t,a=s.type===j&&e.type===q;(i<=20||a||n)&&(Qt.debug.log("worker",`decode data type is ${e.type} and\n ts is ${t} next data type is ${s.type} ts is ${s.ts}\n diff is ${i} and isVideoAndNextAudio is ${a} and isVideoSqeHeader is ${n}`),r.shift(),Qt.doDecode(s))}},init:function(){Qt.debug.log("worker","init and opt is",JSON.stringify(Qt._opt));const e=Qt._opt.playType===p,t=Qt._opt.playType===u;if(Kt.init(),Qt.isPlayer=e,Qt.isPlayback=t,Qt.isPlaybackCacheBeforeDecodeForFpsRender())Qt.debug.log("worker","playback and playbackIsCacheBeforeDecodeForFpsRender is true");else{Qt.debug.log("worker","setInterval()");const t=Qt._opt.videoBuffer+Qt._opt.videoBufferDelay,i=()=>{let i=null;if(r.length){if(Qt.isPushDropping)return void Qt.debug.warn("worker",`loop() isPushDropping is true and bufferList length is ${r.length}`);if(Qt.dropping){for(i=r.shift(),Qt.debug.warn("worker",`loop() dropBuffer is dropping and isIFrame ${i.isIFrame} and delay is ${Qt.delay} and bufferlist is ${r.length}`);!i.isIFrame&&r.length;)i=r.shift();const e=Qt.getDelayNotUpdateDelay(i.ts,i.type);i.isIFrame&&e<=Qt.getNotDroppingDelayTs()&&(Qt.debug.log("worker","loop() is dropping = false, is iFrame"),Qt.dropping=!1,Qt.doDecode(i),Qt.decodeNext(i))}else if(Qt.isPlayback||Qt.isPlayUseMSE()||0===Qt._opt.videoBuffer)for(;r.length;)i=r.shift(),Qt.doDecode(i);else if(i=r[0],-1===Qt.getDelay(i.ts,i.type))Qt.debug.log("worker","loop() common dumex delay is -1 ,data.ts is",i.ts),r.shift(),Qt.doDecode(i),Qt.decodeNext(i);else if(Qt.delay>t&&e)Qt.hasIframeInBufferList()?(Qt.debug.log("worker",`delay is ${Qt.delay} > maxDelay ${t}, set dropping is true`),Qt.resetAllDelay(),Qt.dropping=!0,postMessage({cmd:L})):(r.shift(),Qt.doDecode(i),Qt.decodeNext(i));else for(;r.length;){if(i=r[0],!(Qt.getDelay(i.ts,i.type)>Qt._opt.videoBuffer)){Qt.delay<0&&Qt.debug.warn("worker",`loop() do not decode and delay is ${Qt.delay}, bufferList is ${r.length}`);break}r.shift(),Qt.doDecode(i)}}else-1!==Qt.delay&&Qt.debug.log("worker","loop() bufferList is empty and reset delay"),Qt.resetAllDelay()};Qt.stopId=setInterval((()=>{let e=(new Date).getTime();lt||(lt=e);const t=e-lt;t>100&&Qt.debug.warn("worker",`loop demux diff time is ${t}`),i(),lt=(new Date).getTime()}),20)}nt(Qt._opt.checkFirstIFrame)&&(ot=!0)},playbackCacheLoop:function(){Qt.stopId&&(clearInterval(Qt.stopId),Qt.stopId=null);const e=()=>{let e=null;r.length&&(e=r.shift(),Qt.doDecode(e))};e();const t=Math.ceil(1e3/(Qt.streamFps*Qt._opt.playbackRate));Qt.debug.log("worker",`playbackCacheLoop fragDuration is ${t}, streamFps is ${Qt.streamFps}, streamAudioFps is ${Qt.streamAudioFps} ,streamVideoFps is ${Qt.streamVideoFps} playbackRate is ${Qt._opt.playbackRate}`),Qt.stopId=setInterval(e,t)},close:function(){if(Qt.debug.log("worker","close"),Qt.isDestroyed=!0,qt(),!m||1!==m.readyState&&2!==m.readyState?m&&Qt.debug.log("worker",`close() and socket.readyState is ${m.readyState}`):(Yt=!0,m.close(1e3,"Client disconnecting")),m=null,Qt.stopStreamRateAndStatsInterval(),Qt.stopId&&(clearInterval(Qt.stopId),Qt.stopId=null),Qt.mp3Demuxer&&(Qt.mp3Demuxer.destroy(),Qt.mp3Demuxer=null),Qt.writableStream&&nt(Qt.writableStream.locked)&&Qt.writableStream.close().catch((e=>{Qt.debug.log("worker","close() and writableStream.close() error",e)})),Qt.writableStream=null,ei)try{ei.clear&&ei.clear(),ei=null}catch(e){Qt.debug.warn("worker","close() and audioDecoder.clear error",e)}if(ti)try{ti.clear&&ti.clear(),ti=null}catch(e){Qt.debug.warn("worker","close() and videoDecoder.clear error",e)}_=null,lt=null,dt=!1,n&&(n.reset&&n.reset(),n=null),Qt.firstTimestamp=null,Qt.startTimestamp=null,Qt.networkDelay=0,Qt.streamFps=null,Qt.streamAudioFps=null,Qt.streamVideoFps=null,Qt.delay=-1,Qt.pushLatestDelay=-1,Qt.preDelayTimestamp=null,Qt.dropping=!1,Qt.isPushDropping=!1,Qt.isPlayer=!0,Qt.isPlayback=!1,Qt.isWorkerFetch=!1,Qt._opt=jt(),Qt.webglObj&&(Qt.webglObj.destroy(),Qt.offscreenCanvas.removeEventListener("webglcontextlost",Qt.onOffscreenCanvasWebglContextLost),Qt.offscreenCanvas.removeEventListener("webglcontextrestored",Qt.onOffscreenCanvasWebglContextRestored),Qt.offscreenCanvas=null,Qt.offscreenCanvasGL=null,Qt.offscreenCanvasCtx=null),r=[],s=[],ke=null,Ce=null,Ge=null,Xe=!1,at=!1,ot=!1,Ot=!1,Gt=!1,Ht=!1,Vt=null,$t=null,St=[],Et=0,At=0,pt=null,ct=null,Bt=null,Rt=null,Wt=null,Mt=0,Nt=0,Ut=null,xt=null,Qt.fetchStatus=Ie,Kt.destroy(),Xt.destroy(),Zt.destroy(),Jt.destroy(),postMessage({cmd:N})},pushBuffer:function(e,t){if(t.type===j&&Ve(e)){if(Qt.debug.log("worker",`pushBuffer audio ts is ${t.ts}, isAacCodecPacket is true`),Qt._opt.isRecordTypeFlv){const t=new Uint8Array(e);postMessage({cmd:V,buffer:t},[t.buffer])}Qt.decodeAudio(e,t.ts)}else if(t.type===q&&t.isIFrame&&rt(e)){if(Qt.debug.log("worker",`pushBuffer video ts is ${t.ts}, isVideoSequenceHeader is true`),Qt._opt.isRecordTypeFlv){const t=new Uint8Array(e);postMessage({cmd:$,buffer:t},[t.buffer])}Qt.decodeVideo(e,t.ts,t.isIFrame,t.cts)}else{if(Qt._opt.isRecording)if(Qt._opt.isRecordTypeFlv){const i=new Uint8Array(e);postMessage({cmd:W,type:t.type,buffer:i,ts:t.ts},[i.buffer])}else if(Qt._opt.recordType===c)if(t.type===q){const i=new Uint8Array(e).slice(5);postMessage({cmd:k,buffer:i,isIFrame:t.isIFrame,ts:t.ts,cts:t.cts},[i.buffer])}else if(t.type===j&&Qt._opt.isWasmMp4){const i=new Uint8Array(e),r=$e(i)?i.slice(2):i.slice(1);postMessage({cmd:E,buffer:r,ts:t.ts},[r.buffer])}if(Qt.isPlayer&&Mt>0&&Rt>0&&t.type===q){const e=t.ts-Rt,i=Mt+Mt/2;e>i&&Qt.debug.log("worker",`pushBuffer video\n ts is ${t.ts}, preTimestamp is ${Rt},\n diff is ${e} and preTimestampDuration is ${Mt} and maxDiff is ${i}\n maybe trigger black screen or flower screen\n `)}if(Qt.isPlayer&&Rt>0&&t.type===q&&t.tsg&&(Qt.debug.warn("worker",`pushBuffer,\n preTimestamp is ${Rt}, options.ts is ${t.ts},\n diff is ${Rt-t.ts} more than 3600000,\n and resetAllDelay`),Qt.resetAllDelay(),Rt=null,Mt=0),Qt.isPlayer&&Rt>0&&t.ts<=Rt&&t.type===q&&(Qt.debug.warn("worker",`pushBuffer,\n options.ts is ${t.ts} less than (or equal) preTimestamp is ${Rt} and\n payloadBufferSize is ${e.byteLength} and prevPayloadBufferSize is ${Nt}`),Qt._opt.isDropSameTimestampGop&&ot)){const e=Qt.hasIframeInBufferList(),t=nt(Qt.isPushDropping);return Qt.debug.log("worker",`pushBuffer, isDropSameTimestampGop is true and\n hasIframe is ${e} and isNotPushDropping is ${t} and next dropBuffer`),void(e&&t?Qt.dropBuffer$2():(Qt.clearBuffer(!0),st(Qt._opt.checkFirstIFrame)&&st(i)&&postMessage({cmd:Y})))}if(Qt.isPlayer&&ot){const e=Qt._opt.videoBuffer+Qt._opt.videoBufferDelay,i=Qt.getDelayNotUpdateDelay(t.ts,t.type);Qt.pushLatestDelay=i,i>e&&Qt.delay0&&Qt.hasIframeInBufferList()&&!1===Qt.isPushDropping&&(Qt.debug.log("worker",`pushBuffer(), pushLatestDelay is ${i} more than ${e} and decoder.delay is ${Qt.delay} and has iIframe and next decoder.dropBuffer$2()`),Qt.dropBuffer$2())}if(Qt.isPlayer&&t.type===q&&(Rt>0&&(Mt=t.ts-Rt),Nt=e.byteLength,Rt=t.ts),t.type===j?r.push({ts:t.ts,payload:e,decoder:{decode:Qt.decodeAudio},type:j,isIFrame:!1}):t.type===q&&r.push({ts:t.ts,cts:t.cts,payload:e,decoder:{decode:Qt.decodeVideo},type:q,isIFrame:t.isIFrame}),Qt.isPlaybackCacheBeforeDecodeForFpsRender()&&(Qe(Qt.streamVideoFps)||Qe(Qt.streamAudioFps))){let e=Qt.streamVideoFps,t=Qt.streamAudioFps;if(Qe(Qt.streamVideoFps)&&(e=tt(r,q),e&&(Qt.streamVideoFps=e,postMessage({cmd:P,value:Qt.streamVideoFps}),Qt.streamFps=t?e+t:e,nt(Qt._opt.hasAudio)&&(Qt.debug.log("worker","playbackCacheBeforeDecodeForFpsRender, _opt.hasAudio is false and set streamAudioFps is 0"),Qt.streamAudioFps=0),Qt.playbackCacheLoop())),Qe(Qt.streamAudioFps)&&(t=tt(r,j),t&&(Qt.streamAudioFps=t,Qt.streamFps=e?e+t:t,Qt.playbackCacheLoop())),Qe(Qt.streamVideoFps)&&Qe(Qt.streamAudioFps)){const i=r.map((e=>({type:e.type,ts:e.ts})));Qt.debug.log("worker",`playbackCacheBeforeDecodeForFpsRender, calc streamAudioFps is ${t}, streamVideoFps is ${e}, bufferListLength is ${r.length}, and ts list is ${JSON.stringify(i)}`)}const i=Qt.getAudioBufferLength()>0,s=i?60:40;r.length>=s&&(Qt.debug.warn("worker",`playbackCacheBeforeDecodeForFpsRender, bufferListLength is ${r.length} more than ${s}, and hasAudio is ${i} an set streamFps is 25`),Qt.streamVideoFps=25,postMessage({cmd:P,value:Qt.streamVideoFps}),i?(Qt.streamAudioFps=25,Qt.streamFps=Qt.streamVideoFps+Qt.streamAudioFps):Qt.streamFps=Qt.streamVideoFps,Qt.playbackCacheLoop())}}},getVideoBufferLength(){let e=0;return r.forEach((t=>{t.type===q&&(e+=1)})),e},hasIframeInBufferList:()=>r.some((e=>e.type===q&&e.isIFrame)),isAllIframeInBufferList(){const e=Qt.getVideoBufferLength();let t=0;return r.forEach((e=>{e.type===q&&e.isIFrame&&(t+=1)})),e===t},getNotDroppingDelayTs:()=>Qt._opt.videoBuffer+Qt._opt.videoBufferDelay/2,getAudioBufferLength(){let e=0;return r.forEach((t=>{t.type===j&&(e+=1)})),e},getFlvBufferLength(){let e=0;return ke&&ke.buffer&&(e=ke.buffer.byteLength),Qt._opt.isNakedFlow&&Kt.lastBuf&&(e=Kt.lastBuf.byteLength),e},fetchStream:function(e,t){Qt.debug.log("worker","fetchStream, url is "+e,"options:",JSON.stringify(t)),Qt.isWorkerFetch=!0,t.isFlv?Qt._opt.isFlv=!0:t.isFmp4?Qt._opt.isFmp4=!0:t.isMpeg4?Qt._opt.isMpeg4=!0:t.isNakedFlow?Qt._opt.isNakedFlow=!0:t.isTs&&(Qt._opt.isTs=!0),_=Ze((e=>{postMessage({cmd:I,type:de,value:e})})),Qt.startStreamRateAndStatsInterval(),t.isFmp4&&(Xt.listenMp4Box(),Qt._opt.isFmp4Private&&Xt.initTransportDescarmber()),t.protocol===l?(ke=new ht(Qt.demuxFlv()),fetch(e,{signal:a.signal}).then((e=>{if(st(Yt))return Qt.debug.log("worker","request abort and run res.body.cancel()"),Qt.fetchStatus=Ie,void e.body.cancel();if(!function(e){return e.ok&&e.status>=200&&e.status<=299}(e))return Qt.debug.warn("worker",`fetch response status is ${e.status} and ok is ${e.ok} and emit error and next abort()`),qt(),void postMessage({cmd:I,type:_e.fetchError,value:`fetch response status is ${e.status} and ok is ${e.ok}`});if(postMessage({cmd:I,type:pe}),"undefined"!=typeof WritableStream)Qt.writableStream=new WritableStream({write:e=>a&&a.signal&&a.signal.aborted?(Qt.debug.log("worker","writableStream write() and abortController.signal.aborted is true so return"),void(Qt.fetchStatus=Le)):st(Yt)?(Qt.debug.log("worker","writableStream write() and requestAbort is true so return"),void(Qt.fetchStatus=Le)):(Qt.fetchStatus=Fe,_(e.byteLength),void(t.isFlv?ke.write(e):t.isFmp4?Qt.demuxFmp4(e):t.isMpeg4?Qt.demuxMpeg4(e):t.isTs&&Qt.demuxTs(e))),close:()=>{Qt.fetchStatus=Le,ke=null,qt(),postMessage({cmd:I,type:oe,value:h,msg:"fetch done"})},abort:e=>{if(a&&a.signal&&a.signal.aborted)return Qt.debug.log("worker","writableStream abort() and abortController.signal.aborted is true so return"),void(Qt.fetchStatus=Le);ke=null,e.name!==Te&&(qt(),postMessage({cmd:I,type:_e.fetchError,value:e.toString()}))}}),e.body.pipeTo(Qt.writableStream);else{const i=e.body.getReader(),r=()=>{i.read().then((({done:e,value:i})=>e?(Qt.fetchStatus=Le,ke=null,qt(),void postMessage({cmd:I,type:oe,value:h,msg:"fetch done"})):a&&a.signal&&a.signal.aborted?(Qt.debug.log("worker","fetchNext().then() and abortController.signal.aborted is true so return"),void(Qt.fetchStatus=Le)):st(Yt)?(Qt.debug.log("worker","fetchNext().then() and requestAbort is true so return"),void(Qt.fetchStatus=Le)):(Qt.fetchStatus=Fe,_(i.byteLength),t.isFlv?ke.write(i):t.isFmp4?Qt.demuxFmp4(i):t.isMpeg4&&Qt.demuxMpeg4(i),void r()))).catch((e=>{if(a&&a.signal&&a.signal.aborted)return Qt.debug.log("worker","fetchNext().catch() and abortController.signal.aborted is true so return"),void(Qt.fetchStatus=Le);ke=null,e.name!==Te&&(qt(),postMessage({cmd:I,type:_e.fetchError,value:e.toString()}))}))};r()}})).catch((e=>{a&&a.signal&&a.signal.aborted?Qt.debug.log("worker","fetch().catch() and abortController.signal.aborted is true so return"):e.name!==Te&&(qt(),postMessage({cmd:I,type:_e.fetchError,value:e.toString()}),ke=null)}))):t.protocol===d&&(t.isFlv&&(ke=new ht(Qt.demuxFlv())),m=new WebSocket(e),m.binaryType="arraybuffer",m.onopen=()=>{Qt.debug.log("worker","fetchStream, WebsocketStream socket open"),postMessage({cmd:I,type:pe}),postMessage({cmd:I,type:me})},m.onclose=e=>{Qt.debug.log("worker",`fetchStream, WebsocketStream socket close and code is ${e.code}`),1006===e.code&&Qt.debug.error("worker",`fetchStream, WebsocketStream socket close abnormally and code is ${e.code}`),st(Yt)?Qt.debug.log("worker","fetchStream, WebsocketStream socket close and requestAbort is true so return"):(ke=null,postMessage({cmd:I,type:oe,value:f,msg:e.code}))},m.onerror=e=>{Qt.debug.error("worker","fetchStream, WebsocketStream socket error",e),ke=null,postMessage({cmd:I,type:_e.websocketError,value:e.isTrusted?"websocket user aborted":"websocket error"})},m.onmessage=e=>{_(e.data.byteLength),t.isFlv?ke.write(e.data):t.isFmp4?Qt.demuxFmp4(e.data):t.isMpeg4?Qt.demuxMpeg4(e.data):Qt._opt.isNakedFlow?Qt.demuxNakedFlow(e.data):Qt.demuxM7s(e.data)})},demuxFlv:function*(){yield 9;const e=new ArrayBuffer(4),t=new Uint8Array(e),i=new Uint32Array(e);for(;;){t[3]=0;const e=yield 15,r=e[4];t[0]=e[7],t[1]=e[6],t[2]=e[5];const s=i[0];t[0]=e[10],t[1]=e[9],t[2]=e[8],t[3]=e[11];let n=i[0];const a=(yield s).slice();switch(r){case K:if(a.byteLength>0){let e=a;st(Qt._opt.m7sCryptoAudio)&&(e=Qt.cryptoPayloadAudio(a)),Qt.decode(e,{type:j,ts:n})}else Qt.debug.warn("worker",`demuxFlv() type is audio and payload.byteLength is ${a.byteLength} and return`);break;case X:if(a.byteLength>=6){const e=a[0];if(Qt._isEnhancedH265Header(e))Qt._decodeEnhancedH265Video(a,n);else{a[0];const e=a[0]>>4===De;if(e&&rt(a)&&null===Vt){const e=15&a[0];Vt=e===be,$t=Ct(a,Vt),Qt.debug.log("worker",`demuxFlv() isVideoSequenceHeader is true and isHevc is ${Vt} and nalUnitSize is ${$t}`)}e&&Qt.calcIframeIntervalTimestamp(n),Qt.isPlayer&&Qt.calcNetworkDelay(n),i[0]=a[4],i[1]=a[3],i[2]=a[2],i[3]=0;let t=i[0],r=Qt.cryptoPayload(a,e);Qt.decode(r,{type:q,ts:n,isIFrame:e,cts:t})}}else Qt.debug.warn("worker",`demuxFlv() type is video and payload.byteLength is ${a.byteLength} and return`);break;case Z:postMessage({cmd:H,buffer:a},[a.buffer]);break;default:Qt.debug.log("worker",`demuxFlv() type is ${r}`)}}},decode:function(e,t){t.type===j?Qt._opt.hasAudio&&(postMessage({cmd:I,type:le,value:e.byteLength}),Qt.isPlayer?Qt.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts}):Qt.isPlayback&&(Qt.isPlaybackOnlyDecodeIFrame()||(Qt.isPlaybackCacheBeforeDecodeForFpsRender(),Qt.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts})))):t.type===q&&Qt._opt.hasVideo&&(postMessage({cmd:I,type:he,value:e.byteLength}),postMessage({cmd:I,type:fe,value:t.ts}),Qt.isPlayer?Qt.pushBuffer(e,{type:t.type,ts:t.ts,isIFrame:t.isIFrame,cts:t.cts}):Qt.isPlayback&&(Qt.isPlaybackOnlyDecodeIFrame()?t.isIFrame&&Qt.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts,isIFrame:t.isIFrame}):(Qt.isPlaybackCacheBeforeDecodeForFpsRender(),Qt.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts,isIFrame:t.isIFrame}))))},cryptoPayload:function(e,t){let i=e;return Qt._opt.isM7sCrypto?Qt._opt.cryptoIV&&Qt._opt.cryptoIV.byteLength>0&&Qt._opt.cryptoKey&&Qt._opt.cryptoKey.byteLength>0?i=function(e,t,i,r=!1){t=new Uint8Array(t),i=new Uint8Array(i);const s=e.byteLength;let n=5;for(;ns)break;let d=e[n+4],l=!1;if(r?(d=d>>>1&63,l=[0,1,2,3,4,5,6,7,8,9,16,17,18,19,20,21].includes(d)):(d&=31,l=1===d||5===d),l){const r=e.slice(n+4+2,n+4+o);let s=new mi.ModeOfOperation.ctr(t,new mi.Counter(i));const a=s.decrypt(r);s=null,e.set(a,n+4+2)}n=n+4+o}var a;return e}(e,Qt._opt.cryptoKey,Qt._opt.cryptoIV,Vt):Qt.debug.error("worker",`isM7sCrypto cryptoKey.length is ${Qt._opt.cryptoKey&&Qt._opt.cryptoKey.byteLength} or cryptoIV.length is ${Qt._opt.cryptoIV&&Qt._opt.cryptoIV.byteLength} null`):Qt._opt.isSm4Crypto?Qt._opt.sm4CryptoKey&&t?i=function(e,t,i=!1){const r=e.byteLength;let s=5;for(;sr)break;let o=e[s+4],d=!1;if(i?(o=o>>>1&63,d=[0,1,2,3,4,5,6,7,8,9,16,17,18,19,20,21].includes(o)):(o&=31,d=1===o||5===o),d){const i=Di(e.slice(s+4+2,s+4+a),t,0,{padding:"none",output:"array"});e.set(i,s+4+2)}s=s+4+a}var n;return e}(e,Qt._opt.sm4CryptoKey):Qt._opt.sm4CryptoKey||Qt.debug.error("worker","isSm4Crypto opt.sm4CryptoKey is null"):Qt._opt.isXorCrypto&&(Qt._opt.cryptoIV&&Qt._opt.cryptoIV.byteLength>0&&Qt._opt.cryptoKey&&Qt._opt.cryptoKey.byteLength>0?i=function(e,t,i,r=!1){const s=e.byteLength;let n=5;for(;ns)break;let d=e[n+4],l=!1;if(r?(d=d>>>1&63,l=[0,1,2,3,4,5,6,7,8,9,16,17,18,19,20,21].includes(d)):(d&=31,l=1===d||5===d),l){const r=Pi(e.slice(n+4,n+4+o),t,i);e.set(r,n+4)}n=n+4+o}var a;return e}(e,Qt._opt.cryptoKey,Qt._opt.cryptoIV,Vt):Qt.debug.error("worker",`isXorCrypto cryptoKey.length is ${Qt._opt.cryptoKey&&Qt._opt.cryptoKey.byteLength} or cryptoIV.length is ${Qt._opt.cryptoIV&&Qt._opt.cryptoIV.byteLength} null`)),i},cryptoPayloadAudio:function(e){let t=e;if(Qt._opt.isM7sCrypto)if(Qt._opt.cryptoIV&&Qt._opt.cryptoIV.byteLength>0&&Qt._opt.cryptoKey&&Qt._opt.cryptoKey.byteLength>0){e[0]>>4===Se.AAC&&(t=function(e,t,i){if(e.byteLength<=30)return e;const r=e.slice(32);let s=new mi.ModeOfOperation.ctr(t,new mi.Counter(i));const n=s.decrypt(r);return s=null,e.set(n,32),e}(e,Qt._opt.cryptoKey,Qt._opt.cryptoIV))}else Qt.debug.error("worker",`isM7sCrypto cryptoKey.length is ${Qt._opt.cryptoKey&&Qt._opt.cryptoKey.byteLength} or cryptoIV.length is ${Qt._opt.cryptoIV&&Qt._opt.cryptoIV.byteLength} null`);return t},setCodecAudio:function(e,t){const i=e[0]>>4,r=e[0]>>1&1;if(Wt=i===Se.AAC?r?16:8:0===r?8:16,ei&&ei.setCodec)if(Ve(e)||i===Se.ALAW||i===Se.MULAW||i===Se.MP3){Qt.debug.log("worker",`setCodecAudio: init audio codec, codeId is ${i}`);const r=i===Se.AAC?e.slice(2):new Uint8Array(0);ei.setCodec(i,Qt._opt.sampleRate,r),i===Se.AAC&&postMessage({cmd:A,buffer:r},[r.buffer]),at=!0,i!==Se.AAC&&(i===Se.MP3?(Qt.mp3Demuxer||(Qt.mp3Demuxer=new Li(Qt),Qt.mp3Demuxer.on("data",((e,t)=>{ei.decode(e,t)}))),Qt.mp3Demuxer.dispatch(e.slice(1),t)):ei.decode(e.slice(1),t))}else Qt.debug.warn("worker","setCodecAudio: hasInitAudioCodec is false, codecId is ",i);else Qt.debug.error("worker","setCodecAudio: audioDecoder or audioDecoder.setCodec is null")},decodeAudio:function(e,t){if(Qt.isDestroyed)Qt.debug.log("worker","decodeAudio, decoder is destroyed and return");else if(st(i)&&st(Qt._opt.mseDecodeAudio))postMessage({cmd:D,payload:e,ts:t,cts:t},[e.buffer]);else{const i=e[0]>>4;at?i===Se.MP3?Qt.mp3Demuxer.dispatch(e.slice(1),t):ei.decode(i===Se.AAC?e.slice(2):e.slice(1),t):Qt.setCodecAudio(e,t)}},setCodecVideo:function(e){const t=15&e[0];if(ti&&ti.setCodec)if(rt(e))if(t===ye||t===be){Qt.debug.log("worker",`setCodecVideo: init video codec , codecId is ${t}`);const i=e.slice(5);if(t===ye&&Qt._opt.useSIMD){const e=mt(i);if(e.codecWidth>4080||e.codecHeight>4080)return postMessage({cmd:M}),void Qt.debug.warn("worker",`setCodecVideo: SIMD H264 decode video width is too large, width is ${e.codecWidth}, height is ${e.codecHeight}`)}const r=new Uint8Array(e);Xe=!0,ti.setCodec(t,i),postMessage({cmd:B,code:t}),postMessage({cmd:T,buffer:r,codecId:t},[r.buffer])}else Qt.debug.warn("worker",`setCodecVideo: hasInitVideoCodec is false, codecId is ${t} is not H264 or H265`);else Qt.debug.warn("worker",`decodeVideo: hasInitVideoCodec is false, codecId is ${t} and frameType is ${e[0]>>4} and packetType is ${e[1]}`);else Qt.debug.error("worker","setCodecVideo: videoDecoder or videoDecoder.setCodec is null")},decodeVideo:function(e,t,r,s=0){if(Qt.isDestroyed)Qt.debug.log("worker","decodeVideo, decoder is destroyed and return");else if(st(i))postMessage({cmd:C,payload:e,isIFrame:r,ts:t,cts:s,delay:Qt.delay},[e.buffer]);else if(Xe)if(!ot&&r&&(ot=!0),ot){if(r&&rt(e)){const t=15&e[0];let i={};if(t===ye){i=mt(e.slice(5))}else t===be&&(i=function(e){let t={codecWidth:0,codecHeight:0,videoType:Be.h265,width:0,height:0,profile:0,level:0};e=e.slice(5);do{let i={};if(e.length<23){console.warn("parseHEVCDecoderConfigurationRecord$2",`arrayBuffer.length ${e.length} < 23`);break}if(i.configurationVersion=e[0],1!=i.configurationVersion)break;i.general_profile_space=e[1]>>6&3,i.general_tier_flag=e[1]>>5&1,i.general_profile_idc=31&e[1],i.general_profile_compatibility_flags=e[2]<<24|e[3]<<16|e[4]<<8|e[5],i.general_constraint_indicator_flags=e[6]<<24|e[7]<<16|e[8]<<8|e[9],i.general_constraint_indicator_flags=i.general_constraint_indicator_flags<<16|e[10]<<8|e[11],i.general_level_idc=e[12],i.min_spatial_segmentation_idc=(15&e[13])<<8|e[14],i.parallelismType=3&e[15],i.chromaFormat=3&e[16],i.bitDepthLumaMinus8=7&e[17],i.bitDepthChromaMinus8=7&e[18],i.avgFrameRate=e[19]<<8|e[20],i.constantFrameRate=e[21]>>6&3,i.numTemporalLayers=e[21]>>3&7,i.temporalIdNested=e[21]>>2&1,i.lengthSizeMinusOne=3&e[21];let r=e[22],s=e.slice(23);for(let e=0;e0){let e=r.findIndex((e=>st(e.isIFrame)&&e.type===q));if(Qt.isAllIframeInBufferList())for(let t=0;t=Qt.getNotDroppingDelayTs()){Qt.debug.log("worker",`dropBuffer$2() isAllIframeInBufferList() is true, and index is ${t} and tempDelay is ${s} and notDroppingDelayTs is ${Qt.getNotDroppingDelayTs()}`),e=t;break}}if(e>=0){Qt.isPushDropping=!0,postMessage({cmd:L});const t=r.length;r=r.slice(e);const i=r.shift();Qt.resetAllDelay(),Qt.getDelay(i.ts,i.type),Qt.doDecode(i),Qt.isPushDropping=!1,Qt.debug.log("worker",`dropBuffer$2() iFrameIndex is ${e},and old bufferList length is ${t} ,new bufferList is ${r.length} and new delay is ${Qt.delay} `)}else Qt.isPushDropping=!1}0===r.length&&(Qt.isPushDropping=!1)},demuxM7s:function(e){const t=new DataView(e),i=t.getUint32(1,!1),r=t.getUint8(0),s=new ArrayBuffer(4),n=new Uint32Array(s);switch(r){case j:Qt.decode(new Uint8Array(e,5),{type:j,ts:i});break;case q:if(t.byteLength>=11){const r=new Uint8Array(e,5),s=r[0];if(Qt._isEnhancedH265Header(s))Qt._decodeEnhancedH265Video(r,i);else{const e=t.getUint8(5)>>4==1;if(e&&(Qt.calcIframeIntervalTimestamp(i),rt(r)&&null===Vt)){const e=15&r[0];Vt=e===be}Qt.isPlayer&&Qt.calcNetworkDelay(i),n[0]=r[4],n[1]=r[3],n[2]=r[2],n[3]=0;let s=n[0],a=Qt.cryptoPayload(r,e);Qt.decode(a,{type:q,ts:i,isIFrame:e,cts:s})}}else Qt.debug.warn("worker",`demuxM7s() type is video and arrayBuffer length is ${e.byteLength} and return`)}},demuxNakedFlow:function(e){Kt.dispatch(e)},demuxFmp4:function(e){const t=new Uint8Array(e);Xt.dispatch(t)},demuxMpeg4:function(e){Zt.dispatch(e)},demuxTs:function(e){Jt.dispatch(e)},_decodeEnhancedH265Video:function(e,t){const i=e[0],r=48&i,s=15&i,n=e.slice(1,5),a=new ArrayBuffer(4),o=new Uint32Array(a),d="a"==String.fromCharCode(n[0]);if(Vt=nt(d),s===Pe){if(r===Me){const i=e.slice(5);if(d);else{const r=new Uint8Array(5+i.length);r.set([28,0,0,0,0],0),r.set(i,5),$t=Ct(e,Vt),Qt.debug.log("worker",`demuxFlv() isVideoSequenceHeader(enhancedH265) is true and isHevc is ${Vt} and nalUnitSize is ${$t}`),Qt.decode(r,{type:q,ts:t,isIFrame:!0,cts:0})}}}else if(s===ze){let i=e,s=0;const n=r===Me;if(n&&Qt.calcIframeIntervalTimestamp(t),d);else{o[0]=e[4],o[1]=e[3],o[2]=e[2],o[3]=0,s=o[0];i=Ft(e.slice(8),n),i=Qt.cryptoPayload(i,n),Qt.decode(i,{type:q,ts:t,isIFrame:n,cts:s})}}else if(s===Re){const i=r===Me;i&&Qt.calcIframeIntervalTimestamp(t);let s=Ft(e.slice(5),i);s=Qt.cryptoPayload(s,i),Qt.decode(s,{type:q,ts:t,isIFrame:i,cts:0})}},_isEnhancedH265Header:function(e){return!(128&~e)},findSei:function(e,t){let i=4;Qe($t)||(i=$t);Tt(e.slice(5),i).forEach((e=>{const i=Vt?e[0]>>>1&63:31&e[0];(Vt&&(i===xe.suffixSei||i===xe.prefixSei)||nt(Vt)&&i===Ue.kSliceSEI)&&postMessage({cmd:G,buffer:e,ts:t},[e.buffer])}))},flvHasUnitTypeIDR(e,t){const i=Tt(e.slice(5));let r=!1;return i.forEach((e=>{const i=t?e[0]>>>1&63:31&e[0];(t&&(i===xe.iFrame||i===xe.nLp)||nt(t)&&i===Ue.iFrame)&&(r=!0)})),r},calcNetworkDelay:function(e){if(!(ot&&e>0))return;null===pt?(pt=e,ct=Ke()):et?i-t:0;Qt.networkDelay=r,r>Qt._opt.networkDelay&&Qt._opt.playType===p&&(Qt.debug.warn("worker",`calcNetworkDelay now dts:${e}, start dts is ${pt} vs start is ${t},local diff is ${i} ,delay is ${r}`),postMessage({cmd:I,type:ce,value:r}))},calcIframeIntervalTimestamp:function(e){null===Bt?Bt=e:Bt=Qt._opt.playbackForwardMaxRateDecodeIFrame},isPlayUseMSE:function(){return Qt.isPlayer&&Qt._opt.useMSE&&st(i)},isPlayUseMSEAndDecoderInWorker:function(){return Qt.isPlayUseMSE()&&Qt._opt.mseDecoderUseWorker},playbackUpdatePlaybackRate:function(){Qt.clearBuffer(!0)},onOffscreenCanvasWebglContextLost:function(e){Qt.debug.error("worker","handleOffscreenCanvasWebglContextLost and next try to create webgl"),e.preventDefault(),Ot=!0,Qt.webglObj.destroy(),Qt.webglObj=null,Qt.offscreenCanvasGL=null,setTimeout((()=>{Qt.offscreenCanvasGL=Qt.offscreenCanvas.getContext("webgl"),Qt.offscreenCanvasGL&&Qt.offscreenCanvasGL.getContextAttributes().stencil?(Qt.webglObj=o(Qt.offscreenCanvasGL,Qt._opt.openWebglAlignment),Ot=!1):Qt.debug.error("worker","handleOffscreenCanvasWebglContextLost, stencil is false")}),500)},onOffscreenCanvasWebglContextRestored:function(e){Qt.debug.log("worker","handleOffscreenCanvasWebglContextRestored"),e.preventDefault()},videoInfo:function(e,t,i){postMessage({cmd:B,code:e}),postMessage({cmd:v,w:t,h:i}),Ce=t,Ge=i,Qt.useOffscreen()&&(Qt.offscreenCanvas=new OffscreenCanvas(t,i),Qt.offscreenCanvasGL=Qt.offscreenCanvas.getContext("webgl"),Qt.webglObj=o(Qt.offscreenCanvasGL,Qt._opt.openWebglAlignment),Qt.offscreenCanvas.addEventListener("webglcontextlost",Qt.onOffscreenCanvasWebglContextLost,!1),Qt.offscreenCanvas.addEventListener("webglcontextrestored",Qt.onOffscreenCanvasWebglContextRestored,!1))},audioInfo:function(e,t,i){postMessage({cmd:x,code:e}),postMessage({cmd:U,sampleRate:t,channels:i,depth:Wt}),At=i},yuvData:function(t,i){if(Qt.isDestroyed)return void Qt.debug.log("worker","yuvData, decoder is destroyed and return");const r=Ce*Ge*3/2;let s=e.HEAPU8.subarray(t,t+r),n=new Uint8Array(s);if(Ut=null,Qt.useOffscreen())try{if(Ot)return;Qt.webglObj.renderYUV(Ce,Ge,n);let e=Qt.offscreenCanvas.transferToImageBitmap();postMessage({cmd:w,buffer:e,delay:Qt.delay,ts:i},[e])}catch(e){Qt.debug.error("worker","yuvData, transferToImageBitmap error is",e)}else postMessage({cmd:w,output:n,delay:Qt.delay,ts:i},[n.buffer])},pcmData:function(e,i,r){if(Qt.isDestroyed)return void Qt.debug.log("worker","pcmData, decoder is destroyed and return");let n=i,a=[],o=0,d=Qt._opt.audioBufferSize;for(let i=0;i<2;i++){let r=t.HEAPU32[(e>>2)+i]>>2;a[i]=t.HEAPF32.subarray(r,r+n)}if(Et){if(!(n>=(i=d-Et)))return Et+=n,s[0]=Float32Array.of(...s[0],...a[0]),void(2==At&&(s[1]=Float32Array.of(...s[1],...a[1])));St[0]=Float32Array.of(...s[0],...a[0].subarray(0,i)),2==At&&(St[1]=Float32Array.of(...s[1],...a[1].subarray(0,i))),postMessage({cmd:S,buffer:St,ts:r},St.map((e=>e.buffer))),o=i,n-=i}for(Et=n;Et>=d;Et-=d)St[0]=a[0].slice(o,o+=d),2==At&&(St[1]=a[1].slice(o-d,o)),postMessage({cmd:S,buffer:St,ts:r},St.map((e=>e.buffer)));Et&&(s[0]=a[0].slice(o),2==At&&(s[1]=a[1].slice(o)))},errorInfo:function(e){null===Ut&&(Ut=Ke());const t=Ke(),i=(r=xt>0?2*xt:5e3,s=1e3,n=5e3,Math.max(Math.min(r,Math.max(s,n)),Math.min(s,n)));var r,s,n;const a=t-Ut;a>i&&(Qt.debug.warn("worker",`errorInfo() emit simdDecodeError and\n iframeIntervalTimestamp is ${xt} and diff is ${a} and maxDiff is ${i}\n and replay`),Ht=!0,postMessage({cmd:R}))},sendWebsocketMessage:function(e){m?m.readyState===ge?m.send(e):Qt.debug.error("worker","socket is not open"):Qt.debug.error("worker","socket is null")},timeEnd:function(){},postStreamToMain(e,t){postMessage({cmd:O,type:t,buffer:e},[e.buffer])}};Qt.debug=new ft(Qt);let ei=null;t.AudioDecoder&&(ei=new t.AudioDecoder(Qt));let ti=null;e.VideoDecoder&&(ti=new e.VideoDecoder(Qt)),postMessage({cmd:b}),self.onmessage=function(e){let t=e.data;switch(t.cmd){case J:try{Qt._opt=Object.assign(Qt._opt,JSON.parse(t.opt))}catch(e){}Qt.init();break;case Q:Qt.pushBuffer(t.buffer,t.options);break;case ee:Qt.decodeAudio(t.buffer,t.ts);break;case te:Qt.decodeVideo(t.buffer,t.ts,t.isIFrame);break;case se:Qt.clearBuffer(t.needClear);break;case ne:Qt.fetchStream(t.url,JSON.parse(t.opt));break;case ie:Qt.close();break;case re:Qt.debug.log("worker","updateConfig",t.key,t.value),Qt._opt[t.key]=t.value,"playbackRate"===t.key&&(Qt.playbackUpdatePlaybackRate(),Qt.isPlaybackCacheBeforeDecodeForFpsRender()&&Qt.playbackCacheLoop());break;case ae:Qt.sendWebsocketMessage(t.message)}}}({},{},!0)})); diff --git a/html-demo/js/decoder-pro-hard.js b/html-demo/js/decoder-pro-hard.js new file mode 100644 index 0000000..189ab8a --- /dev/null +++ b/html-demo/js/decoder-pro-hard.js @@ -0,0 +1 @@ +!function(e){"function"==typeof define&&define.amd?define(e):e()}((function(){"use strict";var e,t=(e="undefined"==typeof document&&"undefined"==typeof location?new(require("url").URL)("file:"+__filename).href:"undefined"==typeof document?location.href:document.currentScript&&document.currentScript.src||new URL("decoder-pro-hard.js",document.baseURI).href,function(t){var r,i;(t=void 0!==(t=t||{})?t:{}).ready=new Promise((function(e,t){r=e,i=t})),(t=void 0!==t?t:{}).locateFile=function(e){return"decoder-pro-audio.wasm"==e&&"undefined"!=typeof EASYPLAYER_PRO_AUDIO_WASM_URL&&""!=EASYPLAYER_PRO_AUDIO_WASM_URL?EASYPLAYER_PRO_AUDIO_WASM_URL:e};var s,n,a,o,d,l,u=Object.assign({},t),h="./this.program",c="object"==typeof window,f="function"==typeof importScripts,p="object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node,m="";p?(m=f?require("path").dirname(m)+"/":__dirname+"/",l=()=>{d||(o=require("fs"),d=require("path"))},s=function(e,t){return l(),e=d.normalize(e),o.readFileSync(e,t?void 0:"utf8")},a=e=>{var t=s(e,!0);return t.buffer||(t=new Uint8Array(t)),t},n=(e,t,r)=>{l(),e=d.normalize(e),o.readFile(e,(function(e,i){e?r(e):t(i.buffer)}))},process.argv.length>1&&(h=process.argv[1].replace(/\\/g,"/")),process.argv.slice(2),process.on("uncaughtException",(function(e){if(!(e instanceof ee))throw e})),process.on("unhandledRejection",(function(e){throw e})),t.inspect=function(){return"[Emscripten Module object]"}):(c||f)&&(f?m=self.location.href:"undefined"!=typeof document&&document.currentScript&&(m=document.currentScript.src),e&&(m=e),m=0!==m.indexOf("blob:")?m.substr(0,m.replace(/[?#].*/,"").lastIndexOf("/")+1):"",s=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.send(null),t.responseText},f&&(a=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.responseType="arraybuffer",t.send(null),new Uint8Array(t.response)}),n=(e,t,r)=>{var i=new XMLHttpRequest;i.open("GET",e,!0),i.responseType="arraybuffer",i.onload=()=>{200==i.status||0==i.status&&i.response?t(i.response):r()},i.onerror=r,i.send(null)});var _=t.print||console.log.bind(console),g=t.printErr||console.warn.bind(console);Object.assign(t,u),u=null,t.arguments&&t.arguments,t.thisProgram&&(h=t.thisProgram),t.quit&&t.quit;var y,b,v=4;t.wasmBinary&&(y=t.wasmBinary),t.noExitRuntime,"object"!=typeof WebAssembly&&W("no native wasm support detected");var w=!1;function S(e,t){e||W(t)}var E,U,x,A,B,k,T,C,D,F,I="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0;function P(e,t,r){for(var i=t+r,s=t;e[s]&&!(s>=i);)++s;if(s-t>16&&e.buffer&&I)return I.decode(e.subarray(t,s));for(var n="";t>10,56320|1023&l)}}else n+=String.fromCharCode((31&a)<<6|o)}else n+=String.fromCharCode(a)}return n}function L(e,t){return e?P(x,e,t):""}function z(e,t,r,i){if(!(i>0))return 0;for(var s=r,n=r+i-1,a=0;a=55296&&o<=57343&&(o=65536+((1023&o)<<10)|1023&e.charCodeAt(++a)),o<=127){if(r>=n)break;t[r++]=o}else if(o<=2047){if(r+1>=n)break;t[r++]=192|o>>6,t[r++]=128|63&o}else if(o<=65535){if(r+2>=n)break;t[r++]=224|o>>12,t[r++]=128|o>>6&63,t[r++]=128|63&o}else{if(r+3>=n)break;t[r++]=240|o>>18,t[r++]=128|o>>12&63,t[r++]=128|o>>6&63,t[r++]=128|63&o}}return t[r]=0,r-s}function R(e){for(var t=0,r=0;r=55296&&i<=57343?(t+=4,++r):t+=3}return t}t.INITIAL_MEMORY;var M=[],N=[],O=[],G=0,H=null;function $(e){G++,t.monitorRunDependencies&&t.monitorRunDependencies(G)}function V(e){if(G--,t.monitorRunDependencies&&t.monitorRunDependencies(G),0==G&&H){var r=H;H=null,r()}}function W(e){t.onAbort&&t.onAbort(e),g(e="Aborted("+e+")"),w=!0,e+=". Build with -sASSERTIONS for more info.";var r=new WebAssembly.RuntimeError(e);throw i(r),r}var j,Y,q,K,X="data:application/octet-stream;base64,";function Z(e){return e.startsWith(X)}function J(e){return e.startsWith("file://")}function Q(e){try{if(e==j&&y)return new Uint8Array(y);if(a)return a(e);throw"both async and sync fetching of the wasm failed"}catch(e){W(e)}}function ee(e){this.name="ExitStatus",this.message="Program terminated with exit("+e+")",this.status=e}function te(e){for(;e.length>0;)e.shift()(t)}function re(e){this.excPtr=e,this.ptr=e-24,this.set_type=function(e){T[this.ptr+4>>2]=e},this.get_type=function(){return T[this.ptr+4>>2]},this.set_destructor=function(e){T[this.ptr+8>>2]=e},this.get_destructor=function(){return T[this.ptr+8>>2]},this.set_refcount=function(e){k[this.ptr>>2]=e},this.set_caught=function(e){e=e?1:0,U[this.ptr+12|0]=e},this.get_caught=function(){return 0!=U[this.ptr+12|0]},this.set_rethrown=function(e){e=e?1:0,U[this.ptr+13|0]=e},this.get_rethrown=function(){return 0!=U[this.ptr+13|0]},this.init=function(e,t){this.set_adjusted_ptr(0),this.set_type(e),this.set_destructor(t),this.set_refcount(0),this.set_caught(!1),this.set_rethrown(!1)},this.add_ref=function(){var e=k[this.ptr>>2];k[this.ptr>>2]=e+1},this.release_ref=function(){var e=k[this.ptr>>2];return k[this.ptr>>2]=e-1,1===e},this.set_adjusted_ptr=function(e){T[this.ptr+16>>2]=e},this.get_adjusted_ptr=function(){return T[this.ptr+16>>2]},this.get_exception_ptr=function(){if(Xt(this.get_type()))return T[this.excPtr>>2];var e=this.get_adjusted_ptr();return 0!==e?e:this.excPtr}}t.locateFile?Z(j="decoder-pro-audio.wasm")||(Y=j,j=t.locateFile?t.locateFile(Y,m):m+Y):j=new URL("decoder-pro-audio.wasm","undefined"==typeof document&&"undefined"==typeof location?new(require("url").URL)("file:"+__filename).href:"undefined"==typeof document?location.href:document.currentScript&&document.currentScript.src||new URL("decoder-pro-hard.js",document.baseURI).href).toString();var ie={isAbs:e=>"/"===e.charAt(0),splitPath:e=>/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(e).slice(1),normalizeArray:(e,t)=>{for(var r=0,i=e.length-1;i>=0;i--){var s=e[i];"."===s?e.splice(i,1):".."===s?(e.splice(i,1),r++):r&&(e.splice(i,1),r--)}if(t)for(;r;r--)e.unshift("..");return e},normalize:e=>{var t=ie.isAbs(e),r="/"===e.substr(-1);return(e=ie.normalizeArray(e.split("/").filter((e=>!!e)),!t).join("/"))||t||(e="."),e&&r&&(e+="/"),(t?"/":"")+e},dirname:e=>{var t=ie.splitPath(e),r=t[0],i=t[1];return r||i?(i&&(i=i.substr(0,i.length-1)),r+i):"."},basename:e=>{if("/"===e)return"/";var t=(e=(e=ie.normalize(e)).replace(/\/$/,"")).lastIndexOf("/");return-1===t?e:e.substr(t+1)},join:function(){var e=Array.prototype.slice.call(arguments,0);return ie.normalize(e.join("/"))},join2:(e,t)=>ie.normalize(e+"/"+t)},se={resolve:function(){for(var e="",t=!1,r=arguments.length-1;r>=-1&&!t;r--){var i=r>=0?arguments[r]:le.cwd();if("string"!=typeof i)throw new TypeError("Arguments to path.resolve must be strings");if(!i)return"";e=i+"/"+e,t=ie.isAbs(i)}return(t?"/":"")+(e=ie.normalizeArray(e.split("/").filter((e=>!!e)),!t).join("/"))||"."},relative:(e,t)=>{function r(e){for(var t=0;t=0&&""===e[r];r--);return t>r?[]:e.slice(t,r-t+1)}e=se.resolve(e).substr(1),t=se.resolve(t).substr(1);for(var i=r(e.split("/")),s=r(t.split("/")),n=Math.min(i.length,s.length),a=n,o=0;o0?r:R(e)+1,s=new Array(i),n=z(e,s,0,s.length);return t&&(s.length=n),s}var ae={ttys:[],init:function(){},shutdown:function(){},register:function(e,t){ae.ttys[e]={input:[],output:[],ops:t},le.registerDevice(e,ae.stream_ops)},stream_ops:{open:function(e){var t=ae.ttys[e.node.rdev];if(!t)throw new le.ErrnoError(43);e.tty=t,e.seekable=!1},close:function(e){e.tty.ops.flush(e.tty)},flush:function(e){e.tty.ops.flush(e.tty)},read:function(e,t,r,i,s){if(!e.tty||!e.tty.ops.get_char)throw new le.ErrnoError(60);for(var n=0,a=0;a0?r.slice(0,i).toString("utf-8"):null}else"undefined"!=typeof window&&"function"==typeof window.prompt?null!==(t=window.prompt("Input: "))&&(t+="\n"):"function"==typeof readline&&null!==(t=readline())&&(t+="\n");if(!t)return null;e.input=ne(t,!0)}return e.input.shift()},put_char:function(e,t){null===t||10===t?(_(P(e.output,0)),e.output=[]):0!=t&&e.output.push(t)},flush:function(e){e.output&&e.output.length>0&&(_(P(e.output,0)),e.output=[])}},default_tty1_ops:{put_char:function(e,t){null===t||10===t?(g(P(e.output,0)),e.output=[]):0!=t&&e.output.push(t)},flush:function(e){e.output&&e.output.length>0&&(g(P(e.output,0)),e.output=[])}}};function oe(e){e=function(e,t){return Math.ceil(e/t)*t}(e,65536);var t=Kt(65536,e);return t?(function(e,t){x.fill(0,e,e+t)}(t,e),t):0}var de={ops_table:null,mount:function(e){return de.createNode(null,"/",16895,0)},createNode:function(e,t,r,i){if(le.isBlkdev(r)||le.isFIFO(r))throw new le.ErrnoError(63);de.ops_table||(de.ops_table={dir:{node:{getattr:de.node_ops.getattr,setattr:de.node_ops.setattr,lookup:de.node_ops.lookup,mknod:de.node_ops.mknod,rename:de.node_ops.rename,unlink:de.node_ops.unlink,rmdir:de.node_ops.rmdir,readdir:de.node_ops.readdir,symlink:de.node_ops.symlink},stream:{llseek:de.stream_ops.llseek}},file:{node:{getattr:de.node_ops.getattr,setattr:de.node_ops.setattr},stream:{llseek:de.stream_ops.llseek,read:de.stream_ops.read,write:de.stream_ops.write,allocate:de.stream_ops.allocate,mmap:de.stream_ops.mmap,msync:de.stream_ops.msync}},link:{node:{getattr:de.node_ops.getattr,setattr:de.node_ops.setattr,readlink:de.node_ops.readlink},stream:{}},chrdev:{node:{getattr:de.node_ops.getattr,setattr:de.node_ops.setattr},stream:le.chrdev_stream_ops}});var s=le.createNode(e,t,r,i);return le.isDir(s.mode)?(s.node_ops=de.ops_table.dir.node,s.stream_ops=de.ops_table.dir.stream,s.contents={}):le.isFile(s.mode)?(s.node_ops=de.ops_table.file.node,s.stream_ops=de.ops_table.file.stream,s.usedBytes=0,s.contents=null):le.isLink(s.mode)?(s.node_ops=de.ops_table.link.node,s.stream_ops=de.ops_table.link.stream):le.isChrdev(s.mode)&&(s.node_ops=de.ops_table.chrdev.node,s.stream_ops=de.ops_table.chrdev.stream),s.timestamp=Date.now(),e&&(e.contents[t]=s,e.timestamp=s.timestamp),s},getFileDataAsTypedArray:function(e){return e.contents?e.contents.subarray?e.contents.subarray(0,e.usedBytes):new Uint8Array(e.contents):new Uint8Array(0)},expandFileStorage:function(e,t){var r=e.contents?e.contents.length:0;if(!(r>=t)){t=Math.max(t,r*(r<1048576?2:1.125)>>>0),0!=r&&(t=Math.max(t,256));var i=e.contents;e.contents=new Uint8Array(t),e.usedBytes>0&&e.contents.set(i.subarray(0,e.usedBytes),0)}},resizeFileStorage:function(e,t){if(e.usedBytes!=t)if(0==t)e.contents=null,e.usedBytes=0;else{var r=e.contents;e.contents=new Uint8Array(t),r&&e.contents.set(r.subarray(0,Math.min(t,e.usedBytes))),e.usedBytes=t}},node_ops:{getattr:function(e){var t={};return t.dev=le.isChrdev(e.mode)?e.id:1,t.ino=e.id,t.mode=e.mode,t.nlink=1,t.uid=0,t.gid=0,t.rdev=e.rdev,le.isDir(e.mode)?t.size=4096:le.isFile(e.mode)?t.size=e.usedBytes:le.isLink(e.mode)?t.size=e.link.length:t.size=0,t.atime=new Date(e.timestamp),t.mtime=new Date(e.timestamp),t.ctime=new Date(e.timestamp),t.blksize=4096,t.blocks=Math.ceil(t.size/t.blksize),t},setattr:function(e,t){void 0!==t.mode&&(e.mode=t.mode),void 0!==t.timestamp&&(e.timestamp=t.timestamp),void 0!==t.size&&de.resizeFileStorage(e,t.size)},lookup:function(e,t){throw le.genericErrors[44]},mknod:function(e,t,r,i){return de.createNode(e,t,r,i)},rename:function(e,t,r){if(le.isDir(e.mode)){var i;try{i=le.lookupNode(t,r)}catch(e){}if(i)for(var s in i.contents)throw new le.ErrnoError(55)}delete e.parent.contents[e.name],e.parent.timestamp=Date.now(),e.name=r,t.contents[r]=e,t.timestamp=e.parent.timestamp,e.parent=t},unlink:function(e,t){delete e.contents[t],e.timestamp=Date.now()},rmdir:function(e,t){var r=le.lookupNode(e,t);for(var i in r.contents)throw new le.ErrnoError(55);delete e.contents[t],e.timestamp=Date.now()},readdir:function(e){var t=[".",".."];for(var r in e.contents)e.contents.hasOwnProperty(r)&&t.push(r);return t},symlink:function(e,t,r){var i=de.createNode(e,t,41471,0);return i.link=r,i},readlink:function(e){if(!le.isLink(e.mode))throw new le.ErrnoError(28);return e.link}},stream_ops:{read:function(e,t,r,i,s){var n=e.node.contents;if(s>=e.node.usedBytes)return 0;var a=Math.min(e.node.usedBytes-s,i);if(a>8&&n.subarray)t.set(n.subarray(s,s+a),r);else for(var o=0;o0||r+t{if(!(e=se.resolve(le.cwd(),e)))return{path:"",node:null};if((t=Object.assign({follow_mount:!0,recurse_count:0},t)).recurse_count>8)throw new le.ErrnoError(32);for(var r=ie.normalizeArray(e.split("/").filter((e=>!!e)),!1),i=le.root,s="/",n=0;n40)throw new le.ErrnoError(32)}}return{path:s,node:i}},getPath:e=>{for(var t;;){if(le.isRoot(e)){var r=e.mount.mountpoint;return t?"/"!==r[r.length-1]?r+"/"+t:r+t:r}t=t?e.name+"/"+t:e.name,e=e.parent}},hashName:(e,t)=>{for(var r=0,i=0;i>>0)%le.nameTable.length},hashAddNode:e=>{var t=le.hashName(e.parent.id,e.name);e.name_next=le.nameTable[t],le.nameTable[t]=e},hashRemoveNode:e=>{var t=le.hashName(e.parent.id,e.name);if(le.nameTable[t]===e)le.nameTable[t]=e.name_next;else for(var r=le.nameTable[t];r;){if(r.name_next===e){r.name_next=e.name_next;break}r=r.name_next}},lookupNode:(e,t)=>{var r=le.mayLookup(e);if(r)throw new le.ErrnoError(r,e);for(var i=le.hashName(e.id,t),s=le.nameTable[i];s;s=s.name_next){var n=s.name;if(s.parent.id===e.id&&n===t)return s}return le.lookup(e,t)},createNode:(e,t,r,i)=>{var s=new le.FSNode(e,t,r,i);return le.hashAddNode(s),s},destroyNode:e=>{le.hashRemoveNode(e)},isRoot:e=>e===e.parent,isMountpoint:e=>!!e.mounted,isFile:e=>32768==(61440&e),isDir:e=>16384==(61440&e),isLink:e=>40960==(61440&e),isChrdev:e=>8192==(61440&e),isBlkdev:e=>24576==(61440&e),isFIFO:e=>4096==(61440&e),isSocket:e=>!(49152&~e),flagModes:{r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090},modeStringToFlags:e=>{var t=le.flagModes[e];if(void 0===t)throw new Error("Unknown file open mode: "+e);return t},flagsToPermissionString:e=>{var t=["r","w","rw"][3&e];return 512&e&&(t+="w"),t},nodePermissions:(e,t)=>le.ignorePermissions||(!t.includes("r")||292&e.mode)&&(!t.includes("w")||146&e.mode)&&(!t.includes("x")||73&e.mode)?0:2,mayLookup:e=>{var t=le.nodePermissions(e,"x");return t||(e.node_ops.lookup?0:2)},mayCreate:(e,t)=>{try{return le.lookupNode(e,t),20}catch(e){}return le.nodePermissions(e,"wx")},mayDelete:(e,t,r)=>{var i;try{i=le.lookupNode(e,t)}catch(e){return e.errno}var s=le.nodePermissions(e,"wx");if(s)return s;if(r){if(!le.isDir(i.mode))return 54;if(le.isRoot(i)||le.getPath(i)===le.cwd())return 10}else if(le.isDir(i.mode))return 31;return 0},mayOpen:(e,t)=>e?le.isLink(e.mode)?32:le.isDir(e.mode)&&("r"!==le.flagsToPermissionString(t)||512&t)?31:le.nodePermissions(e,le.flagsToPermissionString(t)):44,MAX_OPEN_FDS:4096,nextfd:(e=0,t=le.MAX_OPEN_FDS)=>{for(var r=e;r<=t;r++)if(!le.streams[r])return r;throw new le.ErrnoError(33)},getStream:e=>le.streams[e],createStream:(e,t,r)=>{le.FSStream||(le.FSStream=function(){this.shared={}},le.FSStream.prototype={},Object.defineProperties(le.FSStream.prototype,{object:{get:function(){return this.node},set:function(e){this.node=e}},isRead:{get:function(){return 1!=(2097155&this.flags)}},isWrite:{get:function(){return!!(2097155&this.flags)}},isAppend:{get:function(){return 1024&this.flags}},flags:{get:function(){return this.shared.flags},set:function(e){this.shared.flags=e}},position:{get:function(){return this.shared.position},set:function(e){this.shared.position=e}}})),e=Object.assign(new le.FSStream,e);var i=le.nextfd(t,r);return e.fd=i,le.streams[i]=e,e},closeStream:e=>{le.streams[e]=null},chrdev_stream_ops:{open:e=>{var t=le.getDevice(e.node.rdev);e.stream_ops=t.stream_ops,e.stream_ops.open&&e.stream_ops.open(e)},llseek:()=>{throw new le.ErrnoError(70)}},major:e=>e>>8,minor:e=>255&e,makedev:(e,t)=>e<<8|t,registerDevice:(e,t)=>{le.devices[e]={stream_ops:t}},getDevice:e=>le.devices[e],getMounts:e=>{for(var t=[],r=[e];r.length;){var i=r.pop();t.push(i),r.push.apply(r,i.mounts)}return t},syncfs:(e,t)=>{"function"==typeof e&&(t=e,e=!1),le.syncFSRequests++,le.syncFSRequests>1&&g("warning: "+le.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work");var r=le.getMounts(le.root.mount),i=0;function s(e){return le.syncFSRequests--,t(e)}function n(e){if(e)return n.errored?void 0:(n.errored=!0,s(e));++i>=r.length&&s(null)}r.forEach((t=>{if(!t.type.syncfs)return n(null);t.type.syncfs(t,e,n)}))},mount:(e,t,r)=>{var i,s="/"===r,n=!r;if(s&&le.root)throw new le.ErrnoError(10);if(!s&&!n){var a=le.lookupPath(r,{follow_mount:!1});if(r=a.path,i=a.node,le.isMountpoint(i))throw new le.ErrnoError(10);if(!le.isDir(i.mode))throw new le.ErrnoError(54)}var o={type:e,opts:t,mountpoint:r,mounts:[]},d=e.mount(o);return d.mount=o,o.root=d,s?le.root=d:i&&(i.mounted=o,i.mount&&i.mount.mounts.push(o)),d},unmount:e=>{var t=le.lookupPath(e,{follow_mount:!1});if(!le.isMountpoint(t.node))throw new le.ErrnoError(28);var r=t.node,i=r.mounted,s=le.getMounts(i);Object.keys(le.nameTable).forEach((e=>{for(var t=le.nameTable[e];t;){var r=t.name_next;s.includes(t.mount)&&le.destroyNode(t),t=r}})),r.mounted=null;var n=r.mount.mounts.indexOf(i);r.mount.mounts.splice(n,1)},lookup:(e,t)=>e.node_ops.lookup(e,t),mknod:(e,t,r)=>{var i=le.lookupPath(e,{parent:!0}).node,s=ie.basename(e);if(!s||"."===s||".."===s)throw new le.ErrnoError(28);var n=le.mayCreate(i,s);if(n)throw new le.ErrnoError(n);if(!i.node_ops.mknod)throw new le.ErrnoError(63);return i.node_ops.mknod(i,s,t,r)},create:(e,t)=>(t=void 0!==t?t:438,t&=4095,t|=32768,le.mknod(e,t,0)),mkdir:(e,t)=>(t=void 0!==t?t:511,t&=1023,t|=16384,le.mknod(e,t,0)),mkdirTree:(e,t)=>{for(var r=e.split("/"),i="",s=0;s(void 0===r&&(r=t,t=438),t|=8192,le.mknod(e,t,r)),symlink:(e,t)=>{if(!se.resolve(e))throw new le.ErrnoError(44);var r=le.lookupPath(t,{parent:!0}).node;if(!r)throw new le.ErrnoError(44);var i=ie.basename(t),s=le.mayCreate(r,i);if(s)throw new le.ErrnoError(s);if(!r.node_ops.symlink)throw new le.ErrnoError(63);return r.node_ops.symlink(r,i,e)},rename:(e,t)=>{var r,i,s=ie.dirname(e),n=ie.dirname(t),a=ie.basename(e),o=ie.basename(t);if(r=le.lookupPath(e,{parent:!0}).node,i=le.lookupPath(t,{parent:!0}).node,!r||!i)throw new le.ErrnoError(44);if(r.mount!==i.mount)throw new le.ErrnoError(75);var d,l=le.lookupNode(r,a),u=se.relative(e,n);if("."!==u.charAt(0))throw new le.ErrnoError(28);if("."!==(u=se.relative(t,s)).charAt(0))throw new le.ErrnoError(55);try{d=le.lookupNode(i,o)}catch(e){}if(l!==d){var h=le.isDir(l.mode),c=le.mayDelete(r,a,h);if(c)throw new le.ErrnoError(c);if(c=d?le.mayDelete(i,o,h):le.mayCreate(i,o))throw new le.ErrnoError(c);if(!r.node_ops.rename)throw new le.ErrnoError(63);if(le.isMountpoint(l)||d&&le.isMountpoint(d))throw new le.ErrnoError(10);if(i!==r&&(c=le.nodePermissions(r,"w")))throw new le.ErrnoError(c);le.hashRemoveNode(l);try{r.node_ops.rename(l,i,o)}catch(e){throw e}finally{le.hashAddNode(l)}}},rmdir:e=>{var t=le.lookupPath(e,{parent:!0}).node,r=ie.basename(e),i=le.lookupNode(t,r),s=le.mayDelete(t,r,!0);if(s)throw new le.ErrnoError(s);if(!t.node_ops.rmdir)throw new le.ErrnoError(63);if(le.isMountpoint(i))throw new le.ErrnoError(10);t.node_ops.rmdir(t,r),le.destroyNode(i)},readdir:e=>{var t=le.lookupPath(e,{follow:!0}).node;if(!t.node_ops.readdir)throw new le.ErrnoError(54);return t.node_ops.readdir(t)},unlink:e=>{var t=le.lookupPath(e,{parent:!0}).node;if(!t)throw new le.ErrnoError(44);var r=ie.basename(e),i=le.lookupNode(t,r),s=le.mayDelete(t,r,!1);if(s)throw new le.ErrnoError(s);if(!t.node_ops.unlink)throw new le.ErrnoError(63);if(le.isMountpoint(i))throw new le.ErrnoError(10);t.node_ops.unlink(t,r),le.destroyNode(i)},readlink:e=>{var t=le.lookupPath(e).node;if(!t)throw new le.ErrnoError(44);if(!t.node_ops.readlink)throw new le.ErrnoError(28);return se.resolve(le.getPath(t.parent),t.node_ops.readlink(t))},stat:(e,t)=>{var r=le.lookupPath(e,{follow:!t}).node;if(!r)throw new le.ErrnoError(44);if(!r.node_ops.getattr)throw new le.ErrnoError(63);return r.node_ops.getattr(r)},lstat:e=>le.stat(e,!0),chmod:(e,t,r)=>{var i;if(!(i="string"==typeof e?le.lookupPath(e,{follow:!r}).node:e).node_ops.setattr)throw new le.ErrnoError(63);i.node_ops.setattr(i,{mode:4095&t|-4096&i.mode,timestamp:Date.now()})},lchmod:(e,t)=>{le.chmod(e,t,!0)},fchmod:(e,t)=>{var r=le.getStream(e);if(!r)throw new le.ErrnoError(8);le.chmod(r.node,t)},chown:(e,t,r,i)=>{var s;if(!(s="string"==typeof e?le.lookupPath(e,{follow:!i}).node:e).node_ops.setattr)throw new le.ErrnoError(63);s.node_ops.setattr(s,{timestamp:Date.now()})},lchown:(e,t,r)=>{le.chown(e,t,r,!0)},fchown:(e,t,r)=>{var i=le.getStream(e);if(!i)throw new le.ErrnoError(8);le.chown(i.node,t,r)},truncate:(e,t)=>{if(t<0)throw new le.ErrnoError(28);var r;if(!(r="string"==typeof e?le.lookupPath(e,{follow:!0}).node:e).node_ops.setattr)throw new le.ErrnoError(63);if(le.isDir(r.mode))throw new le.ErrnoError(31);if(!le.isFile(r.mode))throw new le.ErrnoError(28);var i=le.nodePermissions(r,"w");if(i)throw new le.ErrnoError(i);r.node_ops.setattr(r,{size:t,timestamp:Date.now()})},ftruncate:(e,t)=>{var r=le.getStream(e);if(!r)throw new le.ErrnoError(8);if(!(2097155&r.flags))throw new le.ErrnoError(28);le.truncate(r.node,t)},utime:(e,t,r)=>{var i=le.lookupPath(e,{follow:!0}).node;i.node_ops.setattr(i,{timestamp:Math.max(t,r)})},open:(e,r,i)=>{if(""===e)throw new le.ErrnoError(44);var s;if(i=void 0===i?438:i,i=64&(r="string"==typeof r?le.modeStringToFlags(r):r)?4095&i|32768:0,"object"==typeof e)s=e;else{e=ie.normalize(e);try{s=le.lookupPath(e,{follow:!(131072&r)}).node}catch(e){}}var n=!1;if(64&r)if(s){if(128&r)throw new le.ErrnoError(20)}else s=le.mknod(e,i,0),n=!0;if(!s)throw new le.ErrnoError(44);if(le.isChrdev(s.mode)&&(r&=-513),65536&r&&!le.isDir(s.mode))throw new le.ErrnoError(54);if(!n){var a=le.mayOpen(s,r);if(a)throw new le.ErrnoError(a)}512&r&&!n&&le.truncate(s,0),r&=-131713;var o=le.createStream({node:s,path:le.getPath(s),flags:r,seekable:!0,position:0,stream_ops:s.stream_ops,ungotten:[],error:!1});return o.stream_ops.open&&o.stream_ops.open(o),!t.logReadFiles||1&r||(le.readFiles||(le.readFiles={}),e in le.readFiles||(le.readFiles[e]=1)),o},close:e=>{if(le.isClosed(e))throw new le.ErrnoError(8);e.getdents&&(e.getdents=null);try{e.stream_ops.close&&e.stream_ops.close(e)}catch(e){throw e}finally{le.closeStream(e.fd)}e.fd=null},isClosed:e=>null===e.fd,llseek:(e,t,r)=>{if(le.isClosed(e))throw new le.ErrnoError(8);if(!e.seekable||!e.stream_ops.llseek)throw new le.ErrnoError(70);if(0!=r&&1!=r&&2!=r)throw new le.ErrnoError(28);return e.position=e.stream_ops.llseek(e,t,r),e.ungotten=[],e.position},read:(e,t,r,i,s)=>{if(i<0||s<0)throw new le.ErrnoError(28);if(le.isClosed(e))throw new le.ErrnoError(8);if(1==(2097155&e.flags))throw new le.ErrnoError(8);if(le.isDir(e.node.mode))throw new le.ErrnoError(31);if(!e.stream_ops.read)throw new le.ErrnoError(28);var n=void 0!==s;if(n){if(!e.seekable)throw new le.ErrnoError(70)}else s=e.position;var a=e.stream_ops.read(e,t,r,i,s);return n||(e.position+=a),a},write:(e,t,r,i,s,n)=>{if(i<0||s<0)throw new le.ErrnoError(28);if(le.isClosed(e))throw new le.ErrnoError(8);if(!(2097155&e.flags))throw new le.ErrnoError(8);if(le.isDir(e.node.mode))throw new le.ErrnoError(31);if(!e.stream_ops.write)throw new le.ErrnoError(28);e.seekable&&1024&e.flags&&le.llseek(e,0,2);var a=void 0!==s;if(a){if(!e.seekable)throw new le.ErrnoError(70)}else s=e.position;var o=e.stream_ops.write(e,t,r,i,s,n);return a||(e.position+=o),o},allocate:(e,t,r)=>{if(le.isClosed(e))throw new le.ErrnoError(8);if(t<0||r<=0)throw new le.ErrnoError(28);if(!(2097155&e.flags))throw new le.ErrnoError(8);if(!le.isFile(e.node.mode)&&!le.isDir(e.node.mode))throw new le.ErrnoError(43);if(!e.stream_ops.allocate)throw new le.ErrnoError(138);e.stream_ops.allocate(e,t,r)},mmap:(e,t,r,i,s)=>{if(2&i&&!(2&s)&&2!=(2097155&e.flags))throw new le.ErrnoError(2);if(1==(2097155&e.flags))throw new le.ErrnoError(2);if(!e.stream_ops.mmap)throw new le.ErrnoError(43);return e.stream_ops.mmap(e,t,r,i,s)},msync:(e,t,r,i,s)=>e&&e.stream_ops.msync?e.stream_ops.msync(e,t,r,i,s):0,munmap:e=>0,ioctl:(e,t,r)=>{if(!e.stream_ops.ioctl)throw new le.ErrnoError(59);return e.stream_ops.ioctl(e,t,r)},readFile:(e,t={})=>{if(t.flags=t.flags||0,t.encoding=t.encoding||"binary","utf8"!==t.encoding&&"binary"!==t.encoding)throw new Error('Invalid encoding type "'+t.encoding+'"');var r,i=le.open(e,t.flags),s=le.stat(e).size,n=new Uint8Array(s);return le.read(i,n,0,s,0),"utf8"===t.encoding?r=P(n,0):"binary"===t.encoding&&(r=n),le.close(i),r},writeFile:(e,t,r={})=>{r.flags=r.flags||577;var i=le.open(e,r.flags,r.mode);if("string"==typeof t){var s=new Uint8Array(R(t)+1),n=z(t,s,0,s.length);le.write(i,s,0,n,void 0,r.canOwn)}else{if(!ArrayBuffer.isView(t))throw new Error("Unsupported data type");le.write(i,t,0,t.byteLength,void 0,r.canOwn)}le.close(i)},cwd:()=>le.currentPath,chdir:e=>{var t=le.lookupPath(e,{follow:!0});if(null===t.node)throw new le.ErrnoError(44);if(!le.isDir(t.node.mode))throw new le.ErrnoError(54);var r=le.nodePermissions(t.node,"x");if(r)throw new le.ErrnoError(r);le.currentPath=t.path},createDefaultDirectories:()=>{le.mkdir("/tmp"),le.mkdir("/home"),le.mkdir("/home/web_user")},createDefaultDevices:()=>{le.mkdir("/dev"),le.registerDevice(le.makedev(1,3),{read:()=>0,write:(e,t,r,i,s)=>i}),le.mkdev("/dev/null",le.makedev(1,3)),ae.register(le.makedev(5,0),ae.default_tty_ops),ae.register(le.makedev(6,0),ae.default_tty1_ops),le.mkdev("/dev/tty",le.makedev(5,0)),le.mkdev("/dev/tty1",le.makedev(6,0));var e=function(){if("object"==typeof crypto&&"function"==typeof crypto.getRandomValues){var e=new Uint8Array(1);return()=>(crypto.getRandomValues(e),e[0])}if(p)try{var t=require("crypto");return()=>t.randomBytes(1)[0]}catch(e){}return()=>W("randomDevice")}();le.createDevice("/dev","random",e),le.createDevice("/dev","urandom",e),le.mkdir("/dev/shm"),le.mkdir("/dev/shm/tmp")},createSpecialDirectories:()=>{le.mkdir("/proc");var e=le.mkdir("/proc/self");le.mkdir("/proc/self/fd"),le.mount({mount:()=>{var t=le.createNode(e,"fd",16895,73);return t.node_ops={lookup:(e,t)=>{var r=+t,i=le.getStream(r);if(!i)throw new le.ErrnoError(8);var s={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>i.path}};return s.parent=s,s}},t}},{},"/proc/self/fd")},createStandardStreams:()=>{t.stdin?le.createDevice("/dev","stdin",t.stdin):le.symlink("/dev/tty","/dev/stdin"),t.stdout?le.createDevice("/dev","stdout",null,t.stdout):le.symlink("/dev/tty","/dev/stdout"),t.stderr?le.createDevice("/dev","stderr",null,t.stderr):le.symlink("/dev/tty1","/dev/stderr"),le.open("/dev/stdin",0),le.open("/dev/stdout",1),le.open("/dev/stderr",1)},ensureErrnoError:()=>{le.ErrnoError||(le.ErrnoError=function(e,t){this.node=t,this.setErrno=function(e){this.errno=e},this.setErrno(e),this.message="FS error"},le.ErrnoError.prototype=new Error,le.ErrnoError.prototype.constructor=le.ErrnoError,[44].forEach((e=>{le.genericErrors[e]=new le.ErrnoError(e),le.genericErrors[e].stack=""})))},staticInit:()=>{le.ensureErrnoError(),le.nameTable=new Array(4096),le.mount(de,{},"/"),le.createDefaultDirectories(),le.createDefaultDevices(),le.createSpecialDirectories(),le.filesystems={MEMFS:de}},init:(e,r,i)=>{le.init.initialized=!0,le.ensureErrnoError(),t.stdin=e||t.stdin,t.stdout=r||t.stdout,t.stderr=i||t.stderr,le.createStandardStreams()},quit:()=>{le.init.initialized=!1;for(var e=0;e{var r=0;return e&&(r|=365),t&&(r|=146),r},findObject:(e,t)=>{var r=le.analyzePath(e,t);return r.exists?r.object:null},analyzePath:(e,t)=>{try{e=(i=le.lookupPath(e,{follow:!t})).path}catch(e){}var r={isRoot:!1,exists:!1,error:0,name:null,path:null,object:null,parentExists:!1,parentPath:null,parentObject:null};try{var i=le.lookupPath(e,{parent:!0});r.parentExists=!0,r.parentPath=i.path,r.parentObject=i.node,r.name=ie.basename(e),i=le.lookupPath(e,{follow:!t}),r.exists=!0,r.path=i.path,r.object=i.node,r.name=i.node.name,r.isRoot="/"===i.path}catch(e){r.error=e.errno}return r},createPath:(e,t,r,i)=>{e="string"==typeof e?e:le.getPath(e);for(var s=t.split("/").reverse();s.length;){var n=s.pop();if(n){var a=ie.join2(e,n);try{le.mkdir(a)}catch(e){}e=a}}return a},createFile:(e,t,r,i,s)=>{var n=ie.join2("string"==typeof e?e:le.getPath(e),t),a=le.getMode(i,s);return le.create(n,a)},createDataFile:(e,t,r,i,s,n)=>{var a=t;e&&(e="string"==typeof e?e:le.getPath(e),a=t?ie.join2(e,t):e);var o=le.getMode(i,s),d=le.create(a,o);if(r){if("string"==typeof r){for(var l=new Array(r.length),u=0,h=r.length;u{var s=ie.join2("string"==typeof e?e:le.getPath(e),t),n=le.getMode(!!r,!!i);le.createDevice.major||(le.createDevice.major=64);var a=le.makedev(le.createDevice.major++,0);return le.registerDevice(a,{open:e=>{e.seekable=!1},close:e=>{i&&i.buffer&&i.buffer.length&&i(10)},read:(e,t,i,s,n)=>{for(var a=0,o=0;o{for(var a=0;a{if(e.isDevice||e.isFolder||e.link||e.contents)return!0;if("undefined"!=typeof XMLHttpRequest)throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.");if(!s)throw new Error("Cannot load without read() or XMLHttpRequest.");try{e.contents=ne(s(e.url),!0),e.usedBytes=e.contents.length}catch(e){throw new le.ErrnoError(29)}},createLazyFile:(e,t,r,i,s)=>{function n(){this.lengthKnown=!1,this.chunks=[]}if(n.prototype.get=function(e){if(!(e>this.length-1||e<0)){var t=e%this.chunkSize,r=e/this.chunkSize|0;return this.getter(r)[t]}},n.prototype.setDataGetter=function(e){this.getter=e},n.prototype.cacheLength=function(){var e=new XMLHttpRequest;if(e.open("HEAD",r,!1),e.send(null),!(e.status>=200&&e.status<300||304===e.status))throw new Error("Couldn't load "+r+". Status: "+e.status);var t,i=Number(e.getResponseHeader("Content-length")),s=(t=e.getResponseHeader("Accept-Ranges"))&&"bytes"===t,n=(t=e.getResponseHeader("Content-Encoding"))&&"gzip"===t,a=1048576;s||(a=i);var o=this;o.setDataGetter((e=>{var t=e*a,s=(e+1)*a-1;if(s=Math.min(s,i-1),void 0===o.chunks[e]&&(o.chunks[e]=((e,t)=>{if(e>t)throw new Error("invalid range ("+e+", "+t+") or no bytes requested!");if(t>i-1)throw new Error("only "+i+" bytes available! programmer error!");var s=new XMLHttpRequest;if(s.open("GET",r,!1),i!==a&&s.setRequestHeader("Range","bytes="+e+"-"+t),s.responseType="arraybuffer",s.overrideMimeType&&s.overrideMimeType("text/plain; charset=x-user-defined"),s.send(null),!(s.status>=200&&s.status<300||304===s.status))throw new Error("Couldn't load "+r+". Status: "+s.status);return void 0!==s.response?new Uint8Array(s.response||[]):ne(s.responseText||"",!0)})(t,s)),void 0===o.chunks[e])throw new Error("doXHR failed!");return o.chunks[e]})),!n&&i||(a=i=1,i=this.getter(0).length,a=i,_("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=i,this._chunkSize=a,this.lengthKnown=!0},"undefined"!=typeof XMLHttpRequest){if(!f)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var a=new n;Object.defineProperties(a,{length:{get:function(){return this.lengthKnown||this.cacheLength(),this._length}},chunkSize:{get:function(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}});var o={isDevice:!1,contents:a}}else o={isDevice:!1,url:r};var d=le.createFile(e,t,o,i,s);o.contents?d.contents=o.contents:o.url&&(d.contents=null,d.url=o.url),Object.defineProperties(d,{usedBytes:{get:function(){return this.contents.length}}});var l={};function u(e,t,r,i,s){var n=e.node.contents;if(s>=n.length)return 0;var a=Math.min(n.length-s,i);if(n.slice)for(var o=0;o{var t=d.stream_ops[e];l[e]=function(){return le.forceLoadFile(d),t.apply(null,arguments)}})),l.read=(e,t,r,i,s)=>(le.forceLoadFile(d),u(e,t,r,i,s)),l.mmap=(e,t,r,i,s)=>{le.forceLoadFile(d);var n=oe(t);if(!n)throw new le.ErrnoError(48);return u(e,U,n,t,r),{ptr:n,allocated:!0}},d.stream_ops=l,d},createPreloadedFile:(e,t,r,i,s,a,o,d,l,u)=>{var h=t?se.resolve(ie.join2(e,t)):e;function c(r){function n(r){u&&u(),d||le.createDataFile(e,t,r,i,s,l),a&&a(),V()}Browser.handledByPreloadPlugin(r,h,n,(()=>{o&&o(),V()}))||n(r)}$(),"string"==typeof r?function(e,t,r,i){var s=i?"":"al "+e;n(e,(r=>{S(r,'Loading data file "'+e+'" failed (no arrayBuffer).'),t(new Uint8Array(r)),s&&V()}),(t=>{if(!r)throw'Loading data file "'+e+'" failed.';r()})),s&&$()}(r,(e=>c(e)),o):c(r)},indexedDB:()=>window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB,DB_NAME:()=>"EM_FS_"+window.location.pathname,DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:(e,t,r)=>{t=t||(()=>{}),r=r||(()=>{});var i=le.indexedDB();try{var s=i.open(le.DB_NAME(),le.DB_VERSION)}catch(e){return r(e)}s.onupgradeneeded=()=>{_("creating db"),s.result.createObjectStore(le.DB_STORE_NAME)},s.onsuccess=()=>{var i=s.result.transaction([le.DB_STORE_NAME],"readwrite"),n=i.objectStore(le.DB_STORE_NAME),a=0,o=0,d=e.length;function l(){0==o?t():r()}e.forEach((e=>{var t=n.put(le.analyzePath(e).object.contents,e);t.onsuccess=()=>{++a+o==d&&l()},t.onerror=()=>{o++,a+o==d&&l()}})),i.onerror=r},s.onerror=r},loadFilesFromDB:(e,t,r)=>{t=t||(()=>{}),r=r||(()=>{});var i=le.indexedDB();try{var s=i.open(le.DB_NAME(),le.DB_VERSION)}catch(e){return r(e)}s.onupgradeneeded=r,s.onsuccess=()=>{var i=s.result;try{var n=i.transaction([le.DB_STORE_NAME],"readonly")}catch(e){return void r(e)}var a=n.objectStore(le.DB_STORE_NAME),o=0,d=0,l=e.length;function u(){0==d?t():r()}e.forEach((e=>{var t=a.get(e);t.onsuccess=()=>{le.analyzePath(e).exists&&le.unlink(e),le.createDataFile(ie.dirname(e),ie.basename(e),t.result,!0,!0,!0),++o+d==l&&u()},t.onerror=()=>{d++,o+d==l&&u()}})),n.onerror=r},s.onerror=r}},ue={DEFAULT_POLLMASK:5,calculateAt:function(e,t,r){if(ie.isAbs(t))return t;var i;if(-100===e)i=le.cwd();else{var s=le.getStream(e);if(!s)throw new le.ErrnoError(8);i=s.path}if(0==t.length){if(!r)throw new le.ErrnoError(44);return i}return ie.join2(i,t)},doStat:function(e,t,r){try{var i=e(t)}catch(e){if(e&&e.node&&ie.normalize(t)!==ie.normalize(le.getPath(e.node)))return-54;throw e}return k[r>>2]=i.dev,k[r+4>>2]=0,k[r+8>>2]=i.ino,k[r+12>>2]=i.mode,k[r+16>>2]=i.nlink,k[r+20>>2]=i.uid,k[r+24>>2]=i.gid,k[r+28>>2]=i.rdev,k[r+32>>2]=0,K=[i.size>>>0,(q=i.size,+Math.abs(q)>=1?q>0?(0|Math.min(+Math.floor(q/4294967296),4294967295))>>>0:~~+Math.ceil((q-+(~~q>>>0))/4294967296)>>>0:0)],k[r+40>>2]=K[0],k[r+44>>2]=K[1],k[r+48>>2]=4096,k[r+52>>2]=i.blocks,K=[Math.floor(i.atime.getTime()/1e3)>>>0,(q=Math.floor(i.atime.getTime()/1e3),+Math.abs(q)>=1?q>0?(0|Math.min(+Math.floor(q/4294967296),4294967295))>>>0:~~+Math.ceil((q-+(~~q>>>0))/4294967296)>>>0:0)],k[r+56>>2]=K[0],k[r+60>>2]=K[1],k[r+64>>2]=0,K=[Math.floor(i.mtime.getTime()/1e3)>>>0,(q=Math.floor(i.mtime.getTime()/1e3),+Math.abs(q)>=1?q>0?(0|Math.min(+Math.floor(q/4294967296),4294967295))>>>0:~~+Math.ceil((q-+(~~q>>>0))/4294967296)>>>0:0)],k[r+72>>2]=K[0],k[r+76>>2]=K[1],k[r+80>>2]=0,K=[Math.floor(i.ctime.getTime()/1e3)>>>0,(q=Math.floor(i.ctime.getTime()/1e3),+Math.abs(q)>=1?q>0?(0|Math.min(+Math.floor(q/4294967296),4294967295))>>>0:~~+Math.ceil((q-+(~~q>>>0))/4294967296)>>>0:0)],k[r+88>>2]=K[0],k[r+92>>2]=K[1],k[r+96>>2]=0,K=[i.ino>>>0,(q=i.ino,+Math.abs(q)>=1?q>0?(0|Math.min(+Math.floor(q/4294967296),4294967295))>>>0:~~+Math.ceil((q-+(~~q>>>0))/4294967296)>>>0:0)],k[r+104>>2]=K[0],k[r+108>>2]=K[1],0},doMsync:function(e,t,r,i,s){var n=x.slice(e,e+r);le.msync(t,n,s,r,i)},varargs:void 0,get:function(){return ue.varargs+=4,k[ue.varargs-4>>2]},getStr:function(e){return L(e)},getStreamFromFD:function(e){var t=le.getStream(e);if(!t)throw new le.ErrnoError(8);return t}};function he(e){switch(e){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+e)}}var ce=void 0;function fe(e){for(var t="",r=e;x[r];)t+=ce[x[r++]];return t}var pe={},me={},_e={},ge=48,ye=57;function be(e){if(void 0===e)return"_unknown";var t=(e=e.replace(/[^a-zA-Z0-9_]/g,"$")).charCodeAt(0);return t>=ge&&t<=ye?"_"+e:e}function ve(e,t){return e=be(e),new Function("body","return function "+e+'() {\n "use strict"; return body.apply(this, arguments);\n};\n')(t)}function we(e,t){var r=ve(t,(function(e){this.name=t,this.message=e;var r=new Error(e).stack;void 0!==r&&(this.stack=this.toString()+"\n"+r.replace(/^Error(:[^\n]*)?\n/,""))}));return r.prototype=Object.create(e.prototype),r.prototype.constructor=r,r.prototype.toString=function(){return void 0===this.message?this.name:this.name+": "+this.message},r}var Se=void 0;function Ee(e){throw new Se(e)}var Ue=void 0;function xe(e){throw new Ue(e)}function Ae(e,t,r){function i(t){var i=r(t);i.length!==e.length&&xe("Mismatched type converter count");for(var s=0;s{me.hasOwnProperty(e)?s[t]=me[e]:(n.push(e),pe.hasOwnProperty(e)||(pe[e]=[]),pe[e].push((()=>{s[t]=me[e],++a===n.length&&i(s)})))})),0===n.length&&i(s)}function Be(e,t,r={}){if(!("argPackAdvance"in t))throw new TypeError("registerType registeredInstance requires argPackAdvance");var i=t.name;if(e||Ee('type "'+i+'" must have a positive integer typeid pointer'),me.hasOwnProperty(e)){if(r.ignoreDuplicateRegistrations)return;Ee("Cannot register type '"+i+"' twice")}if(me[e]=t,delete _e[e],pe.hasOwnProperty(e)){var s=pe[e];delete pe[e],s.forEach((e=>e()))}}function ke(e){if(!(this instanceof Xe))return!1;if(!(e instanceof Xe))return!1;for(var t=this.$$.ptrType.registeredClass,r=this.$$.ptr,i=e.$$.ptrType.registeredClass,s=e.$$.ptr;t.baseClass;)r=t.upcast(r),t=t.baseClass;for(;i.baseClass;)s=i.upcast(s),i=i.baseClass;return t===i&&r===s}function Te(e){Ee(e.$$.ptrType.registeredClass.name+" instance already deleted")}var Ce=!1;function De(e){}function Fe(e){e.count.value-=1,0===e.count.value&&function(e){e.smartPtr?e.smartPtrType.rawDestructor(e.smartPtr):e.ptrType.registeredClass.rawDestructor(e.ptr)}(e)}function Ie(e,t,r){if(t===r)return e;if(void 0===r.baseClass)return null;var i=Ie(e,t,r.baseClass);return null===i?null:r.downcast(i)}var Pe={};function Le(){return Object.keys(Ge).length}function ze(){var e=[];for(var t in Ge)Ge.hasOwnProperty(t)&&e.push(Ge[t]);return e}var Re=[];function Me(){for(;Re.length;){var e=Re.pop();e.$$.deleteScheduled=!1,e.delete()}}var Ne=void 0;function Oe(e){Ne=e,Re.length&&Ne&&Ne(Me)}var Ge={};function He(e,t){return t=function(e,t){for(void 0===t&&Ee("ptr should not be undefined");e.baseClass;)t=e.upcast(t),e=e.baseClass;return t}(e,t),Ge[t]}function $e(e,t){return t.ptrType&&t.ptr||xe("makeClassHandle requires ptr and ptrType"),!!t.smartPtrType!=!!t.smartPtr&&xe("Both smartPtrType and smartPtr must be specified"),t.count={value:1},We(Object.create(e,{$$:{value:t}}))}function Ve(e){var t=this.getPointee(e);if(!t)return this.destructor(e),null;var r=He(this.registeredClass,t);if(void 0!==r){if(0===r.$$.count.value)return r.$$.ptr=t,r.$$.smartPtr=e,r.clone();var i=r.clone();return this.destructor(e),i}function s(){return this.isSmartPointer?$e(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:t,smartPtrType:this,smartPtr:e}):$e(this.registeredClass.instancePrototype,{ptrType:this,ptr:e})}var n,a=this.registeredClass.getActualType(t),o=Pe[a];if(!o)return s.call(this);n=this.isConst?o.constPointerType:o.pointerType;var d=Ie(t,this.registeredClass,n.registeredClass);return null===d?s.call(this):this.isSmartPointer?$e(n.registeredClass.instancePrototype,{ptrType:n,ptr:d,smartPtrType:this,smartPtr:e}):$e(n.registeredClass.instancePrototype,{ptrType:n,ptr:d})}function We(e){return"undefined"==typeof FinalizationRegistry?(We=e=>e,e):(Ce=new FinalizationRegistry((e=>{Fe(e.$$)})),We=e=>{var t=e.$$;if(t.smartPtr){var r={$$:t};Ce.register(e,r,e)}return e},De=e=>Ce.unregister(e),We(e))}function je(){if(this.$$.ptr||Te(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var e,t=We(Object.create(Object.getPrototypeOf(this),{$$:{value:(e=this.$$,{count:e.count,deleteScheduled:e.deleteScheduled,preservePointerOnDelete:e.preservePointerOnDelete,ptr:e.ptr,ptrType:e.ptrType,smartPtr:e.smartPtr,smartPtrType:e.smartPtrType})}}));return t.$$.count.value+=1,t.$$.deleteScheduled=!1,t}function Ye(){this.$$.ptr||Te(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&Ee("Object already scheduled for deletion"),De(this),Fe(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)}function qe(){return!this.$$.ptr}function Ke(){return this.$$.ptr||Te(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&Ee("Object already scheduled for deletion"),Re.push(this),1===Re.length&&Ne&&Ne(Me),this.$$.deleteScheduled=!0,this}function Xe(){}function Ze(e,t,r){if(void 0===e[t].overloadTable){var i=e[t];e[t]=function(){return e[t].overloadTable.hasOwnProperty(arguments.length)||Ee("Function '"+r+"' called with an invalid number of arguments ("+arguments.length+") - expects one of ("+e[t].overloadTable+")!"),e[t].overloadTable[arguments.length].apply(this,arguments)},e[t].overloadTable=[],e[t].overloadTable[i.argCount]=i}}function Je(e,t,r,i,s,n,a,o){this.name=e,this.constructor=t,this.instancePrototype=r,this.rawDestructor=i,this.baseClass=s,this.getActualType=n,this.upcast=a,this.downcast=o,this.pureVirtualFunctions=[]}function Qe(e,t,r){for(;t!==r;)t.upcast||Ee("Expected null or instance of "+r.name+", got an instance of "+t.name),e=t.upcast(e),t=t.baseClass;return e}function et(e,t){if(null===t)return this.isReference&&Ee("null is not a valid "+this.name),0;t.$$||Ee('Cannot pass "'+xt(t)+'" as a '+this.name),t.$$.ptr||Ee("Cannot pass deleted object as a pointer of type "+this.name);var r=t.$$.ptrType.registeredClass;return Qe(t.$$.ptr,r,this.registeredClass)}function tt(e,t){var r;if(null===t)return this.isReference&&Ee("null is not a valid "+this.name),this.isSmartPointer?(r=this.rawConstructor(),null!==e&&e.push(this.rawDestructor,r),r):0;t.$$||Ee('Cannot pass "'+xt(t)+'" as a '+this.name),t.$$.ptr||Ee("Cannot pass deleted object as a pointer of type "+this.name),!this.isConst&&t.$$.ptrType.isConst&&Ee("Cannot convert argument of type "+(t.$$.smartPtrType?t.$$.smartPtrType.name:t.$$.ptrType.name)+" to parameter type "+this.name);var i=t.$$.ptrType.registeredClass;if(r=Qe(t.$$.ptr,i,this.registeredClass),this.isSmartPointer)switch(void 0===t.$$.smartPtr&&Ee("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:t.$$.smartPtrType===this?r=t.$$.smartPtr:Ee("Cannot convert argument of type "+(t.$$.smartPtrType?t.$$.smartPtrType.name:t.$$.ptrType.name)+" to parameter type "+this.name);break;case 1:r=t.$$.smartPtr;break;case 2:if(t.$$.smartPtrType===this)r=t.$$.smartPtr;else{var s=t.clone();r=this.rawShare(r,Ut.toHandle((function(){s.delete()}))),null!==e&&e.push(this.rawDestructor,r)}break;default:Ee("Unsupporting sharing policy")}return r}function rt(e,t){if(null===t)return this.isReference&&Ee("null is not a valid "+this.name),0;t.$$||Ee('Cannot pass "'+xt(t)+'" as a '+this.name),t.$$.ptr||Ee("Cannot pass deleted object as a pointer of type "+this.name),t.$$.ptrType.isConst&&Ee("Cannot convert argument of type "+t.$$.ptrType.name+" to parameter type "+this.name);var r=t.$$.ptrType.registeredClass;return Qe(t.$$.ptr,r,this.registeredClass)}function it(e){return this.fromWireType(k[e>>2])}function st(e){return this.rawGetPointee&&(e=this.rawGetPointee(e)),e}function nt(e){this.rawDestructor&&this.rawDestructor(e)}function at(e){null!==e&&e.delete()}function ot(e,t,r,i,s,n,a,o,d,l,u){this.name=e,this.registeredClass=t,this.isReference=r,this.isConst=i,this.isSmartPointer=s,this.pointeeType=n,this.sharingPolicy=a,this.rawGetPointee=o,this.rawConstructor=d,this.rawShare=l,this.rawDestructor=u,s||void 0!==t.baseClass?this.toWireType=tt:i?(this.toWireType=et,this.destructorFunction=null):(this.toWireType=rt,this.destructorFunction=null)}var dt=[];function lt(e){var t=dt[e];return t||(e>=dt.length&&(dt.length=e+1),dt[e]=t=F.get(e)),t}function ut(e,r,i){return e.includes("j")?function(e,r,i){var s=t["dynCall_"+e];return i&&i.length?s.apply(null,[r].concat(i)):s.call(null,r)}(e,r,i):lt(r).apply(null,i)}function ht(e,t){var r,i,s,n=(e=fe(e)).includes("j")?(r=e,i=t,s=[],function(){return s.length=0,Object.assign(s,arguments),ut(r,i,s)}):lt(t);return"function"!=typeof n&&Ee("unknown function pointer with signature "+e+": "+t),n}var ct=void 0;function ft(e){var t=jt(e),r=fe(t);return Vt(t),r}function pt(e,t){var r=[],i={};throw t.forEach((function e(t){i[t]||me[t]||(_e[t]?_e[t].forEach(e):(r.push(t),i[t]=!0))})),new ct(e+": "+r.map(ft).join([", "]))}function mt(e,t){for(var r=[],i=0;i>2]);return r}function _t(e){for(;e.length;){var t=e.pop();e.pop()(t)}}function gt(e,t){if(!(e instanceof Function))throw new TypeError("new_ called with constructor type "+typeof e+" which is not a function");var r=ve(e.name||"unknownFunctionName",(function(){}));r.prototype=e.prototype;var i=new r,s=e.apply(i,t);return s instanceof Object?s:i}function yt(e,t,r,i,s){var n=t.length;n<2&&Ee("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var a=null!==t[1]&&null!==r,o=!1,d=1;d0?", ":"")+h),c+=(l?"var rv = ":"")+"invoker(fn"+(h.length>0?", ":"")+h+");\n",o)c+="runDestructors(destructors);\n";else for(d=a?1:2;d4&&0==--vt[e].refcount&&(vt[e]=void 0,bt.push(e))}function St(){for(var e=0,t=5;t(e||Ee("Cannot use deleted val. handle = "+e),vt[e].value),toHandle:e=>{switch(e){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:var t=bt.length?bt.pop():vt.length;return vt[t]={refcount:1,value:e},t}}};function xt(e){if(null===e)return"null";var t=typeof e;return"object"===t||"array"===t||"function"===t?e.toString():""+e}function At(e,t){switch(t){case 2:return function(e){return this.fromWireType(C[e>>2])};case 3:return function(e){return this.fromWireType(D[e>>3])};default:throw new TypeError("Unknown float type: "+e)}}function Bt(e,t,r){switch(t){case 0:return r?function(e){return U[e]}:function(e){return x[e]};case 1:return r?function(e){return A[e>>1]}:function(e){return B[e>>1]};case 2:return r?function(e){return k[e>>2]}:function(e){return T[e>>2]};default:throw new TypeError("Unknown integer type: "+e)}}var kt="undefined"!=typeof TextDecoder?new TextDecoder("utf-16le"):void 0;function Tt(e,t){for(var r=e,i=r>>1,s=i+t/2;!(i>=s)&&B[i];)++i;if((r=i<<1)-e>32&&kt)return kt.decode(x.subarray(e,r));for(var n="",a=0;!(a>=t/2);++a){var o=A[e+2*a>>1];if(0==o)break;n+=String.fromCharCode(o)}return n}function Ct(e,t,r){if(void 0===r&&(r=2147483647),r<2)return 0;for(var i=t,s=(r-=2)<2*e.length?r/2:e.length,n=0;n>1]=a,t+=2}return A[t>>1]=0,t-i}function Dt(e){return 2*e.length}function Ft(e,t){for(var r=0,i="";!(r>=t/4);){var s=k[e+4*r>>2];if(0==s)break;if(++r,s>=65536){var n=s-65536;i+=String.fromCharCode(55296|n>>10,56320|1023&n)}else i+=String.fromCharCode(s)}return i}function It(e,t,r){if(void 0===r&&(r=2147483647),r<4)return 0;for(var i=t,s=i+r-4,n=0;n=55296&&a<=57343&&(a=65536+((1023&a)<<10)|1023&e.charCodeAt(++n)),k[t>>2]=a,(t+=4)+4>s)break}return k[t>>2]=0,t-i}function Pt(e){for(var t=0,r=0;r=55296&&i<=57343&&++r,t+=4}return t}var Lt={},zt=[],Rt=[],Mt={};function Nt(){if(!Nt.strings){var e={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:("object"==typeof navigator&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:h||"./this.program"};for(var t in Mt)void 0===Mt[t]?delete e[t]:e[t]=Mt[t];var r=[];for(var t in e)r.push(t+"="+e[t]);Nt.strings=r}return Nt.strings}var Ot=function(e,t,r,i){e||(e=this),this.parent=e,this.mount=e.mount,this.mounted=null,this.id=le.nextInode++,this.name=t,this.mode=r,this.node_ops={},this.stream_ops={},this.rdev=i},Gt=365,Ht=146;Object.defineProperties(Ot.prototype,{read:{get:function(){return(this.mode&Gt)===Gt},set:function(e){e?this.mode|=Gt:this.mode&=-366}},write:{get:function(){return(this.mode&Ht)===Ht},set:function(e){e?this.mode|=Ht:this.mode&=-147}},isFolder:{get:function(){return le.isDir(this.mode)}},isDevice:{get:function(){return le.isChrdev(this.mode)}}}),le.FSNode=Ot,le.staticInit(),function(){for(var e=new Array(256),t=0;t<256;++t)e[t]=String.fromCharCode(t);ce=e}(),Se=t.BindingError=we(Error,"BindingError"),Ue=t.InternalError=we(Error,"InternalError"),Xe.prototype.isAliasOf=ke,Xe.prototype.clone=je,Xe.prototype.delete=Ye,Xe.prototype.isDeleted=qe,Xe.prototype.deleteLater=Ke,t.getInheritedInstanceCount=Le,t.getLiveInheritedInstances=ze,t.flushPendingDeletes=Me,t.setDelayFunction=Oe,ot.prototype.getPointee=st,ot.prototype.destructor=nt,ot.prototype.argPackAdvance=8,ot.prototype.readValueFromPointer=it,ot.prototype.deleteObject=at,ot.prototype.fromWireType=Ve,ct=t.UnboundTypeError=we(Error,"UnboundTypeError"),t.count_emval_handles=St,t.get_first_emval=Et;var $t={q:function(e){return qt(e+24)+24},p:function(e,t,r){throw new re(e).init(t,r),e},C:function(e,t,r){ue.varargs=r;try{var i=ue.getStreamFromFD(e);switch(t){case 0:return(s=ue.get())<0?-28:le.createStream(i,s).fd;case 1:case 2:case 6:case 7:return 0;case 3:return i.flags;case 4:var s=ue.get();return i.flags|=s,0;case 5:return s=ue.get(),A[s+0>>1]=2,0;case 16:case 8:default:return-28;case 9:return n=28,k[Wt()>>2]=n,-1}}catch(e){if(void 0===le||!(e instanceof le.ErrnoError))throw e;return-e.errno}var n},w:function(e,t,r,i){ue.varargs=i;try{t=ue.getStr(t),t=ue.calculateAt(e,t);var s=i?ue.get():0;return le.open(t,r,s).fd}catch(e){if(void 0===le||!(e instanceof le.ErrnoError))throw e;return-e.errno}},u:function(e,t,r,i,s){},E:function(e,t,r,i,s){var n=he(r);Be(e,{name:t=fe(t),fromWireType:function(e){return!!e},toWireType:function(e,t){return t?i:s},argPackAdvance:8,readValueFromPointer:function(e){var i;if(1===r)i=U;else if(2===r)i=A;else{if(4!==r)throw new TypeError("Unknown boolean type size: "+t);i=k}return this.fromWireType(i[e>>n])},destructorFunction:null})},t:function(e,r,i,s,n,a,o,d,l,u,h,c,f){h=fe(h),a=ht(n,a),d&&(d=ht(o,d)),u&&(u=ht(l,u)),f=ht(c,f);var p=be(h);!function(e,r,i){t.hasOwnProperty(e)?((void 0===i||void 0!==t[e].overloadTable&&void 0!==t[e].overloadTable[i])&&Ee("Cannot register public name '"+e+"' twice"),Ze(t,e,e),t.hasOwnProperty(i)&&Ee("Cannot register multiple overloads of a function with the same number of arguments ("+i+")!"),t[e].overloadTable[i]=r):(t[e]=r,void 0!==i&&(t[e].numArguments=i))}(p,(function(){pt("Cannot construct "+h+" due to unbound types",[s])})),Ae([e,r,i],s?[s]:[],(function(r){var i,n;r=r[0],n=s?(i=r.registeredClass).instancePrototype:Xe.prototype;var o=ve(p,(function(){if(Object.getPrototypeOf(this)!==l)throw new Se("Use 'new' to construct "+h);if(void 0===c.constructor_body)throw new Se(h+" has no accessible constructor");var e=c.constructor_body[arguments.length];if(void 0===e)throw new Se("Tried to invoke ctor of "+h+" with invalid number of parameters ("+arguments.length+") - expected ("+Object.keys(c.constructor_body).toString()+") parameters instead!");return e.apply(this,arguments)})),l=Object.create(n,{constructor:{value:o}});o.prototype=l;var c=new Je(h,o,l,f,i,a,d,u),m=new ot(h,c,!0,!1,!1),_=new ot(h+"*",c,!1,!1,!1),g=new ot(h+" const*",c,!1,!0,!1);return Pe[e]={pointerType:_,constPointerType:g},function(e,r,i){t.hasOwnProperty(e)||xe("Replacing nonexistant public symbol"),void 0!==t[e].overloadTable&&void 0!==i?t[e].overloadTable[i]=r:(t[e]=r,t[e].argCount=i)}(p,o),[m,_,g]}))},r:function(e,t,r,i,s,n){S(t>0);var a=mt(t,r);s=ht(i,s),Ae([],[e],(function(e){var r="constructor "+(e=e[0]).name;if(void 0===e.registeredClass.constructor_body&&(e.registeredClass.constructor_body=[]),void 0!==e.registeredClass.constructor_body[t-1])throw new Se("Cannot register multiple constructors with identical number of parameters ("+(t-1)+") for class '"+e.name+"'! Overload resolution is currently only performed using the parameter count, not actual type info!");return e.registeredClass.constructor_body[t-1]=()=>{pt("Cannot construct "+e.name+" due to unbound types",a)},Ae([],a,(function(i){return i.splice(1,0,null),e.registeredClass.constructor_body[t-1]=yt(r,i,null,s,n),[]})),[]}))},d:function(e,t,r,i,s,n,a,o){var d=mt(r,i);t=fe(t),n=ht(s,n),Ae([],[e],(function(e){var i=(e=e[0]).name+"."+t;function s(){pt("Cannot call "+i+" due to unbound types",d)}t.startsWith("@@")&&(t=Symbol[t.substring(2)]),o&&e.registeredClass.pureVirtualFunctions.push(t);var l=e.registeredClass.instancePrototype,u=l[t];return void 0===u||void 0===u.overloadTable&&u.className!==e.name&&u.argCount===r-2?(s.argCount=r-2,s.className=e.name,l[t]=s):(Ze(l,t,i),l[t].overloadTable[r-2]=s),Ae([],d,(function(s){var o=yt(i,s,e,n,a);return void 0===l[t].overloadTable?(o.argCount=r-2,l[t]=o):l[t].overloadTable[r-2]=o,[]})),[]}))},D:function(e,t){Be(e,{name:t=fe(t),fromWireType:function(e){var t=Ut.toValue(e);return wt(e),t},toWireType:function(e,t){return Ut.toHandle(t)},argPackAdvance:8,readValueFromPointer:it,destructorFunction:null})},n:function(e,t,r){var i=he(r);Be(e,{name:t=fe(t),fromWireType:function(e){return e},toWireType:function(e,t){return t},argPackAdvance:8,readValueFromPointer:At(t,i),destructorFunction:null})},c:function(e,t,r,i,s){t=fe(t);var n=he(r),a=e=>e;if(0===i){var o=32-8*r;a=e=>e<>>o}var d=t.includes("unsigned");Be(e,{name:t,fromWireType:a,toWireType:d?function(e,t){return this.name,t>>>0}:function(e,t){return this.name,t},argPackAdvance:8,readValueFromPointer:Bt(t,n,0!==i),destructorFunction:null})},b:function(e,t,r){var i=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][t];function s(e){var t=T,r=t[e>>=2],s=t[e+1];return new i(E,s,r)}Be(e,{name:r=fe(r),fromWireType:s,argPackAdvance:8,readValueFromPointer:s},{ignoreDuplicateRegistrations:!0})},m:function(e,t){var r="std::string"===(t=fe(t));Be(e,{name:t,fromWireType:function(e){var t,i=T[e>>2],s=e+4;if(r)for(var n=s,a=0;a<=i;++a){var o=s+a;if(a==i||0==x[o]){var d=L(n,o-n);void 0===t?t=d:(t+=String.fromCharCode(0),t+=d),n=o+1}}else{var l=new Array(i);for(a=0;a>2]=i,r&&s)z(t,x,a,i+1);else if(s)for(var o=0;o255&&(Vt(a),Ee("String has UTF-16 code units that do not fit in 8 bits")),x[a+o]=d}else for(o=0;oB,o=1):4===t&&(i=Ft,s=It,a=Pt,n=()=>T,o=2),Be(e,{name:r,fromWireType:function(e){for(var r,s=T[e>>2],a=n(),d=e+4,l=0;l<=s;++l){var u=e+4+l*t;if(l==s||0==a[u>>o]){var h=i(d,u-d);void 0===r?r=h:(r+=String.fromCharCode(0),r+=h),d=u+t}}return Vt(e),r},toWireType:function(e,i){"string"!=typeof i&&Ee("Cannot pass non-string to C++ string type "+r);var n=a(i),d=qt(4+n+t);return T[d>>2]=n>>o,s(i,d+4,n+t),null!==e&&e.push(Vt,d),d},argPackAdvance:8,readValueFromPointer:it,destructorFunction:function(e){Vt(e)}})},o:function(e,t){Be(e,{isVoid:!0,name:t=fe(t),argPackAdvance:0,fromWireType:function(){},toWireType:function(e,t){}})},f:function(){return Date.now()},g:function(e,t,r,i){var s,n;(e=zt[e])(t=Ut.toValue(t),r=void 0===(n=Lt[s=r])?fe(s):n,null,i)},j:wt,i:function(e,t){var r=function(e,t){for(var r,i,s,n=new Array(e),a=0;a>2],i="parameter "+a,s=void 0,void 0===(s=me[r])&&Ee(i+" has unknown type "+ft(r)),s);return n}(e,t),i=r[0],s=i.name+"_$"+r.slice(1).map((function(e){return e.name})).join("_")+"$",n=Rt[s];if(void 0!==n)return n;for(var a=["retType"],o=[i],d="",l=0;l>2]=n,function(e,t,r){for(var i=0;i>2]=r.length;var i=0;return r.forEach((function(e){i+=e.length+1})),T[t>>2]=i,0},l:function(e){try{var t=ue.getStreamFromFD(e);return le.close(t),0}catch(e){if(void 0===le||!(e instanceof le.ErrnoError))throw e;return e.errno}},x:function(e,t){try{var r=ue.getStreamFromFD(e),i=r.tty?2:le.isDir(r.mode)?3:le.isLink(r.mode)?7:4;return U[0|t]=i,0}catch(e){if(void 0===le||!(e instanceof le.ErrnoError))throw e;return e.errno}},B:function(e,t,r,i){try{var s=function(e,t,r,i){for(var s=0,n=0;n>2],o=T[t+4>>2];t+=8;var d=le.read(e,U,a,o,i);if(d<0)return-1;if(s+=d,d>2]=s,0}catch(e){if(void 0===le||!(e instanceof le.ErrnoError))throw e;return e.errno}},s:function(e,t,r,i,s){try{var n=(d=r)+2097152>>>0<4194305-!!(o=t)?(o>>>0)+4294967296*d:NaN;if(isNaN(n))return 61;var a=ue.getStreamFromFD(e);return le.llseek(a,n,i),K=[a.position>>>0,(q=a.position,+Math.abs(q)>=1?q>0?(0|Math.min(+Math.floor(q/4294967296),4294967295))>>>0:~~+Math.ceil((q-+(~~q>>>0))/4294967296)>>>0:0)],k[s>>2]=K[0],k[s+4>>2]=K[1],a.getdents&&0===n&&0===i&&(a.getdents=null),0}catch(e){if(void 0===le||!(e instanceof le.ErrnoError))throw e;return e.errno}var o,d},k:function(e,t,r,i){try{var s=function(e,t,r,i){for(var s=0,n=0;n>2],o=T[t+4>>2];t+=8;var d=le.write(e,U,a,o,i);if(d<0)return-1;s+=d}return s}(ue.getStreamFromFD(e),t,r);return T[i>>2]=s,0}catch(e){if(void 0===le||!(e instanceof le.ErrnoError))throw e;return e.errno}},e:function(e){}};!function(){var e={a:$t};function r(e,r){var i,s,n=e.exports;t.asm=n,b=t.asm.F,i=b.buffer,E=i,t.HEAP8=U=new Int8Array(i),t.HEAP16=A=new Int16Array(i),t.HEAP32=k=new Int32Array(i),t.HEAPU8=x=new Uint8Array(i),t.HEAPU16=B=new Uint16Array(i),t.HEAPU32=T=new Uint32Array(i),t.HEAPF32=C=new Float32Array(i),t.HEAPF64=D=new Float64Array(i),F=t.asm.I,s=t.asm.G,N.unshift(s),V()}function s(e){r(e.instance)}function a(t){return function(){if(!y&&(c||f)){if("function"==typeof fetch&&!J(j))return fetch(j,{credentials:"same-origin"}).then((function(e){if(!e.ok)throw"failed to load wasm binary file at '"+j+"'";return e.arrayBuffer()})).catch((function(){return Q(j)}));if(n)return new Promise((function(e,t){n(j,(function(t){e(new Uint8Array(t))}),t)}))}return Promise.resolve().then((function(){return Q(j)}))}().then((function(t){return WebAssembly.instantiate(t,e)})).then((function(e){return e})).then(t,(function(e){g("failed to asynchronously prepare wasm: "+e),W(e)}))}if($(),t.instantiateWasm)try{return t.instantiateWasm(e,r)}catch(e){return g("Module.instantiateWasm callback failed with error: "+e),!1}(y||"function"!=typeof WebAssembly.instantiateStreaming||Z(j)||J(j)||p||"function"!=typeof fetch?a(s):fetch(j,{credentials:"same-origin"}).then((function(t){return WebAssembly.instantiateStreaming(t,e).then(s,(function(e){return g("wasm streaming compile failed: "+e),g("falling back to ArrayBuffer instantiation"),a(s)}))}))).catch(i)}(),t.___wasm_call_ctors=function(){return(t.___wasm_call_ctors=t.asm.G).apply(null,arguments)};var Vt=t._free=function(){return(Vt=t._free=t.asm.H).apply(null,arguments)},Wt=t.___errno_location=function(){return(Wt=t.___errno_location=t.asm.J).apply(null,arguments)},jt=t.___getTypeName=function(){return(jt=t.___getTypeName=t.asm.K).apply(null,arguments)};t.___embind_register_native_and_builtin_types=function(){return(t.___embind_register_native_and_builtin_types=t.asm.L).apply(null,arguments)};var Yt,qt=t._malloc=function(){return(qt=t._malloc=t.asm.M).apply(null,arguments)},Kt=t._emscripten_builtin_memalign=function(){return(Kt=t._emscripten_builtin_memalign=t.asm.N).apply(null,arguments)},Xt=t.___cxa_is_pointer_type=function(){return(Xt=t.___cxa_is_pointer_type=t.asm.O).apply(null,arguments)};function Zt(e){function i(){Yt||(Yt=!0,t.calledRun=!0,w||(t.noFSInit||le.init.initialized||le.init(),le.ignorePermissions=!1,te(N),r(t),t.onRuntimeInitialized&&t.onRuntimeInitialized(),function(){if(t.postRun)for("function"==typeof t.postRun&&(t.postRun=[t.postRun]);t.postRun.length;)e=t.postRun.shift(),O.unshift(e);var e;te(O)}()))}G>0||(function(){if(t.preRun)for("function"==typeof t.preRun&&(t.preRun=[t.preRun]);t.preRun.length;)e=t.preRun.shift(),M.unshift(e);var e;te(M)}(),G>0||(t.setStatus?(t.setStatus("Running..."),setTimeout((function(){setTimeout((function(){t.setStatus("")}),1),i()}),1)):i()))}if(t.dynCall_viiijj=function(){return(t.dynCall_viiijj=t.asm.P).apply(null,arguments)},t.dynCall_jij=function(){return(t.dynCall_jij=t.asm.Q).apply(null,arguments)},t.dynCall_jii=function(){return(t.dynCall_jii=t.asm.R).apply(null,arguments)},t.dynCall_jiji=function(){return(t.dynCall_jiji=t.asm.S).apply(null,arguments)},H=function e(){Yt||Zt(),Yt||(H=e)},t.preInit)for("function"==typeof t.preInit&&(t.preInit=[t.preInit]);t.preInit.length>0;)t.preInit.pop()();return Zt(),t.ready}),r=1e-6,i="undefined"!=typeof Float32Array?Float32Array:Array;function s(){var e=new i(16);return i!=Float32Array&&(e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=0,e[12]=0,e[13]=0,e[14]=0),e[0]=1,e[5]=1,e[10]=1,e[15]=1,e}function n(e){return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}Math.hypot||(Math.hypot=function(){for(var e=0,t=arguments.length;t--;)e+=arguments[t]*arguments[t];return Math.sqrt(e)});var a,o=function(e,t,r,i,s,n,a){var o=1/(t-r),d=1/(i-s),l=1/(n-a);return e[0]=-2*o,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=-2*d,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=2*l,e[11]=0,e[12]=(t+r)*o,e[13]=(s+i)*d,e[14]=(a+n)*l,e[15]=1,e};function d(e,t,r){var s=new i(3);return s[0]=e,s[1]=t,s[2]=r,s}a=new i(3),i!=Float32Array&&(a[0]=0,a[1]=0,a[2]=0);var l=(e,t)=>{t&&e.pixelStorei(e.UNPACK_ALIGNMENT,1);const i=function(){const t=m(e.VERTEX_SHADER,"\n attribute vec4 aVertexPosition;\n attribute vec2 aTexturePosition;\n uniform mat4 uModelMatrix;\n uniform mat4 uViewMatrix;\n uniform mat4 uProjectionMatrix;\n varying lowp vec2 vTexturePosition;\n void main(void) {\n gl_Position = uProjectionMatrix * uViewMatrix * uModelMatrix * aVertexPosition;\n vTexturePosition = aTexturePosition;\n }\n "),r=m(e.FRAGMENT_SHADER,"\n precision highp float;\n varying highp vec2 vTexturePosition;\n uniform int isyuv;\n uniform sampler2D rgbaTexture;\n uniform sampler2D yTexture;\n uniform sampler2D uTexture;\n uniform sampler2D vTexture;\n\n const mat4 YUV2RGB = mat4( 1.1643828125, 0, 1.59602734375, -.87078515625,\n 1.1643828125, -.39176171875, -.81296875, .52959375,\n 1.1643828125, 2.017234375, 0, -1.081390625,\n 0, 0, 0, 1);\n\n\n void main(void) {\n\n if (isyuv>0) {\n\n highp float y = texture2D(yTexture, vTexturePosition).r;\n highp float u = texture2D(uTexture, vTexturePosition).r;\n highp float v = texture2D(vTexture, vTexturePosition).r;\n gl_FragColor = vec4(y, u, v, 1) * YUV2RGB;\n\n } else {\n gl_FragColor = texture2D(rgbaTexture, vTexturePosition);\n }\n }\n "),i=e.createProgram();if(e.attachShader(i,t),e.attachShader(i,r),e.linkProgram(i),!e.getProgramParameter(i,e.LINK_STATUS))return console.log("Unable to initialize the shader program: "+e.getProgramInfoLog(i)),null;return i}();let a={program:i,attribLocations:{vertexPosition:e.getAttribLocation(i,"aVertexPosition"),texturePosition:e.getAttribLocation(i,"aTexturePosition")},uniformLocations:{projectionMatrix:e.getUniformLocation(i,"uProjectionMatrix"),modelMatrix:e.getUniformLocation(i,"uModelMatrix"),viewMatrix:e.getUniformLocation(i,"uViewMatrix"),rgbatexture:e.getUniformLocation(i,"rgbaTexture"),ytexture:e.getUniformLocation(i,"yTexture"),utexture:e.getUniformLocation(i,"uTexture"),vtexture:e.getUniformLocation(i,"vTexture"),isyuv:e.getUniformLocation(i,"isyuv")}},l=function(){const t=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,t);e.bufferData(e.ARRAY_BUFFER,new Float32Array([-1,-1,-1,1,-1,-1,1,1,-1,-1,1,-1]),e.STATIC_DRAW);var r=[];r=r.concat([0,1],[1,1],[1,0],[0,0]);const i=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,i),e.bufferData(e.ARRAY_BUFFER,new Float32Array(r),e.STATIC_DRAW);const s=e.createBuffer();e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,s);return e.bufferData(e.ELEMENT_ARRAY_BUFFER,new Uint16Array([0,1,2,0,2,3]),e.STATIC_DRAW),{position:t,texPosition:i,indices:s}}(),u=p(),h=p(),c=p(),f=p();function p(){let t=e.createTexture();return e.bindTexture(e.TEXTURE_2D,t),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),t}function m(t,r){const i=e.createShader(t);return e.shaderSource(i,r),e.compileShader(i),e.getShaderParameter(i,e.COMPILE_STATUS)?i:(console.log("An error occurred compiling the shaders: "+e.getShaderInfoLog(i)),e.deleteShader(i),null)}function _(t,i){e.viewport(0,0,t,i),e.clearColor(0,0,0,0),e.clearDepth(1),e.enable(e.DEPTH_TEST),e.depthFunc(e.LEQUAL),e.clear(e.COLOR_BUFFER_BIT|e.DEPTH_BUFFER_BIT);const u=s();o(u,-1,1,-1,1,.1,100);const p=s();n(p);const m=s();!function(e,t,i,s){var a,o,d,l,u,h,c,f,p,m,_=t[0],g=t[1],y=t[2],b=s[0],v=s[1],w=s[2],S=i[0],E=i[1],U=i[2];Math.abs(_-S)>1,(1&t)<<7|r<<3])}function We(e){return je(e)&&e[1]===De.sequenceHeader}function je(e){return e[0]>>4===Ue.AAC}$e((function(e){!function(){var t="undefined"!=typeof window&&void 0!==window.document?window.document:{},r=e.exports,i=function(){for(var e,r=[["requestFullscreen","exitFullscreen","fullscreenElement","fullscreenEnabled","fullscreenchange","fullscreenerror"],["webkitRequestFullscreen","webkitExitFullscreen","webkitFullscreenElement","webkitFullscreenEnabled","webkitfullscreenchange","webkitfullscreenerror"],["webkitRequestFullScreen","webkitCancelFullScreen","webkitCurrentFullScreenElement","webkitCancelFullScreen","webkitfullscreenchange","webkitfullscreenerror"],["mozRequestFullScreen","mozCancelFullScreen","mozFullScreenElement","mozFullScreenEnabled","mozfullscreenchange","mozfullscreenerror"],["msRequestFullscreen","msExitFullscreen","msFullscreenElement","msFullscreenEnabled","MSFullscreenChange","MSFullscreenError"]],i=0,s=r.length,n={};i{if(s=i,"[object Number]"!==Object.prototype.toString.call(s))return;var s;t+=i;const n=Je(),a=n-r;a>=1e3&&(e(t/a*1e3),r=n,t=0)}}function et(){const e=window.navigator.userAgent;return!e.match(/Chrome/gi)&&!!e.match(/Safari/gi)}function tt(e){return null==e}function rt(e){e.close()}function it(e,t){t&&(e=e.filter((e=>e.type&&e.type===t)));let r=e[0],i=null,s=1;if(e.length>0){let t=e[1];t&&t.ts-r.ts>1e5&&(r=t,s=2)}if(r)for(let n=s;n=1e3){e[n-1].ts-r.ts<1e3&&(i=n+1)}}}return i}function st(){return function(e){let t="";if("object"==typeof e)try{t=JSON.stringify(e),t=JSON.parse(t)}catch(r){t=e}else t=e;return t}(v)}function nt(e){return e[0]>>4===Fe.keyFrame&&e[1]===De.sequenceHeader}function at(e){return!0===e||"true"===e}function ot(e){return!0!==e&&"true"!==e}(()=>{try{if("object"==typeof WebAssembly&&"function"==typeof WebAssembly.instantiate){const e=new WebAssembly.Module(Uint8Array.of(0,97,115,109,1,0,0,0));if(e instanceof WebAssembly.Module)return new WebAssembly.Instance(e)instanceof WebAssembly.Instance}}catch(e){}})();var dt=function(e,t,r,i){return new(r||(r=Promise))((function(s,n){function a(e){try{d(i.next(e))}catch(e){n(e)}}function o(e){try{d(i.throw(e))}catch(e){n(e)}}function d(e){var t;e.done?s(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(a,o)}d((i=i.apply(e,t||[])).next())}))};const lt=Symbol(32),ut=Symbol(16),ht=Symbol(8);class ct{constructor(e){this.g=e,this.consumed=0,e&&(this.need=e.next().value)}setG(e){this.g=e,this.demand(e.next().value,!0)}consume(){this.buffer&&this.consumed&&(this.buffer.copyWithin(0,this.consumed),this.buffer=this.buffer.subarray(0,this.buffer.length-this.consumed),this.consumed=0)}demand(e,t){return t&&this.consume(),this.need=e,this.flush()}read(e){return dt(this,void 0,void 0,(function*(){return this.lastReadPromise&&(yield this.lastReadPromise),this.lastReadPromise=new Promise(((t,r)=>{var i;this.reject=r,this.resolve=e=>{delete this.lastReadPromise,delete this.resolve,delete this.need,t(e)};this.demand(e,!0)||null===(i=this.pull)||void 0===i||i.call(this,e)}))}))}readU32(){return this.read(lt)}readU16(){return this.read(ut)}readU8(){return this.read(ht)}close(){var e;this.g&&this.g.return(),this.buffer&&this.buffer.subarray(0,0),null===(e=this.reject)||void 0===e||e.call(this,new Error("EOF")),delete this.lastReadPromise}flush(){if(!this.buffer||!this.need)return;let e=null;const t=this.buffer.subarray(this.consumed);let r=0;const i=e=>t.length<(r=e);if("number"==typeof this.need){if(i(this.need))return;e=t.subarray(0,r)}else if(this.need===lt){if(i(4))return;e=t[0]<<24|t[1]<<16|t[2]<<8|t[3]}else if(this.need===ut){if(i(2))return;e=t[0]<<8|t[1]}else if(this.need===ht){if(i(1))return;e=t[0]}else if("buffer"in this.need){if("byteOffset"in this.need){if(i(this.need.byteLength-this.need.byteOffset))return;new Uint8Array(this.need.buffer,this.need.byteOffset).set(t.subarray(0,r)),e=this.need}else if(this.g)return void this.g.throw(new Error("Unsupported type"))}else{if(i(this.need.byteLength))return;new Uint8Array(this.need).set(t.subarray(0,r)),e=this.need}return this.consumed+=r,this.g?this.demand(this.g.next(e).value,!0):this.resolve&&this.resolve(e),e}write(e){if(e instanceof Uint8Array?this.malloc(e.length).set(e):"buffer"in e?this.malloc(e.byteLength).set(new Uint8Array(e.buffer,e.byteOffset,e.byteLength)):this.malloc(e.byteLength).set(new Uint8Array(e)),!this.g&&!this.resolve)return new Promise((e=>this.pull=e));this.flush()}writeU32(e){this.malloc(4).set([e>>24&255,e>>16&255,e>>8&255,255&e]),this.flush()}writeU16(e){this.malloc(2).set([e>>8&255,255&e]),this.flush()}writeU8(e){this.malloc(1)[0]=e,this.flush()}malloc(e){if(this.buffer){const t=this.buffer.length,r=t+e;if(r<=this.buffer.buffer.byteLength-this.buffer.byteOffset)this.buffer=new Uint8Array(this.buffer.buffer,this.buffer.byteOffset,r);else{const e=new Uint8Array(r);e.set(this.buffer),this.buffer=e}return this.buffer.subarray(t,r)}return this.buffer=new Uint8Array(e),this.buffer}}ct.U32=lt,ct.U16=ut,ct.U8=ht;class ft{constructor(e){this.log=(t,...r)=>{if(e._opt.debug&&e._opt.debugLevel==g){const i=e._opt.debugUuid?`[${e._opt.debugUuid}]`:"";console.log(`EasyPro${i}[✅✅✅][${t}]`,...r)}},this.warn=(t,...r)=>{if(e._opt.debug&&(e._opt.debugLevel==g||e._opt.debugLevel==y)){const i=e._opt.debugUuid?`[${e._opt.debugUuid}]`:"";console.log(`EasyPro${i}[❗❗❗][${t}]`,...r)}},this.error=(t,...r)=>{const i=e._opt.debugUuid?`[${e._opt.debugUuid}]`:"";console.error(`EasyPro${i}[❌❌❌][${t}]`,...r)}}}class pt{constructor(e){this._buffer=e,this._buffer_index=0,this._total_bytes=e.byteLength,this._total_bits=8*e.byteLength,this._current_word=0,this._current_word_bits_left=0}destroy(){this._buffer=null}_fillCurrentWord(){let e=this._total_bytes-this._buffer_index;if(e<=0)return void console.error("ExpGolomb: _fillCurrentWord() but no bytes available",this._total_bytes,this._buffer_index);let t=Math.min(4,e),r=new Uint8Array(4);r.set(this._buffer.subarray(this._buffer_index,this._buffer_index+t)),this._current_word=new DataView(r.buffer).getUint32(0,!1),this._buffer_index+=t,this._current_word_bits_left=8*t}readBits(e){if(e>32&&console.error("ExpGolomb: readBits() bits exceeded max 32bits!"),e<=this._current_word_bits_left){let t=this._current_word>>>32-e;return this._current_word<<=e,this._current_word_bits_left-=e,t}let t=this._current_word_bits_left?this._current_word:0;t>>>=32-this._current_word_bits_left;let r=e-this._current_word_bits_left;this._fillCurrentWord();let i=Math.min(r,this._current_word_bits_left),s=this._current_word>>>32-i;return this._current_word<<=i,this._current_word_bits_left-=i,t=t<>>e)return this._current_word<<=e,this._current_word_bits_left-=e,e;return this._fillCurrentWord(),e+this._skipLeadingZero()}readUEG(){let e=this._skipLeadingZero();return this.readBits(e+1)-1}readSEG(){let e=this.readUEG();return 1&e?e+1>>>1:-1*(e>>>1)}}class mt{static _ebsp2rbsp(e){let t=e,r=t.byteLength,i=new Uint8Array(r),s=0;for(let e=0;e=2&&3===t[e]&&0===t[e-1]&&0===t[e-2]||(i[s]=t[e],s++);return new Uint8Array(i.buffer,0,s)}static parseSPS(e){let t=mt._ebsp2rbsp(e),r=new pt(t);r.readByte();let i=r.readByte();r.readByte();let s=r.readByte();r.readUEG();let n=mt.getProfileString(i),a=mt.getLevelString(s),o=1,d=420,l=[0,420,422,444],u=8;if((100===i||110===i||122===i||244===i||44===i||83===i||86===i||118===i||128===i||138===i||144===i)&&(o=r.readUEG(),3===o&&r.readBits(1),o<=3&&(d=l[o]),u=r.readUEG()+8,r.readUEG(),r.readBits(1),r.readBool())){let e=3!==o?8:12;for(let t=0;t0&&e<16?(v=[1,12,10,16,40,24,20,32,80,18,15,64,160,4,3,2][e-1],w=[1,11,11,11,33,11,11,11,33,11,11,33,99,3,2,1][e-1]):255===e&&(v=r.readByte()<<8|r.readByte(),w=r.readByte()<<8|r.readByte())}if(r.readBool()&&r.readBool(),r.readBool()&&(r.readBits(4),r.readBool()&&r.readBits(24)),r.readBool()&&(r.readUEG(),r.readUEG()),r.readBool()){let e=r.readBits(32),t=r.readBits(32);E=r.readBool(),U=t,x=2*e,S=U/x}}let A=1;1===v&&1===w||(A=v/w);let B=0,k=0;if(0===o)B=1,k=2-m;else{B=3===o?1:2,k=(1===o?2:1)*(2-m)}let T=16*(f+1),C=16*(p+1)*(2-m);T-=(_+g)*B,C-=(y+b)*k;let D=Math.ceil(T*A);return r.destroy(),r=null,{profile_string:n,level_string:a,bit_depth:u,ref_frames:c,chroma_format:d,chroma_format_string:mt.getChromaFormatString(d),frame_rate:{fixed:E,fps:S,fps_den:x,fps_num:U},sar_ratio:{width:v,height:w},codec_size:{width:T,height:C},present_size:{width:D,height:C}}}static parseSPS$2(e){let t=e.subarray(1,4),r="avc1.";for(let e=0;e<3;e++){let i=t[e].toString(16);i.length<2&&(i="0"+i),r+=i}let i=mt._ebsp2rbsp(e),s=new pt(i);s.readByte();let n=s.readByte();s.readByte();let a=s.readByte();s.readUEG();let o=mt.getProfileString(n),d=mt.getLevelString(a),l=1,u=420,h=[0,420,422,444],c=8,f=8;if((100===n||110===n||122===n||244===n||44===n||83===n||86===n||118===n||128===n||138===n||144===n)&&(l=s.readUEG(),3===l&&s.readBits(1),l<=3&&(u=h[l]),c=s.readUEG()+8,f=s.readUEG()+8,s.readBits(1),s.readBool())){let e=3!==l?8:12;for(let t=0;t0&&e<16?(E=[1,12,10,16,40,24,20,32,80,18,15,64,160,4,3,2][e-1],U=[1,11,11,11,33,11,11,11,33,11,11,33,99,3,2,1][e-1]):255===e&&(E=s.readByte()<<8|s.readByte(),U=s.readByte()<<8|s.readByte())}if(s.readBool()&&s.readBool(),s.readBool()&&(s.readBits(4),s.readBool()&&s.readBits(24)),s.readBool()&&(s.readUEG(),s.readUEG()),s.readBool()){let e=s.readBits(32),t=s.readBits(32);A=s.readBool(),B=t,k=2*e,x=B/k}}let T=1;1===E&&1===U||(T=E/U);let C=0,D=0;if(0===l)C=1,D=2-y;else{C=3===l?1:2,D=(1===l?2:1)*(2-y)}let F=16*(_+1),I=16*(g+1)*(2-y);F-=(b+v)*C,I-=(w+S)*D;let P=Math.ceil(F*T);return s.destroy(),s=null,{codec_mimetype:r,profile_idc:n,level_idc:a,profile_string:o,level_string:d,chroma_format_idc:l,bit_depth:c,bit_depth_luma:c,bit_depth_chroma:f,ref_frames:m,chroma_format:u,chroma_format_string:mt.getChromaFormatString(u),frame_rate:{fixed:A,fps:x,fps_den:k,fps_num:B},sar_ratio:{width:E,height:U},codec_size:{width:F,height:I},present_size:{width:P,height:I}}}static _skipScalingList(e,t){let r=8,i=8,s=0;for(let n=0;n=this.buflen)return this.iserro=!0,0;this.iserro=!1,r=this.bufoff+e>8?8-this.bufoff:e,t<<=r,t+=this.buffer[this.bufpos]>>8-this.bufoff-r&255>>8-r,this.bufoff+=r,e-=r,8==this.bufoff&&(this.bufpos++,this.bufoff=0)}return t}look(e){let t=this.bufpos,r=this.bufoff,i=this.read(e);return this.bufpos=t,this.bufoff=r,i}read_golomb(){let e;for(e=0;0===this.read(1)&&!this.iserro;e++);return(1<>>24&255,e>>>16&255,e>>>8&255,255&e]),i=new Uint8Array(e+4);i.set(r,0),i.set(t.sps,4),t.sps=i}if(t.pps){const e=t.pps.byteLength,r=new Uint8Array([e>>>24&255,e>>>16&255,e>>>8&255,255&e]),i=new Uint8Array(e+4);i.set(r,0),i.set(t.pps,4),t.pps=i}return t}function yt({sps:e,pps:t}){const r=[23,0,0,0,0,1,66,0,30,255];r[0]=23,r[6]=e[1],r[7]=e[2],r[8]=e[3],r[10]=225,r[11]=e.byteLength>>8&255,r[12]=255&e.byteLength,r.push(...e,1,t.byteLength>>8&255,255&t.byteLength,...t);return new Uint8Array(r)}function bt(e,t){let r=[];r[0]=t?23:39,r[1]=1,r[2]=0,r[3]=0,r[4]=0;const i=new Uint8Array(r.length+e.byteLength);return i.set(r,0),i.set(e,r.length),i}function vt(e){return 31&e[0]}function wt(e){return e===xe.kSliceSEI}function St(e){return!function(e){return e===xe.sps||e===xe.pps}(e)&&!wt(e)}function Et(e){return e===xe.iFrame}const Ut=e=>{let t=e,r=t.byteLength,i=new Uint8Array(r),s=0;for(let e=0;e=2&&3===t[e]&&0===t[e-1]&&0===t[e-2]||(i[s]=t[e],s++);return new Uint8Array(i.buffer,0,s)},xt=e=>{switch(e){case 0:return"4:0:0";case 1:return"4:2:0";case 2:return"4:2:2";case 3:return"4:4:4";default:return"Unknown"}},At=e=>{let t=Ut(e),r=new pt(t);r.readByte(),r.readByte();let i=0,s=0,n=0,a=0;r.readBits(4);let o=r.readBits(3);r.readBool();let d=r.readBits(2),l=r.readBool(),u=r.readBits(5),h=r.readByte(),c=r.readByte(),f=r.readByte(),p=r.readByte(),m=r.readByte(),_=r.readByte(),g=r.readByte(),y=r.readByte(),b=r.readByte(),v=r.readByte(),w=r.readByte(),S=[],E=[];for(let e=0;e0)for(let e=o;e<8;e++)r.readBits(2);for(let e=0;e1&&r.readSEG();for(let e=0;e0&&e<16?(P=[1,12,10,16,40,24,20,32,80,18,15,64,160,4,3,2][e-1],L=[1,11,11,11,33,11,11,11,33,11,11,33,99,3,2,1][e-1]):255===e&&(P=r.readBits(16),L=r.readBits(16))}if(r.readBool()&&r.readBool(),r.readBool()){r.readBits(3),r.readBool(),r.readBool()&&(r.readByte(),r.readByte(),r.readByte())}if(r.readBool()&&(r.readUEG(),r.readUEG()),r.readBool(),r.readBool(),r.readBool(),F=r.readBool(),F&&(i+=r.readUEG(),s+=r.readUEG(),n+=r.readUEG(),a+=r.readUEG()),r.readBool()){if(R=r.readBits(32),M=r.readBits(32),r.readBool()){if(r.readUEG(),r.readBool()){let e=!1,t=!1,i=!1;e=r.readBool(),t=r.readBool(),(e||t)&&(i=r.readBool(),i&&(r.readByte(),r.readBits(5),r.readBool(),r.readBits(5)),r.readBits(4),r.readBits(4),i&&r.readBits(4),r.readBits(5),r.readBits(5),r.readBits(5));for(let s=0;s<=o;s++){let s=r.readBool();z=s;let n=!1,a=1;s||(n=r.readBool());let o=!1;if(n?r.readSEG():o=r.readBool(),o||(cpbcnt=r.readUEG()+1),e)for(let e=0;e{let t=Ut(e),r=new pt(t);return r.readByte(),r.readByte(),r.readBits(4),r.readBits(2),r.readBits(6),{num_temporal_layers:r.readBits(3)+1,temporal_id_nested:r.readBool()}},kt=e=>{let t=Ut(e),r=new pt(t);r.readByte(),r.readByte(),r.readUEG(),r.readUEG(),r.readBool(),r.readBool(),r.readBits(3),r.readBool(),r.readBool(),r.readUEG(),r.readUEG(),r.readSEG(),r.readBool(),r.readBool(),r.readBool()&&r.readUEG(),r.readSEG(),r.readSEG(),r.readBool(),r.readBool(),r.readBool(),r.readBool();let i=r.readBool(),s=r.readBool(),n=1;return s&&i?n=0:s?n=3:i&&(n=2),{parallelismType:n}};function Tt(e,t=0){return(e[t]<<24>>>0)+(e[t+1]<<16)+(e[t+2]<<8)+(e[t+3]||0)}function Ct(e,t=4){if(e.length<4)return;const r=e.length,i=[];let s,n=0;for(;n+t>>=8),n+=t,s){if(n+s>r)break;i.push(e.subarray(n,n+s)),n+=s}return i}function Dt(e){const t=e.byteLength,r=new Uint8Array(4);r[0]=t>>>24&255,r[1]=t>>>16&255,r[2]=t>>>8&255,r[3]=255&t;const i=new Uint8Array(t+4);return i.set(r,0),i.set(e,4),i}function Ft(e,t){let r=null;return t?e.length>=28&&(r=1+(3&e[26])):e.length>=12&&(r=1+(3&e[9])),r}function It(e,t){let r={},i=e.length,s=[],n=new _t(e);n.read(1),n.read(6),n.read(6),n.read(3);for(let e=2;e0)for(let t=r;t<8;t++)e.read(2);i.sub_layer_profile_space=[],i.sub_layer_tier_flag=[],i.sub_layer_profile_idc=[],i.sub_layer_profile_compatibility_flag=[],i.sub_layer_progressive_source_flag=[],i.sub_layer_interlaced_source_flag=[],i.sub_layer_non_packed_constraint_flag=[],i.sub_layer_frame_only_constraint_flag=[],i.sub_layer_level_idc=[];for(let t=0;t>8,d[14]=255&i.min_spatial_segmentation_idc,d[15]=252|3&i.parallelismType,d[16]=252|3&i.chroma_format_idc,d[17]=248|7&i.bit_depth_luma_minus8,d[18]=248|7&i.bit_depth_chroma_minus8,d[19]=0,d[20]=0,d[21]=(3&i.constant_frame_rate)<<6|(7&i.num_temporal_layers)<<3|(i.temporal_id_nested?1:0)<<2|3,d[22]=3,d[23]=128|Ae.vps,d[24]=0,d[25]=1,d[26]=(65280&e.byteLength)>>8,d[27]=255&e.byteLength,d.set(e,28),d[23+(5+e.byteLength)+0]=128|Ae.sps,d[23+(5+e.byteLength)+1]=0,d[23+(5+e.byteLength)+2]=1,d[23+(5+e.byteLength)+3]=(65280&r.byteLength)>>8,d[23+(5+e.byteLength)+4]=255&r.byteLength,d.set(r,23+(5+e.byteLength)+5),d[23+(5+e.byteLength+5+r.byteLength)+0]=128|Ae.pps,d[23+(5+e.byteLength+5+r.byteLength)+1]=0,d[23+(5+e.byteLength+5+r.byteLength)+2]=1,d[23+(5+e.byteLength+5+r.byteLength)+3]=(65280&t.byteLength)>>8,d[23+(5+e.byteLength+5+r.byteLength)+4]=255&t.byteLength,d.set(t,23+(5+e.byteLength+5+r.byteLength)+5);const l=[28,0,0,0,0],u=new Uint8Array(l.length+d.byteLength);return u.set(l,0),u.set(d,l.length),u}function Lt(e,t){let r=[];r[0]=t?28:44,r[1]=1,r[2]=0,r[3]=0,r[4]=0;const i=new Uint8Array(r.length+e.byteLength);return i.set(r,0),i.set(e,r.length),i}function zt(e){return(126&e[0])>>1}function Rt(e){return!function(e){return e>=32&&e<=40}(e)}function Mt(e){return e>=16&&e<=21}function Nt(e){return parseInt(e)===e}function Ot(e){if(!Nt(e.length))return!1;for(var t=0;t255)return!1;return!0}function Gt(e,t){if(e.buffer&&"Uint8Array"===e.name)return t&&(e=e.slice?e.slice():Array.prototype.slice.call(e)),e;if(Array.isArray(e)){if(!Ot(e))throw new Error("Array contains invalid value: "+e);return new Uint8Array(e)}if(Nt(e.length)&&Ot(e))return new Uint8Array(e);throw new Error("unsupported array-like object")}function Ht(e){return new Uint8Array(e)}function $t(e,t,r,i,s){null==i&&null==s||(e=e.slice?e.slice(i,s):Array.prototype.slice.call(e,i,s)),t.set(e,r)}var Vt,Wt={toBytes:function(e){var t=[],r=0;for(e=encodeURI(e);r191&&i<224?(t.push(String.fromCharCode((31&i)<<6|63&e[r+1])),r+=2):(t.push(String.fromCharCode((15&i)<<12|(63&e[r+1])<<6|63&e[r+2])),r+=3)}return t.join("")}},jt=(Vt="0123456789abcdef",{toBytes:function(e){for(var t=[],r=0;r>4]+Vt[15&i])}return t.join("")}}),Yt={16:10,24:12,32:14},qt=[1,2,4,8,16,32,64,128,27,54,108,216,171,77,154,47,94,188,99,198,151,53,106,212,179,125,250,239,197,145],Kt=[99,124,119,123,242,107,111,197,48,1,103,43,254,215,171,118,202,130,201,125,250,89,71,240,173,212,162,175,156,164,114,192,183,253,147,38,54,63,247,204,52,165,229,241,113,216,49,21,4,199,35,195,24,150,5,154,7,18,128,226,235,39,178,117,9,131,44,26,27,110,90,160,82,59,214,179,41,227,47,132,83,209,0,237,32,252,177,91,106,203,190,57,74,76,88,207,208,239,170,251,67,77,51,133,69,249,2,127,80,60,159,168,81,163,64,143,146,157,56,245,188,182,218,33,16,255,243,210,205,12,19,236,95,151,68,23,196,167,126,61,100,93,25,115,96,129,79,220,34,42,144,136,70,238,184,20,222,94,11,219,224,50,58,10,73,6,36,92,194,211,172,98,145,149,228,121,231,200,55,109,141,213,78,169,108,86,244,234,101,122,174,8,186,120,37,46,28,166,180,198,232,221,116,31,75,189,139,138,112,62,181,102,72,3,246,14,97,53,87,185,134,193,29,158,225,248,152,17,105,217,142,148,155,30,135,233,206,85,40,223,140,161,137,13,191,230,66,104,65,153,45,15,176,84,187,22],Xt=[82,9,106,213,48,54,165,56,191,64,163,158,129,243,215,251,124,227,57,130,155,47,255,135,52,142,67,68,196,222,233,203,84,123,148,50,166,194,35,61,238,76,149,11,66,250,195,78,8,46,161,102,40,217,36,178,118,91,162,73,109,139,209,37,114,248,246,100,134,104,152,22,212,164,92,204,93,101,182,146,108,112,72,80,253,237,185,218,94,21,70,87,167,141,157,132,144,216,171,0,140,188,211,10,247,228,88,5,184,179,69,6,208,44,30,143,202,63,15,2,193,175,189,3,1,19,138,107,58,145,17,65,79,103,220,234,151,242,207,206,240,180,230,115,150,172,116,34,231,173,53,133,226,249,55,232,28,117,223,110,71,241,26,113,29,41,197,137,111,183,98,14,170,24,190,27,252,86,62,75,198,210,121,32,154,219,192,254,120,205,90,244,31,221,168,51,136,7,199,49,177,18,16,89,39,128,236,95,96,81,127,169,25,181,74,13,45,229,122,159,147,201,156,239,160,224,59,77,174,42,245,176,200,235,187,60,131,83,153,97,23,43,4,126,186,119,214,38,225,105,20,99,85,33,12,125],Zt=[3328402341,4168907908,4000806809,4135287693,4294111757,3597364157,3731845041,2445657428,1613770832,33620227,3462883241,1445669757,3892248089,3050821474,1303096294,3967186586,2412431941,528646813,2311702848,4202528135,4026202645,2992200171,2387036105,4226871307,1101901292,3017069671,1604494077,1169141738,597466303,1403299063,3832705686,2613100635,1974974402,3791519004,1033081774,1277568618,1815492186,2118074177,4126668546,2211236943,1748251740,1369810420,3521504564,4193382664,3799085459,2883115123,1647391059,706024767,134480908,2512897874,1176707941,2646852446,806885416,932615841,168101135,798661301,235341577,605164086,461406363,3756188221,3454790438,1311188841,2142417613,3933566367,302582043,495158174,1479289972,874125870,907746093,3698224818,3025820398,1537253627,2756858614,1983593293,3084310113,2108928974,1378429307,3722699582,1580150641,327451799,2790478837,3117535592,0,3253595436,1075847264,3825007647,2041688520,3059440621,3563743934,2378943302,1740553945,1916352843,2487896798,2555137236,2958579944,2244988746,3151024235,3320835882,1336584933,3992714006,2252555205,2588757463,1714631509,293963156,2319795663,3925473552,67240454,4269768577,2689618160,2017213508,631218106,1269344483,2723238387,1571005438,2151694528,93294474,1066570413,563977660,1882732616,4059428100,1673313503,2008463041,2950355573,1109467491,537923632,3858759450,4260623118,3218264685,2177748300,403442708,638784309,3287084079,3193921505,899127202,2286175436,773265209,2479146071,1437050866,4236148354,2050833735,3362022572,3126681063,840505643,3866325909,3227541664,427917720,2655997905,2749160575,1143087718,1412049534,999329963,193497219,2353415882,3354324521,1807268051,672404540,2816401017,3160301282,369822493,2916866934,3688947771,1681011286,1949973070,336202270,2454276571,201721354,1210328172,3093060836,2680341085,3184776046,1135389935,3294782118,965841320,831886756,3554993207,4068047243,3588745010,2345191491,1849112409,3664604599,26054028,2983581028,2622377682,1235855840,3630984372,2891339514,4092916743,3488279077,3395642799,4101667470,1202630377,268961816,1874508501,4034427016,1243948399,1546530418,941366308,1470539505,1941222599,2546386513,3421038627,2715671932,3899946140,1042226977,2521517021,1639824860,227249030,260737669,3765465232,2084453954,1907733956,3429263018,2420656344,100860677,4160157185,470683154,3261161891,1781871967,2924959737,1773779408,394692241,2579611992,974986535,664706745,3655459128,3958962195,731420851,571543859,3530123707,2849626480,126783113,865375399,765172662,1008606754,361203602,3387549984,2278477385,2857719295,1344809080,2782912378,59542671,1503764984,160008576,437062935,1707065306,3622233649,2218934982,3496503480,2185314755,697932208,1512910199,504303377,2075177163,2824099068,1841019862,739644986],Jt=[2781242211,2230877308,2582542199,2381740923,234877682,3184946027,2984144751,1418839493,1348481072,50462977,2848876391,2102799147,434634494,1656084439,3863849899,2599188086,1167051466,2636087938,1082771913,2281340285,368048890,3954334041,3381544775,201060592,3963727277,1739838676,4250903202,3930435503,3206782108,4149453988,2531553906,1536934080,3262494647,484572669,2923271059,1783375398,1517041206,1098792767,49674231,1334037708,1550332980,4098991525,886171109,150598129,2481090929,1940642008,1398944049,1059722517,201851908,1385547719,1699095331,1587397571,674240536,2704774806,252314885,3039795866,151914247,908333586,2602270848,1038082786,651029483,1766729511,3447698098,2682942837,454166793,2652734339,1951935532,775166490,758520603,3000790638,4004797018,4217086112,4137964114,1299594043,1639438038,3464344499,2068982057,1054729187,1901997871,2534638724,4121318227,1757008337,0,750906861,1614815264,535035132,3363418545,3988151131,3201591914,1183697867,3647454910,1265776953,3734260298,3566750796,3903871064,1250283471,1807470800,717615087,3847203498,384695291,3313910595,3617213773,1432761139,2484176261,3481945413,283769337,100925954,2180939647,4037038160,1148730428,3123027871,3813386408,4087501137,4267549603,3229630528,2315620239,2906624658,3156319645,1215313976,82966005,3747855548,3245848246,1974459098,1665278241,807407632,451280895,251524083,1841287890,1283575245,337120268,891687699,801369324,3787349855,2721421207,3431482436,959321879,1469301956,4065699751,2197585534,1199193405,2898814052,3887750493,724703513,2514908019,2696962144,2551808385,3516813135,2141445340,1715741218,2119445034,2872807568,2198571144,3398190662,700968686,3547052216,1009259540,2041044702,3803995742,487983883,1991105499,1004265696,1449407026,1316239930,504629770,3683797321,168560134,1816667172,3837287516,1570751170,1857934291,4014189740,2797888098,2822345105,2754712981,936633572,2347923833,852879335,1133234376,1500395319,3084545389,2348912013,1689376213,3533459022,3762923945,3034082412,4205598294,133428468,634383082,2949277029,2398386810,3913789102,403703816,3580869306,2297460856,1867130149,1918643758,607656988,4049053350,3346248884,1368901318,600565992,2090982877,2632479860,557719327,3717614411,3697393085,2249034635,2232388234,2430627952,1115438654,3295786421,2865522278,3633334344,84280067,33027830,303828494,2747425121,1600795957,4188952407,3496589753,2434238086,1486471617,658119965,3106381470,953803233,334231800,3005978776,857870609,3151128937,1890179545,2298973838,2805175444,3056442267,574365214,2450884487,550103529,1233637070,4289353045,2018519080,2057691103,2399374476,4166623649,2148108681,387583245,3664101311,836232934,3330556482,3100665960,3280093505,2955516313,2002398509,287182607,3413881008,4238890068,3597515707,975967766],Qt=[1671808611,2089089148,2006576759,2072901243,4061003762,1807603307,1873927791,3310653893,810573872,16974337,1739181671,729634347,4263110654,3613570519,2883997099,1989864566,3393556426,2191335298,3376449993,2106063485,4195741690,1508618841,1204391495,4027317232,2917941677,3563566036,2734514082,2951366063,2629772188,2767672228,1922491506,3227229120,3082974647,4246528509,2477669779,644500518,911895606,1061256767,4144166391,3427763148,878471220,2784252325,3845444069,4043897329,1905517169,3631459288,827548209,356461077,67897348,3344078279,593839651,3277757891,405286936,2527147926,84871685,2595565466,118033927,305538066,2157648768,3795705826,3945188843,661212711,2999812018,1973414517,152769033,2208177539,745822252,439235610,455947803,1857215598,1525593178,2700827552,1391895634,994932283,3596728278,3016654259,695947817,3812548067,795958831,2224493444,1408607827,3513301457,0,3979133421,543178784,4229948412,2982705585,1542305371,1790891114,3410398667,3201918910,961245753,1256100938,1289001036,1491644504,3477767631,3496721360,4012557807,2867154858,4212583931,1137018435,1305975373,861234739,2241073541,1171229253,4178635257,33948674,2139225727,1357946960,1011120188,2679776671,2833468328,1374921297,2751356323,1086357568,2408187279,2460827538,2646352285,944271416,4110742005,3168756668,3066132406,3665145818,560153121,271589392,4279952895,4077846003,3530407890,3444343245,202643468,322250259,3962553324,1608629855,2543990167,1154254916,389623319,3294073796,2817676711,2122513534,1028094525,1689045092,1575467613,422261273,1939203699,1621147744,2174228865,1339137615,3699352540,577127458,712922154,2427141008,2290289544,1187679302,3995715566,3100863416,339486740,3732514782,1591917662,186455563,3681988059,3762019296,844522546,978220090,169743370,1239126601,101321734,611076132,1558493276,3260915650,3547250131,2901361580,1655096418,2443721105,2510565781,3828863972,2039214713,3878868455,3359869896,928607799,1840765549,2374762893,3580146133,1322425422,2850048425,1823791212,1459268694,4094161908,3928346602,1706019429,2056189050,2934523822,135794696,3134549946,2022240376,628050469,779246638,472135708,2800834470,3032970164,3327236038,3894660072,3715932637,1956440180,522272287,1272813131,3185336765,2340818315,2323976074,1888542832,1044544574,3049550261,1722469478,1222152264,50660867,4127324150,236067854,1638122081,895445557,1475980887,3117443513,2257655686,3243809217,489110045,2662934430,3778599393,4162055160,2561878936,288563729,1773916777,3648039385,2391345038,2493985684,2612407707,505560094,2274497927,3911240169,3460925390,1442818645,678973480,3749357023,2358182796,2717407649,2306869641,219617805,3218761151,3862026214,1120306242,1756942440,1103331905,2578459033,762796589,252780047,2966125488,1425844308,3151392187,372911126],er=[1667474886,2088535288,2004326894,2071694838,4075949567,1802223062,1869591006,3318043793,808472672,16843522,1734846926,724270422,4278065639,3621216949,2880169549,1987484396,3402253711,2189597983,3385409673,2105378810,4210693615,1499065266,1195886990,4042263547,2913856577,3570689971,2728590687,2947541573,2627518243,2762274643,1920112356,3233831835,3082273397,4261223649,2475929149,640051788,909531756,1061110142,4160160501,3435941763,875846760,2779116625,3857003729,4059105529,1903268834,3638064043,825316194,353713962,67374088,3351728789,589522246,3284360861,404236336,2526454071,84217610,2593830191,117901582,303183396,2155911963,3806477791,3958056653,656894286,2998062463,1970642922,151591698,2206440989,741110872,437923380,454765878,1852748508,1515908788,2694904667,1381168804,993742198,3604373943,3014905469,690584402,3823320797,791638366,2223281939,1398011302,3520161977,0,3991743681,538992704,4244381667,2981218425,1532751286,1785380564,3419096717,3200178535,960056178,1246420628,1280103576,1482221744,3486468741,3503319995,4025428677,2863326543,4227536621,1128514950,1296947098,859002214,2240123921,1162203018,4193849577,33687044,2139062782,1347481760,1010582648,2678045221,2829640523,1364325282,2745433693,1077985408,2408548869,2459086143,2644360225,943212656,4126475505,3166494563,3065430391,3671750063,555836226,269496352,4294908645,4092792573,3537006015,3452783745,202118168,320025894,3974901699,1600119230,2543297077,1145359496,387397934,3301201811,2812801621,2122220284,1027426170,1684319432,1566435258,421079858,1936954854,1616945344,2172753945,1330631070,3705438115,572679748,707427924,2425400123,2290647819,1179044492,4008585671,3099120491,336870440,3739122087,1583276732,185277718,3688593069,3772791771,842159716,976899700,168435220,1229577106,101059084,606366792,1549591736,3267517855,3553849021,2897014595,1650632388,2442242105,2509612081,3840161747,2038008818,3890688725,3368567691,926374254,1835907034,2374863873,3587531953,1313788572,2846482505,1819063512,1448540844,4109633523,3941213647,1701162954,2054852340,2930698567,134748176,3132806511,2021165296,623210314,774795868,471606328,2795958615,3031746419,3334885783,3907527627,3722280097,1953799400,522133822,1263263126,3183336545,2341176845,2324333839,1886425312,1044267644,3048588401,1718004428,1212733584,50529542,4143317495,235803164,1633788866,892690282,1465383342,3115962473,2256965911,3250673817,488449850,2661202215,3789633753,4177007595,2560144171,286339874,1768537042,3654906025,2391705863,2492770099,2610673197,505291324,2273808917,3924369609,3469625735,1431699370,673740880,3755965093,2358021891,2711746649,2307489801,218961690,3217021541,3873845719,1111672452,1751693520,1094828930,2576986153,757954394,252645662,2964376443,1414855848,3149649517,370555436],tr=[1374988112,2118214995,437757123,975658646,1001089995,530400753,2902087851,1273168787,540080725,2910219766,2295101073,4110568485,1340463100,3307916247,641025152,3043140495,3736164937,632953703,1172967064,1576976609,3274667266,2169303058,2370213795,1809054150,59727847,361929877,3211623147,2505202138,3569255213,1484005843,1239443753,2395588676,1975683434,4102977912,2572697195,666464733,3202437046,4035489047,3374361702,2110667444,1675577880,3843699074,2538681184,1649639237,2976151520,3144396420,4269907996,4178062228,1883793496,2403728665,2497604743,1383856311,2876494627,1917518562,3810496343,1716890410,3001755655,800440835,2261089178,3543599269,807962610,599762354,33778362,3977675356,2328828971,2809771154,4077384432,1315562145,1708848333,101039829,3509871135,3299278474,875451293,2733856160,92987698,2767645557,193195065,1080094634,1584504582,3178106961,1042385657,2531067453,3711829422,1306967366,2438237621,1908694277,67556463,1615861247,429456164,3602770327,2302690252,1742315127,2968011453,126454664,3877198648,2043211483,2709260871,2084704233,4169408201,0,159417987,841739592,504459436,1817866830,4245618683,260388950,1034867998,908933415,168810852,1750902305,2606453969,607530554,202008497,2472011535,3035535058,463180190,2160117071,1641816226,1517767529,470948374,3801332234,3231722213,1008918595,303765277,235474187,4069246893,766945465,337553864,1475418501,2943682380,4003061179,2743034109,4144047775,1551037884,1147550661,1543208500,2336434550,3408119516,3069049960,3102011747,3610369226,1113818384,328671808,2227573024,2236228733,3535486456,2935566865,3341394285,496906059,3702665459,226906860,2009195472,733156972,2842737049,294930682,1206477858,2835123396,2700099354,1451044056,573804783,2269728455,3644379585,2362090238,2564033334,2801107407,2776292904,3669462566,1068351396,742039012,1350078989,1784663195,1417561698,4136440770,2430122216,775550814,2193862645,2673705150,1775276924,1876241833,3475313331,3366754619,270040487,3902563182,3678124923,3441850377,1851332852,3969562369,2203032232,3868552805,2868897406,566021896,4011190502,3135740889,1248802510,3936291284,699432150,832877231,708780849,3332740144,899835584,1951317047,4236429990,3767586992,866637845,4043610186,1106041591,2144161806,395441711,1984812685,1139781709,3433712980,3835036895,2664543715,1282050075,3240894392,1181045119,2640243204,25965917,4203181171,4211818798,3009879386,2463879762,3910161971,1842759443,2597806476,933301370,1509430414,3943906441,3467192302,3076639029,3776767469,2051518780,2631065433,1441952575,404016761,1942435775,1408749034,1610459739,3745345300,2017778566,3400528769,3110650942,941896748,3265478751,371049330,3168937228,675039627,4279080257,967311729,135050206,3635733660,1683407248,2076935265,3576870512,1215061108,3501741890],rr=[1347548327,1400783205,3273267108,2520393566,3409685355,4045380933,2880240216,2471224067,1428173050,4138563181,2441661558,636813900,4233094615,3620022987,2149987652,2411029155,1239331162,1730525723,2554718734,3781033664,46346101,310463728,2743944855,3328955385,3875770207,2501218972,3955191162,3667219033,768917123,3545789473,692707433,1150208456,1786102409,2029293177,1805211710,3710368113,3065962831,401639597,1724457132,3028143674,409198410,2196052529,1620529459,1164071807,3769721975,2226875310,486441376,2499348523,1483753576,428819965,2274680428,3075636216,598438867,3799141122,1474502543,711349675,129166120,53458370,2592523643,2782082824,4063242375,2988687269,3120694122,1559041666,730517276,2460449204,4042459122,2706270690,3446004468,3573941694,533804130,2328143614,2637442643,2695033685,839224033,1973745387,957055980,2856345839,106852767,1371368976,4181598602,1033297158,2933734917,1179510461,3046200461,91341917,1862534868,4284502037,605657339,2547432937,3431546947,2003294622,3182487618,2282195339,954669403,3682191598,1201765386,3917234703,3388507166,0,2198438022,1211247597,2887651696,1315723890,4227665663,1443857720,507358933,657861945,1678381017,560487590,3516619604,975451694,2970356327,261314535,3535072918,2652609425,1333838021,2724322336,1767536459,370938394,182621114,3854606378,1128014560,487725847,185469197,2918353863,3106780840,3356761769,2237133081,1286567175,3152976349,4255350624,2683765030,3160175349,3309594171,878443390,1988838185,3704300486,1756818940,1673061617,3403100636,272786309,1075025698,545572369,2105887268,4174560061,296679730,1841768865,1260232239,4091327024,3960309330,3497509347,1814803222,2578018489,4195456072,575138148,3299409036,446754879,3629546796,4011996048,3347532110,3252238545,4270639778,915985419,3483825537,681933534,651868046,2755636671,3828103837,223377554,2607439820,1649704518,3270937875,3901806776,1580087799,4118987695,3198115200,2087309459,2842678573,3016697106,1003007129,2802849917,1860738147,2077965243,164439672,4100872472,32283319,2827177882,1709610350,2125135846,136428751,3874428392,3652904859,3460984630,3572145929,3593056380,2939266226,824852259,818324884,3224740454,930369212,2801566410,2967507152,355706840,1257309336,4148292826,243256656,790073846,2373340630,1296297904,1422699085,3756299780,3818836405,457992840,3099667487,2135319889,77422314,1560382517,1945798516,788204353,1521706781,1385356242,870912086,325965383,2358957921,2050466060,2388260884,2313884476,4006521127,901210569,3990953189,1014646705,1503449823,1062597235,2031621326,3212035895,3931371469,1533017514,350174575,2256028891,2177544179,1052338372,741876788,1606591296,1914052035,213705253,2334669897,1107234197,1899603969,3725069491,2631447780,2422494913,1635502980,1893020342,1950903388,1120974935],ir=[2807058932,1699970625,2764249623,1586903591,1808481195,1173430173,1487645946,59984867,4199882800,1844882806,1989249228,1277555970,3623636965,3419915562,1149249077,2744104290,1514790577,459744698,244860394,3235995134,1963115311,4027744588,2544078150,4190530515,1608975247,2627016082,2062270317,1507497298,2200818878,567498868,1764313568,3359936201,2305455554,2037970062,1047239e3,1910319033,1337376481,2904027272,2892417312,984907214,1243112415,830661914,861968209,2135253587,2011214180,2927934315,2686254721,731183368,1750626376,4246310725,1820824798,4172763771,3542330227,48394827,2404901663,2871682645,671593195,3254988725,2073724613,145085239,2280796200,2779915199,1790575107,2187128086,472615631,3029510009,4075877127,3802222185,4107101658,3201631749,1646252340,4270507174,1402811438,1436590835,3778151818,3950355702,3963161475,4020912224,2667994737,273792366,2331590177,104699613,95345982,3175501286,2377486676,1560637892,3564045318,369057872,4213447064,3919042237,1137477952,2658625497,1119727848,2340947849,1530455833,4007360968,172466556,266959938,516552836,0,2256734592,3980931627,1890328081,1917742170,4294704398,945164165,3575528878,958871085,3647212047,2787207260,1423022939,775562294,1739656202,3876557655,2530391278,2443058075,3310321856,547512796,1265195639,437656594,3121275539,719700128,3762502690,387781147,218828297,3350065803,2830708150,2848461854,428169201,122466165,3720081049,1627235199,648017665,4122762354,1002783846,2117360635,695634755,3336358691,4234721005,4049844452,3704280881,2232435299,574624663,287343814,612205898,1039717051,840019705,2708326185,793451934,821288114,1391201670,3822090177,376187827,3113855344,1224348052,1679968233,2361698556,1058709744,752375421,2431590963,1321699145,3519142200,2734591178,188127444,2177869557,3727205754,2384911031,3215212461,2648976442,2450346104,3432737375,1180849278,331544205,3102249176,4150144569,2952102595,2159976285,2474404304,766078933,313773861,2570832044,2108100632,1668212892,3145456443,2013908262,418672217,3070356634,2594734927,1852171925,3867060991,3473416636,3907448597,2614737639,919489135,164948639,2094410160,2997825956,590424639,2486224549,1723872674,3157750862,3399941250,3501252752,3625268135,2555048196,3673637356,1343127501,4130281361,3599595085,2957853679,1297403050,81781910,3051593425,2283490410,532201772,1367295589,3926170974,895287692,1953757831,1093597963,492483431,3528626907,1446242576,1192455638,1636604631,209336225,344873464,1015671571,669961897,3375740769,3857572124,2973530695,3747192018,1933530610,3464042516,935293895,3454686199,2858115069,1863638845,3683022916,4085369519,3292445032,875313188,1080017571,3279033885,621591778,1233856572,2504130317,24197544,3017672716,3835484340,3247465558,2220981195,3060847922,1551124588,1463996600],sr=[4104605777,1097159550,396673818,660510266,2875968315,2638606623,4200115116,3808662347,821712160,1986918061,3430322568,38544885,3856137295,718002117,893681702,1654886325,2975484382,3122358053,3926825029,4274053469,796197571,1290801793,1184342925,3556361835,2405426947,2459735317,1836772287,1381620373,3196267988,1948373848,3764988233,3385345166,3263785589,2390325492,1480485785,3111247143,3780097726,2293045232,548169417,3459953789,3746175075,439452389,1362321559,1400849762,1685577905,1806599355,2174754046,137073913,1214797936,1174215055,3731654548,2079897426,1943217067,1258480242,529487843,1437280870,3945269170,3049390895,3313212038,923313619,679998e3,3215307299,57326082,377642221,3474729866,2041877159,133361907,1776460110,3673476453,96392454,878845905,2801699524,777231668,4082475170,2330014213,4142626212,2213296395,1626319424,1906247262,1846563261,562755902,3708173718,1040559837,3871163981,1418573201,3294430577,114585348,1343618912,2566595609,3186202582,1078185097,3651041127,3896688048,2307622919,425408743,3371096953,2081048481,1108339068,2216610296,0,2156299017,736970802,292596766,1517440620,251657213,2235061775,2933202493,758720310,265905162,1554391400,1532285339,908999204,174567692,1474760595,4002861748,2610011675,3234156416,3693126241,2001430874,303699484,2478443234,2687165888,585122620,454499602,151849742,2345119218,3064510765,514443284,4044981591,1963412655,2581445614,2137062819,19308535,1928707164,1715193156,4219352155,1126790795,600235211,3992742070,3841024952,836553431,1669664834,2535604243,3323011204,1243905413,3141400786,4180808110,698445255,2653899549,2989552604,2253581325,3252932727,3004591147,1891211689,2487810577,3915653703,4237083816,4030667424,2100090966,865136418,1229899655,953270745,3399679628,3557504664,4118925222,2061379749,3079546586,2915017791,983426092,2022837584,1607244650,2118541908,2366882550,3635996816,972512814,3283088770,1568718495,3499326569,3576539503,621982671,2895723464,410887952,2623762152,1002142683,645401037,1494807662,2595684844,1335535747,2507040230,4293295786,3167684641,367585007,3885750714,1865862730,2668221674,2960971305,2763173681,1059270954,2777952454,2724642869,1320957812,2194319100,2429595872,2815956275,77089521,3973773121,3444575871,2448830231,1305906550,4021308739,2857194700,2516901860,3518358430,1787304780,740276417,1699839814,1592394909,2352307457,2272556026,188821243,1729977011,3687994002,274084841,3594982253,3613494426,2701949495,4162096729,322734571,2837966542,1640576439,484830689,1202797690,3537852828,4067639125,349075736,3342319475,4157467219,4255800159,1030690015,1155237496,2951971274,1757691577,607398968,2738905026,499347990,3794078908,1011452712,227885567,2818666809,213114376,3034881240,1455525988,3414450555,850817237,1817998408,3092726480],nr=[0,235474187,470948374,303765277,941896748,908933415,607530554,708780849,1883793496,2118214995,1817866830,1649639237,1215061108,1181045119,1417561698,1517767529,3767586992,4003061179,4236429990,4069246893,3635733660,3602770327,3299278474,3400528769,2430122216,2664543715,2362090238,2193862645,2835123396,2801107407,3035535058,3135740889,3678124923,3576870512,3341394285,3374361702,3810496343,3977675356,4279080257,4043610186,2876494627,2776292904,3076639029,3110650942,2472011535,2640243204,2403728665,2169303058,1001089995,899835584,666464733,699432150,59727847,226906860,530400753,294930682,1273168787,1172967064,1475418501,1509430414,1942435775,2110667444,1876241833,1641816226,2910219766,2743034109,2976151520,3211623147,2505202138,2606453969,2302690252,2269728455,3711829422,3543599269,3240894392,3475313331,3843699074,3943906441,4178062228,4144047775,1306967366,1139781709,1374988112,1610459739,1975683434,2076935265,1775276924,1742315127,1034867998,866637845,566021896,800440835,92987698,193195065,429456164,395441711,1984812685,2017778566,1784663195,1683407248,1315562145,1080094634,1383856311,1551037884,101039829,135050206,437757123,337553864,1042385657,807962610,573804783,742039012,2531067453,2564033334,2328828971,2227573024,2935566865,2700099354,3001755655,3168937228,3868552805,3902563182,4203181171,4102977912,3736164937,3501741890,3265478751,3433712980,1106041591,1340463100,1576976609,1408749034,2043211483,2009195472,1708848333,1809054150,832877231,1068351396,766945465,599762354,159417987,126454664,361929877,463180190,2709260871,2943682380,3178106961,3009879386,2572697195,2538681184,2236228733,2336434550,3509871135,3745345300,3441850377,3274667266,3910161971,3877198648,4110568485,4211818798,2597806476,2497604743,2261089178,2295101073,2733856160,2902087851,3202437046,2968011453,3936291284,3835036895,4136440770,4169408201,3535486456,3702665459,3467192302,3231722213,2051518780,1951317047,1716890410,1750902305,1113818384,1282050075,1584504582,1350078989,168810852,67556463,371049330,404016761,841739592,1008918595,775550814,540080725,3969562369,3801332234,4035489047,4269907996,3569255213,3669462566,3366754619,3332740144,2631065433,2463879762,2160117071,2395588676,2767645557,2868897406,3102011747,3069049960,202008497,33778362,270040487,504459436,875451293,975658646,675039627,641025152,2084704233,1917518562,1615861247,1851332852,1147550661,1248802510,1484005843,1451044056,933301370,967311729,733156972,632953703,260388950,25965917,328671808,496906059,1206477858,1239443753,1543208500,1441952575,2144161806,1908694277,1675577880,1842759443,3610369226,3644379585,3408119516,3307916247,4011190502,3776767469,4077384432,4245618683,2809771154,2842737049,3144396420,3043140495,2673705150,2438237621,2203032232,2370213795],ar=[0,185469197,370938394,487725847,741876788,657861945,975451694,824852259,1483753576,1400783205,1315723890,1164071807,1950903388,2135319889,1649704518,1767536459,2967507152,3152976349,2801566410,2918353863,2631447780,2547432937,2328143614,2177544179,3901806776,3818836405,4270639778,4118987695,3299409036,3483825537,3535072918,3652904859,2077965243,1893020342,1841768865,1724457132,1474502543,1559041666,1107234197,1257309336,598438867,681933534,901210569,1052338372,261314535,77422314,428819965,310463728,3409685355,3224740454,3710368113,3593056380,3875770207,3960309330,4045380933,4195456072,2471224067,2554718734,2237133081,2388260884,3212035895,3028143674,2842678573,2724322336,4138563181,4255350624,3769721975,3955191162,3667219033,3516619604,3431546947,3347532110,2933734917,2782082824,3099667487,3016697106,2196052529,2313884476,2499348523,2683765030,1179510461,1296297904,1347548327,1533017514,1786102409,1635502980,2087309459,2003294622,507358933,355706840,136428751,53458370,839224033,957055980,605657339,790073846,2373340630,2256028891,2607439820,2422494913,2706270690,2856345839,3075636216,3160175349,3573941694,3725069491,3273267108,3356761769,4181598602,4063242375,4011996048,3828103837,1033297158,915985419,730517276,545572369,296679730,446754879,129166120,213705253,1709610350,1860738147,1945798516,2029293177,1239331162,1120974935,1606591296,1422699085,4148292826,4233094615,3781033664,3931371469,3682191598,3497509347,3446004468,3328955385,2939266226,2755636671,3106780840,2988687269,2198438022,2282195339,2501218972,2652609425,1201765386,1286567175,1371368976,1521706781,1805211710,1620529459,2105887268,1988838185,533804130,350174575,164439672,46346101,870912086,954669403,636813900,788204353,2358957921,2274680428,2592523643,2441661558,2695033685,2880240216,3065962831,3182487618,3572145929,3756299780,3270937875,3388507166,4174560061,4091327024,4006521127,3854606378,1014646705,930369212,711349675,560487590,272786309,457992840,106852767,223377554,1678381017,1862534868,1914052035,2031621326,1211247597,1128014560,1580087799,1428173050,32283319,182621114,401639597,486441376,768917123,651868046,1003007129,818324884,1503449823,1385356242,1333838021,1150208456,1973745387,2125135846,1673061617,1756818940,2970356327,3120694122,2802849917,2887651696,2637442643,2520393566,2334669897,2149987652,3917234703,3799141122,4284502037,4100872472,3309594171,3460984630,3545789473,3629546796,2050466060,1899603969,1814803222,1730525723,1443857720,1560382517,1075025698,1260232239,575138148,692707433,878443390,1062597235,243256656,91341917,409198410,325965383,3403100636,3252238545,3704300486,3620022987,3874428392,3990953189,4042459122,4227665663,2460449204,2578018489,2226875310,2411029155,3198115200,3046200461,2827177882,2743944855],or=[0,218828297,437656594,387781147,875313188,958871085,775562294,590424639,1750626376,1699970625,1917742170,2135253587,1551124588,1367295589,1180849278,1265195639,3501252752,3720081049,3399941250,3350065803,3835484340,3919042237,4270507174,4085369519,3102249176,3051593425,2734591178,2952102595,2361698556,2177869557,2530391278,2614737639,3145456443,3060847922,2708326185,2892417312,2404901663,2187128086,2504130317,2555048196,3542330227,3727205754,3375740769,3292445032,3876557655,3926170974,4246310725,4027744588,1808481195,1723872674,1910319033,2094410160,1608975247,1391201670,1173430173,1224348052,59984867,244860394,428169201,344873464,935293895,984907214,766078933,547512796,1844882806,1627235199,2011214180,2062270317,1507497298,1423022939,1137477952,1321699145,95345982,145085239,532201772,313773861,830661914,1015671571,731183368,648017665,3175501286,2957853679,2807058932,2858115069,2305455554,2220981195,2474404304,2658625497,3575528878,3625268135,3473416636,3254988725,3778151818,3963161475,4213447064,4130281361,3599595085,3683022916,3432737375,3247465558,3802222185,4020912224,4172763771,4122762354,3201631749,3017672716,2764249623,2848461854,2331590177,2280796200,2431590963,2648976442,104699613,188127444,472615631,287343814,840019705,1058709744,671593195,621591778,1852171925,1668212892,1953757831,2037970062,1514790577,1463996600,1080017571,1297403050,3673637356,3623636965,3235995134,3454686199,4007360968,3822090177,4107101658,4190530515,2997825956,3215212461,2830708150,2779915199,2256734592,2340947849,2627016082,2443058075,172466556,122466165,273792366,492483431,1047239e3,861968209,612205898,695634755,1646252340,1863638845,2013908262,1963115311,1446242576,1530455833,1277555970,1093597963,1636604631,1820824798,2073724613,1989249228,1436590835,1487645946,1337376481,1119727848,164948639,81781910,331544205,516552836,1039717051,821288114,669961897,719700128,2973530695,3157750862,2871682645,2787207260,2232435299,2283490410,2667994737,2450346104,3647212047,3564045318,3279033885,3464042516,3980931627,3762502690,4150144569,4199882800,3070356634,3121275539,2904027272,2686254721,2200818878,2384911031,2570832044,2486224549,3747192018,3528626907,3310321856,3359936201,3950355702,3867060991,4049844452,4234721005,1739656202,1790575107,2108100632,1890328081,1402811438,1586903591,1233856572,1149249077,266959938,48394827,369057872,418672217,1002783846,919489135,567498868,752375421,209336225,24197544,376187827,459744698,945164165,895287692,574624663,793451934,1679968233,1764313568,2117360635,1933530610,1343127501,1560637892,1243112415,1192455638,3704280881,3519142200,3336358691,3419915562,3907448597,3857572124,4075877127,4294704398,3029510009,3113855344,2927934315,2744104290,2159976285,2377486676,2594734927,2544078150],dr=[0,151849742,303699484,454499602,607398968,758720310,908999204,1059270954,1214797936,1097159550,1517440620,1400849762,1817998408,1699839814,2118541908,2001430874,2429595872,2581445614,2194319100,2345119218,3034881240,3186202582,2801699524,2951971274,3635996816,3518358430,3399679628,3283088770,4237083816,4118925222,4002861748,3885750714,1002142683,850817237,698445255,548169417,529487843,377642221,227885567,77089521,1943217067,2061379749,1640576439,1757691577,1474760595,1592394909,1174215055,1290801793,2875968315,2724642869,3111247143,2960971305,2405426947,2253581325,2638606623,2487810577,3808662347,3926825029,4044981591,4162096729,3342319475,3459953789,3576539503,3693126241,1986918061,2137062819,1685577905,1836772287,1381620373,1532285339,1078185097,1229899655,1040559837,923313619,740276417,621982671,439452389,322734571,137073913,19308535,3871163981,4021308739,4104605777,4255800159,3263785589,3414450555,3499326569,3651041127,2933202493,2815956275,3167684641,3049390895,2330014213,2213296395,2566595609,2448830231,1305906550,1155237496,1607244650,1455525988,1776460110,1626319424,2079897426,1928707164,96392454,213114376,396673818,514443284,562755902,679998e3,865136418,983426092,3708173718,3557504664,3474729866,3323011204,4180808110,4030667424,3945269170,3794078908,2507040230,2623762152,2272556026,2390325492,2975484382,3092726480,2738905026,2857194700,3973773121,3856137295,4274053469,4157467219,3371096953,3252932727,3673476453,3556361835,2763173681,2915017791,3064510765,3215307299,2156299017,2307622919,2459735317,2610011675,2081048481,1963412655,1846563261,1729977011,1480485785,1362321559,1243905413,1126790795,878845905,1030690015,645401037,796197571,274084841,425408743,38544885,188821243,3613494426,3731654548,3313212038,3430322568,4082475170,4200115116,3780097726,3896688048,2668221674,2516901860,2366882550,2216610296,3141400786,2989552604,2837966542,2687165888,1202797690,1320957812,1437280870,1554391400,1669664834,1787304780,1906247262,2022837584,265905162,114585348,499347990,349075736,736970802,585122620,972512814,821712160,2595684844,2478443234,2293045232,2174754046,3196267988,3079546586,2895723464,2777952454,3537852828,3687994002,3234156416,3385345166,4142626212,4293295786,3841024952,3992742070,174567692,57326082,410887952,292596766,777231668,660510266,1011452712,893681702,1108339068,1258480242,1343618912,1494807662,1715193156,1865862730,1948373848,2100090966,2701949495,2818666809,3004591147,3122358053,2235061775,2352307457,2535604243,2653899549,3915653703,3764988233,4219352155,4067639125,3444575871,3294430577,3746175075,3594982253,836553431,953270745,600235211,718002117,367585007,484830689,133361907,251657213,2041877159,1891211689,1806599355,1654886325,1568718495,1418573201,1335535747,1184342925];function lr(e){for(var t=[],r=0;r>2,this._Ke[r][t%4]=n[t],this._Kd[e-r][t%4]=n[t];for(var a,o=0,d=s;d>16&255]<<24^Kt[a>>8&255]<<16^Kt[255&a]<<8^Kt[a>>24&255]^qt[o]<<24,o+=1,8!=s)for(t=1;t>8&255]<<8^Kt[a>>16&255]<<16^Kt[a>>24&255]<<24;for(t=s/2+1;t>2,u=d%4,this._Ke[l][u]=n[t],this._Kd[e-l][u]=n[t++],d++}for(var l=1;l>24&255]^ar[a>>16&255]^or[a>>8&255]^dr[255&a]},ur.prototype.encrypt=function(e){if(16!=e.length)throw new Error("invalid plaintext size (must be 16 bytes)");for(var t=this._Ke.length-1,r=[0,0,0,0],i=lr(e),s=0;s<4;s++)i[s]^=this._Ke[0][s];for(var n=1;n>24&255]^Jt[i[(s+1)%4]>>16&255]^Qt[i[(s+2)%4]>>8&255]^er[255&i[(s+3)%4]]^this._Ke[n][s];i=r.slice()}var a,o=Ht(16);for(s=0;s<4;s++)a=this._Ke[t][s],o[4*s]=255&(Kt[i[s]>>24&255]^a>>24),o[4*s+1]=255&(Kt[i[(s+1)%4]>>16&255]^a>>16),o[4*s+2]=255&(Kt[i[(s+2)%4]>>8&255]^a>>8),o[4*s+3]=255&(Kt[255&i[(s+3)%4]]^a);return o},ur.prototype.decrypt=function(e){if(16!=e.length)throw new Error("invalid ciphertext size (must be 16 bytes)");for(var t=this._Kd.length-1,r=[0,0,0,0],i=lr(e),s=0;s<4;s++)i[s]^=this._Kd[0][s];for(var n=1;n>24&255]^rr[i[(s+3)%4]>>16&255]^ir[i[(s+2)%4]>>8&255]^sr[255&i[(s+1)%4]]^this._Kd[n][s];i=r.slice()}var a,o=Ht(16);for(s=0;s<4;s++)a=this._Kd[t][s],o[4*s]=255&(Xt[i[s]>>24&255]^a>>24),o[4*s+1]=255&(Xt[i[(s+3)%4]>>16&255]^a>>16),o[4*s+2]=255&(Xt[i[(s+2)%4]>>8&255]^a>>8),o[4*s+3]=255&(Xt[255&i[(s+1)%4]]^a);return o};var hr=function(e){if(!(this instanceof hr))throw Error("AES must be instanitated with `new`");this.description="Electronic Code Block",this.name="ecb",this._aes=new ur(e)};hr.prototype.encrypt=function(e){if((e=Gt(e)).length%16!=0)throw new Error("invalid plaintext size (must be multiple of 16 bytes)");for(var t=Ht(e.length),r=Ht(16),i=0;iNumber.MAX_SAFE_INTEGER)throw new Error("integer value out of safe range");for(var t=15;t>=0;--t)this._counter[t]=e%256,e=parseInt(e/256)},mr.prototype.setBytes=function(e){if(16!=(e=Gt(e,!0)).length)throw new Error("invalid counter bytes size (must be 16 bytes)");this._counter=e},mr.prototype.increment=function(){for(var e=15;e>=0;e--){if(255!==this._counter[e]){this._counter[e]++;break}this._counter[e]=0}};var _r=function(e,t){if(!(this instanceof _r))throw Error("AES must be instanitated with `new`");this.description="Counter",this.name="ctr",t instanceof mr||(t=new mr(t)),this._counter=t,this._remainingCounter=null,this._remainingCounterIndex=16,this._aes=new ur(e)};_r.prototype.encrypt=function(e){for(var t=Gt(e,!0),r=0;r16)throw new Error("PKCS#7 padding byte out of range");for(var r=e.length-t,i=0;i=i&&console.debug("["+n.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)},log:function(e,t){this.debug(e.msg)},info:function(e,t){2>=i&&console.info("["+n.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)},warn:function(e,t){3>=i&&console.warn("["+n.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)},error:function(e,t){4>=i&&console.error("["+n.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)}},s);n.getDurationString=function(e,t){var r;function i(e,t){for(var r=(""+e).split(".");r[0].length0){for(var r="",i=0;i0&&(r+=","),r+="["+n.getDurationString(e.start(i))+","+n.getDurationString(e.end(i))+"]";return r}return"(empty)"},t.Log=n;var a=function(e){if(!(e instanceof ArrayBuffer))throw"Needs an array buffer";this.buffer=e,this.dataview=new DataView(e),this.position=0};a.prototype.getPosition=function(){return this.position},a.prototype.getEndPosition=function(){return this.buffer.byteLength},a.prototype.getLength=function(){return this.buffer.byteLength},a.prototype.seek=function(e){var t=Math.max(0,Math.min(this.buffer.byteLength,e));return this.position=isNaN(t)||!isFinite(t)?0:t,!0},a.prototype.isEos=function(){return this.getPosition()>=this.getEndPosition()},a.prototype.readAnyInt=function(e,t){var r=0;if(this.position+e<=this.buffer.byteLength){switch(e){case 1:r=t?this.dataview.getInt8(this.position):this.dataview.getUint8(this.position);break;case 2:r=t?this.dataview.getInt16(this.position):this.dataview.getUint16(this.position);break;case 3:if(t)throw"No method for reading signed 24 bits values";r=this.dataview.getUint8(this.position)<<16,r|=this.dataview.getUint8(this.position+1)<<8,r|=this.dataview.getUint8(this.position+2);break;case 4:r=t?this.dataview.getInt32(this.position):this.dataview.getUint32(this.position);break;case 8:if(t)throw"No method for reading signed 64 bits values";r=this.dataview.getUint32(this.position)<<32,r|=this.dataview.getUint32(this.position+4);break;default:throw"readInt method not implemented for size: "+e}return this.position+=e,r}throw"Not enough bytes in buffer"},a.prototype.readUint8=function(){return this.readAnyInt(1,!1)},a.prototype.readUint16=function(){return this.readAnyInt(2,!1)},a.prototype.readUint24=function(){return this.readAnyInt(3,!1)},a.prototype.readUint32=function(){return this.readAnyInt(4,!1)},a.prototype.readUint64=function(){return this.readAnyInt(8,!1)},a.prototype.readString=function(e){if(this.position+e<=this.buffer.byteLength){for(var t="",r=0;rthis._byteLength&&(this._byteLength=t);else{for(r<1&&(r=1);t>r;)r*=2;var i=new ArrayBuffer(r),s=new Uint8Array(this._buffer);new Uint8Array(i,0,s.length).set(s),this.buffer=i,this._byteLength=t}}},o.prototype._trimAlloc=function(){if(this._byteLength!=this._buffer.byteLength){var e=new ArrayBuffer(this._byteLength),t=new Uint8Array(e),r=new Uint8Array(this._buffer,0,t.length);t.set(r),this.buffer=e}},o.BIG_ENDIAN=!1,o.LITTLE_ENDIAN=!0,o.prototype._byteLength=0,Object.defineProperty(o.prototype,"byteLength",{get:function(){return this._byteLength-this._byteOffset}}),Object.defineProperty(o.prototype,"buffer",{get:function(){return this._trimAlloc(),this._buffer},set:function(e){this._buffer=e,this._dataView=new DataView(this._buffer,this._byteOffset),this._byteLength=this._buffer.byteLength}}),Object.defineProperty(o.prototype,"byteOffset",{get:function(){return this._byteOffset},set:function(e){this._byteOffset=e,this._dataView=new DataView(this._buffer,this._byteOffset),this._byteLength=this._buffer.byteLength}}),Object.defineProperty(o.prototype,"dataView",{get:function(){return this._dataView},set:function(e){this._byteOffset=e.byteOffset,this._buffer=e.buffer,this._dataView=new DataView(this._buffer,this._byteOffset),this._byteLength=this._byteOffset+e.byteLength}}),o.prototype.seek=function(e){var t=Math.max(0,Math.min(this.byteLength,e));this.position=isNaN(t)||!isFinite(t)?0:t},o.prototype.isEof=function(){return this.position>=this._byteLength},o.prototype.mapUint8Array=function(e){this._realloc(1*e);var t=new Uint8Array(this._buffer,this.byteOffset+this.position,e);return this.position+=1*e,t},o.prototype.readInt32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var r=new Int32Array(e);return o.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),o.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},o.prototype.readInt16Array=function(e,t){e=null==e?this.byteLength-this.position/2:e;var r=new Int16Array(e);return o.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),o.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},o.prototype.readInt8Array=function(e){e=null==e?this.byteLength-this.position:e;var t=new Int8Array(e);return o.memcpy(t.buffer,0,this.buffer,this.byteOffset+this.position,e*t.BYTES_PER_ELEMENT),this.position+=t.byteLength,t},o.prototype.readUint32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var r=new Uint32Array(e);return o.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),o.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},o.prototype.readUint16Array=function(e,t){e=null==e?this.byteLength-this.position/2:e;var r=new Uint16Array(e);return o.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),o.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},o.prototype.readUint8Array=function(e){e=null==e?this.byteLength-this.position:e;var t=new Uint8Array(e);return o.memcpy(t.buffer,0,this.buffer,this.byteOffset+this.position,e*t.BYTES_PER_ELEMENT),this.position+=t.byteLength,t},o.prototype.readFloat64Array=function(e,t){e=null==e?this.byteLength-this.position/8:e;var r=new Float64Array(e);return o.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),o.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},o.prototype.readFloat32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var r=new Float32Array(e);return o.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),o.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},o.prototype.readInt32=function(e){var t=this._dataView.getInt32(this.position,null==e?this.endianness:e);return this.position+=4,t},o.prototype.readInt16=function(e){var t=this._dataView.getInt16(this.position,null==e?this.endianness:e);return this.position+=2,t},o.prototype.readInt8=function(){var e=this._dataView.getInt8(this.position);return this.position+=1,e},o.prototype.readUint32=function(e){var t=this._dataView.getUint32(this.position,null==e?this.endianness:e);return this.position+=4,t},o.prototype.readUint16=function(e){var t=this._dataView.getUint16(this.position,null==e?this.endianness:e);return this.position+=2,t},o.prototype.readUint8=function(){var e=this._dataView.getUint8(this.position);return this.position+=1,e},o.prototype.readFloat32=function(e){var t=this._dataView.getFloat32(this.position,null==e?this.endianness:e);return this.position+=4,t},o.prototype.readFloat64=function(e){var t=this._dataView.getFloat64(this.position,null==e?this.endianness:e);return this.position+=8,t},o.endianness=new Int8Array(new Int16Array([1]).buffer)[0]>0,o.memcpy=function(e,t,r,i,s){var n=new Uint8Array(e,t,s),a=new Uint8Array(r,i,s);n.set(a)},o.arrayToNative=function(e,t){return t==this.endianness?e:this.flipArrayEndianness(e)},o.nativeToEndian=function(e,t){return this.endianness==t?e:this.flipArrayEndianness(e)},o.flipArrayEndianness=function(e){for(var t=new Uint8Array(e.buffer,e.byteOffset,e.byteLength),r=0;rs;i--,s++){var n=t[s];t[s]=t[i],t[i]=n}return e},o.prototype.failurePosition=0,String.fromCharCodeUint8=function(e){for(var t=[],r=0;r>16),this.writeUint8((65280&e)>>8),this.writeUint8(255&e)},o.prototype.adjustUint32=function(e,t){var r=this.position;this.seek(e),this.writeUint32(t),this.seek(r)},o.prototype.mapInt32Array=function(e,t){this._realloc(4*e);var r=new Int32Array(this._buffer,this.byteOffset+this.position,e);return o.arrayToNative(r,null==t?this.endianness:t),this.position+=4*e,r},o.prototype.mapInt16Array=function(e,t){this._realloc(2*e);var r=new Int16Array(this._buffer,this.byteOffset+this.position,e);return o.arrayToNative(r,null==t?this.endianness:t),this.position+=2*e,r},o.prototype.mapInt8Array=function(e){this._realloc(1*e);var t=new Int8Array(this._buffer,this.byteOffset+this.position,e);return this.position+=1*e,t},o.prototype.mapUint32Array=function(e,t){this._realloc(4*e);var r=new Uint32Array(this._buffer,this.byteOffset+this.position,e);return o.arrayToNative(r,null==t?this.endianness:t),this.position+=4*e,r},o.prototype.mapUint16Array=function(e,t){this._realloc(2*e);var r=new Uint16Array(this._buffer,this.byteOffset+this.position,e);return o.arrayToNative(r,null==t?this.endianness:t),this.position+=2*e,r},o.prototype.mapFloat64Array=function(e,t){this._realloc(8*e);var r=new Float64Array(this._buffer,this.byteOffset+this.position,e);return o.arrayToNative(r,null==t?this.endianness:t),this.position+=8*e,r},o.prototype.mapFloat32Array=function(e,t){this._realloc(4*e);var r=new Float32Array(this._buffer,this.byteOffset+this.position,e);return o.arrayToNative(r,null==t?this.endianness:t),this.position+=4*e,r};var l=function(e){this.buffers=[],this.bufferIndex=-1,e&&(this.insertBuffer(e),this.bufferIndex=0)};(l.prototype=new o(new ArrayBuffer,0,o.BIG_ENDIAN)).initialized=function(){var e;return this.bufferIndex>-1||(this.buffers.length>0?0===(e=this.buffers[0]).fileStart?(this.buffer=e,this.bufferIndex=0,n.debug("MultiBufferStream","Stream ready for parsing"),!0):(n.warn("MultiBufferStream","The first buffer should have a fileStart of 0"),this.logBufferLevel(),!1):(n.warn("MultiBufferStream","No buffer to start parsing from"),this.logBufferLevel(),!1))},ArrayBuffer.concat=function(e,t){n.debug("ArrayBuffer","Trying to create a new buffer of size: "+(e.byteLength+t.byteLength));var r=new Uint8Array(e.byteLength+t.byteLength);return r.set(new Uint8Array(e),0),r.set(new Uint8Array(t),e.byteLength),r.buffer},l.prototype.reduceBuffer=function(e,t,r){var i;return(i=new Uint8Array(r)).set(new Uint8Array(e,t,r)),i.buffer.fileStart=e.fileStart+t,i.buffer.usedBytes=0,i.buffer},l.prototype.insertBuffer=function(e){for(var t=!0,r=0;ri.byteLength){this.buffers.splice(r,1),r--;continue}n.warn("MultiBufferStream","Buffer (fileStart: "+e.fileStart+" - Length: "+e.byteLength+") already appended, ignoring")}else e.fileStart+e.byteLength<=i.fileStart||(e=this.reduceBuffer(e,0,i.fileStart-e.fileStart)),n.debug("MultiBufferStream","Appending new buffer (fileStart: "+e.fileStart+" - Length: "+e.byteLength+")"),this.buffers.splice(r,0,e),0===r&&(this.buffer=e);t=!1;break}if(e.fileStart0)){t=!1;break}e=this.reduceBuffer(e,s,a)}}t&&(n.debug("MultiBufferStream","Appending new buffer (fileStart: "+e.fileStart+" - Length: "+e.byteLength+")"),this.buffers.push(e),0===r&&(this.buffer=e))},l.prototype.logBufferLevel=function(e){var t,r,i,s,a,o=[],d="";for(i=0,s=0,t=0;t0&&(d+=a.end-1+"]");var l=e?n.info:n.debug;0===this.buffers.length?l("MultiBufferStream","No more buffer in memory"):l("MultiBufferStream",this.buffers.length+" stored buffer(s) ("+i+"/"+s+" bytes), continuous ranges: "+d)},l.prototype.cleanBuffers=function(){var e,t;for(e=0;e"+this.buffer.byteLength+")"),!0}return!1}return!1},l.prototype.findPosition=function(e,t,r){var i,s=null,a=-1;for(i=!0===e?0:this.bufferIndex;i=t?(n.debug("MultiBufferStream","Found position in existing buffer #"+a),a):-1},l.prototype.findEndContiguousBuf=function(e){var t,r,i,s=void 0!==e?e:this.bufferIndex;if(r=this.buffers[s],this.buffers.length>s+1)for(t=s+1;t>3;return 31===i&&r.data.length>=2&&(i=32+((7&r.data[0])<<3)+((224&r.data[1])>>5)),i}return null},r.DecoderConfigDescriptor=function(e){r.Descriptor.call(this,4,e)},r.DecoderConfigDescriptor.prototype=new r.Descriptor,r.DecoderConfigDescriptor.prototype.parse=function(e){this.oti=e.readUint8(),this.streamType=e.readUint8(),this.bufferSize=e.readUint24(),this.maxBitrate=e.readUint32(),this.avgBitrate=e.readUint32(),this.size-=13,this.parseRemainingDescriptors(e)},r.DecoderSpecificInfo=function(e){r.Descriptor.call(this,5,e)},r.DecoderSpecificInfo.prototype=new r.Descriptor,r.SLConfigDescriptor=function(e){r.Descriptor.call(this,6,e)},r.SLConfigDescriptor.prototype=new r.Descriptor,this};t.MPEG4DescriptorParser=u;var h={ERR_INVALID_DATA:-1,ERR_NOT_ENOUGH_DATA:0,OK:1,BASIC_BOXES:["mdat","idat","free","skip","meco","strk"],FULL_BOXES:["hmhd","nmhd","iods","xml ","bxml","ipro","mere"],CONTAINER_BOXES:[["moov",["trak","pssh"]],["trak"],["edts"],["mdia"],["minf"],["dinf"],["stbl",["sgpd","sbgp"]],["mvex",["trex"]],["moof",["traf"]],["traf",["trun","sgpd","sbgp"]],["vttc"],["tref"],["iref"],["mfra",["tfra"]],["meco"],["hnti"],["hinf"],["strk"],["strd"],["sinf"],["rinf"],["schi"],["trgr"],["udta",["kind"]],["iprp",["ipma"]],["ipco"]],boxCodes:[],fullBoxCodes:[],containerBoxCodes:[],sampleEntryCodes:{},sampleGroupEntryCodes:[],trackGroupTypes:[],UUIDBoxes:{},UUIDs:[],initialize:function(){h.FullBox.prototype=new h.Box,h.ContainerBox.prototype=new h.Box,h.SampleEntry.prototype=new h.Box,h.TrackGroupTypeBox.prototype=new h.FullBox,h.BASIC_BOXES.forEach((function(e){h.createBoxCtor(e)})),h.FULL_BOXES.forEach((function(e){h.createFullBoxCtor(e)})),h.CONTAINER_BOXES.forEach((function(e){h.createContainerBoxCtor(e[0],null,e[1])}))},Box:function(e,t,r){this.type=e,this.size=t,this.uuid=r},FullBox:function(e,t,r){h.Box.call(this,e,t,r),this.flags=0,this.version=0},ContainerBox:function(e,t,r){h.Box.call(this,e,t,r),this.boxes=[]},SampleEntry:function(e,t,r,i){h.ContainerBox.call(this,e,t),this.hdr_size=r,this.start=i},SampleGroupEntry:function(e){this.grouping_type=e},TrackGroupTypeBox:function(e,t){h.FullBox.call(this,e,t)},createBoxCtor:function(e,t){h.boxCodes.push(e),h[e+"Box"]=function(t){h.Box.call(this,e,t)},h[e+"Box"].prototype=new h.Box,t&&(h[e+"Box"].prototype.parse=t)},createFullBoxCtor:function(e,t){h[e+"Box"]=function(t){h.FullBox.call(this,e,t)},h[e+"Box"].prototype=new h.FullBox,h[e+"Box"].prototype.parse=function(e){this.parseFullHeader(e),t&&t.call(this,e)}},addSubBoxArrays:function(e){if(e){this.subBoxNames=e;for(var t=e.length,r=0;rr?(n.error("BoxParser","Box of type '"+u+"' has a size "+l+" greater than its container size "+r),{code:h.ERR_NOT_ENOUGH_DATA,type:u,size:l,hdr_size:d,start:o}):0!==l&&o+l>e.getEndPosition()?(e.seek(o),n.info("BoxParser","Not enough data in stream to parse the entire '"+u+"' box"),{code:h.ERR_NOT_ENOUGH_DATA,type:u,size:l,hdr_size:d,start:o}):t?{code:h.OK,type:u,size:l,hdr_size:d,start:o}:(h[u+"Box"]?i=new h[u+"Box"](l):"uuid"!==u?(n.warn("BoxParser","Unknown box type: '"+u+"'"),(i=new h.Box(u,l)).has_unparsed_data=!0):h.UUIDBoxes[a]?i=new h.UUIDBoxes[a](l):(n.warn("BoxParser","Unknown uuid type: '"+a+"'"),(i=new h.Box(u,l)).uuid=a,i.has_unparsed_data=!0),i.hdr_size=d,i.start=o,i.write===h.Box.prototype.write&&"mdat"!==i.type&&(n.info("BoxParser","'"+c+"' box writing not yet implemented, keeping unparsed data in memory for later write"),i.parseDataAndRewind(e)),i.parse(e),(s=e.getPosition()-(i.start+i.size))<0?(n.warn("BoxParser","Parsing of box '"+c+"' did not read the entire indicated box data size (missing "+-s+" bytes), seeking forward"),e.seek(i.start+i.size)):s>0&&(n.error("BoxParser","Parsing of box '"+c+"' read "+s+" more bytes than the indicated box data size, seeking backwards"),0!==i.size&&e.seek(i.start+i.size)),{code:h.OK,box:i,size:i.size})},h.Box.prototype.parse=function(e){"mdat"!=this.type?this.data=e.readUint8Array(this.size-this.hdr_size):0===this.size?e.seek(e.getEndPosition()):e.seek(this.start+this.size)},h.Box.prototype.parseDataAndRewind=function(e){this.data=e.readUint8Array(this.size-this.hdr_size),e.position-=this.size-this.hdr_size},h.FullBox.prototype.parseDataAndRewind=function(e){this.parseFullHeader(e),this.data=e.readUint8Array(this.size-this.hdr_size),this.hdr_size-=4,e.position-=this.size-this.hdr_size},h.FullBox.prototype.parseFullHeader=function(e){this.version=e.readUint8(),this.flags=e.readUint24(),this.hdr_size+=4},h.FullBox.prototype.parse=function(e){this.parseFullHeader(e),this.data=e.readUint8Array(this.size-this.hdr_size)},h.ContainerBox.prototype.parse=function(e){for(var t,r;e.getPosition()>10&31,t[1]=this.language>>5&31,t[2]=31&this.language,this.languageString=String.fromCharCode(t[0]+96,t[1]+96,t[2]+96)},h.SAMPLE_ENTRY_TYPE_VISUAL="Visual",h.SAMPLE_ENTRY_TYPE_AUDIO="Audio",h.SAMPLE_ENTRY_TYPE_HINT="Hint",h.SAMPLE_ENTRY_TYPE_METADATA="Metadata",h.SAMPLE_ENTRY_TYPE_SUBTITLE="Subtitle",h.SAMPLE_ENTRY_TYPE_SYSTEM="System",h.SAMPLE_ENTRY_TYPE_TEXT="Text",h.SampleEntry.prototype.parseHeader=function(e){e.readUint8Array(6),this.data_reference_index=e.readUint16(),this.hdr_size+=8},h.SampleEntry.prototype.parse=function(e){this.parseHeader(e),this.data=e.readUint8Array(this.size-this.hdr_size)},h.SampleEntry.prototype.parseDataAndRewind=function(e){this.parseHeader(e),this.data=e.readUint8Array(this.size-this.hdr_size),this.hdr_size-=8,e.position-=this.size-this.hdr_size},h.SampleEntry.prototype.parseFooter=function(e){h.ContainerBox.prototype.parse.call(this,e)},h.createMediaSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_HINT),h.createMediaSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_METADATA),h.createMediaSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_SUBTITLE),h.createMediaSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_SYSTEM),h.createMediaSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_TEXT),h.createMediaSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,(function(e){var t;this.parseHeader(e),e.readUint16(),e.readUint16(),e.readUint32Array(3),this.width=e.readUint16(),this.height=e.readUint16(),this.horizresolution=e.readUint32(),this.vertresolution=e.readUint32(),e.readUint32(),this.frame_count=e.readUint16(),t=Math.min(31,e.readUint8()),this.compressorname=e.readString(t),t<31&&e.readString(31-t),this.depth=e.readUint16(),e.readUint16(),this.parseFooter(e)})),h.createMediaSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,(function(e){this.parseHeader(e),e.readUint32Array(2),this.channel_count=e.readUint16(),this.samplesize=e.readUint16(),e.readUint16(),e.readUint16(),this.samplerate=e.readUint32()/65536,this.parseFooter(e)})),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"avc1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"avc2"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"avc3"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"avc4"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"av01"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"hvc1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"hev1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"vvc1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"vvi1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"vvs1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"vvcN"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"vp08"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"vp09"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mp4a"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"ac-3"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"ec-3"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"Opus"),h.createEncryptedSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"encv"),h.createEncryptedSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"enca"),h.createEncryptedSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_SUBTITLE,"encu"),h.createEncryptedSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_SYSTEM,"encs"),h.createEncryptedSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_TEXT,"enct"),h.createEncryptedSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_METADATA,"encm"),h.createBoxCtor("a1lx",(function(e){var t=16*(1+(1&(1&e.readUint8())));this.layer_size=[];for(var r=0;r<3;r++)this.layer_size[r]=16==t?e.readUint16():e.readUint32()})),h.createBoxCtor("a1op",(function(e){this.op_index=e.readUint8()})),h.createFullBoxCtor("auxC",(function(e){this.aux_type=e.readCString();var t=this.size-this.hdr_size-(this.aux_type.length+1);this.aux_subtype=e.readUint8Array(t)})),h.createBoxCtor("av1C",(function(e){var t=e.readUint8();if(t>>7&!1)n.error("av1C marker problem");else if(this.version=127&t,1===this.version)if(t=e.readUint8(),this.seq_profile=t>>5&7,this.seq_level_idx_0=31&t,t=e.readUint8(),this.seq_tier_0=t>>7&1,this.high_bitdepth=t>>6&1,this.twelve_bit=t>>5&1,this.monochrome=t>>4&1,this.chroma_subsampling_x=t>>3&1,this.chroma_subsampling_y=t>>2&1,this.chroma_sample_position=3&t,t=e.readUint8(),this.reserved_1=t>>5&7,0===this.reserved_1){if(this.initial_presentation_delay_present=t>>4&1,1===this.initial_presentation_delay_present)this.initial_presentation_delay_minus_one=15&t;else if(this.reserved_2=15&t,0!==this.reserved_2)return void n.error("av1C reserved_2 parsing problem");var r=this.size-this.hdr_size-4;this.configOBUs=e.readUint8Array(r)}else n.error("av1C reserved_1 parsing problem");else n.error("av1C version "+this.version+" not supported")})),h.createBoxCtor("avcC",(function(e){var t,r;for(this.configurationVersion=e.readUint8(),this.AVCProfileIndication=e.readUint8(),this.profile_compatibility=e.readUint8(),this.AVCLevelIndication=e.readUint8(),this.lengthSizeMinusOne=3&e.readUint8(),this.nb_SPS_nalus=31&e.readUint8(),r=this.size-this.hdr_size-6,this.SPS=[],t=0;t0&&(this.ext=e.readUint8Array(r))})),h.createBoxCtor("btrt",(function(e){this.bufferSizeDB=e.readUint32(),this.maxBitrate=e.readUint32(),this.avgBitrate=e.readUint32()})),h.createBoxCtor("clap",(function(e){this.cleanApertureWidthN=e.readUint32(),this.cleanApertureWidthD=e.readUint32(),this.cleanApertureHeightN=e.readUint32(),this.cleanApertureHeightD=e.readUint32(),this.horizOffN=e.readUint32(),this.horizOffD=e.readUint32(),this.vertOffN=e.readUint32(),this.vertOffD=e.readUint32()})),h.createBoxCtor("clli",(function(e){this.max_content_light_level=e.readUint16(),this.max_pic_average_light_level=e.readUint16()})),h.createFullBoxCtor("co64",(function(e){var t,r;if(t=e.readUint32(),this.chunk_offsets=[],0===this.version)for(r=0;r>7}else("rICC"===this.colour_type||"prof"===this.colour_type)&&(this.ICC_profile=e.readUint8Array(this.size-4))})),h.createFullBoxCtor("cprt",(function(e){this.parseLanguage(e),this.notice=e.readCString()})),h.createFullBoxCtor("cslg",(function(e){0===this.version&&(this.compositionToDTSShift=e.readInt32(),this.leastDecodeToDisplayDelta=e.readInt32(),this.greatestDecodeToDisplayDelta=e.readInt32(),this.compositionStartTime=e.readInt32(),this.compositionEndTime=e.readInt32())})),h.createFullBoxCtor("ctts",(function(e){var t,r;if(t=e.readUint32(),this.sample_counts=[],this.sample_offsets=[],0===this.version)for(r=0;r>6,this.bsid=t>>1&31,this.bsmod=(1&t)<<2|r>>6&3,this.acmod=r>>3&7,this.lfeon=r>>2&1,this.bit_rate_code=3&r|i>>5&7})),h.createBoxCtor("dec3",(function(e){var t=e.readUint16();this.data_rate=t>>3,this.num_ind_sub=7&t,this.ind_subs=[];for(var r=0;r>6,i.bsid=s>>1&31,i.bsmod=(1&s)<<4|n>>4&15,i.acmod=n>>1&7,i.lfeon=1&n,i.num_dep_sub=a>>1&15,i.num_dep_sub>0&&(i.chan_loc=(1&a)<<8|e.readUint8())}})),h.createFullBoxCtor("dfLa",(function(e){var t=[],r=["STREAMINFO","PADDING","APPLICATION","SEEKTABLE","VORBIS_COMMENT","CUESHEET","PICTURE","RESERVED"];for(this.parseFullHeader(e);;){var i=e.readUint8(),s=Math.min(127&i,r.length-1);if(s?e.readUint8Array(e.readUint24()):(e.readUint8Array(13),this.samplerate=e.readUint32()>>12,e.readUint8Array(20)),t.push(r[s]),128&i)break}this.numMetadataBlocks=t.length+" ("+t.join(", ")+")"})),h.createBoxCtor("dimm",(function(e){this.bytessent=e.readUint64()})),h.createBoxCtor("dmax",(function(e){this.time=e.readUint32()})),h.createBoxCtor("dmed",(function(e){this.bytessent=e.readUint64()})),h.createBoxCtor("dOps",(function(e){if(this.Version=e.readUint8(),this.OutputChannelCount=e.readUint8(),this.PreSkip=e.readUint16(),this.InputSampleRate=e.readUint32(),this.OutputGain=e.readInt16(),this.ChannelMappingFamily=e.readUint8(),0!==this.ChannelMappingFamily){this.StreamCount=e.readUint8(),this.CoupledCount=e.readUint8(),this.ChannelMapping=[];for(var t=0;t=4;)this.compatible_brands[r]=e.readString(4),t-=4,r++})),h.createFullBoxCtor("hdlr",(function(e){0===this.version&&(e.readUint32(),this.handler=e.readString(4),e.readUint32Array(3),this.name=e.readString(this.size-this.hdr_size-20),"\0"===this.name[this.name.length-1]&&(this.name=this.name.slice(0,-1)))})),h.createBoxCtor("hvcC",(function(e){var t,r,i,s;this.configurationVersion=e.readUint8(),s=e.readUint8(),this.general_profile_space=s>>6,this.general_tier_flag=(32&s)>>5,this.general_profile_idc=31&s,this.general_profile_compatibility=e.readUint32(),this.general_constraint_indicator=e.readUint8Array(6),this.general_level_idc=e.readUint8(),this.min_spatial_segmentation_idc=4095&e.readUint16(),this.parallelismType=3&e.readUint8(),this.chroma_format_idc=3&e.readUint8(),this.bit_depth_luma_minus8=7&e.readUint8(),this.bit_depth_chroma_minus8=7&e.readUint8(),this.avgFrameRate=e.readUint16(),s=e.readUint8(),this.constantFrameRate=s>>6,this.numTemporalLayers=(13&s)>>3,this.temporalIdNested=(4&s)>>2,this.lengthSizeMinusOne=3&s,this.nalu_arrays=[];var n=e.readUint8();for(t=0;t>7,a.nalu_type=63&s;var o=e.readUint16();for(r=0;r>4&15,this.length_size=15&t,t=e.readUint8(),this.base_offset_size=t>>4&15,1===this.version||2===this.version?this.index_size=15&t:this.index_size=0,this.items=[];var r=0;if(this.version<2)r=e.readUint16();else{if(2!==this.version)throw"version of iloc box not supported";r=e.readUint32()}for(var i=0;i>7,this.axis=1&t})),h.createFullBoxCtor("infe",(function(e){if(0!==this.version&&1!==this.version||(this.item_ID=e.readUint16(),this.item_protection_index=e.readUint16(),this.item_name=e.readCString(),this.content_type=e.readCString(),this.content_encoding=e.readCString()),1===this.version)return this.extension_type=e.readString(4),n.warn("BoxParser","Cannot parse extension type"),void e.seek(this.start+this.size);this.version>=2&&(2===this.version?this.item_ID=e.readUint16():3===this.version&&(this.item_ID=e.readUint32()),this.item_protection_index=e.readUint16(),this.item_type=e.readString(4),this.item_name=e.readCString(),"mime"===this.item_type?(this.content_type=e.readCString(),this.content_encoding=e.readCString()):"uri "===this.item_type&&(this.item_uri_type=e.readCString()))})),h.createFullBoxCtor("ipma",(function(e){var t,r;for(entry_count=e.readUint32(),this.associations=[],t=0;t>7==1,1&this.flags?a.property_index=(127&n)<<8|e.readUint8():a.property_index=127&n}}})),h.createFullBoxCtor("iref",(function(e){var t,r;for(this.references=[];e.getPosition()>7,i.assignment_type=127&s,i.assignment_type){case 0:i.grouping_type=e.readString(4);break;case 1:i.grouping_type=e.readString(4),i.grouping_type_parameter=e.readUint32();break;case 2:case 3:break;case 4:i.sub_track_id=e.readUint32();break;default:n.warn("BoxParser","Unknown leva assignement type")}}})),h.createBoxCtor("lsel",(function(e){this.layer_id=e.readUint16()})),h.createBoxCtor("maxr",(function(e){this.period=e.readUint32(),this.bytes=e.readUint32()})),h.createBoxCtor("mdcv",(function(e){this.display_primaries=[],this.display_primaries[0]={},this.display_primaries[0].x=e.readUint16(),this.display_primaries[0].y=e.readUint16(),this.display_primaries[1]={},this.display_primaries[1].x=e.readUint16(),this.display_primaries[1].y=e.readUint16(),this.display_primaries[2]={},this.display_primaries[2].x=e.readUint16(),this.display_primaries[2].y=e.readUint16(),this.white_point={},this.white_point.x=e.readUint16(),this.white_point.y=e.readUint16(),this.max_display_mastering_luminance=e.readUint32(),this.min_display_mastering_luminance=e.readUint32()})),h.createFullBoxCtor("mdhd",(function(e){1==this.version?(this.creation_time=e.readUint64(),this.modification_time=e.readUint64(),this.timescale=e.readUint32(),this.duration=e.readUint64()):(this.creation_time=e.readUint32(),this.modification_time=e.readUint32(),this.timescale=e.readUint32(),this.duration=e.readUint32()),this.parseLanguage(e),e.readUint16()})),h.createFullBoxCtor("mehd",(function(e){1&this.flags&&(n.warn("BoxParser","mehd box incorrectly uses flags set to 1, converting version to 1"),this.version=1),1==this.version?this.fragment_duration=e.readUint64():this.fragment_duration=e.readUint32()})),h.createFullBoxCtor("meta",(function(e){this.boxes=[],h.ContainerBox.prototype.parse.call(this,e)})),h.createFullBoxCtor("mfhd",(function(e){this.sequence_number=e.readUint32()})),h.createFullBoxCtor("mfro",(function(e){this._size=e.readUint32()})),h.createFullBoxCtor("mvhd",(function(e){1==this.version?(this.creation_time=e.readUint64(),this.modification_time=e.readUint64(),this.timescale=e.readUint32(),this.duration=e.readUint64()):(this.creation_time=e.readUint32(),this.modification_time=e.readUint32(),this.timescale=e.readUint32(),this.duration=e.readUint32()),this.rate=e.readUint32(),this.volume=e.readUint16()>>8,e.readUint16(),e.readUint32Array(2),this.matrix=e.readUint32Array(9),e.readUint32Array(6),this.next_track_id=e.readUint32()})),h.createBoxCtor("npck",(function(e){this.packetssent=e.readUint32()})),h.createBoxCtor("nump",(function(e){this.packetssent=e.readUint64()})),h.createFullBoxCtor("padb",(function(e){var t=e.readUint32();this.padbits=[];for(var r=0;r0){var t=e.readUint32();this.kid=[];for(var r=0;r0&&(this.data=e.readUint8Array(i))})),h.createFullBoxCtor("clef",(function(e){this.width=e.readUint32(),this.height=e.readUint32()})),h.createFullBoxCtor("enof",(function(e){this.width=e.readUint32(),this.height=e.readUint32()})),h.createFullBoxCtor("prof",(function(e){this.width=e.readUint32(),this.height=e.readUint32()})),h.createContainerBoxCtor("tapt",null,["clef","prof","enof"]),h.createBoxCtor("rtp ",(function(e){this.descriptionformat=e.readString(4),this.sdptext=e.readString(this.size-this.hdr_size-4)})),h.createFullBoxCtor("saio",(function(e){1&this.flags&&(this.aux_info_type=e.readUint32(),this.aux_info_type_parameter=e.readUint32());var t=e.readUint32();this.offset=[];for(var r=0;r>7,this.avgRateFlag=t>>6&1,this.durationFlag&&(this.duration=e.readUint32()),this.avgRateFlag&&(this.accurateStatisticsFlag=e.readUint8(),this.avgBitRate=e.readUint16(),this.avgFrameRate=e.readUint16()),this.dependency=[];for(var r=e.readUint8(),i=0;i>7,this.num_leading_samples=127&t})),h.createSampleGroupCtor("rash",(function(e){if(this.operation_point_count=e.readUint16(),this.description_length!==2+(1===this.operation_point_count?2:6*this.operation_point_count)+9)n.warn("BoxParser","Mismatch in "+this.grouping_type+" sample group length"),this.data=e.readUint8Array(this.description_length-2);else{if(1===this.operation_point_count)this.target_rate_share=e.readUint16();else{this.target_rate_share=[],this.available_bitrate=[];for(var t=0;t>4,this.skip_byte_block=15&t,this.isProtected=e.readUint8(),this.Per_Sample_IV_Size=e.readUint8(),this.KID=h.parseHex16(e),this.constant_IV_size=0,this.constant_IV=0,1===this.isProtected&&0===this.Per_Sample_IV_Size&&(this.constant_IV_size=e.readUint8(),this.constant_IV=e.readUint8Array(this.constant_IV_size))})),h.createSampleGroupCtor("stsa",(function(e){n.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),h.createSampleGroupCtor("sync",(function(e){var t=e.readUint8();this.NAL_unit_type=63&t})),h.createSampleGroupCtor("tele",(function(e){var t=e.readUint8();this.level_independently_decodable=t>>7})),h.createSampleGroupCtor("tsas",(function(e){n.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),h.createSampleGroupCtor("tscl",(function(e){n.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),h.createSampleGroupCtor("vipr",(function(e){n.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),h.createFullBoxCtor("sbgp",(function(e){this.grouping_type=e.readString(4),1===this.version?this.grouping_type_parameter=e.readUint32():this.grouping_type_parameter=0,this.entries=[];for(var t=e.readUint32(),r=0;r>6,this.sample_depends_on[i]=t>>4&3,this.sample_is_depended_on[i]=t>>2&3,this.sample_has_redundancy[i]=3&t})),h.createFullBoxCtor("senc"),h.createFullBoxCtor("sgpd",(function(e){this.grouping_type=e.readString(4),n.debug("BoxParser","Found Sample Groups of type "+this.grouping_type),1===this.version?this.default_length=e.readUint32():this.default_length=0,this.version>=2&&(this.default_group_description_index=e.readUint32()),this.entries=[];for(var t=e.readUint32(),r=0;r>31&1,i.referenced_size=2147483647&s,i.subsegment_duration=e.readUint32(),s=e.readUint32(),i.starts_with_SAP=s>>31&1,i.SAP_type=s>>28&7,i.SAP_delta_time=268435455&s}})),h.SingleItemTypeReferenceBox=function(e,t,r,i){h.Box.call(this,e,t),this.hdr_size=r,this.start=i},h.SingleItemTypeReferenceBox.prototype=new h.Box,h.SingleItemTypeReferenceBox.prototype.parse=function(e){this.from_item_ID=e.readUint16();var t=e.readUint16();this.references=[];for(var r=0;r>4&15,this.sample_sizes[t+1]=15&i}else if(8===this.field_size)for(t=0;t0)for(r=0;r>4&15,this.default_skip_byte_block=15&t}this.default_isProtected=e.readUint8(),this.default_Per_Sample_IV_Size=e.readUint8(),this.default_KID=h.parseHex16(e),1===this.default_isProtected&&0===this.default_Per_Sample_IV_Size&&(this.default_constant_IV_size=e.readUint8(),this.default_constant_IV=e.readUint8Array(this.default_constant_IV_size))})),h.createFullBoxCtor("tfdt",(function(e){1==this.version?this.baseMediaDecodeTime=e.readUint64():this.baseMediaDecodeTime=e.readUint32()})),h.createFullBoxCtor("tfhd",(function(e){var t=0;this.track_id=e.readUint32(),this.size-this.hdr_size>t&&this.flags&h.TFHD_FLAG_BASE_DATA_OFFSET?(this.base_data_offset=e.readUint64(),t+=8):this.base_data_offset=0,this.size-this.hdr_size>t&&this.flags&h.TFHD_FLAG_SAMPLE_DESC?(this.default_sample_description_index=e.readUint32(),t+=4):this.default_sample_description_index=0,this.size-this.hdr_size>t&&this.flags&h.TFHD_FLAG_SAMPLE_DUR?(this.default_sample_duration=e.readUint32(),t+=4):this.default_sample_duration=0,this.size-this.hdr_size>t&&this.flags&h.TFHD_FLAG_SAMPLE_SIZE?(this.default_sample_size=e.readUint32(),t+=4):this.default_sample_size=0,this.size-this.hdr_size>t&&this.flags&h.TFHD_FLAG_SAMPLE_FLAGS?(this.default_sample_flags=e.readUint32(),t+=4):this.default_sample_flags=0})),h.createFullBoxCtor("tfra",(function(e){this.track_ID=e.readUint32(),e.readUint24();var t=e.readUint8();this.length_size_of_traf_num=t>>4&3,this.length_size_of_trun_num=t>>2&3,this.length_size_of_sample_num=3&t,this.entries=[];for(var r=e.readUint32(),i=0;i>8,e.readUint16(),this.matrix=e.readInt32Array(9),this.width=e.readUint32(),this.height=e.readUint32()})),h.createBoxCtor("tmax",(function(e){this.time=e.readUint32()})),h.createBoxCtor("tmin",(function(e){this.time=e.readUint32()})),h.createBoxCtor("totl",(function(e){this.bytessent=e.readUint32()})),h.createBoxCtor("tpay",(function(e){this.bytessent=e.readUint32()})),h.createBoxCtor("tpyl",(function(e){this.bytessent=e.readUint64()})),h.TrackGroupTypeBox.prototype.parse=function(e){this.parseFullHeader(e),this.track_group_id=e.readUint32()},h.createTrackGroupCtor("msrc"),h.TrackReferenceTypeBox=function(e,t,r,i){h.Box.call(this,e,t),this.hdr_size=r,this.start=i},h.TrackReferenceTypeBox.prototype=new h.Box,h.TrackReferenceTypeBox.prototype.parse=function(e){this.track_ids=e.readUint32Array((this.size-this.hdr_size)/4)},h.trefBox.prototype.parse=function(e){for(var t,r;e.getPosition()t&&this.flags&h.TRUN_FLAGS_DATA_OFFSET?(this.data_offset=e.readInt32(),t+=4):this.data_offset=0,this.size-this.hdr_size>t&&this.flags&h.TRUN_FLAGS_FIRST_FLAG?(this.first_sample_flags=e.readUint32(),t+=4):this.first_sample_flags=0,this.sample_duration=[],this.sample_size=[],this.sample_flags=[],this.sample_composition_time_offset=[],this.size-this.hdr_size>t)for(var r=0;r0&&(this.location=e.readCString())})),h.createUUIDBox("a5d40b30e81411ddba2f0800200c9a66",!0,!1,(function(e){this.LiveServerManifest=e.readString(this.size-this.hdr_size).replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")})),h.createUUIDBox("d08a4f1810f34a82b6c832d8aba183d3",!0,!1,(function(e){this.system_id=h.parseHex16(e);var t=e.readUint32();t>0&&(this.data=e.readUint8Array(t))})),h.createUUIDBox("a2394f525a9b4f14a2446c427c648df4",!0,!1),h.createUUIDBox("8974dbce7be74c5184f97148f9882554",!0,!1,(function(e){this.default_AlgorithmID=e.readUint24(),this.default_IV_size=e.readUint8(),this.default_KID=h.parseHex16(e)})),h.createUUIDBox("d4807ef2ca3946958e5426cb9e46a79f",!0,!1,(function(e){this.fragment_count=e.readUint8(),this.entries=[];for(var t=0;t>4,this.chromaSubsampling=t>>1&7,this.videoFullRangeFlag=1&t,this.colourPrimaries=e.readUint8(),this.transferCharacteristics=e.readUint8(),this.matrixCoefficients=e.readUint8(),this.codecIntializationDataSize=e.readUint16(),this.codecIntializationData=e.readUint8Array(this.codecIntializationDataSize)):(this.profile=e.readUint8(),this.level=e.readUint8(),t=e.readUint8(),this.bitDepth=t>>4&15,this.colorSpace=15&t,t=e.readUint8(),this.chromaSubsampling=t>>4&15,this.transferFunction=t>>1&7,this.videoFullRangeFlag=1&t,this.codecIntializationDataSize=e.readUint16(),this.codecIntializationData=e.readUint8Array(this.codecIntializationDataSize))})),h.createBoxCtor("vttC",(function(e){this.text=e.readString(this.size-this.hdr_size)})),h.createFullBoxCtor("vvcC",(function(e){var t,r,i={held_bits:void 0,num_held_bits:0,stream_read_1_bytes:function(e){this.held_bits=e.readUint8(),this.num_held_bits=8},stream_read_2_bytes:function(e){this.held_bits=e.readUint16(),this.num_held_bits=16},extract_bits:function(e){var t=this.held_bits>>this.num_held_bits-e&(1<=0;--r){var a=i.extract_bits(1);this.ptl_sublayer_present_mask|=a<1;++r)i.extract_bits(1);for(r=this.num_sublayers-2;r>=0;--r)this.ptl_sublayer_present_mask&1<>=1;t+=h.decimalToHex(i,0),t+=".",0===this.hvcC.general_tier_flag?t+="L":t+="H",t+=this.hvcC.general_level_idc;var s=!1,n="";for(e=5;e>=0;e--)(this.hvcC.general_constraint_indicator[e]||s)&&(n="."+h.decimalToHex(this.hvcC.general_constraint_indicator[e],0)+n,s=!0);t+=n}return t},h.vvc1SampleEntry.prototype.getCodec=h.vvi1SampleEntry.prototype.getCodec=function(){var e,t=h.SampleEntry.prototype.getCodec.call(this);if(this.vvcC){t+="."+this.vvcC.general_profile_idc,this.vvcC.general_tier_flag?t+=".H":t+=".L",t+=this.vvcC.general_level_idc;var r="";if(this.vvcC.general_constraint_info){var i,s=[],n=0;for(n|=this.vvcC.ptl_frame_only_constraint<<7,n|=this.vvcC.ptl_multilayer_enabled<<6,e=0;e>2&63,s.push(n),n&&(i=e),n=this.vvcC.general_constraint_info[e]>>2&3;if(void 0===i)r=".CA";else{r=".C";var a="ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",o=0,d=0;for(e=0;e<=i;++e)for(o=o<<8|s[e],d+=8;d>=5;){r+=a[o>>d-5&31],o&=(1<<(d-=5))-1}d&&(r+=a[31&(o<<=5-d)])}}t+=r}return t},h.mp4aSampleEntry.prototype.getCodec=function(){var e=h.SampleEntry.prototype.getCodec.call(this);if(this.esds&&this.esds.esd){var t=this.esds.esd.getOTI(),r=this.esds.esd.getAudioConfig();return e+"."+h.decimalToHex(t)+(r?"."+r:"")}return e},h.stxtSampleEntry.prototype.getCodec=function(){var e=h.SampleEntry.prototype.getCodec.call(this);return this.mime_format?e+"."+this.mime_format:e},h.vp08SampleEntry.prototype.getCodec=h.vp09SampleEntry.prototype.getCodec=function(){var e=h.SampleEntry.prototype.getCodec.call(this),t=this.vpcC.level;0==t&&(t="00");var r=this.vpcC.bitDepth;return 8==r&&(r="08"),e+".0"+this.vpcC.profile+"."+t+"."+r},h.av01SampleEntry.prototype.getCodec=function(){var e,t=h.SampleEntry.prototype.getCodec.call(this),r=this.av1C.seq_level_idx_0;return r<10&&(r="0"+r),2===this.av1C.seq_profile&&1===this.av1C.high_bitdepth?e=1===this.av1C.twelve_bit?"12":"10":this.av1C.seq_profile<=2&&(e=1===this.av1C.high_bitdepth?"10":"08"),t+"."+this.av1C.seq_profile+"."+r+(this.av1C.seq_tier_0?"H":"M")+"."+e},h.Box.prototype.writeHeader=function(e,t){this.size+=8,this.size>d&&(this.size+=8),"uuid"===this.type&&(this.size+=16),n.debug("BoxWriter","Writing box "+this.type+" of size: "+this.size+" at position "+e.getPosition()+(t||"")),this.size>d?e.writeUint32(1):(this.sizePosition=e.getPosition(),e.writeUint32(this.size)),e.writeString(this.type,null,4),"uuid"===this.type&&e.writeUint8Array(this.uuid),this.size>d&&e.writeUint64(this.size)},h.FullBox.prototype.writeHeader=function(e){this.size+=4,h.Box.prototype.writeHeader.call(this,e," v="+this.version+" f="+this.flags),e.writeUint8(this.version),e.writeUint24(this.flags)},h.Box.prototype.write=function(e){"mdat"===this.type?this.data&&(this.size=this.data.length,this.writeHeader(e),e.writeUint8Array(this.data)):(this.size=this.data?this.data.length:0,this.writeHeader(e),this.data&&e.writeUint8Array(this.data))},h.ContainerBox.prototype.write=function(e){this.size=0,this.writeHeader(e);for(var t=0;t=2&&e.writeUint32(this.default_sample_description_index),e.writeUint32(this.entries.length),t=0;t0)for(t=0;t+1t?1:0,this.flags=0,this.size=4,1===this.version&&(this.size+=4),this.writeHeader(e),1===this.version?e.writeUint64(this.baseMediaDecodeTime):e.writeUint32(this.baseMediaDecodeTime)},h.tfhdBox.prototype.write=function(e){this.version=0,this.size=4,this.flags&h.TFHD_FLAG_BASE_DATA_OFFSET&&(this.size+=8),this.flags&h.TFHD_FLAG_SAMPLE_DESC&&(this.size+=4),this.flags&h.TFHD_FLAG_SAMPLE_DUR&&(this.size+=4),this.flags&h.TFHD_FLAG_SAMPLE_SIZE&&(this.size+=4),this.flags&h.TFHD_FLAG_SAMPLE_FLAGS&&(this.size+=4),this.writeHeader(e),e.writeUint32(this.track_id),this.flags&h.TFHD_FLAG_BASE_DATA_OFFSET&&e.writeUint64(this.base_data_offset),this.flags&h.TFHD_FLAG_SAMPLE_DESC&&e.writeUint32(this.default_sample_description_index),this.flags&h.TFHD_FLAG_SAMPLE_DUR&&e.writeUint32(this.default_sample_duration),this.flags&h.TFHD_FLAG_SAMPLE_SIZE&&e.writeUint32(this.default_sample_size),this.flags&h.TFHD_FLAG_SAMPLE_FLAGS&&e.writeUint32(this.default_sample_flags)},h.tkhdBox.prototype.write=function(e){this.version=0,this.size=80,this.writeHeader(e),e.writeUint32(this.creation_time),e.writeUint32(this.modification_time),e.writeUint32(this.track_id),e.writeUint32(0),e.writeUint32(this.duration),e.writeUint32(0),e.writeUint32(0),e.writeInt16(this.layer),e.writeInt16(this.alternate_group),e.writeInt16(this.volume<<8),e.writeUint16(0),e.writeInt32Array(this.matrix),e.writeUint32(this.width),e.writeUint32(this.height)},h.trexBox.prototype.write=function(e){this.version=0,this.flags=0,this.size=20,this.writeHeader(e),e.writeUint32(this.track_id),e.writeUint32(this.default_sample_description_index),e.writeUint32(this.default_sample_duration),e.writeUint32(this.default_sample_size),e.writeUint32(this.default_sample_flags)},h.trunBox.prototype.write=function(e){this.version=0,this.size=4,this.flags&h.TRUN_FLAGS_DATA_OFFSET&&(this.size+=4),this.flags&h.TRUN_FLAGS_FIRST_FLAG&&(this.size+=4),this.flags&h.TRUN_FLAGS_DURATION&&(this.size+=4*this.sample_duration.length),this.flags&h.TRUN_FLAGS_SIZE&&(this.size+=4*this.sample_size.length),this.flags&h.TRUN_FLAGS_FLAGS&&(this.size+=4*this.sample_flags.length),this.flags&h.TRUN_FLAGS_CTS_OFFSET&&(this.size+=4*this.sample_composition_time_offset.length),this.writeHeader(e),e.writeUint32(this.sample_count),this.flags&h.TRUN_FLAGS_DATA_OFFSET&&(this.data_offset_position=e.getPosition(),e.writeInt32(this.data_offset)),this.flags&h.TRUN_FLAGS_FIRST_FLAG&&e.writeUint32(this.first_sample_flags);for(var t=0;t-1||e[r]instanceof h.Box||t[r]instanceof h.Box||void 0===e[r]||void 0===t[r]||"function"==typeof e[r]||"function"==typeof t[r]||e.subBoxNames&&e.subBoxNames.indexOf(r.slice(0,4))>-1||t.subBoxNames&&t.subBoxNames.indexOf(r.slice(0,4))>-1||"data"===r||"start"===r||"size"===r||"creation_time"===r||"modification_time"===r||h.DIFF_PRIMITIVE_ARRAY_PROP_NAMES.indexOf(r)>-1||e[r]===t[r]))return!1;return!0},h.boxEqual=function(e,t){if(!h.boxEqualFields(e,t))return!1;for(var r=0;r1)for(t=1;t-1&&this.fragmentedTracks.splice(t,1)},p.prototype.setExtractionOptions=function(e,t,r){var i=this.getTrackById(e);if(i){var s={};this.extractedTracks.push(s),s.id=e,s.user=t,s.trak=i,i.nextSample=0,s.nb_samples=1e3,s.samples=[],r&&r.nbSamples&&(s.nb_samples=r.nbSamples)}},p.prototype.unsetExtractionOptions=function(e){for(var t=-1,r=0;r-1&&this.extractedTracks.splice(t,1)},p.prototype.parse=function(){var e,t;if(!this.restoreParsePosition||this.restoreParsePosition())for(;;){if(this.hasIncompleteMdat&&this.hasIncompleteMdat()){if(this.processIncompleteMdat())continue;return}if(this.saveParsePosition&&this.saveParsePosition(),(e=h.parseOneBox(this.stream,false)).code===h.ERR_NOT_ENOUGH_DATA){if(this.processIncompleteBox){if(this.processIncompleteBox(e))continue;return}return}var r;switch(r="uuid"!==(t=e.box).type?t.type:t.uuid,this.boxes.push(t),r){case"mdat":this.mdats.push(t);break;case"moof":this.moofs.push(t);break;case"moov":this.moovStartFound=!0,0===this.mdats.length&&(this.isProgressive=!0);default:void 0!==this[r]&&n.warn("ISOFile","Duplicate Box of type: "+r+", overriding previous occurrence"),this[r]=t}this.updateUsedBytes&&this.updateUsedBytes(t,e)}},p.prototype.checkBuffer=function(e){if(null==e)throw"Buffer must be defined and non empty";if(void 0===e.fileStart)throw"Buffer must have a fileStart property";return 0===e.byteLength?(n.warn("ISOFile","Ignoring empty buffer (fileStart: "+e.fileStart+")"),this.stream.logBufferLevel(),!1):(n.info("ISOFile","Processing buffer (fileStart: "+e.fileStart+")"),e.usedBytes=0,this.stream.insertBuffer(e),this.stream.logBufferLevel(),!!this.stream.initialized()||(n.warn("ISOFile","Not ready to start parsing"),!1))},p.prototype.appendBuffer=function(e,t){var r;if(this.checkBuffer(e))return this.parse(),this.moovStartFound&&!this.moovStartSent&&(this.moovStartSent=!0,this.onMoovStart&&this.onMoovStart()),this.moov?(this.sampleListBuilt||(this.buildSampleLists(),this.sampleListBuilt=!0),this.updateSampleLists(),this.onReady&&!this.readySent&&(this.readySent=!0,this.onReady(this.getInfo())),this.processSamples(t),this.nextSeekPosition?(r=this.nextSeekPosition,this.nextSeekPosition=void 0):r=this.nextParsePosition,this.stream.getEndFilePositionAfter&&(r=this.stream.getEndFilePositionAfter(r))):r=this.nextParsePosition?this.nextParsePosition:0,this.sidx&&this.onSidx&&!this.sidxSent&&(this.onSidx(this.sidx),this.sidxSent=!0),this.meta&&(this.flattenItemInfo&&!this.itemListBuilt&&(this.flattenItemInfo(),this.itemListBuilt=!0),this.processItems&&this.processItems(this.onItem)),this.stream.cleanBuffers&&(n.info("ISOFile","Done processing buffer (fileStart: "+e.fileStart+") - next buffer to fetch should have a fileStart position of "+r),this.stream.logBufferLevel(),this.stream.cleanBuffers(),this.stream.logBufferLevel(!0),n.info("ISOFile","Sample data size in memory: "+this.getAllocatedSampleDataSize())),r},p.prototype.getInfo=function(){var e,t,r,i,s,n,a={},o=new Date("1904-01-01T00:00:00Z").getTime();if(this.moov)for(a.hasMoov=!0,a.duration=this.moov.mvhd.duration,a.timescale=this.moov.mvhd.timescale,a.isFragmented=null!=this.moov.mvex,a.isFragmented&&this.moov.mvex.mehd&&(a.fragment_duration=this.moov.mvex.mehd.fragment_duration),a.isProgressive=this.isProgressive,a.hasIOD=null!=this.moov.iods,a.brands=[],a.brands.push(this.ftyp.major_brand),a.brands=a.brands.concat(this.ftyp.compatible_brands),a.created=new Date(o+1e3*this.moov.mvhd.creation_time),a.modified=new Date(o+1e3*this.moov.mvhd.modification_time),a.tracks=[],a.audioTracks=[],a.videoTracks=[],a.subtitleTracks=[],a.metadataTracks=[],a.hintTracks=[],a.otherTracks=[],e=0;e0?a.mime+='video/mp4; codecs="':a.audioTracks&&a.audioTracks.length>0?a.mime+='audio/mp4; codecs="':a.mime+='application/mp4; codecs="',e=0;e=r.samples.length)&&(n.info("ISOFile","Sending fragmented data on track #"+i.id+" for samples ["+Math.max(0,r.nextSample-i.nb_samples)+","+(r.nextSample-1)+"]"),n.info("ISOFile","Sample data size in memory: "+this.getAllocatedSampleDataSize()),this.onSegment&&this.onSegment(i.id,i.user,i.segmentStream.buffer,r.nextSample,e||r.nextSample>=r.samples.length),i.segmentStream=null,i!==this.fragmentedTracks[t]))break}}if(null!==this.onSamples)for(t=0;t=r.samples.length)&&(n.debug("ISOFile","Sending samples on track #"+a.id+" for sample "+r.nextSample),this.onSamples&&this.onSamples(a.id,a.user,a.samples),a.samples=[],a!==this.extractedTracks[t]))break}}}},p.prototype.getBox=function(e){var t=this.getBoxes(e,!0);return t.length?t[0]:null},p.prototype.getBoxes=function(e,t){var r=[];return p._sweep.call(this,e,r,t),r},p._sweep=function(e,t,r){for(var i in this.type&&this.type==e&&t.push(this),this.boxes){if(t.length&&r)return;p._sweep.call(this.boxes[i],e,t,r)}},p.prototype.getTrackSamplesInfo=function(e){var t=this.getTrackById(e);return t?t.samples:void 0},p.prototype.getTrackSample=function(e,t){var r=this.getTrackById(e);return this.getSample(r,t)},p.prototype.releaseUsedSamples=function(e,t){var r=0,i=this.getTrackById(e);i.lastValidSample||(i.lastValidSample=0);for(var s=i.lastValidSample;se*s.timescale){l=i-1;break}t&&s.is_sync&&(d=i)}for(t&&(l=d),e=r.samples[l].cts,r.nextSample=l;r.samples[l].alreadyRead===r.samples[l].size&&r.samples[l+1];)l++;return a=r.samples[l].offset+r.samples[l].alreadyRead,n.info("ISOFile","Seeking to "+(t?"RAP":"")+" sample #"+r.nextSample+" on track "+r.tkhd.track_id+", time "+n.getDurationString(e,o)+" and offset: "+a),{offset:a,time:e/o}},p.prototype.seek=function(e,t){var r,i,s,a=this.moov,o={offset:1/0,time:1/0};if(this.moov){for(s=0;s-1){o=d;break}switch(o){case"Visual":if(s.add("vmhd").set("graphicsmode",0).set("opcolor",[0,0,0]),n.set("width",t.width).set("height",t.height).set("horizresolution",72<<16).set("vertresolution",72<<16).set("frame_count",1).set("compressorname",t.type+" Compressor").set("depth",24),t.avcDecoderConfigRecord){var c=new h.avcCBox,f=new a(t.avcDecoderConfigRecord);c.parse(f),n.addBox(c)}break;case"Audio":s.add("smhd").set("balance",t.balance||0),n.set("channel_count",t.channel_count||2).set("samplesize",t.samplesize||16).set("samplerate",t.samplerate||65536);break;case"Hint":s.add("hmhd");break;case"Subtitle":if(s.add("sthd"),"stpp"===t.type)n.set("namespace",t.namespace||"nonamespace").set("schema_location",t.schema_location||"").set("auxiliary_mime_types",t.auxiliary_mime_types||"");break;default:s.add("nmhd")}t.description&&n.addBox(t.description),t.description_boxes&&t.description_boxes.forEach((function(e){n.addBox(e)})),s.add("dinf").add("dref").addEntry((new h["url Box"]).set("flags",1));var p=s.add("stbl");return p.add("stsd").addEntry(n),p.add("stts").set("sample_counts",[]).set("sample_deltas",[]),p.add("stsc").set("first_chunk",[]).set("samples_per_chunk",[]).set("sample_description_index",[]),p.add("stco").set("chunk_offsets",[]),p.add("stsz").set("sample_sizes",[]),this.moov.mvex.add("trex").set("track_id",t.id).set("default_sample_description_index",t.default_sample_description_index||1).set("default_sample_duration",t.default_sample_duration||0).set("default_sample_size",t.default_sample_size||0).set("default_sample_flags",t.default_sample_flags||0),this.buildTrakSampleLists(r),t.id}},h.Box.prototype.computeSize=function(e){var t=e||new o;t.endianness=o.BIG_ENDIAN,this.write(t)},p.prototype.addSample=function(e,t,r){var i=r||{},s={},n=this.getTrackById(e);if(null!==n){s.number=n.samples.length,s.track_id=n.tkhd.track_id,s.timescale=n.mdia.mdhd.timescale,s.description_index=i.sample_description_index?i.sample_description_index-1:0,s.description=n.mdia.minf.stbl.stsd.entries[s.description_index],s.data=t,s.size=t.byteLength,s.alreadyRead=s.size,s.duration=i.duration||1,s.cts=i.cts||0,s.dts=i.dts||0,s.is_sync=i.is_sync||!1,s.is_leading=i.is_leading||0,s.depends_on=i.depends_on||0,s.is_depended_on=i.is_depended_on||0,s.has_redundancy=i.has_redundancy||0,s.degradation_priority=i.degradation_priority||0,s.offset=0,s.subsamples=i.subsamples,n.samples.push(s),n.samples_size+=s.size,n.samples_duration+=s.duration,n.first_dts||(n.first_dts=i.dts),this.processSamples();var a=this.createSingleSampleMoof(s);return this.addBox(a),a.computeSize(),a.trafs[0].truns[0].data_offset=a.size+8,this.add("mdat").data=new Uint8Array(t),s}},p.prototype.createSingleSampleMoof=function(e){var t=0;t=e.is_sync?1<<25:65536;var r=new h.moofBox;r.add("mfhd").set("sequence_number",this.nextMoofNumber),this.nextMoofNumber++;var i=r.add("traf"),s=this.getTrackById(e.track_id);return i.add("tfhd").set("track_id",e.track_id).set("flags",h.TFHD_FLAG_DEFAULT_BASE_IS_MOOF),i.add("tfdt").set("baseMediaDecodeTime",e.dts-(s.first_dts||0)),i.add("trun").set("flags",h.TRUN_FLAGS_DATA_OFFSET|h.TRUN_FLAGS_DURATION|h.TRUN_FLAGS_SIZE|h.TRUN_FLAGS_FLAGS|h.TRUN_FLAGS_CTS_OFFSET).set("data_offset",0).set("first_sample_flags",0).set("sample_count",1).set("sample_duration",[e.duration]).set("sample_size",[e.size]).set("sample_flags",[t]).set("sample_composition_time_offset",[e.cts-e.dts]),r},p.prototype.lastMoofIndex=0,p.prototype.samplesDataSize=0,p.prototype.resetTables=function(){var e,t,r,i,s,n;for(this.initial_duration=this.moov.mvhd.duration,this.moov.mvhd.duration=0,e=0;e=2&&(d=s[a].grouping_type+"/0",(o=new l(s[a].grouping_type,0)).is_fragment=!0,t.sample_groups_info[d]||(t.sample_groups_info[d]=o))}else for(a=0;a=2&&(d=i[a].grouping_type+"/0",o=new l(i[a].grouping_type,0),e.sample_groups_info[d]||(e.sample_groups_info[d]=o))},p.setSampleGroupProperties=function(e,t,r,i){var s,n;for(s in t.sample_groups=[],i){var a;if(t.sample_groups[s]={},t.sample_groups[s].grouping_type=i[s].grouping_type,t.sample_groups[s].grouping_type_parameter=i[s].grouping_type_parameter,r>=i[s].last_sample_in_run&&(i[s].last_sample_in_run<0&&(i[s].last_sample_in_run=0),i[s].entry_index++,i[s].entry_index<=i[s].sbgp.entries.length-1&&(i[s].last_sample_in_run+=i[s].sbgp.entries[i[s].entry_index].sample_count)),i[s].entry_index<=i[s].sbgp.entries.length-1?t.sample_groups[s].group_description_index=i[s].sbgp.entries[i[s].entry_index].group_description_index:t.sample_groups[s].group_description_index=-1,0!==t.sample_groups[s].group_description_index)a=i[s].fragment_description?i[s].fragment_description:i[s].description,t.sample_groups[s].group_description_index>0?(n=t.sample_groups[s].group_description_index>65535?(t.sample_groups[s].group_description_index>>16)-1:t.sample_groups[s].group_description_index-1,a&&n>=0&&(t.sample_groups[s].description=a.entries[n])):a&&a.version>=2&&a.default_group_description_index>0&&(t.sample_groups[s].description=a.entries[a.default_group_description_index-1])}},p.process_sdtp=function(e,t,r){t&&(e?(t.is_leading=e.is_leading[r],t.depends_on=e.sample_depends_on[r],t.is_depended_on=e.sample_is_depended_on[r],t.has_redundancy=e.sample_has_redundancy[r]):(t.is_leading=0,t.depends_on=0,t.is_depended_on=0,t.has_redundancy=0))},p.prototype.buildSampleLists=function(){var e,t;for(e=0;eb&&(v++,b<0&&(b=0),b+=n.sample_counts[v]),t>0?(e.samples[t-1].duration=n.sample_deltas[v],e.samples_duration+=e.samples[t-1].duration,A.dts=e.samples[t-1].dts+e.samples[t-1].duration):A.dts=0,a?(t>=w&&(S++,w<0&&(w=0),w+=a.sample_counts[S]),A.cts=e.samples[t].dts+a.sample_offsets[S]):A.cts=A.dts,o?(t==o.sample_numbers[E]-1?(A.is_sync=!0,E++):(A.is_sync=!1,A.degradation_priority=0),l&&l.entries[U].sample_delta+x==t+1&&(A.subsamples=l.entries[U].subsamples,x+=l.entries[U].sample_delta,U++)):A.is_sync=!0,p.process_sdtp(e.mdia.minf.stbl.sdtp,A,A.number),A.degradation_priority=c?c.priority[t]:0,l&&l.entries[U].sample_delta+x==t&&(A.subsamples=l.entries[U].subsamples,x+=l.entries[U].sample_delta),(u.length>0||h.length>0)&&p.setSampleGroupProperties(e,A,t,e.sample_groups_info)}t>0&&(e.samples[t-1].duration=Math.max(e.mdia.mdhd.duration-e.samples[t-1].dts,0),e.samples_duration+=e.samples[t-1].duration)}},p.prototype.updateSampleLists=function(){var e,t,r,i,s,n,a,o,d,l,u,c,f,m,_;if(void 0!==this.moov)for(;this.lastMoofIndex0&&p.initSampleGroups(c,u,u.sbgps,c.mdia.minf.stbl.sgpds,u.sgpds),t=0;t0?m.dts=c.samples[c.samples.length-2].dts+c.samples[c.samples.length-2].duration:(u.tfdt?m.dts=u.tfdt.baseMediaDecodeTime:m.dts=0,c.first_traf_merged=!0),m.cts=m.dts,g.flags&h.TRUN_FLAGS_CTS_OFFSET&&(m.cts=m.dts+g.sample_composition_time_offset[r]),_=a,g.flags&h.TRUN_FLAGS_FLAGS?_=g.sample_flags[r]:0===r&&g.flags&h.TRUN_FLAGS_FIRST_FLAG&&(_=g.first_sample_flags),m.is_sync=!(_>>16&1),m.is_leading=_>>26&3,m.depends_on=_>>24&3,m.is_depended_on=_>>22&3,m.has_redundancy=_>>20&3,m.degradation_priority=65535&_;var y=!!(u.tfhd.flags&h.TFHD_FLAG_BASE_DATA_OFFSET),b=!!(u.tfhd.flags&h.TFHD_FLAG_DEFAULT_BASE_IS_MOOF),v=!!(g.flags&h.TRUN_FLAGS_DATA_OFFSET),w=0;w=y?u.tfhd.base_data_offset:b||0===t?l.start:o,m.offset=0===t&&0===r?v?w+g.data_offset:w:o,o=m.offset+m.size,(u.sbgps.length>0||u.sgpds.length>0||c.mdia.minf.stbl.sbgps.length>0||c.mdia.minf.stbl.sgpds.length>0)&&p.setSampleGroupProperties(c,m,m.number_in_traf,u.sample_groups_info)}}if(u.subs){c.has_fragment_subsamples=!0;var S=u.first_sample_index;for(t=0;t-1))return null;var a=(r=this.stream.buffers[s]).byteLength-(i.offset+i.alreadyRead-r.fileStart);if(i.size-i.alreadyRead<=a)return n.debug("ISOFile","Getting sample #"+t+" data (alreadyRead: "+i.alreadyRead+" offset: "+(i.offset+i.alreadyRead-r.fileStart)+" read size: "+(i.size-i.alreadyRead)+" full size: "+i.size+")"),o.memcpy(i.data.buffer,i.alreadyRead,r,i.offset+i.alreadyRead-r.fileStart,i.size-i.alreadyRead),r.usedBytes+=i.size-i.alreadyRead,this.stream.logBufferLevel(),i.alreadyRead=i.size,i;if(0===a)return null;n.debug("ISOFile","Getting sample #"+t+" partial data (alreadyRead: "+i.alreadyRead+" offset: "+(i.offset+i.alreadyRead-r.fileStart)+" read size: "+a+" full size: "+i.size+")"),o.memcpy(i.data.buffer,i.alreadyRead,r,i.offset+i.alreadyRead-r.fileStart,a),i.alreadyRead+=a,r.usedBytes+=a,this.stream.logBufferLevel()}},p.prototype.releaseSample=function(e,t){var r=e.samples[t];return r.data?(this.samplesDataSize-=r.size,r.data=null,r.alreadyRead=0,r.size):0},p.prototype.getAllocatedSampleDataSize=function(){return this.samplesDataSize},p.prototype.getCodecs=function(){var e,t="";for(e=0;e0&&(t+=","),t+=this.moov.traks[e].mdia.minf.stbl.stsd.entries[0].getCodec()}return t},p.prototype.getTrexById=function(e){var t;if(!this.moov||!this.moov.mvex)return null;for(t=0;t0&&(r.protection=s.ipro.protections[s.iinf.item_infos[e].protection_index-1]),s.iinf.item_infos[e].item_type?r.type=s.iinf.item_infos[e].item_type:r.type="mime",r.content_type=s.iinf.item_infos[e].content_type,r.content_encoding=s.iinf.item_infos[e].content_encoding;if(s.iloc)for(e=0;e0&&h.property_index-1-1))return null;var d=(t=this.stream.buffers[a]).byteLength-(s.offset+s.alreadyRead-t.fileStart);if(!(s.length-s.alreadyRead<=d))return n.debug("ISOFile","Getting item #"+e+" extent #"+i+" partial data (alreadyRead: "+s.alreadyRead+" offset: "+(s.offset+s.alreadyRead-t.fileStart)+" read size: "+d+" full extent size: "+s.length+" full item size: "+r.size+")"),o.memcpy(r.data.buffer,r.alreadyRead,t,s.offset+s.alreadyRead-t.fileStart,d),s.alreadyRead+=d,r.alreadyRead+=d,t.usedBytes+=d,this.stream.logBufferLevel(),null;n.debug("ISOFile","Getting item #"+e+" extent #"+i+" data (alreadyRead: "+s.alreadyRead+" offset: "+(s.offset+s.alreadyRead-t.fileStart)+" read size: "+(s.length-s.alreadyRead)+" full extent size: "+s.length+" full item size: "+r.size+")"),o.memcpy(r.data.buffer,r.alreadyRead,t,s.offset+s.alreadyRead-t.fileStart,s.length-s.alreadyRead),t.usedBytes+=s.length-s.alreadyRead,this.stream.logBufferLevel(),r.alreadyRead+=s.length-s.alreadyRead,s.alreadyRead=s.length}}return r.alreadyRead===r.size?r:null},p.prototype.releaseItem=function(e){var t=this.items[e];if(t.data){this.itemsDataSize-=t.size,t.data=null,t.alreadyRead=0;for(var r=0;r0?this.moov.traks[e].samples[0].duration:0),t.push(i)}return t},h.Box.prototype.printHeader=function(e){this.size+=8,this.size>d&&(this.size+=8),"uuid"===this.type&&(this.size+=16),e.log(e.indent+"size:"+this.size),e.log(e.indent+"type:"+this.type)},h.FullBox.prototype.printHeader=function(e){this.size+=4,h.Box.prototype.printHeader.call(this,e),e.log(e.indent+"version:"+this.version),e.log(e.indent+"flags:"+this.flags)},h.Box.prototype.print=function(e){this.printHeader(e)},h.ContainerBox.prototype.print=function(e){this.printHeader(e);for(var t=0;t>8)),e.log(e.indent+"matrix: "+this.matrix.join(", ")),e.log(e.indent+"next_track_id: "+this.next_track_id)},h.tkhdBox.prototype.print=function(e){h.FullBox.prototype.printHeader.call(this,e),e.log(e.indent+"creation_time: "+this.creation_time),e.log(e.indent+"modification_time: "+this.modification_time),e.log(e.indent+"track_id: "+this.track_id),e.log(e.indent+"duration: "+this.duration),e.log(e.indent+"volume: "+(this.volume>>8)),e.log(e.indent+"matrix: "+this.matrix.join(", ")),e.log(e.indent+"layer: "+this.layer),e.log(e.indent+"alternate_group: "+this.alternate_group),e.log(e.indent+"width: "+this.width),e.log(e.indent+"height: "+this.height)};var m={createFile:function(e,t){var r=void 0===e||e,i=new p(t);return i.discardMdatData=!r,i}};t.createFile=m.createFile}));function br(e){return e.reduce(((e,t)=>256*e+t))}function vr(e){const t=[101,103,119,99],r=e.length-28,i=e.slice(r,r+t.length);return t.every(((e,t)=>e===i[t]))}yr.Log,yr.MP4BoxStream,yr.DataStream,yr.MultiBufferStream,yr.MPEG4DescriptorParser,yr.BoxParser,yr.XMLSubtitlein4Parser,yr.Textin4Parser,yr.ISOFile,yr.createFile;class wr{constructor(){this.s=null,this.a=null,this.l=0,this.c=0,this.u=1/0,this.A=!1,this.d=!1,this.r=4194304,this.n=new Uint8Array([30,158,90,33,244,57,83,165,2,70,35,87,215,231,226,108]),this.t=this.n.slice().reverse()}destroy(){this.s=null,this.a=null,this.l=0,this.c=0,this.u=1/0,this.A=!1,this.d=!1,this.r=4194304,this.n=null,this.t=null}transport(e){if(!this.s&&this.l>50)return e;if(this.l++,this.d)return e;const t=new Uint8Array(e);if(this.A){if(!(this.c~e))}(e.slice(r+32,r+32+t))]}return null}(t,this.t);if(!r)return e;const i=function(e){try{if("object"!=typeof WebAssembly||"function"!=typeof WebAssembly.instantiate)throw null;{const e=new WebAssembly.Module(Uint8Array.of(0,97,115,109,1,0,0,0));if(!(e instanceof WebAssembly.Module&&new WebAssembly.Instance(e)instanceof WebAssembly.Instance))throw null}}catch(e){return new Error("video_error_4")}let t;try{t={env:{__handle_stack_overflow:()=>e(new Error("video_error_1")),memory:new WebAssembly.Memory({initial:256,maximum:256})}}}catch(e){return new Error("video_error_5")}return t}(e);if(i instanceof Error)return console.error(i.message),this.d=!0,e;this.A=!0,this.u=r[1],vr(t)&&this.c++,WebAssembly.instantiate(r[2],i).then((e=>{if("function"!=typeof(t=e.instance.exports).parse||"object"!=typeof t.memory)return this.d=!0,void console.error("video_error_3");var t;this.s=e.instance.exports,this.a=new Uint8Array(this.s.memory.buffer)})).catch((e=>{this.d=!0,console.error("video_error_6")}))}return e}}const Sr=0,Er=32,Ur=16,xr=[214,144,233,254,204,225,61,183,22,182,20,194,40,251,44,5,43,103,154,118,42,190,4,195,170,68,19,38,73,134,6,153,156,66,80,244,145,239,152,122,51,84,11,67,237,207,172,98,228,179,28,169,201,8,232,149,128,223,148,250,117,143,63,166,71,7,167,252,243,115,23,186,131,89,60,25,230,133,79,168,104,107,129,178,113,100,218,139,248,235,15,75,112,86,157,53,30,36,14,94,99,88,209,162,37,34,124,59,1,33,120,135,212,0,70,87,159,211,39,82,76,54,2,231,160,196,200,158,234,191,138,210,64,199,56,181,163,247,242,206,249,97,21,161,224,174,93,164,155,52,26,85,173,147,50,48,245,140,177,227,29,246,226,46,130,102,202,96,192,41,35,171,13,83,78,111,213,219,55,69,222,253,142,47,3,255,106,114,109,108,91,81,141,27,175,146,187,221,188,127,17,217,92,65,31,16,90,216,10,193,49,136,165,205,123,189,45,116,208,18,184,229,180,176,137,105,151,74,12,150,119,126,101,185,241,9,197,110,198,132,24,240,125,236,58,220,77,32,121,238,95,62,215,203,57,72],Ar=[462357,472066609,943670861,1415275113,1886879365,2358483617,2830087869,3301692121,3773296373,4228057617,404694573,876298825,1347903077,1819507329,2291111581,2762715833,3234320085,3705924337,4177462797,337322537,808926789,1280531041,1752135293,2223739545,2695343797,3166948049,3638552301,4110090761,269950501,741554753,1213159005,1684763257];function Br(e){const t=[];for(let r=0,i=e.length;r>>32-r}function Tr(e){return(255&xr[e>>>24&255])<<24|(255&xr[e>>>16&255])<<16|(255&xr[e>>>8&255])<<8|255&xr[255&e]}function Cr(e){return e^kr(e,2)^kr(e,10)^kr(e,18)^kr(e,24)}function Dr(e){return e^kr(e,13)^kr(e,23)}function Fr(e,t,r){const i=new Array(4),s=new Array(4);for(let t=0;t<4;t++)s[0]=255&e[4*t],s[1]=255&e[4*t+1],s[2]=255&e[4*t+2],s[3]=255&e[4*t+3],i[t]=s[0]<<24|s[1]<<16|s[2]<<8|s[3];for(let e,t=0;t<32;t+=4)e=i[1]^i[2]^i[3]^r[t+0],i[0]^=Cr(Tr(e)),e=i[2]^i[3]^i[0]^r[t+1],i[1]^=Cr(Tr(e)),e=i[3]^i[0]^i[1]^r[t+2],i[2]^=Cr(Tr(e)),e=i[0]^i[1]^i[2]^r[t+3],i[3]^=Cr(Tr(e));for(let e=0;e<16;e+=4)t[e]=i[3-e/4]>>>24&255,t[e+1]=i[3-e/4]>>>16&255,t[e+2]=i[3-e/4]>>>8&255,t[e+3]=255&i[3-e/4]}function Ir(e,t,r,{padding:i="pkcs#7",mode:s,iv:n=[],output:a="string"}={}){if("cbc"===s&&("string"==typeof n&&(n=Br(n)),16!==n.length))throw new Error("iv is invalid");if("string"==typeof t&&(t=Br(t)),16!==t.length)throw new Error("key is invalid");if(e="string"==typeof e?r!==Sr?function(e){const t=[];for(let r=0,i=e.length;r>>6),t.push(128|63&i);else if(i<=55295||i>=57344&&i<=65535)t.push(224|i>>>12),t.push(128|i>>>6&63),t.push(128|63&i);else{if(!(i>=65536&&i<=1114111))throw t.push(i),new Error("input is not supported");r++,t.push(240|i>>>18&28),t.push(128|i>>>12&63),t.push(128|i>>>6&63),t.push(128|63&i)}}return t}(e):Br(e):[...e],("pkcs#5"===i||"pkcs#7"===i)&&r!==Sr){const t=Ur-e.length%Ur;for(let r=0;r=Ur;){const t=e.slice(h,h+16),i=new Array(16);if("cbc"===s)for(let e=0;e1===(e=e.toString(16)).length?"0"+e:e)).join(""):function(e){const t=[];for(let r=0,i=e.length;r=240&&e[r]<=247?(t.push(String.fromCodePoint(((7&e[r])<<18)+((63&e[r+1])<<12)+((63&e[r+2])<<6)+(63&e[r+3]))),r+=3):e[r]>=224&&e[r]<=239?(t.push(String.fromCodePoint(((15&e[r])<<12)+((63&e[r+1])<<6)+(63&e[r+2]))),r+=2):e[r]>=192&&e[r]<=223?(t.push(String.fromCodePoint(((31&e[r])<<6)+(63&e[r+1]))),r++):t.push(String.fromCodePoint(e[r]));return t.join("")}(d):d}class Pr{on(e,t,r){const i=this.e||(this.e={});return(i[e]||(i[e]=[])).push({fn:t,ctx:r}),this}once(e,t,r){const i=this;function s(...n){i.off(e,s),t.apply(r,n)}return s._=t,this.on(e,s,r)}emit(e,...t){const r=((this.e||(this.e={}))[e]||[]).slice();for(let e=0;e{delete r[e]})),void delete this.e;const i=r[e],s=[];if(i&&t)for(let e=0,r=i.length;e=2&&!this.isDestroyed;)if(255==this.tempBuffer[this.parsedOffset]){if(!(!1&this.tempBuffer[this.parsedOffset+1])){this.versionLayer=this.tempBuffer[this.parsedOffset+1],this.state=Lr.findFirstStartCode,this.fisrtStartCodeOffset=this.parsedOffset,this.parsedOffset+=2,e=!0;break}this.parsedOffset++}else this.parsedOffset++;if(e)continue;break}if(this.state==Lr.findFirstStartCode){let e=!1;for(;this.tempBuffer.length-this.parsedOffset>=2&&!this.isDestroyed;)if(255==this.tempBuffer[this.parsedOffset]){if(this.tempBuffer[this.parsedOffset+1]==this.versionLayer){this.state=Lr.findSecondStartCode,this.secondStartCodeOffset=this.parsedOffset,this.parsedOffset+=2,e=!0;break}this.parsedOffset++}else this.parsedOffset++;if(e)continue;break}if(this.state==Lr.findSecondStartCode){let e=this.tempBuffer.slice(this.fisrtStartCodeOffset,this.secondStartCodeOffset);this.emit("data",e,t),this.tempBuffer=this.tempBuffer.slice(this.secondStartCodeOffset),this.fisrtStartCodeOffset=0,this.parsedOffset=2,this.state=Lr.findFirstStartCode}}}}function Rr(e,t,r){for(let i=2;ie+t.byteLength),0));let r=0;return e.forEach((e=>{t.set(e,r),r+=e.byteLength})),t}class Nr{static init(){Nr.types={avc1:[],avcC:[],hvc1:[],hvcC:[],av01:[],av1C:[],btrt:[],dinf:[],dref:[],esds:[],ftyp:[],hdlr:[],mdat:[],mdhd:[],mdia:[],mfhd:[],minf:[],moof:[],moov:[],mp4a:[],mvex:[],mvhd:[],sdtp:[],stbl:[],stco:[],stsc:[],stsd:[],stsz:[],stts:[],tfdt:[],tfhd:[],traf:[],trak:[],trun:[],trex:[],tkhd:[],vmhd:[],smhd:[],".mp3":[],Opus:[],dOps:[],"ac-3":[],dac3:[],"ec-3":[],dec3:[]};for(let e in Nr.types)Nr.types.hasOwnProperty(e)&&(Nr.types[e]=[e.charCodeAt(0),e.charCodeAt(1),e.charCodeAt(2),e.charCodeAt(3)]);let e=Nr.constants={};e.FTYP=new Uint8Array([105,115,111,109,0,0,0,1,105,115,111,109,97,118,99,49]),e.STSD_PREFIX=new Uint8Array([0,0,0,0,0,0,0,1]),e.STTS=new Uint8Array([0,0,0,0,0,0,0,0]),e.STSC=e.STCO=e.STTS,e.STSZ=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0]),e.HDLR_VIDEO=new Uint8Array([0,0,0,0,0,0,0,0,118,105,100,101,0,0,0,0,0,0,0,0,0,0,0,0,86,105,100,101,111,72,97,110,100,108,101,114,0]),e.HDLR_AUDIO=new Uint8Array([0,0,0,0,0,0,0,0,115,111,117,110,0,0,0,0,0,0,0,0,0,0,0,0,83,111,117,110,100,72,97,110,100,108,101,114,0]),e.DREF=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,12,117,114,108,32,0,0,0,1]),e.SMHD=new Uint8Array([0,0,0,0,0,0,0,0]),e.VMHD=new Uint8Array([0,0,0,1,0,0,0,0,0,0,0,0])}static box(e){let t=8,r=null,i=Array.prototype.slice.call(arguments,1),s=i.length;for(let e=0;e>>24&255,r[1]=t>>>16&255,r[2]=t>>>8&255,r[3]=255&t,r.set(e,4);let n=8;for(let e=0;e>>24&255,e>>>16&255,e>>>8&255,255&e,t>>>24&255,t>>>16&255,t>>>8&255,255&t,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255]))}static trak(e){return Nr.box(Nr.types.trak,Nr.tkhd(e),Nr.mdia(e))}static tkhd(e){let t=e.id,r=e.duration,i=e.presentWidth,s=e.presentHeight;return Nr.box(Nr.types.tkhd,new Uint8Array([0,0,0,7,0,0,0,0,0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t,0,0,0,0,r>>>24&255,r>>>16&255,r>>>8&255,255&r,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,i>>>8&255,255&i,0,0,s>>>8&255,255&s,0,0]))}static mdia(e){return Nr.box(Nr.types.mdia,Nr.mdhd(e),Nr.hdlr(e),Nr.minf(e))}static mdhd(e){let t=e.timescale,r=e.duration;return Nr.box(Nr.types.mdhd,new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t,r>>>24&255,r>>>16&255,r>>>8&255,255&r,85,196,0,0]))}static hdlr(e){let t=null;return t="audio"===e.type?Nr.constants.HDLR_AUDIO:Nr.constants.HDLR_VIDEO,Nr.box(Nr.types.hdlr,t)}static minf(e){let t=null;return t="audio"===e.type?Nr.box(Nr.types.smhd,Nr.constants.SMHD):Nr.box(Nr.types.vmhd,Nr.constants.VMHD),Nr.box(Nr.types.minf,t,Nr.dinf(),Nr.stbl(e))}static dinf(){return Nr.box(Nr.types.dinf,Nr.box(Nr.types.dref,Nr.constants.DREF))}static stbl(e){return Nr.box(Nr.types.stbl,Nr.stsd(e),Nr.box(Nr.types.stts,Nr.constants.STTS),Nr.box(Nr.types.stsc,Nr.constants.STSC),Nr.box(Nr.types.stsz,Nr.constants.STSZ),Nr.box(Nr.types.stco,Nr.constants.STCO))}static stsd(e){return"audio"===e.type?"mp3"===e.audioType?Nr.box(Nr.types.stsd,Nr.constants.STSD_PREFIX,Nr.mp3(e)):Nr.box(Nr.types.stsd,Nr.constants.STSD_PREFIX,Nr.mp4a(e)):"avc"===e.videoType?Nr.box(Nr.types.stsd,Nr.constants.STSD_PREFIX,Nr.avc1(e)):Nr.box(Nr.types.stsd,Nr.constants.STSD_PREFIX,Nr.hvc1(e))}static mp3(e){let t=e.channelCount,r=e.audioSampleRate,i=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,t,0,16,0,0,0,0,r>>>8&255,255&r,0,0]);return Nr.box(Nr.types[".mp3"],i)}static mp4a(e){let t=e.channelCount,r=e.audioSampleRate,i=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,t,0,16,0,0,0,0,r>>>8&255,255&r,0,0]);return Nr.box(Nr.types.mp4a,i,Nr.esds(e))}static esds(e){let t=e.config||[],r=t.length,i=new Uint8Array([0,0,0,0,3,23+r,0,1,0,4,15+r,64,21,0,0,0,0,0,0,0,0,0,0,0,5].concat([r]).concat(t).concat([6,1,2]));return Nr.box(Nr.types.esds,i)}static avc1(e){let t=e.avcc;const r=e.codecWidth,i=e.codecHeight;let s=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,r>>>8&255,255&r,i>>>8&255,255&i,0,72,0,0,0,72,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,255,255]);return Nr.box(Nr.types.avc1,s,Nr.box(Nr.types.avcC,t))}static hvc1(e){let t=e.avcc;const r=e.codecWidth,i=e.codecHeight;let s=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,r>>>8&255,255&r,i>>>8&255,255&i,0,72,0,0,0,72,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,255,255]);return Nr.box(Nr.types.hvc1,s,Nr.box(Nr.types.hvcC,t))}static mvex(e){return Nr.box(Nr.types.mvex,Nr.trex(e))}static trex(e){let t=e.id,r=new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1]);return Nr.box(Nr.types.trex,r)}static moof(e,t){return Nr.box(Nr.types.moof,Nr.mfhd(e.sequenceNumber),Nr.traf(e,t))}static mfhd(e){let t=new Uint8Array([0,0,0,0,e>>>24&255,e>>>16&255,e>>>8&255,255&e]);return Nr.box(Nr.types.mfhd,t)}static traf(e,t){let r=e.id,i=Nr.box(Nr.types.tfhd,new Uint8Array([0,0,0,0,r>>>24&255,r>>>16&255,r>>>8&255,255&r])),s=Nr.box(Nr.types.tfdt,new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t])),n=Nr.sdtp(e),a=Nr.trun(e,n.byteLength+16+16+8+16+8+8);return Nr.box(Nr.types.traf,i,s,a,n)}static sdtp(e){let t=new Uint8Array(5),r=e.flags;return t[4]=r.isLeading<<6|r.dependsOn<<4|r.isDependedOn<<2|r.hasRedundancy,Nr.box(Nr.types.sdtp,t)}static trun(e,t){let r=new Uint8Array(28);t+=36,r.set([0,0,15,1,0,0,0,1,t>>>24&255,t>>>16&255,t>>>8&255,255&t],0);let i=e.duration,s=e.size,n=e.flags,a=e.cts;return r.set([i>>>24&255,i>>>16&255,i>>>8&255,255&i,s>>>24&255,s>>>16&255,s>>>8&255,255&s,n.isLeading<<2|n.dependsOn,n.isDependedOn<<6|n.hasRedundancy<<4|n.isNonSync,0,0,a>>>24&255,a>>>16&255,a>>>8&255,255&a],12),Nr.box(Nr.types.trun,r)}static mdat(e){return Nr.box(Nr.types.mdat,e)}}function Or(e={},t={},r=!1){let i=[],s=[],n={},a=new AbortController,o=null,d=null,g=null,y=null,v=null,De=null,Fe=!1,$e=!1,Je=!!at(r),dt=!1,lt=null,ut=null,ht=null,pt=[],_t=null,Ut=null,xt=0,At=0,Bt=null,kt=null,Tt=0,Nt=0,Ot=!1,Gt=!1,Ht=!1,$t=null,Vt=null,Wt=null,jt=!1,Yt=()=>{const e=st();return{debug:e.debug,debugLevel:e.debugLevel,debugUuid:e.debugUuid,useOffscreen:e.useOffscreen,useWCS:e.useWCS,useMSE:e.useMSE,videoBuffer:e.videoBuffer,videoBufferDelay:e.videoBufferDelay,openWebglAlignment:e.openWebglAlignment,playType:e.playType,hasAudio:e.hasAudio,hasVideo:e.hasVideo,playbackRate:1,playbackForwardMaxRateDecodeIFrame:e.playbackForwardMaxRateDecodeIFrame,playbackIsCacheBeforeDecodeForFpsRender:e.playbackConfig.isCacheBeforeDecodeForFpsRender,sampleRate:0,networkDelay:e.networkDelay,visibility:!0,useSIMD:e.useSIMD,isRecording:!1,recordType:e.recordType,isNakedFlow:e.isNakedFlow,checkFirstIFrame:e.checkFirstIFrame,audioBufferSize:1024,isM7sCrypto:e.isM7sCrypto,m7sCryptoAudio:e.m7sCryptoAudio,cryptoKey:e.cryptoKey,cryptoIV:e.cryptoIV,isSm4Crypto:e.isSm4Crypto,sm4CryptoKey:e.sm4CryptoKey,isXorCrypto:e.isXorCrypto,isHls265:!1,isFlv:e.isFlv,isFmp4:e.isFmp4,isMpeg4:e.isMpeg4,isTs:e.isTs,isFmp4Private:e.isFmp4Private,isEmitSEI:e.isEmitSEI,isRecordTypeFlv:!1,isWasmMp4:!1,isChrome:!1,isDropSameTimestampGop:e.isDropSameTimestampGop,mseDecodeAudio:e.mseDecodeAudio,nakedFlowH265DemuxUseNew:e.nakedFlowH265DemuxUseNew,mseDecoderUseWorker:e.mseDecoderUseWorker,mseAutoCleanupSourceBuffer:e.mseAutoCleanupSourceBuffer,mseAutoCleanupMaxBackwardDuration:e.mseAutoCleanupMaxBackwardDuration,mseAutoCleanupMinBackwardDuration:e.mseAutoCleanupMinBackwardDuration,mseCorrectTimeDuration:e.mseCorrectTimeDuration}};"VideoEncoder"in self&&(n={hasInit:!1,isEmitInfo:!1,offscreenCanvas:null,offscreenCanvasCtx:null,decoder:new VideoDecoder({output:function(e){if(n.isEmitInfo||(Qt.debug.log("worker","Webcodecs Video Decoder initSize"),postMessage({cmd:S,w:e.codedWidth,h:e.codedHeight}),n.isEmitInfo=!0,n.offscreenCanvas=new OffscreenCanvas(e.codedWidth,e.codedHeight),n.offscreenCanvasCtx=n.offscreenCanvas.getContext("2d")),"function"==typeof e.createImageBitmap)e.createImageBitmap().then((t=>{n.offscreenCanvasCtx.drawImage(t,0,0,e.codedWidth,e.codedHeight);let r=n.offscreenCanvas.transferToImageBitmap();postMessage({cmd:E,buffer:r,delay:Qt.delay,ts:0},[r]),rt(e)}));else{n.offscreenCanvasCtx.drawImage(e,0,0,e.codedWidth,e.codedHeight);let t=n.offscreenCanvas.transferToImageBitmap();postMessage({cmd:E,buffer:t,delay:Qt.delay,ts:0},[t]),rt(e)}},error:function(e){Qt.debug.error("worker","VideoDecoder error",e)}}),decode:function(e,t,r){const i=e[0]>>4==1;if(n.hasInit){const r=new EncodedVideoChunk({data:e.slice(5),timestamp:t,type:i?Be:ke});n.decoder.decode(r)}else if(i&&0===e[1]){const t=15&e[0];postMessage({cmd:T,code:t});const r=new Uint8Array(e);postMessage({cmd:C,buffer:r,codecId:t},[r.buffer]);const i=function(e){let t=e.subarray(1,4),r="avc1.";for(let e=0;e<3;e++){let i=t[e].toString(16);i.length<2&&(i="0"+i),r+=i}return{codec:r,description:e}}(e.slice(5));n.decoder.configure(i),n.hasInit=!0}},reset(){n.hasInit=!1,n.isEmitInfo=!1,n.offscreenCanvas=null,n.offscreenCanvasCtx=null}});let qt=function(){if(jt=!0,Qt.fetchStatus!==Le||ot(Qt._opt.isChrome)){if(a)try{a.abort(),a=null}catch(e){Qt.debug.log("worker","abort catch",e)}}else a=null,Qt.debug.log("worker",`abort() and not abortController.abort() _status is ${Qt.fetchStatus} and _isChrome is ${Qt._opt.isChrome}`)},Kt={init(){Kt.lastBuf=null,Kt.vps=null,Kt.sps=null,Kt.pps=null,Kt.streamType=null,Kt.localDts=0,Kt.isSendSeqHeader=!1},destroy(){Kt.lastBuf=null,Kt.vps=null,Kt.sps=null,Kt.pps=null,Kt.streamType=null,Kt.localDts=0,Kt.isSendSeqHeader=!1},dispatch(e){const t=new Uint8Array(e);Kt.extractNALu$2(t)},getNaluDts(){let e=Kt.localDts;return Kt.localDts=Kt.localDts+40,e},getNaluAudioDts(){const e=Qt._opt.sampleRate,t=Qt._opt.audioBufferSize;return Kt.localDts+parseInt(t/e*1e3)},extractNALu(e){let t,r,i=0,s=e.byteLength,n=0,a=[];for(;i1)for(let e=0;e>1,r!==Ae.vps&&r!==Ae.sps&&r!==Ae.pps||(t=Ee.h265)),t}(e),$t=Kt.streamType===Ee.h265),Kt.streamType===Ee.h264){const t=Kt.handleAddNaluStartCode(e),r=Kt.extractNALu(t);if(0===r.length)return void Qt.debug.warn("worker","handleVideoNalu","h264 naluList.length === 0");const i=[];if(r.forEach((e=>{const t=vt(e);t===xe.pps||t===xe.sps?Kt.handleVideoH264Nalu(e):St(t)&&i.push(e)})),1===i.length)Kt.handleVideoH264Nalu(i[0]);else{const e=function(e){if(0===e.length)return!1;const t=vt(e[0]);for(let r=1;r{Kt.handleVideoH264Nalu(e)}))}}else if(Kt.streamType===Ee.h265)if(Qt._opt.nakedFlowH265DemuxUseNew){const t=Kt.handleAddNaluStartCode(e),r=Kt.extractNALu(t);if(0===r.length)return void Qt.debug.warn("worker","handleVideoNalu","h265 naluList.length === 0");const i=[];if(r.forEach((e=>{const t=zt(e);t===Ae.pps||t===Ae.sps||t===Ae.vps?Kt.handleVideoH265Nalu(e):Rt(t)&&i.push(e)})),1===i.length)Kt.handleVideoH265Nalu(i[0]);else{const e=function(e){if(0===e.length)return!1;const t=zt(e[0]);for(let r=1;r{Kt.handleVideoH265Nalu(e)}))}}else{zt(e)===Ae.pps?Kt.extractH265PPS(e):Kt.handleVideoH265Nalu(e)}},extractH264PPS(e){const t=Kt.handleAddNaluStartCode(e);Kt.extractNALu(t).forEach((e=>{wt(vt(e))?Kt.extractH264SEI(e):Kt.handleVideoH264Nalu(e)}))},extractH265PPS(e){const t=Kt.handleAddNaluStartCode(e);Kt.extractNALu(t).forEach((e=>{const t=zt(e);t===Ae.sei?Kt.extractH265SEI(e):Kt.handleVideoH265Nalu(e)}))},extractH264SEI(e){const t=Kt.handleAddNaluStartCode(e);Kt.extractNALu(t).forEach((e=>{Kt.handleVideoH264Nalu(e)}))},extractH265SEI(e){const t=Kt.handleAddNaluStartCode(e);Kt.extractNALu(t).forEach((e=>{Kt.handleVideoH265Nalu(e)}))},handleAddNaluStartCode(e){const t=[0,0,0,1],r=new Uint8Array(e.length+t.length);return r.set(t),r.set(e,t.length),r},handleVideoH264Nalu(e){const t=vt(e);switch(t){case xe.sps:Kt.sps=e;break;case xe.pps:Kt.pps=e}if(Kt.isSendSeqHeader){if(Kt.sps&&Kt.pps){const e=yt({sps:Kt.sps,pps:Kt.pps}),t=Kt.getNaluDts();Qt.decode(e,{type:X,ts:t,isIFrame:!0,cts:0}),Kt.sps=null,Kt.pps=null}if(St(t)){const r=Et(t),i=Kt.getNaluDts(),s=function(e,t){let r=[];r[0]=t?23:39,r[1]=1,r[2]=0,r[3]=0,r[4]=0,r[5]=e.byteLength>>24&255,r[6]=e.byteLength>>16&255,r[7]=e.byteLength>>8&255,r[8]=255&e.byteLength;const i=new Uint8Array(r.length+e.byteLength);return i.set(r,0),i.set(e,r.length),i}(e,r);Kt.doDecode(s,{type:X,ts:i,isIFrame:r,cts:0})}else Qt.debug.warn("work",`handleVideoH264Nalu Avc Seq Head is ${t}`)}else if(Kt.sps&&Kt.pps){Kt.isSendSeqHeader=!0;const e=yt({sps:Kt.sps,pps:Kt.pps});Qt.decode(e,{type:X,ts:0,isIFrame:!0,cts:0}),Kt.sps=null,Kt.pps=null}},handleVideoH264NaluList(e,t,r){if(Kt.isSendSeqHeader){const i=Kt.getNaluDts(),s=bt(e.reduce(((e,t)=>{const r=Dt(e),i=Dt(t),s=new Uint8Array(r.byteLength+i.byteLength);return s.set(r,0),s.set(i,r.byteLength),s})),t);Kt.doDecode(s,{type:X,ts:i,isIFrame:t,cts:0}),Qt.debug.log("worker",`handleVideoH264NaluList list size is ${e.length} package length is ${s.byteLength} isIFrame is ${t},nalu type is ${r}, dts is ${i}`)}else Qt.debug.warn("worker","handleVideoH264NaluList isSendSeqHeader is false")},handleVideoH265Nalu(e){const t=zt(e);switch(t){case Ae.vps:Kt.vps=e;break;case Ae.sps:Kt.sps=e;break;case Ae.pps:Kt.pps=e}if(Kt.isSendSeqHeader){if(Kt.vps&&Kt.sps&&Kt.pps){const e=Pt({vps:Kt.vps,sps:Kt.sps,pps:Kt.pps}),t=Kt.getNaluDts();Qt.decode(e,{type:X,ts:t,isIFrame:!0,cts:0}),Kt.vps=null,Kt.sps=null,Kt.pps=null}if(Rt(t)){const r=Mt(t),i=Kt.getNaluDts(),s=function(e,t){let r=[];r[0]=t?28:44,r[1]=1,r[2]=0,r[3]=0,r[4]=0,r[5]=e.byteLength>>24&255,r[6]=e.byteLength>>16&255,r[7]=e.byteLength>>8&255,r[8]=255&e.byteLength;const i=new Uint8Array(r.length+e.byteLength);return i.set(r,0),i.set(e,r.length),i}(e,r);Kt.doDecode(s,{type:X,ts:i,isIFrame:r,cts:0})}else Qt.debug.warn("work",`handleVideoH265Nalu HevcSeqHead is ${t}`)}else if(Kt.vps&&Kt.sps&&Kt.pps){Kt.isSendSeqHeader=!0;const e=Pt({vps:Kt.vps,sps:Kt.sps,pps:Kt.pps});Qt.decode(e,{type:X,ts:0,isIFrame:!0,cts:0}),Kt.vps=null,Kt.sps=null,Kt.pps=null}},handleVideoH265NaluList(e,t,r){if(Kt.isSendSeqHeader){const i=Kt.getNaluDts(),s=Lt(e.reduce(((e,t)=>{const r=Dt(e),i=Dt(t),s=new Uint8Array(r.byteLength+i.byteLength);return s.set(r,0),s.set(i,r.byteLength),s})),t);Kt.doDecode(s,{type:X,ts:i,isIFrame:t,cts:0}),Qt.debug.log("worker",`handleVideoH265NaluList list size is ${e.length} package length is ${s.byteLength} isIFrame is ${t},nalu type is ${r}, dts is ${i}`)}else Qt.debug.warn("worker","handleVideoH265NaluList isSendSeqHeader is false")},doDecode(e,t){Qt.calcNetworkDelay(t.ts),t.isIFrame&&Qt.calcIframeIntervalTimestamp(t.ts),postMessage({cmd:P,type:ce,value:e.byteLength}),postMessage({cmd:P,type:fe,value:t.ts}),Qt.decode(e,t)}},Xt={LOG_NAME:"worker fmp4Demuxer",mp4Box:yr.createFile(),offset:0,videoTrackId:null,audioTrackId:null,isHevc:!1,listenMp4Box(){Xt.mp4Box.onReady=Xt.onReady,Xt.mp4Box.onError=Xt.onError,Xt.mp4Box.onSamples=Xt.onSamples},initTransportDescarmber(){Xt.transportDescarmber=new wr},_getSeqHeader(e){const t=Xt.mp4Box.getTrackById(e.id);for(const e of t.mdia.minf.stbl.stsd.entries)if(e.avcC||e.hvcC){const t=new yr.DataStream(void 0,0,yr.DataStream.BIG_ENDIAN);let r=[];e.avcC?(e.avcC.write(t),r=[23,0,0,0,0]):(Xt.isHevc=!0,$t=!0,e.hvcC.write(t),r=[28,0,0,0,0]);const i=new Uint8Array(t.buffer,8),s=new Uint8Array(r.length+i.length);return s.set(r,0),s.set(i,r.length),s}return null},onReady(e){Qt.debug.log(Xt.LOG_NAME,"onReady()",e);const t=e.videoTracks[0],r=e.audioTracks[0];if(t){Xt.videoTrackId=t.id;const e=Xt._getSeqHeader(t);e&&(Qt.debug.log(Xt.LOG_NAME,"seqHeader"),Qt.decodeVideo(e,0,!0,0)),Xt.mp4Box.setExtractionOptions(t.id)}if(r&&Qt._opt.hasAudio){Xt.audioTrackId=r.id;const e=r.audio||{},t=qe.indexOf(e.sample_rate),i=r.codec.replace("mp4a.40.","");Xt.mp4Box.setExtractionOptions(r.id);const s=Ve({profile:parseInt(i,10),sampleRate:t,channel:e.channel_count});Qt.debug.log(Xt.LOG_NAME,"aacADTSHeader"),Qt.decodeAudio(s,0)}Xt.mp4Box.start()},onError(e){Qt.debug.error(Xt.LOG_NAME,"mp4Box onError",e)},onSamples(e,t,r){if(e===Xt.videoTrackId)for(const e of r){const t=e.data,r=e.is_sync,i=1e3*e.cts/e.timescale;e.duration,e.timescale,r&&Qt.calcIframeIntervalTimestamp(i);let s=null;s=Xt.isHevc?Lt(t,r):bt(t,r),postMessage({cmd:P,type:ce,value:s.byteLength}),postMessage({cmd:P,type:fe,value:i}),Qt.decode(s,{type:X,ts:i,isIFrame:r,cts:0})}else if(e===Xt.audioTrackId){if(Qt._opt.hasAudio)for(const e of r){const t=e.data,r=1e3*e.cts/e.timescale;e.duration,e.timescale;const i=new Uint8Array(t.byteLength+2);i.set([175,1],0),i.set(t,2),postMessage({cmd:P,type:he,value:i.byteLength}),Qt.decode(i,{type:K,ts:r,isIFrame:!1,cts:0})}}else Qt.debug.warn(Xt.LOG_NAME,"onSamples() trackId error",e)},dispatch(e){let t=e;"string"!=typeof e?"object"==typeof e?(Xt.transportDescarmber&&(t=Xt.transportDescarmber.transport(t)),t.buffer.fileStart=Xt.offset,Xt.offset+=t.byteLength,Xt.mp4Box.appendBuffer(t.buffer)):Qt.debug.warn(Xt.LOG_NAME,"dispatch()","data is not object",e):Qt.debug.warn(Xt.LOG_NAME,"dispatch()","data is string",e)},destroy(){Xt.mp4Box&&(Xt.mp4Box.flush(),Xt.mp4Box=null),Xt.transportDescarmber&&(Xt.transportDescarmber.destroy(),Xt.transportDescarmber=null),Xt.offset=0,Xt.videoTrackId=null,Xt.audioTrackId=null,Xt.isHevc=!1}},Zt={LOG_NAME:"worker mpeg4Demuxer",lastBuffer:new Uint8Array(0),parsedOffset:0,firstStartCodeOffset:0,secondStartCodeOffset:0,state:"init",hasInitVideoCodec:!1,localDts:0,dispatch(e){const t=new Uint8Array(e);Zt.extractNALu(t)},destroy(){Zt.lastBuffer=new Uint8Array(0),Zt.parsedOffset=0,Zt.firstStartCodeOffset=0,Zt.secondStartCodeOffset=0,Zt.state="init",Zt.hasInitVideoCodec=!1,Zt.localDts=0},extractNALu(e){if(!e||e.byteLength<1)return void Qt.debug.warn(Zt.LOG_NAME,"extractNALu() buffer error",e);const t=new Uint8Array(Zt.lastBuffer.length+e.length);for(t.set(Zt.lastBuffer,0),t.set(new Uint8Array(e),Zt.lastBuffer.length),Zt.lastBuffer=t;;){if("init"===Zt.state){let e=!1;for(;Zt.lastBuffer.length-Zt.parsedOffset>=4;)if(0===Zt.lastBuffer[Zt.parsedOffset])if(0===Zt.lastBuffer[Zt.parsedOffset+1])if(1===Zt.lastBuffer[Zt.parsedOffset+2]){if(182===Zt.lastBuffer[Zt.parsedOffset+3]){Zt.state="findFirstStartCode",Zt.firstStartCodeOffset=Zt.parsedOffset,Zt.parsedOffset+=4,e=!0;break}Zt.parsedOffset++}else Zt.parsedOffset++;else Zt.parsedOffset++;else Zt.parsedOffset++;if(e)continue;break}if("findFirstStartCode"===Zt.state){let e=!1;for(;Zt.lastBuffer.length-Zt.parsedOffset>=4;)if(0===Zt.lastBuffer[Zt.parsedOffset])if(0===Zt.lastBuffer[Zt.parsedOffset+1])if(1===Zt.lastBuffer[Zt.parsedOffset+2]){if(182===Zt.lastBuffer[Zt.parsedOffset+3]){Zt.state="findSecondStartCode",Zt.secondStartCodeOffset=Zt.parsedOffset,Zt.parsedOffset+=4,e=!0;break}Zt.parsedOffset++}else Zt.parsedOffset++;else Zt.parsedOffset++;else Zt.parsedOffset++;if(e)continue;break}if("findSecondStartCode"===Zt.state){if(!(Zt.lastBuffer.length-Zt.parsedOffset>0))break;{let e,t,r=192&Zt.lastBuffer[Zt.parsedOffset];e=0==r?Zt.secondStartCodeOffset-14:Zt.secondStartCodeOffset;let i=0==(192&Zt.lastBuffer[Zt.firstStartCodeOffset+4]);if(i){if(Zt.firstStartCodeOffset-14<0)return void Qt.debug.warn(Zt.LOG_NAME,"firstStartCodeOffset -14 is",Zt.firstStartCodeOffset-14);Zt.hasInitVideoCodec||(Zt.hasInitVideoCodec=!0,Qt.debug.log(Zt.LOG_NAME,"setCodec"),tr.setCodec(Se,"")),t=Zt.lastBuffer.subarray(Zt.firstStartCodeOffset-14,e)}else t=Zt.lastBuffer.subarray(Zt.firstStartCodeOffset,e);let s=Zt.getNaluDts();Zt.hasInitVideoCodec?(postMessage({cmd:P,type:ce,value:t.byteLength}),postMessage({cmd:P,type:fe,value:s}),tr.decode(t,i?1:0,s)):Qt.debug.warn(Zt.LOG_NAME,"has not init video codec"),Zt.lastBuffer=Zt.lastBuffer.subarray(e),Zt.firstStartCodeOffset=0==r?14:0,Zt.parsedOffset=Zt.firstStartCodeOffset+4,Zt.state="findFirstStartCode"}}}},getNaluDts(){let e=Zt.localDts;return Zt.localDts=Zt.localDts+40,e}},Jt={isFirstDispatch:!0,_pmtId:-1,_remainingPacketData:null,_videoPesData:[],_audioPesData:[],_gopId:0,_videoPid:-1,_audioPid:-1,_codecType:ve,_audioCodecType:Ue.AAC,_vps:null,_sps:null,_pps:null,TAG_NAME:"worker TsDemuxer",videoTrack:{samples:[]},audioTrack:{samples:[]},_baseDts:-1,_audioNextPts:void 0,_videoNextDts:void 0,_audioTimestampBreak:!1,_videoTimestampBreak:!1,_lastAudioExceptionGapDot:0,_lastAudioExceptionOverlapDot:0,_lastAudioExceptionLargeGapDot:0,_isSendAACSeqHeader:!1,init(){},dispatch(e){const t=new Uint8Array(e);Jt.demuxAndFix(t,Jt.isFirstDispatch,!0,0),Jt.isFirstDispatch&&(Jt.isFirstDispatch=!1)},_probe:e=>!!e.length&&(71===e[0]&&71===e[188]&&71===e[376]),_parsePES(e){const t=e[8];if(null==t||e.lengthe.length-6)return;let i,s;const n=e[7];return 192&n&&(i=536870912*(14&e[9])+4194304*(255&e[10])+16384*(254&e[11])+128*(255&e[12])+(254&e[13])/2,64&n?(s=536870912*(14&e[14])+4194304*(255&e[15])+16384*(254&e[16])+128*(255&e[17])+(254&e[18])/2,i-s>54e5&&(i=s)):s=i),{data:e.subarray(9+t),pts:i,dts:s,originalPts:i,originalDts:s}},demuxAndFix(e,t,r,i){Jt._demux(e,t,r),Jt._fix(i,t,r)},_initVideoTrack:()=>({samples:[]}),_initAudioTrack:()=>({samples:[]}),_demux(e,t=!1,r=!0){t&&(Jt._pmtId=-1,Jt.videoTrack=Jt._initVideoTrack(),Jt.audioTrack=Jt._initAudioTrack()),!r||t?(Jt._remainingPacketData=null,Jt._videoPesData=[],Jt._audioPesData=[]):(Jt.videoTrack.samples=[],Jt.audioTrack.samples=[],Jt._remainingPacketData&&(e=Mr(Jt._remainingPacketData,e),Jt._remainingPacketData=null));let i=e.length;const s=i%188;s&&(Jt._remainingPacketData=e.subarray(i-s),i-=s);for(let t=0;t>4>1){if(s=t+5+e[t+4],s===t+188)continue}else s=t+4;switch(i){case 0:r&&(s+=e[s]+1),Jt._pmtId=(31&e[s+10])<<8|e[s+11];break;case Jt._pmtId:{r&&(s+=e[s]+1);const t=s+3+((15&e[s+1])<<8|e[s+2])-4;for(s+=12+((15&e[s+10])<<8|e[s+11]);s=t)return[];const s=[];for(;i=r)return;const s=i,n=[],a=(60&e[i+2])>>>2,o=Ye[a];if(!o)throw new Error(`Invalid sampling index: ${a}`);const d=1+((192&e[i+2])>>>6),l=(1&e[i+2])<<2|(192&e[i+3])>>>6;let u,h,c=0;const f=Xe(o);for(;i+7>5,r-i=r?void 0:e.subarray(i),frames:n,samplingFrequencyIndex:a,sampleRate:o,objectType:d,channelCount:l,originCodec:`mp4a.40.${d}`}}(e.data,e.originalPts);if(t){if(Jt.audioTrack.codec=t.codec,Jt.audioTrack.sampleRate=t.sampleRate,Jt.audioTrack.channelCount=t.channelCount,!Jt._isSendAACSeqHeader){const e=Ve({profile:t.objectType,sampleRate:t.samplingFrequencyIndex,channel:t.channelCount});Jt._isSendAACSeqHeader=!0,Qt.debug.log(Jt.TAG_NAME,"aac seq header",`profile: ${t.objectType}, sampleRate:${t.sampleRate},sampleRateIndex: ${t.samplingFrequencyIndex}, channel: ${t.channelCount}`),Qt.decodeAudio(e,0)}if(Jt._isSendAACSeqHeader){const e=[];t.frames.forEach((t=>{const r=t.pts,i=new Uint8Array(t.data.length+2);i.set([175,1],0),i.set(t.data,2);const s={type:K,pts:r,dts:r,payload:i};e.push(s)})),Jt.audioTrack.samples=Jt.audioTrack.samples.concat(e)}else Qt.debug.warn(Jt.TAG_NAME,"aac seq header not send")}else Qt.debug.warn(Jt.TAG_NAME,"aac parseADTS error")}Jt._audioPesData=[]}}else Qt.debug.warn(Jt.TAG_NAME,"Cannot parse audio pes",Jt._audioPesData)},_fix(e=0,t=!1,r=!0){e=Math.round(9e4*e);const i=Jt.videoTrack,s=Jt.audioTrack,n=i.samples,a=s.samples;if(!n.length&&!a.length)return;const o=n[0],d=a[0];let l=0;if(n.length&&a.length&&(l=o.dts-d.pts),Jt._baseDtsInited||Jt._calculateBaseDts(),t&&(Jt._calculateBaseDts(),Jt._baseDts-=e),!r){Jt._videoNextDts=l>0?e+l:e,Jt._audioNextPts=l>0?e:e-l;const t=o?o.dts-Jt._baseDts-Jt._videoNextDts:0,r=d?d.pts-Jt._baseDts-Jt._audioNextPts:0;Math.abs(t||r)>MAX_VIDEO_FRAME_DURATION&&(Jt._calculateBaseDts(Jt.audioTrack,Jt.videoTrack),Jt._baseDts-=e)}Jt._resetBaseDtsWhenStreamBreaked(),Jt._fixAudio(s),Jt._fixVideo(i);let u=i.samples.concat(s.samples);u=u.map((e=>(e.dts=Math.round(e.dts/90),e.pts=Math.round(e.pts/90),e.cts=e.pts-e.dts,e))).sort(((e,t)=>e.dts-t.dts)),u.forEach((e=>{const t=new Uint8Array(e.payload);delete e.payload,e.type===X?Jt._doDecodeVideo({...e,payload:t}):e.type===K&&Jt._doDecodeAudio({...e,payload:t})}))},_calculateBaseDts(){const e=Jt.audioTrack,t=Jt.videoTrack,r=e.samples,i=t.samples;if(!r.length&&!i.length)return!1;let s=1/0,n=1/0;r.length&&(e.baseDts=s=r[0].pts),i.length&&(t.baseDts=n=i[0].dts),Jt._baseDts=Math.min(s,n);const a=n-s;return Number.isFinite(a)&&Math.abs(a)>45e3&&Qt.debug.warn(Jt.TAG_NAME,`large av first frame gap,\n video pts: ${n},\n audio pts: ${s},\n base dts: ${Jt._baseDts},\n detect is: ${a}`),Jt._baseDtsInited=!0,!0},_resetBaseDtsWhenStreamBreaked(){if(Jt._baseDtsInited&&Jt._videoTimestampBreak&&Jt._audioTimestampBreak){if(!Jt._calculateBaseDts(Jt.audioTrack,Jt.videoTrack))return;Jt._baseDts-=Math.min(Jt._audioNextPts,Jt._videoNextDts),Jt._audioLastSample=null,Jt._videoLastSample=null,Jt._videoTimestampBreak=!1,Jt._audioTimestampBreak=!1}},_createVideoSample(e,t,r){if(!e.length)return;const i=Jt._codecType===we,s={isIFrame:!1,type:X,isHevc:i,vps:null,sps:null,pps:null,pts:t,dts:r,payload:null};e.forEach((e=>{const t=i?e[0]>>>1&63:31&e[0];switch(t){case 5:case 16:case 17:case 18:case 19:case 20:case 21:case 22:case 23:if(!i&&5!==t||i&&5===t)break;s.isIFrame=!0,Jt._gopId++;break;case 6:case 39:case 40:if(!i&&6!==t||i&&6===t)break;return void function(e,t){const r=e.length;let i=t?2:1,s=0,n=0,a="";for(;255===e[i];)s+=255,i++;for(s+=e[i++];255===e[i];)n+=255,i++;if(n+=e[i++],5===s&&r>i+16)for(let t=0;t<16;t++)a+=e[i].toString(16),i++;e.subarray(i)}(function(e){const t=e.byteLength,r=[];let i=1;for(;i>>8,n[7]=255&a;let o=8;n.set(e,8),o+=a,n[o]=1;let d=t.byteLength;n[o+1]=d>>>8,n[o+2]=255&d,n.set(t,o+3),o+=3+d,i&&(n[o]=252|s.chroma_format_idc,n[o+1]=248|s.bit_depth_luma-8,n[o+2]=248|s.bit_depth_chroma-8,n[o+3]=0,o+=4);const l=[23,0,0,0,0],u=new Uint8Array(l.length+n.byteLength);return u.set(l,0),u.set(n,l.length),u}({sps:s.sps,pps:s.pps})),n&&(Qt.debug.log(Jt.TAG_NAME,"_createVideoSample","seqHeader"),Qt.decodeVideo(n,X,Math.round(s.pts/90),!0,0)),s.isIFrame&&Qt.calcIframeIntervalTimestamp(Math.round(s.dts/90)),Jt.videoTrack.samples=Jt.videoTrack.samples.concat(s)},_fixAudio(e){const t=e.samples;t.length&&(t.forEach((e=>{e.pts-=Jt._baseDts,e.dts=e.pts})),Jt._doFixAudioInternal(e,t,9e4))},_fixVideo(e){const t=e.samples;if(!t.length)return;if(t.forEach((e=>{e.dts-=Jt._baseDts,e.pts-=Jt._baseDts})),void 0===Jt._videoNextDts){const e=t[0];Jt._videoNextDts=e.dts}const r=t.length;let i=0;const s=t[0],n=t[1],a=Jt._videoNextDts-s.dts;let o;Math.abs(a)>45e3&&(s.dts+=a,s.pts+=a,Qt.debug.warn(Jt.TAG_NAME,`large video gap between chunk,\n next dts is ${Jt._videoNextDts},\n first dts is ${s.dts},\n next dts is ${n.dts},\n duration is ${a}`),n&&Math.abs(n.dts-s.dts)>9e4&&(Jt._videoTimestampBreak=!0,t.forEach(((e,t)=>{0!==t&&(e.dts+=a,e.pts+=a)}))));const d=e.samples[0],l=e.samples[r-1];o=1===r?9e3:Math.floor((l.dts-d.dts)/(r-1));for(let s=0;s9e4||i<0){Jt._videoTimestampBreak=!0,i=Jt._audioTimestampBreak?o:Math.max(i,2700);const r=Jt._audioNextPts||0;a&&a.dts>r&&(i=o),Qt.debug.warn(Jt.TAG_NAME,`large video gap between frames,\n time is ${n/e.timescale},\n dts is ${n},\n origin dts is ${t[s].originalDts},\n next dts is ${Jt._videoNextDts},\n sample Duration is ${i} ,\n ref Sample DurationInt is ${o}`)}t[s].duration=i,Jt._videoNextDts+=i}},_doFixAudioInternal(e,t,r){e.sampleDuration||(e.sampleDuration=Xe(e.timescale,r));const i=e.sampleDuration;if(void 0===Jt._audioNextPts){const e=t[0];Jt._audioNextPts=e.pts}for(let r=0;r=3*i&&a<=Ge&&!et()){Ke(e.codec,e.channelCount)||t[0].data.subarray();const o=Math.floor(a/i);Math.abs(n.pts-Jt._lastAudioExceptionGapDot)>AUDIO_EXCETION_LOG_EMIT_DURATION&&(Jt._lastAudioExceptionGapDot=n.pts),Qt.debug.warn(Jt.TAG_NAME,`audio gap detected,\n pts is ${t.pts},\n originPts is ${t.originalPts},\n count is ${o},\n nextPts is ${s},\n ref sample duration is ${i}`);for(let e=0;e=-9e4?(Math.abs(n.pts-Jt._lastAudioExceptionOverlapDot)>He&&(Jt._lastAudioExceptionOverlapDot=n.pts,Qt.debug.warn(Jt.TAG_NAME,`audio overlap detected,\n pts is ${n.pts},\n originPts is ${n.originalPts},\n nextPts is ${s},\n ref sample duration is ${i}`)),t.splice(r,1),r--):(Math.abs(a)>=Ge&&(Jt._audioTimestampBreak=!0,Math.abs(n.pts-Jt._lastAudioExceptionLargeGapDot)>He&&(Jt._lastAudioExceptionLargeGapDot=n.pts,Qt.debug.warn(Jt.TAG_NAME,`large audio gap detected,\n time is ${n.pts/1e3}\n pts is ${n.pts},\n originPts is ${n.originalPts},\n nextPts is ${s},\n sample duration is ${a}\n ref sample duration is ${i}`))),n.dts=n.pts=s,Jt._audioNextPts+=i)}},_doDecodeVideo(e){const t=new Uint8Array(e.payload);let r=null;r=e.isHevc?Lt(t,e.isIFrame):bt(t,e.isIFrame),postMessage({cmd:P,type:ce,value:r.byteLength}),postMessage({cmd:P,type:fe,value:e.dts});const i=e.pts-e.dts;let s=Qt.cryptoPayload(r,e.isIFrame);Qt.decode(s,{type:X,ts:e.dts,isIFrame:e.isIFrame,cts:i})},_doDecodeAudio(){const e=new Uint8Array(sample.payload);postMessage({cmd:P,type:he,value:e.byteLength});let t=e;at(Qt._opt.m7sCryptoAudio)&&(t=Qt.cryptoPayloadAudio(e)),Qt.decode(t,{type:K,ts:sample.dts,isIFrame:!1,cts:0})},destroy(){Jt.videoTrack=null,Jt.audioTrack=null,Jt.tempSampleListInfo={},Jt._baseDts=-1,Jt._baseDtsInited=!1,Jt._basefps=50,Jt._hasCalcFps=!1,Jt._audioNextPts=void 0,Jt._videoNextDts=void 0,Jt._audioTimestampBreak=!1,Jt._videoTimestampBreak=!1,Jt._lastAudioExceptionGapDot=0,Jt._lastAudioExceptionOverlapDot=0,Jt._lastAudioExceptionLargeGapDot=0,Jt._isForHls=!0,Jt._isSendAACSeqHeader=!1,Qt.debug.log(Jt.TAG_NAME,"destroy")}},Qt={isPlayer:!0,isPlayback:!1,dropping:!1,isPushDropping:!1,isWorkerFetch:!1,isDestroyed:!1,fetchStatus:Pe,_opt:Yt(),mp3Demuxer:null,delay:-1,pushLatestDelay:-1,firstTimestamp:null,startTimestamp:null,preDelayTimestamp:null,stopId:null,streamFps:null,streamAudioFps:null,streamVideoFps:null,writableStream:null,networkDelay:0,webglObj:null,startStreamRateAndStatsInterval:function(){Qt.stopStreamRateAndStatsInterval(),g=setInterval((()=>{d&&d(0);const e=JSON.stringify({demuxBufferDelay:Qt.getVideoBufferLength(),audioDemuxBufferDelay:Qt.getAudioBufferLength(),flvBufferByteLength:Qt.getFlvBufferLength(),netBuf:Qt.networkDelay||0,pushLatestDelay:Qt.pushLatestDelay||0,latestDelay:Qt.delay,isStreamTsMoreThanLocal:dt});postMessage({cmd:P,type:me,value:e})}),1e3)},stopStreamRateAndStatsInterval:function(){g&&(clearInterval(g),g=null)},useOffscreen:function(){return Qt._opt.useOffscreen&&"undefined"!=typeof OffscreenCanvas},getDelay:function(e,t){if(!e||Qt._opt.hasVideo&&!Je)return-1;if(t===K)return Qt.delay;if(Qt.preDelayTimestamp&&Qt.preDelayTimestamp>e)return Qt.preDelayTimestamp-e>1e3&&Qt.debug.warn("worker",`getDelay() and preDelayTimestamp is ${Qt.preDelayTimestamp} > timestamp is ${e} more than ${Qt.preDelayTimestamp-e}ms and return ${Qt.delay}`),Qt.preDelayTimestamp=e,Qt.delay;if(Qt.firstTimestamp){if(e){const t=Date.now()-Qt.startTimestamp,r=e-Qt.firstTimestamp;t>=r?(dt=!1,Qt.delay=t-r):(dt=!0,Qt.delay=r-t)}}else Qt.firstTimestamp=e,Qt.startTimestamp=Date.now(),Qt.delay=-1;return Qt.preDelayTimestamp=e,Qt.delay},getDelayNotUpdateDelay:function(e,t){if(!e||Qt._opt.hasVideo&&!Je)return-1;if(t===K)return Qt.pushLatestDelay;if(Qt.preDelayTimestamp&&Qt.preDelayTimestamp-e>1e3)return Qt.debug.warn("worker",`getDelayNotUpdateDelay() and preDelayTimestamp is ${Qt.preDelayTimestamp} > timestamp is ${e} more than ${Qt.preDelayTimestamp-e}ms and return -1`),-1;if(Qt.firstTimestamp){let t=-1;if(e){const r=Date.now()-Qt.startTimestamp,i=e-Qt.firstTimestamp;r>=i?(dt=!1,t=r-i):(dt=!0,t=i-r)}return t}return-1},resetDelay:function(){Qt.firstTimestamp=null,Qt.startTimestamp=null,Qt.delay=-1,Qt.dropping=!1},resetAllDelay:function(){Qt.resetDelay(),Qt.preDelayTimestamp=null},doDecode:function(e){Qt._opt.isEmitSEI&&e.type===X&&Qt.isWorkerFetch&&Qt.findSei(e.payload,e.ts),Qt._opt.useWCS&&Qt.useOffscreen()&&e.type===X&&n.decode?n.decode(e.payload,e.ts,e.cts):e.decoder.decode(e.payload,e.ts,e.isIFrame,e.cts)},decodeNext(e){if(0===i.length)return;const t=e.ts,s=i[0],n=e.type===X&&nt(e.payload);if(ot(r))n&&(Qt.debug.log("worker",`decode data type is ${e.type} and\n ts is ${t} next data type is ${s.type} ts is ${s.ts}\n isVideoSqeHeader is ${n}`),i.shift(),Qt.doDecode(s));else{const r=s.ts-t,a=s.type===K&&e.type===X;(r<=20||a||n)&&(Qt.debug.log("worker",`decode data type is ${e.type} and\n ts is ${t} next data type is ${s.type} ts is ${s.ts}\n diff is ${r} and isVideoAndNextAudio is ${a} and isVideoSqeHeader is ${n}`),i.shift(),Qt.doDecode(s))}},init:function(){Qt.debug.log("worker","init and opt is",JSON.stringify(Qt._opt));const e=Qt._opt.playType===p,t=Qt._opt.playType===m;if(Kt.init(),Qt.isPlayer=e,Qt.isPlayback=t,Qt.isPlaybackCacheBeforeDecodeForFpsRender())Qt.debug.log("worker","playback and playbackIsCacheBeforeDecodeForFpsRender is true");else{Qt.debug.log("worker","setInterval()");const t=Qt._opt.videoBuffer+Qt._opt.videoBufferDelay,r=()=>{let r=null;if(i.length){if(Qt.isPushDropping)return void Qt.debug.warn("worker",`loop() isPushDropping is true and bufferList length is ${i.length}`);if(Qt.dropping){for(r=i.shift(),Qt.debug.warn("worker",`loop() dropBuffer is dropping and isIFrame ${r.isIFrame} and delay is ${Qt.delay} and bufferlist is ${i.length}`);!r.isIFrame&&i.length;)r=i.shift();const e=Qt.getDelayNotUpdateDelay(r.ts,r.type);r.isIFrame&&e<=Qt.getNotDroppingDelayTs()&&(Qt.debug.log("worker","loop() is dropping = false, is iFrame"),Qt.dropping=!1,Qt.doDecode(r),Qt.decodeNext(r))}else if(Qt.isPlayback||Qt.isPlayUseMSE()||0===Qt._opt.videoBuffer)for(;i.length;)r=i.shift(),Qt.doDecode(r);else if(r=i[0],-1===Qt.getDelay(r.ts,r.type))Qt.debug.log("worker","loop() common dumex delay is -1 ,data.ts is",r.ts),i.shift(),Qt.doDecode(r),Qt.decodeNext(r);else if(Qt.delay>t&&e)Qt.hasIframeInBufferList()?(Qt.debug.log("worker",`delay is ${Qt.delay} > maxDelay ${t}, set dropping is true`),Qt.resetAllDelay(),Qt.dropping=!0,postMessage({cmd:z})):(i.shift(),Qt.doDecode(r),Qt.decodeNext(r));else for(;i.length;){if(r=i[0],!(Qt.getDelay(r.ts,r.type)>Qt._opt.videoBuffer)){Qt.delay<0&&Qt.debug.warn("worker",`loop() do not decode and delay is ${Qt.delay}, bufferList is ${i.length}`);break}i.shift(),Qt.doDecode(r)}}else-1!==Qt.delay&&Qt.debug.log("worker","loop() bufferList is empty and reset delay"),Qt.resetAllDelay()};Qt.stopId=setInterval((()=>{let e=(new Date).getTime();lt||(lt=e);const t=e-lt;t>100&&Qt.debug.warn("worker",`loop demux diff time is ${t}`),r(),lt=(new Date).getTime()}),20)}ot(Qt._opt.checkFirstIFrame)&&(Je=!0)},playbackCacheLoop:function(){Qt.stopId&&(clearInterval(Qt.stopId),Qt.stopId=null);const e=()=>{let e=null;i.length&&(e=i.shift(),Qt.doDecode(e))};e();const t=Math.ceil(1e3/(Qt.streamFps*Qt._opt.playbackRate));Qt.debug.log("worker",`playbackCacheLoop fragDuration is ${t}, streamFps is ${Qt.streamFps}, streamAudioFps is ${Qt.streamAudioFps} ,streamVideoFps is ${Qt.streamVideoFps} playbackRate is ${Qt._opt.playbackRate}`),Qt.stopId=setInterval(e,t)},close:function(){if(Qt.debug.log("worker","close"),Qt.isDestroyed=!0,qt(),!o||1!==o.readyState&&2!==o.readyState?o&&Qt.debug.log("worker",`close() and socket.readyState is ${o.readyState}`):(jt=!0,o.close(1e3,"Client disconnecting")),o=null,Qt.stopStreamRateAndStatsInterval(),Qt.stopId&&(clearInterval(Qt.stopId),Qt.stopId=null),Qt.mp3Demuxer&&(Qt.mp3Demuxer.destroy(),Qt.mp3Demuxer=null),Qt.writableStream&&ot(Qt.writableStream.locked)&&Qt.writableStream.close().catch((e=>{Qt.debug.log("worker","close() and writableStream.close() error",e)})),Qt.writableStream=null,er)try{er.clear&&er.clear(),er=null}catch(e){Qt.debug.warn("worker","close() and audioDecoder.clear error",e)}if(tr)try{tr.clear&&tr.clear(),tr=null}catch(e){Qt.debug.warn("worker","close() and videoDecoder.clear error",e)}d=null,lt=null,dt=!1,n&&(n.reset&&n.reset(),n=null),Qt.firstTimestamp=null,Qt.startTimestamp=null,Qt.networkDelay=0,Qt.streamFps=null,Qt.streamAudioFps=null,Qt.streamVideoFps=null,Qt.delay=-1,Qt.pushLatestDelay=-1,Qt.preDelayTimestamp=null,Qt.dropping=!1,Qt.isPushDropping=!1,Qt.isPlayer=!0,Qt.isPlayback=!1,Qt.isWorkerFetch=!1,Qt._opt=Yt(),Qt.webglObj&&(Qt.webglObj.destroy(),Qt.offscreenCanvas.removeEventListener("webglcontextlost",Qt.onOffscreenCanvasWebglContextLost),Qt.offscreenCanvas.removeEventListener("webglcontextrestored",Qt.onOffscreenCanvasWebglContextRestored),Qt.offscreenCanvas=null,Qt.offscreenCanvasGL=null,Qt.offscreenCanvasCtx=null),i=[],s=[],y=null,v=null,De=null,Fe=!1,$e=!1,Je=!1,Ot=!1,Gt=!1,Ht=!1,$t=null,Vt=null,pt=[],xt=0,At=0,ut=null,ht=null,Bt=null,kt=null,Wt=null,Tt=0,Nt=0,_t=null,Ut=null,Qt.fetchStatus=Pe,Kt.destroy(),Xt.destroy(),Zt.destroy(),Jt.destroy(),postMessage({cmd:G})},pushBuffer:function(e,t){if(t.type===K&&We(e)){if(Qt.debug.log("worker",`pushBuffer audio ts is ${t.ts}, isAacCodecPacket is true`),Qt._opt.isRecordTypeFlv){const t=new Uint8Array(e);postMessage({cmd:W,buffer:t},[t.buffer])}Qt.decodeAudio(e,t.ts)}else if(t.type===X&&t.isIFrame&&nt(e)){if(Qt.debug.log("worker",`pushBuffer video ts is ${t.ts}, isVideoSequenceHeader is true`),Qt._opt.isRecordTypeFlv){const t=new Uint8Array(e);postMessage({cmd:j,buffer:t},[t.buffer])}Qt.decodeVideo(e,t.ts,t.isIFrame,t.cts)}else{if(Qt._opt.isRecording)if(Qt._opt.isRecordTypeFlv){const r=new Uint8Array(e);postMessage({cmd:Y,type:t.type,buffer:r,ts:t.ts},[r.buffer])}else if(Qt._opt.recordType===_)if(t.type===X){const r=new Uint8Array(e).slice(5);postMessage({cmd:D,buffer:r,isIFrame:t.isIFrame,ts:t.ts,cts:t.cts},[r.buffer])}else if(t.type===K&&Qt._opt.isWasmMp4){const r=new Uint8Array(e),i=je(r)?r.slice(2):r.slice(1);postMessage({cmd:B,buffer:i,ts:t.ts},[i.buffer])}if(Qt.isPlayer&&Tt>0&&kt>0&&t.type===X){const e=t.ts-kt,r=Tt+Tt/2;e>r&&Qt.debug.log("worker",`pushBuffer video\n ts is ${t.ts}, preTimestamp is ${kt},\n diff is ${e} and preTimestampDuration is ${Tt} and maxDiff is ${r}\n maybe trigger black screen or flower screen\n `)}if(Qt.isPlayer&&kt>0&&t.type===X&&t.tsb&&(Qt.debug.warn("worker",`pushBuffer,\n preTimestamp is ${kt}, options.ts is ${t.ts},\n diff is ${kt-t.ts} more than 3600000,\n and resetAllDelay`),Qt.resetAllDelay(),kt=null,Tt=0),Qt.isPlayer&&kt>0&&t.ts<=kt&&t.type===X&&(Qt.debug.warn("worker",`pushBuffer,\n options.ts is ${t.ts} less than (or equal) preTimestamp is ${kt} and\n payloadBufferSize is ${e.byteLength} and prevPayloadBufferSize is ${Nt}`),Qt._opt.isDropSameTimestampGop&&Je)){const e=Qt.hasIframeInBufferList(),t=ot(Qt.isPushDropping);return Qt.debug.log("worker",`pushBuffer, isDropSameTimestampGop is true and\n hasIframe is ${e} and isNotPushDropping is ${t} and next dropBuffer`),void(e&&t?Qt.dropBuffer$2():(Qt.clearBuffer(!0),at(Qt._opt.checkFirstIFrame)&&at(r)&&postMessage({cmd:q})))}if(Qt.isPlayer&&Je){const e=Qt._opt.videoBuffer+Qt._opt.videoBufferDelay,r=Qt.getDelayNotUpdateDelay(t.ts,t.type);Qt.pushLatestDelay=r,r>e&&Qt.delay0&&Qt.hasIframeInBufferList()&&!1===Qt.isPushDropping&&(Qt.debug.log("worker",`pushBuffer(), pushLatestDelay is ${r} more than ${e} and decoder.delay is ${Qt.delay} and has iIframe and next decoder.dropBuffer$2()`),Qt.dropBuffer$2())}if(Qt.isPlayer&&t.type===X&&(kt>0&&(Tt=t.ts-kt),Nt=e.byteLength,kt=t.ts),t.type===K?i.push({ts:t.ts,payload:e,decoder:{decode:Qt.decodeAudio},type:K,isIFrame:!1}):t.type===X&&i.push({ts:t.ts,cts:t.cts,payload:e,decoder:{decode:Qt.decodeVideo},type:X,isIFrame:t.isIFrame}),Qt.isPlaybackCacheBeforeDecodeForFpsRender()&&(tt(Qt.streamVideoFps)||tt(Qt.streamAudioFps))){let e=Qt.streamVideoFps,t=Qt.streamAudioFps;if(tt(Qt.streamVideoFps)&&(e=it(i,X),e&&(Qt.streamVideoFps=e,postMessage({cmd:R,value:Qt.streamVideoFps}),Qt.streamFps=t?e+t:e,ot(Qt._opt.hasAudio)&&(Qt.debug.log("worker","playbackCacheBeforeDecodeForFpsRender, _opt.hasAudio is false and set streamAudioFps is 0"),Qt.streamAudioFps=0),Qt.playbackCacheLoop())),tt(Qt.streamAudioFps)&&(t=it(i,K),t&&(Qt.streamAudioFps=t,Qt.streamFps=e?e+t:t,Qt.playbackCacheLoop())),tt(Qt.streamVideoFps)&&tt(Qt.streamAudioFps)){const r=i.map((e=>({type:e.type,ts:e.ts})));Qt.debug.log("worker",`playbackCacheBeforeDecodeForFpsRender, calc streamAudioFps is ${t}, streamVideoFps is ${e}, bufferListLength is ${i.length}, and ts list is ${JSON.stringify(r)}`)}const r=Qt.getAudioBufferLength()>0,s=r?60:40;i.length>=s&&(Qt.debug.warn("worker",`playbackCacheBeforeDecodeForFpsRender, bufferListLength is ${i.length} more than ${s}, and hasAudio is ${r} an set streamFps is 25`),Qt.streamVideoFps=25,postMessage({cmd:R,value:Qt.streamVideoFps}),r?(Qt.streamAudioFps=25,Qt.streamFps=Qt.streamVideoFps+Qt.streamAudioFps):Qt.streamFps=Qt.streamVideoFps,Qt.playbackCacheLoop())}}},getVideoBufferLength(){let e=0;return i.forEach((t=>{t.type===X&&(e+=1)})),e},hasIframeInBufferList:()=>i.some((e=>e.type===X&&e.isIFrame)),isAllIframeInBufferList(){const e=Qt.getVideoBufferLength();let t=0;return i.forEach((e=>{e.type===X&&e.isIFrame&&(t+=1)})),e===t},getNotDroppingDelayTs:()=>Qt._opt.videoBuffer+Qt._opt.videoBufferDelay/2,getAudioBufferLength(){let e=0;return i.forEach((t=>{t.type===K&&(e+=1)})),e},getFlvBufferLength(){let e=0;return y&&y.buffer&&(e=y.buffer.byteLength),Qt._opt.isNakedFlow&&Kt.lastBuf&&(e=Kt.lastBuf.byteLength),e},fetchStream:function(e,t){Qt.debug.log("worker","fetchStream, url is "+e,"options:",JSON.stringify(t)),Qt.isWorkerFetch=!0,t.isFlv?Qt._opt.isFlv=!0:t.isFmp4?Qt._opt.isFmp4=!0:t.isMpeg4?Qt._opt.isMpeg4=!0:t.isNakedFlow?Qt._opt.isNakedFlow=!0:t.isTs&&(Qt._opt.isTs=!0),d=Qe((e=>{postMessage({cmd:P,type:ue,value:e})})),Qt.startStreamRateAndStatsInterval(),t.isFmp4&&(Xt.listenMp4Box(),Qt._opt.isFmp4Private&&Xt.initTransportDescarmber()),t.protocol===h?(y=new ct(Qt.demuxFlv()),fetch(e,{signal:a.signal}).then((e=>{if(at(jt))return Qt.debug.log("worker","request abort and run res.body.cancel()"),Qt.fetchStatus=Pe,void e.body.cancel();if(!function(e){return e.ok&&e.status>=200&&e.status<=299}(e))return Qt.debug.warn("worker",`fetch response status is ${e.status} and ok is ${e.ok} and emit error and next abort()`),qt(),void postMessage({cmd:P,type:ye.fetchError,value:`fetch response status is ${e.status} and ok is ${e.ok}`});if(postMessage({cmd:P,type:pe}),"undefined"!=typeof WritableStream)Qt.writableStream=new WritableStream({write:e=>a&&a.signal&&a.signal.aborted?(Qt.debug.log("worker","writableStream write() and abortController.signal.aborted is true so return"),void(Qt.fetchStatus=ze)):at(jt)?(Qt.debug.log("worker","writableStream write() and requestAbort is true so return"),void(Qt.fetchStatus=ze)):(Qt.fetchStatus=Le,d(e.byteLength),void(t.isFlv?y.write(e):t.isFmp4?Qt.demuxFmp4(e):t.isMpeg4?Qt.demuxMpeg4(e):t.isTs&&Qt.demuxTs(e))),close:()=>{Qt.fetchStatus=ze,y=null,qt(),postMessage({cmd:P,type:le,value:c,msg:"fetch done"})},abort:e=>{if(a&&a.signal&&a.signal.aborted)return Qt.debug.log("worker","writableStream abort() and abortController.signal.aborted is true so return"),void(Qt.fetchStatus=ze);y=null,e.name!==Ce&&(qt(),postMessage({cmd:P,type:ye.fetchError,value:e.toString()}))}}),e.body.pipeTo(Qt.writableStream);else{const r=e.body.getReader(),i=()=>{r.read().then((({done:e,value:r})=>e?(Qt.fetchStatus=ze,y=null,qt(),void postMessage({cmd:P,type:le,value:c,msg:"fetch done"})):a&&a.signal&&a.signal.aborted?(Qt.debug.log("worker","fetchNext().then() and abortController.signal.aborted is true so return"),void(Qt.fetchStatus=ze)):at(jt)?(Qt.debug.log("worker","fetchNext().then() and requestAbort is true so return"),void(Qt.fetchStatus=ze)):(Qt.fetchStatus=Le,d(r.byteLength),t.isFlv?y.write(r):t.isFmp4?Qt.demuxFmp4(r):t.isMpeg4&&Qt.demuxMpeg4(r),void i()))).catch((e=>{if(a&&a.signal&&a.signal.aborted)return Qt.debug.log("worker","fetchNext().catch() and abortController.signal.aborted is true so return"),void(Qt.fetchStatus=ze);y=null,e.name!==Ce&&(qt(),postMessage({cmd:P,type:ye.fetchError,value:e.toString()}))}))};i()}})).catch((e=>{a&&a.signal&&a.signal.aborted?Qt.debug.log("worker","fetch().catch() and abortController.signal.aborted is true so return"):e.name!==Ce&&(qt(),postMessage({cmd:P,type:ye.fetchError,value:e.toString()}),y=null)}))):t.protocol===u&&(t.isFlv&&(y=new ct(Qt.demuxFlv())),o=new WebSocket(e),o.binaryType="arraybuffer",o.onopen=()=>{Qt.debug.log("worker","fetchStream, WebsocketStream socket open"),postMessage({cmd:P,type:pe}),postMessage({cmd:P,type:ge})},o.onclose=e=>{Qt.debug.log("worker",`fetchStream, WebsocketStream socket close and code is ${e.code}`),1006===e.code&&Qt.debug.error("worker",`fetchStream, WebsocketStream socket close abnormally and code is ${e.code}`),at(jt)?Qt.debug.log("worker","fetchStream, WebsocketStream socket close and requestAbort is true so return"):(y=null,postMessage({cmd:P,type:le,value:f,msg:e.code}))},o.onerror=e=>{Qt.debug.error("worker","fetchStream, WebsocketStream socket error",e),y=null,postMessage({cmd:P,type:ye.websocketError,value:e.isTrusted?"websocket user aborted":"websocket error"})},o.onmessage=e=>{d(e.data.byteLength),t.isFlv?y.write(e.data):t.isFmp4?Qt.demuxFmp4(e.data):t.isMpeg4?Qt.demuxMpeg4(e.data):Qt._opt.isNakedFlow?Qt.demuxNakedFlow(e.data):Qt.demuxM7s(e.data)})},demuxFlv:function*(){yield 9;const e=new ArrayBuffer(4),t=new Uint8Array(e),r=new Uint32Array(e);for(;;){t[3]=0;const e=yield 15,i=e[4];t[0]=e[7],t[1]=e[6],t[2]=e[5];const s=r[0];t[0]=e[10],t[1]=e[9],t[2]=e[8],t[3]=e[11];let n=r[0];const a=(yield s).slice();switch(i){case Z:if(a.byteLength>0){let e=a;at(Qt._opt.m7sCryptoAudio)&&(e=Qt.cryptoPayloadAudio(a)),Qt.decode(e,{type:K,ts:n})}else Qt.debug.warn("worker",`demuxFlv() type is audio and payload.byteLength is ${a.byteLength} and return`);break;case J:if(a.byteLength>=6){const e=a[0];if(Qt._isEnhancedH265Header(e))Qt._decodeEnhancedH265Video(a,n);else{a[0];const e=a[0]>>4===Ie;if(e&&nt(a)&&null===$t){const e=15&a[0];$t=e===we,Vt=Ft(a,$t),Qt.debug.log("worker",`demuxFlv() isVideoSequenceHeader is true and isHevc is ${$t} and nalUnitSize is ${Vt}`)}e&&Qt.calcIframeIntervalTimestamp(n),Qt.isPlayer&&Qt.calcNetworkDelay(n),r[0]=a[4],r[1]=a[3],r[2]=a[2],r[3]=0;let t=r[0],i=Qt.cryptoPayload(a,e);Qt.decode(i,{type:X,ts:n,isIFrame:e,cts:t})}}else Qt.debug.warn("worker",`demuxFlv() type is video and payload.byteLength is ${a.byteLength} and return`);break;case Q:postMessage({cmd:V,buffer:a},[a.buffer]);break;default:Qt.debug.log("worker",`demuxFlv() type is ${i}`)}}},decode:function(e,t){t.type===K?Qt._opt.hasAudio&&(postMessage({cmd:P,type:he,value:e.byteLength}),Qt.isPlayer?Qt.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts}):Qt.isPlayback&&(Qt.isPlaybackOnlyDecodeIFrame()||(Qt.isPlaybackCacheBeforeDecodeForFpsRender(),Qt.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts})))):t.type===X&&Qt._opt.hasVideo&&(postMessage({cmd:P,type:ce,value:e.byteLength}),postMessage({cmd:P,type:fe,value:t.ts}),Qt.isPlayer?Qt.pushBuffer(e,{type:t.type,ts:t.ts,isIFrame:t.isIFrame,cts:t.cts}):Qt.isPlayback&&(Qt.isPlaybackOnlyDecodeIFrame()?t.isIFrame&&Qt.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts,isIFrame:t.isIFrame}):(Qt.isPlaybackCacheBeforeDecodeForFpsRender(),Qt.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts,isIFrame:t.isIFrame}))))},cryptoPayload:function(e,t){let r=e;return Qt._opt.isM7sCrypto?Qt._opt.cryptoIV&&Qt._opt.cryptoIV.byteLength>0&&Qt._opt.cryptoKey&&Qt._opt.cryptoKey.byteLength>0?r=function(e,t,r,i=!1){t=new Uint8Array(t),r=new Uint8Array(r);const s=e.byteLength;let n=5;for(;ns)break;let d=e[n+4],l=!1;if(i?(d=d>>>1&63,l=[0,1,2,3,4,5,6,7,8,9,16,17,18,19,20,21].includes(d)):(d&=31,l=1===d||5===d),l){const i=e.slice(n+4+2,n+4+o);let s=new gr.ModeOfOperation.ctr(t,new gr.Counter(r));const a=s.decrypt(i);s=null,e.set(a,n+4+2)}n=n+4+o}var a;return e}(e,Qt._opt.cryptoKey,Qt._opt.cryptoIV,$t):Qt.debug.error("worker",`isM7sCrypto cryptoKey.length is ${Qt._opt.cryptoKey&&Qt._opt.cryptoKey.byteLength} or cryptoIV.length is ${Qt._opt.cryptoIV&&Qt._opt.cryptoIV.byteLength} null`):Qt._opt.isSm4Crypto?Qt._opt.sm4CryptoKey&&t?r=function(e,t,r=!1){const i=e.byteLength;let s=5;for(;si)break;let o=e[s+4],d=!1;if(r?(o=o>>>1&63,d=[0,1,2,3,4,5,6,7,8,9,16,17,18,19,20,21].includes(o)):(o&=31,d=1===o||5===o),d){const r=Ir(e.slice(s+4+2,s+4+a),t,0,{padding:"none",output:"array"});e.set(r,s+4+2)}s=s+4+a}var n;return e}(e,Qt._opt.sm4CryptoKey):Qt._opt.sm4CryptoKey||Qt.debug.error("worker","isSm4Crypto opt.sm4CryptoKey is null"):Qt._opt.isXorCrypto&&(Qt._opt.cryptoIV&&Qt._opt.cryptoIV.byteLength>0&&Qt._opt.cryptoKey&&Qt._opt.cryptoKey.byteLength>0?r=function(e,t,r,i=!1){const s=e.byteLength;let n=5;for(;ns)break;let d=e[n+4],l=!1;if(i?(d=d>>>1&63,l=[0,1,2,3,4,5,6,7,8,9,16,17,18,19,20,21].includes(d)):(d&=31,l=1===d||5===d),l){const i=Rr(e.slice(n+4,n+4+o),t,r);e.set(i,n+4)}n=n+4+o}var a;return e}(e,Qt._opt.cryptoKey,Qt._opt.cryptoIV,$t):Qt.debug.error("worker",`isXorCrypto cryptoKey.length is ${Qt._opt.cryptoKey&&Qt._opt.cryptoKey.byteLength} or cryptoIV.length is ${Qt._opt.cryptoIV&&Qt._opt.cryptoIV.byteLength} null`)),r},cryptoPayloadAudio:function(e){let t=e;if(Qt._opt.isM7sCrypto)if(Qt._opt.cryptoIV&&Qt._opt.cryptoIV.byteLength>0&&Qt._opt.cryptoKey&&Qt._opt.cryptoKey.byteLength>0){e[0]>>4===Ue.AAC&&(t=function(e,t,r){if(e.byteLength<=30)return e;const i=e.slice(32);let s=new gr.ModeOfOperation.ctr(t,new gr.Counter(r));const n=s.decrypt(i);return s=null,e.set(n,32),e}(e,Qt._opt.cryptoKey,Qt._opt.cryptoIV))}else Qt.debug.error("worker",`isM7sCrypto cryptoKey.length is ${Qt._opt.cryptoKey&&Qt._opt.cryptoKey.byteLength} or cryptoIV.length is ${Qt._opt.cryptoIV&&Qt._opt.cryptoIV.byteLength} null`);return t},setCodecAudio:function(e,t){const r=e[0]>>4,i=e[0]>>1&1;if(Wt=r===Ue.AAC?i?16:8:0===i?8:16,er&&er.setCodec)if(We(e)||r===Ue.ALAW||r===Ue.MULAW||r===Ue.MP3){Qt.debug.log("worker",`setCodecAudio: init audio codec, codeId is ${r}`);const i=r===Ue.AAC?e.slice(2):new Uint8Array(0);er.setCodec(r,Qt._opt.sampleRate,i),r===Ue.AAC&&postMessage({cmd:k,buffer:i},[i.buffer]),$e=!0,r!==Ue.AAC&&(r===Ue.MP3?(Qt.mp3Demuxer||(Qt.mp3Demuxer=new zr(Qt),Qt.mp3Demuxer.on("data",((e,t)=>{er.decode(e,t)}))),Qt.mp3Demuxer.dispatch(e.slice(1),t)):er.decode(e.slice(1),t))}else Qt.debug.warn("worker","setCodecAudio: hasInitAudioCodec is false, codecId is ",r);else Qt.debug.error("worker","setCodecAudio: audioDecoder or audioDecoder.setCodec is null")},decodeAudio:function(e,t){if(Qt.isDestroyed)Qt.debug.log("worker","decodeAudio, decoder is destroyed and return");else if(at(r)&&at(Qt._opt.mseDecodeAudio))postMessage({cmd:I,payload:e,ts:t,cts:t},[e.buffer]);else{const r=e[0]>>4;$e?r===Ue.MP3?Qt.mp3Demuxer.dispatch(e.slice(1),t):er.decode(r===Ue.AAC?e.slice(2):e.slice(1),t):Qt.setCodecAudio(e,t)}},setCodecVideo:function(e){const t=15&e[0];if(tr&&tr.setCodec)if(nt(e))if(t===ve||t===we){Qt.debug.log("worker",`setCodecVideo: init video codec , codecId is ${t}`);const r=e.slice(5);if(t===ve&&Qt._opt.useSIMD){const e=gt(r);if(e.codecWidth>4080||e.codecHeight>4080)return postMessage({cmd:O}),void Qt.debug.warn("worker",`setCodecVideo: SIMD H264 decode video width is too large, width is ${e.codecWidth}, height is ${e.codecHeight}`)}const i=new Uint8Array(e);Fe=!0,tr.setCodec(t,r),postMessage({cmd:T,code:t}),postMessage({cmd:C,buffer:i,codecId:t},[i.buffer])}else Qt.debug.warn("worker",`setCodecVideo: hasInitVideoCodec is false, codecId is ${t} is not H264 or H265`);else Qt.debug.warn("worker",`decodeVideo: hasInitVideoCodec is false, codecId is ${t} and frameType is ${e[0]>>4} and packetType is ${e[1]}`);else Qt.debug.error("worker","setCodecVideo: videoDecoder or videoDecoder.setCodec is null")},decodeVideo:function(e,t,i,s=0){if(Qt.isDestroyed)Qt.debug.log("worker","decodeVideo, decoder is destroyed and return");else if(at(r))postMessage({cmd:F,payload:e,isIFrame:i,ts:t,cts:s,delay:Qt.delay},[e.buffer]);else if(Fe)if(!Je&&i&&(Je=!0),Je){if(i&&nt(e)){const t=15&e[0];let r={};if(t===ve){r=gt(e.slice(5))}else t===we&&(r=function(e){let t={codecWidth:0,codecHeight:0,videoType:Te.h265,width:0,height:0,profile:0,level:0};e=e.slice(5);do{let r={};if(e.length<23){console.warn("parseHEVCDecoderConfigurationRecord$2",`arrayBuffer.length ${e.length} < 23`);break}if(r.configurationVersion=e[0],1!=r.configurationVersion)break;r.general_profile_space=e[1]>>6&3,r.general_tier_flag=e[1]>>5&1,r.general_profile_idc=31&e[1],r.general_profile_compatibility_flags=e[2]<<24|e[3]<<16|e[4]<<8|e[5],r.general_constraint_indicator_flags=e[6]<<24|e[7]<<16|e[8]<<8|e[9],r.general_constraint_indicator_flags=r.general_constraint_indicator_flags<<16|e[10]<<8|e[11],r.general_level_idc=e[12],r.min_spatial_segmentation_idc=(15&e[13])<<8|e[14],r.parallelismType=3&e[15],r.chromaFormat=3&e[16],r.bitDepthLumaMinus8=7&e[17],r.bitDepthChromaMinus8=7&e[18],r.avgFrameRate=e[19]<<8|e[20],r.constantFrameRate=e[21]>>6&3,r.numTemporalLayers=e[21]>>3&7,r.temporalIdNested=e[21]>>2&1,r.lengthSizeMinusOne=3&e[21];let i=e[22],s=e.slice(23);for(let e=0;e0){let e=i.findIndex((e=>at(e.isIFrame)&&e.type===X));if(Qt.isAllIframeInBufferList())for(let t=0;t=Qt.getNotDroppingDelayTs()){Qt.debug.log("worker",`dropBuffer$2() isAllIframeInBufferList() is true, and index is ${t} and tempDelay is ${s} and notDroppingDelayTs is ${Qt.getNotDroppingDelayTs()}`),e=t;break}}if(e>=0){Qt.isPushDropping=!0,postMessage({cmd:z});const t=i.length;i=i.slice(e);const r=i.shift();Qt.resetAllDelay(),Qt.getDelay(r.ts,r.type),Qt.doDecode(r),Qt.isPushDropping=!1,Qt.debug.log("worker",`dropBuffer$2() iFrameIndex is ${e},and old bufferList length is ${t} ,new bufferList is ${i.length} and new delay is ${Qt.delay} `)}else Qt.isPushDropping=!1}0===i.length&&(Qt.isPushDropping=!1)},demuxM7s:function(e){const t=new DataView(e),r=t.getUint32(1,!1),i=t.getUint8(0),s=new ArrayBuffer(4),n=new Uint32Array(s);switch(i){case K:Qt.decode(new Uint8Array(e,5),{type:K,ts:r});break;case X:if(t.byteLength>=11){const i=new Uint8Array(e,5),s=i[0];if(Qt._isEnhancedH265Header(s))Qt._decodeEnhancedH265Video(i,r);else{const e=t.getUint8(5)>>4==1;if(e&&(Qt.calcIframeIntervalTimestamp(r),nt(i)&&null===$t)){const e=15&i[0];$t=e===we}Qt.isPlayer&&Qt.calcNetworkDelay(r),n[0]=i[4],n[1]=i[3],n[2]=i[2],n[3]=0;let s=n[0],a=Qt.cryptoPayload(i,e);Qt.decode(a,{type:X,ts:r,isIFrame:e,cts:s})}}else Qt.debug.warn("worker",`demuxM7s() type is video and arrayBuffer length is ${e.byteLength} and return`)}},demuxNakedFlow:function(e){Kt.dispatch(e)},demuxFmp4:function(e){const t=new Uint8Array(e);Xt.dispatch(t)},demuxMpeg4:function(e){Zt.dispatch(e)},demuxTs:function(e){Jt.dispatch(e)},_decodeEnhancedH265Video:function(e,t){const r=e[0],i=48&r,s=15&r,n=e.slice(1,5),a=new ArrayBuffer(4),o=new Uint32Array(a),d="a"==String.fromCharCode(n[0]);if($t=ot(d),s===Re){if(i===Oe){const r=e.slice(5);if(d);else{const i=new Uint8Array(5+r.length);i.set([28,0,0,0,0],0),i.set(r,5),Vt=Ft(e,$t),Qt.debug.log("worker",`demuxFlv() isVideoSequenceHeader(enhancedH265) is true and isHevc is ${$t} and nalUnitSize is ${Vt}`),Qt.decode(i,{type:X,ts:t,isIFrame:!0,cts:0})}}}else if(s===Me){let r=e,s=0;const n=i===Oe;if(n&&Qt.calcIframeIntervalTimestamp(t),d);else{o[0]=e[4],o[1]=e[3],o[2]=e[2],o[3]=0,s=o[0];r=Lt(e.slice(8),n),r=Qt.cryptoPayload(r,n),Qt.decode(r,{type:X,ts:t,isIFrame:n,cts:s})}}else if(s===Ne){const r=i===Oe;r&&Qt.calcIframeIntervalTimestamp(t);let s=Lt(e.slice(5),r);s=Qt.cryptoPayload(s,r),Qt.decode(s,{type:X,ts:t,isIFrame:r,cts:0})}},_isEnhancedH265Header:function(e){return!(128&~e)},findSei:function(e,t){let r=4;tt(Vt)||(r=Vt);Ct(e.slice(5),r).forEach((e=>{const r=$t?e[0]>>>1&63:31&e[0];($t&&(r===Ae.suffixSei||r===Ae.prefixSei)||ot($t)&&r===xe.kSliceSEI)&&postMessage({cmd:$,buffer:e,ts:t},[e.buffer])}))},flvHasUnitTypeIDR(e,t){const r=Ct(e.slice(5));let i=!1;return r.forEach((e=>{const r=t?e[0]>>>1&63:31&e[0];(t&&(r===Ae.iFrame||r===Ae.nLp)||ot(t)&&r===xe.iFrame)&&(i=!0)})),i},calcNetworkDelay:function(e){if(!(Je&&e>0))return;null===ut?(ut=e,ht=Ze()):et?r-t:0;Qt.networkDelay=i,i>Qt._opt.networkDelay&&Qt._opt.playType===p&&(Qt.debug.warn("worker",`calcNetworkDelay now dts:${e}, start dts is ${ut} vs start is ${t},local diff is ${r} ,delay is ${i}`),postMessage({cmd:P,type:_e,value:i}))},calcIframeIntervalTimestamp:function(e){null===Bt?Bt=e:Bt=Qt._opt.playbackForwardMaxRateDecodeIFrame},isPlayUseMSE:function(){return Qt.isPlayer&&Qt._opt.useMSE&&at(r)},isPlayUseMSEAndDecoderInWorker:function(){return Qt.isPlayUseMSE()&&Qt._opt.mseDecoderUseWorker},playbackUpdatePlaybackRate:function(){Qt.clearBuffer(!0)},onOffscreenCanvasWebglContextLost:function(e){Qt.debug.error("worker","handleOffscreenCanvasWebglContextLost and next try to create webgl"),e.preventDefault(),Ot=!0,Qt.webglObj.destroy(),Qt.webglObj=null,Qt.offscreenCanvasGL=null,setTimeout((()=>{Qt.offscreenCanvasGL=Qt.offscreenCanvas.getContext("webgl"),Qt.offscreenCanvasGL&&Qt.offscreenCanvasGL.getContextAttributes().stencil?(Qt.webglObj=l(Qt.offscreenCanvasGL,Qt._opt.openWebglAlignment),Ot=!1):Qt.debug.error("worker","handleOffscreenCanvasWebglContextLost, stencil is false")}),500)},onOffscreenCanvasWebglContextRestored:function(e){Qt.debug.log("worker","handleOffscreenCanvasWebglContextRestored"),e.preventDefault()},videoInfo:function(e,t,r){postMessage({cmd:T,code:e}),postMessage({cmd:S,w:t,h:r}),v=t,De=r,Qt.useOffscreen()&&(Qt.offscreenCanvas=new OffscreenCanvas(t,r),Qt.offscreenCanvasGL=Qt.offscreenCanvas.getContext("webgl"),Qt.webglObj=l(Qt.offscreenCanvasGL,Qt._opt.openWebglAlignment),Qt.offscreenCanvas.addEventListener("webglcontextlost",Qt.onOffscreenCanvasWebglContextLost,!1),Qt.offscreenCanvas.addEventListener("webglcontextrestored",Qt.onOffscreenCanvasWebglContextRestored,!1))},audioInfo:function(e,t,r){postMessage({cmd:A,code:e}),postMessage({cmd:x,sampleRate:t,channels:r,depth:Wt}),At=r},yuvData:function(t,r){if(Qt.isDestroyed)return void Qt.debug.log("worker","yuvData, decoder is destroyed and return");const i=v*De*3/2;let s=e.HEAPU8.subarray(t,t+i),n=new Uint8Array(s);if(_t=null,Qt.useOffscreen())try{if(Ot)return;Qt.webglObj.renderYUV(v,De,n);let e=Qt.offscreenCanvas.transferToImageBitmap();postMessage({cmd:E,buffer:e,delay:Qt.delay,ts:r},[e])}catch(e){Qt.debug.error("worker","yuvData, transferToImageBitmap error is",e)}else postMessage({cmd:E,output:n,delay:Qt.delay,ts:r},[n.buffer])},pcmData:function(e,r,i){if(Qt.isDestroyed)return void Qt.debug.log("worker","pcmData, decoder is destroyed and return");let n=r,a=[],o=0,d=Qt._opt.audioBufferSize;for(let r=0;r<2;r++){let i=t.HEAPU32[(e>>2)+r]>>2;a[r]=t.HEAPF32.subarray(i,i+n)}if(xt){if(!(n>=(r=d-xt)))return xt+=n,s[0]=Float32Array.of(...s[0],...a[0]),void(2==At&&(s[1]=Float32Array.of(...s[1],...a[1])));pt[0]=Float32Array.of(...s[0],...a[0].subarray(0,r)),2==At&&(pt[1]=Float32Array.of(...s[1],...a[1].subarray(0,r))),postMessage({cmd:U,buffer:pt,ts:i},pt.map((e=>e.buffer))),o=r,n-=r}for(xt=n;xt>=d;xt-=d)pt[0]=a[0].slice(o,o+=d),2==At&&(pt[1]=a[1].slice(o-d,o)),postMessage({cmd:U,buffer:pt,ts:i},pt.map((e=>e.buffer)));xt&&(s[0]=a[0].slice(o),2==At&&(s[1]=a[1].slice(o)))},errorInfo:function(e){null===_t&&(_t=Ze());const t=Ze(),r=(i=Ut>0?2*Ut:5e3,s=1e3,n=5e3,Math.max(Math.min(i,Math.max(s,n)),Math.min(s,n)));var i,s,n;const a=t-_t;a>r&&(Qt.debug.warn("worker",`errorInfo() emit simdDecodeError and\n iframeIntervalTimestamp is ${Ut} and diff is ${a} and maxDiff is ${r}\n and replay`),Ht=!0,postMessage({cmd:N}))},sendWebsocketMessage:function(e){o?o.readyState===be?o.send(e):Qt.debug.error("worker","socket is not open"):Qt.debug.error("worker","socket is null")},timeEnd:function(){},postStreamToMain(e,t){postMessage({cmd:H,type:t,buffer:e},[e.buffer])}};Qt.debug=new ft(Qt);let er=null;t.AudioDecoder&&(er=new t.AudioDecoder(Qt));let tr=null;e.VideoDecoder&&(tr=new e.VideoDecoder(Qt)),postMessage({cmd:w}),self.onmessage=function(e){let t=e.data;switch(t.cmd){case ee:try{Qt._opt=Object.assign(Qt._opt,JSON.parse(t.opt))}catch(e){}Qt.init();break;case te:Qt.pushBuffer(t.buffer,t.options);break;case re:Qt.decodeAudio(t.buffer,t.ts);break;case ie:Qt.decodeVideo(t.buffer,t.ts,t.isIFrame);break;case ae:Qt.clearBuffer(t.needClear);break;case oe:Qt.fetchStream(t.url,JSON.parse(t.opt));break;case se:Qt.close();break;case ne:Qt.debug.log("worker","updateConfig",t.key,t.value),Qt._opt[t.key]=t.value,"playbackRate"===t.key&&(Qt.playbackUpdatePlaybackRate(),Qt.isPlaybackCacheBeforeDecodeForFpsRender()&&Qt.playbackCacheLoop());break;case de:Qt.sendWebsocketMessage(t.message)}}}Nr.init(),Date.now||(Date.now=function(){return(new Date).getTime()}),t({printErr:function(e){console.warn("EasyPro[❌❌❌][worker]:",e)}}).then((e=>{Or(e,e,!0)}))})); diff --git a/demo/js/decoder-pro-mt-worker.js b/html-demo/js/decoder-pro-mt-worker.js similarity index 100% rename from demo/js/decoder-pro-mt-worker.js rename to html-demo/js/decoder-pro-mt-worker.js diff --git a/demo/js/decoder-pro-mt-worker.wasm b/html-demo/js/decoder-pro-mt-worker.wasm similarity index 100% rename from demo/js/decoder-pro-mt-worker.wasm rename to html-demo/js/decoder-pro-mt-worker.wasm diff --git a/demo/js/decoder-pro-mt-worker.worker.js b/html-demo/js/decoder-pro-mt-worker.worker.js similarity index 100% rename from demo/js/decoder-pro-mt-worker.worker.js rename to html-demo/js/decoder-pro-mt-worker.worker.js diff --git a/html-demo/js/decoder-pro-mt.js b/html-demo/js/decoder-pro-mt.js new file mode 100644 index 0000000..72e262c --- /dev/null +++ b/html-demo/js/decoder-pro-mt.js @@ -0,0 +1 @@ +!function(e){"function"==typeof define&&define.amd?define(e):e()}((function(){"use strict";var e,t=(e="undefined"==typeof document&&"undefined"==typeof location?new(require("url").URL)("file:"+__filename).href:"undefined"==typeof document?location.href:document.currentScript&&document.currentScript.src||new URL("decoder-pro-mt.js",document.baseURI).href,function(t){var r,i;(t=void 0!==(t=t||{})?t:{}).ready=new Promise((function(e,t){r=e,i=t})),(t=void 0!==t?t:{}).locateFile=function(e){return"decoder-pro-mt-worker.wasm"==e&&"undefined"!=typeof EASYPLAYER_PRO_MT_WORKER_WASM_URL&&""!=EASYPLAYER_PRO_MT_WORKER_WASM_URL?EASYPLAYER_PRO_MT_WORKER_WASM_URL:e};var n,s,o,a,d,l,u=Object.assign({},t),c="./this.program",f=(e,t)=>{throw t},h="object"==typeof window,p="function"==typeof importScripts,m="object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node,_=t.ENVIRONMENT_IS_PTHREAD||!1,y="";function g(e){return t.locateFile?t.locateFile(e,y):y+e}if(m){let e;y=p?require("path").dirname(y)+"/":__dirname+"/",l=()=>{d||(a=require("fs"),d=require("path"))},n=function(e,t){return l(),e=d.normalize(e),a.readFileSync(e,t?void 0:"utf8")},o=e=>{var t=n(e,!0);return t.buffer||(t=new Uint8Array(t)),t},s=(e,t,r)=>{l(),e=d.normalize(e),a.readFile(e,(function(e,i){e?r(e):t(i.buffer)}))},process.argv.length>1&&(c=process.argv[1].replace(/\\/g,"/")),process.argv.slice(2),process.on("uncaughtException",(function(e){if(!(e instanceof fe))throw e})),process.on("unhandledRejection",(function(e){throw e})),f=(e,t)=>{if(Z())throw process.exitCode=e,t;var r;(r=t)instanceof fe||E("exiting due to exception: "+r),process.exit(e)},t.inspect=function(){return"[Emscripten Module object]"};try{e=require("worker_threads")}catch(e){throw console.error('The "worker_threads" module is not supported in this node.js build - perhaps a newer version is needed?'),e}global.Worker=e.Worker}else(h||p)&&(p?y=self.location.href:"undefined"!=typeof document&&document.currentScript&&(y=document.currentScript.src),e&&(y=e),y=0!==y.indexOf("blob:")?y.substr(0,y.replace(/[?#].*/,"").lastIndexOf("/")+1):"",m||(n=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.send(null),t.responseText},p&&(o=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.responseType="arraybuffer",t.send(null),new Uint8Array(t.response)}),s=(e,t,r)=>{var i=new XMLHttpRequest;i.open("GET",e,!0),i.responseType="arraybuffer",i.onload=()=>{200==i.status||0==i.status&&i.response?t(i.response):r()},i.onerror=r,i.send(null)}));m&&"undefined"==typeof performance&&(global.performance=require("perf_hooks").performance);var v=console.log.bind(console),b=console.warn.bind(console);m&&(l(),v=e=>a.writeSync(1,e+"\n"),b=e=>a.writeSync(2,e+"\n"));var w=t.print||v,E=t.printErr||b;Object.assign(t,u),u=null,t.arguments&&t.arguments,t.thisProgram&&(c=t.thisProgram),t.quit&&(f=t.quit);var S,x=4;t.wasmBinary&&(S=t.wasmBinary);var U,A,k=t.noExitRuntime||!0;"object"!=typeof WebAssembly&&ie("no native wasm support detected");var T,B=!1;function C(e,t){e||ie(t)}var D,P,F,I,L,R,M,z,N,O="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0;function $(e,t,r){for(var i=t+r,n=t;e[n]&&!(n>=i);)++n;if(n-t>16&&e.buffer&&O)return O.decode(e.buffer instanceof SharedArrayBuffer?e.slice(t,n):e.subarray(t,n));for(var s="";t>10,56320|1023&l)}}else s+=String.fromCharCode((31&o)<<6|a)}else s+=String.fromCharCode(o)}return s}function G(e,t){return e?$(F,e,t):""}function H(e,t,r,i){if(!(i>0))return 0;for(var n=r,s=r+i-1,o=0;o=55296&&a<=57343&&(a=65536+((1023&a)<<10)|1023&e.charCodeAt(++o)),a<=127){if(r>=s)break;t[r++]=a}else if(a<=2047){if(r+1>=s)break;t[r++]=192|a>>6,t[r++]=128|63&a}else if(a<=65535){if(r+2>=s)break;t[r++]=224|a>>12,t[r++]=128|a>>6&63,t[r++]=128|63&a}else{if(r+3>=s)break;t[r++]=240|a>>18,t[r++]=128|a>>12&63,t[r++]=128|a>>6&63,t[r++]=128|63&a}}return t[r]=0,r-n}function V(e){for(var t=0,r=0;r=55296&&i<=57343?(t+=4,++r):t+=3}return t}_&&(D=t.buffer);var W,j,Y=t.INITIAL_MEMORY||268435456;if(_)U=t.wasmMemory,D=t.buffer;else if(t.wasmMemory)U=t.wasmMemory;else if(!((U=new WebAssembly.Memory({initial:Y/65536,maximum:Y/65536,shared:!0})).buffer instanceof SharedArrayBuffer))throw E("requested a shared WebAssembly.Memory but the returned buffer is not a SharedArrayBuffer, indicating that while the browser has SharedArrayBuffer it does not have WebAssembly threads support - you may need to set a flag"),m&&console.log("(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and also use a recent version)"),Error("bad memory");U&&(D=U.buffer),Y=D.byteLength,D=W=D,t.HEAP8=P=new Int8Array(W),t.HEAP16=I=new Int16Array(W),t.HEAP32=R=new Int32Array(W),t.HEAPU8=F=new Uint8Array(W),t.HEAPU16=L=new Uint16Array(W),t.HEAPU32=M=new Uint32Array(W),t.HEAPF32=z=new Float32Array(W),t.HEAPF64=N=new Float64Array(W);var q=[],K=[],X=[];function Z(){return k}function J(){_||(t.noFSInit||we.init.initialized||we.init(),we.ignorePermissions=!1,Ae(K))}var Q=0,ee=null;function te(e){Q++,t.monitorRunDependencies&&t.monitorRunDependencies(Q)}function re(e){if(Q--,t.monitorRunDependencies&&t.monitorRunDependencies(Q),0==Q&&ee){var r=ee;ee=null,r()}}function ie(e){_?postMessage({cmd:"onAbort",arg:e}):t.onAbort&&t.onAbort(e),E(e="Aborted("+e+")"),B=!0,T=1,e+=". Build with -sASSERTIONS for more info.";var r=new WebAssembly.RuntimeError(e);throw i(r),r}var ne,se,oe,ae="data:application/octet-stream;base64,";function de(e){return e.startsWith(ae)}function le(e){return e.startsWith("file://")}function ue(e){try{if(e==ne&&S)return new Uint8Array(S);if(o)return o(e);throw"both async and sync fetching of the wasm failed"}catch(e){ie(e)}}t.locateFile?de(ne="decoder-pro-mt-worker.wasm")||(ne=g(ne)):ne=new URL("decoder-pro-mt-worker.wasm","undefined"==typeof document&&"undefined"==typeof location?new(require("url").URL)("file:"+__filename).href:"undefined"==typeof document?location.href:document.currentScript&&document.currentScript.src||new URL("decoder-pro-mt.js",document.baseURI).href).toString();var ce={};function fe(e){this.name="ExitStatus",this.message="Program terminated with exit("+e+")",this.status=e}function he(e){var t=Ue.pthreads[e];C(t),Ue.returnWorkerToPool(t)}function pe(e){var t=Ue.getNewWorker();if(!t)return 6;Ue.runningWorkers.push(t),Ue.pthreads[e.pthread_ptr]=t,t.pthread_ptr=e.pthread_ptr;var r={cmd:"run",start_routine:e.startRoutine,arg:e.arg,pthread_ptr:e.pthread_ptr};return t.runPthread=()=>{r.time=performance.now(),t.postMessage(r,e.transferList)},t.loaded&&(t.runPthread(),delete t.runPthread),0}var me={isAbs:e=>"/"===e.charAt(0),splitPath:e=>/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(e).slice(1),normalizeArray:(e,t)=>{for(var r=0,i=e.length-1;i>=0;i--){var n=e[i];"."===n?e.splice(i,1):".."===n?(e.splice(i,1),r++):r&&(e.splice(i,1),r--)}if(t)for(;r;r--)e.unshift("..");return e},normalize:e=>{var t=me.isAbs(e),r="/"===e.substr(-1);return(e=me.normalizeArray(e.split("/").filter((e=>!!e)),!t).join("/"))||t||(e="."),e&&r&&(e+="/"),(t?"/":"")+e},dirname:e=>{var t=me.splitPath(e),r=t[0],i=t[1];return r||i?(i&&(i=i.substr(0,i.length-1)),r+i):"."},basename:e=>{if("/"===e)return"/";var t=(e=(e=me.normalize(e)).replace(/\/$/,"")).lastIndexOf("/");return-1===t?e:e.substr(t+1)},join:function(){var e=Array.prototype.slice.call(arguments,0);return me.normalize(e.join("/"))},join2:(e,t)=>me.normalize(e+"/"+t)},_e={resolve:function(){for(var e="",t=!1,r=arguments.length-1;r>=-1&&!t;r--){var i=r>=0?arguments[r]:we.cwd();if("string"!=typeof i)throw new TypeError("Arguments to path.resolve must be strings");if(!i)return"";e=i+"/"+e,t=me.isAbs(i)}return(t?"/":"")+(e=me.normalizeArray(e.split("/").filter((e=>!!e)),!t).join("/"))||"."},relative:(e,t)=>{function r(e){for(var t=0;t=0&&""===e[r];r--);return t>r?[]:e.slice(t,r-t+1)}e=_e.resolve(e).substr(1),t=_e.resolve(t).substr(1);for(var i=r(e.split("/")),n=r(t.split("/")),s=Math.min(i.length,n.length),o=s,a=0;a0?r:V(e)+1,n=new Array(i),s=H(e,n,0,n.length);return t&&(n.length=s),n}var ge={ttys:[],init:function(){},shutdown:function(){},register:function(e,t){ge.ttys[e]={input:[],output:[],ops:t},we.registerDevice(e,ge.stream_ops)},stream_ops:{open:function(e){var t=ge.ttys[e.node.rdev];if(!t)throw new we.ErrnoError(43);e.tty=t,e.seekable=!1},close:function(e){e.tty.ops.flush(e.tty)},flush:function(e){e.tty.ops.flush(e.tty)},read:function(e,t,r,i,n){if(!e.tty||!e.tty.ops.get_char)throw new we.ErrnoError(60);for(var s=0,o=0;o0?r.slice(0,i).toString("utf-8"):null}else"undefined"!=typeof window&&"function"==typeof window.prompt?null!==(t=window.prompt("Input: "))&&(t+="\n"):"function"==typeof readline&&null!==(t=readline())&&(t+="\n");if(!t)return null;e.input=ye(t,!0)}return e.input.shift()},put_char:function(e,t){null===t||10===t?(w($(e.output,0)),e.output=[]):0!=t&&e.output.push(t)},flush:function(e){e.output&&e.output.length>0&&(w($(e.output,0)),e.output=[])}},default_tty1_ops:{put_char:function(e,t){null===t||10===t?(E($(e.output,0)),e.output=[]):0!=t&&e.output.push(t)},flush:function(e){e.output&&e.output.length>0&&(E($(e.output,0)),e.output=[])}}};function ve(e){e=function(e,t){return Math.ceil(e/t)*t}(e,65536);var t=Br(65536,e);return t?(function(e,t){F.fill(0,e,e+t)}(t,e),t):0}var be={ops_table:null,mount:function(e){return be.createNode(null,"/",16895,0)},createNode:function(e,t,r,i){if(we.isBlkdev(r)||we.isFIFO(r))throw new we.ErrnoError(63);be.ops_table||(be.ops_table={dir:{node:{getattr:be.node_ops.getattr,setattr:be.node_ops.setattr,lookup:be.node_ops.lookup,mknod:be.node_ops.mknod,rename:be.node_ops.rename,unlink:be.node_ops.unlink,rmdir:be.node_ops.rmdir,readdir:be.node_ops.readdir,symlink:be.node_ops.symlink},stream:{llseek:be.stream_ops.llseek}},file:{node:{getattr:be.node_ops.getattr,setattr:be.node_ops.setattr},stream:{llseek:be.stream_ops.llseek,read:be.stream_ops.read,write:be.stream_ops.write,allocate:be.stream_ops.allocate,mmap:be.stream_ops.mmap,msync:be.stream_ops.msync}},link:{node:{getattr:be.node_ops.getattr,setattr:be.node_ops.setattr,readlink:be.node_ops.readlink},stream:{}},chrdev:{node:{getattr:be.node_ops.getattr,setattr:be.node_ops.setattr},stream:we.chrdev_stream_ops}});var n=we.createNode(e,t,r,i);return we.isDir(n.mode)?(n.node_ops=be.ops_table.dir.node,n.stream_ops=be.ops_table.dir.stream,n.contents={}):we.isFile(n.mode)?(n.node_ops=be.ops_table.file.node,n.stream_ops=be.ops_table.file.stream,n.usedBytes=0,n.contents=null):we.isLink(n.mode)?(n.node_ops=be.ops_table.link.node,n.stream_ops=be.ops_table.link.stream):we.isChrdev(n.mode)&&(n.node_ops=be.ops_table.chrdev.node,n.stream_ops=be.ops_table.chrdev.stream),n.timestamp=Date.now(),e&&(e.contents[t]=n,e.timestamp=n.timestamp),n},getFileDataAsTypedArray:function(e){return e.contents?e.contents.subarray?e.contents.subarray(0,e.usedBytes):new Uint8Array(e.contents):new Uint8Array(0)},expandFileStorage:function(e,t){var r=e.contents?e.contents.length:0;if(!(r>=t)){t=Math.max(t,r*(r<1048576?2:1.125)>>>0),0!=r&&(t=Math.max(t,256));var i=e.contents;e.contents=new Uint8Array(t),e.usedBytes>0&&e.contents.set(i.subarray(0,e.usedBytes),0)}},resizeFileStorage:function(e,t){if(e.usedBytes!=t)if(0==t)e.contents=null,e.usedBytes=0;else{var r=e.contents;e.contents=new Uint8Array(t),r&&e.contents.set(r.subarray(0,Math.min(t,e.usedBytes))),e.usedBytes=t}},node_ops:{getattr:function(e){var t={};return t.dev=we.isChrdev(e.mode)?e.id:1,t.ino=e.id,t.mode=e.mode,t.nlink=1,t.uid=0,t.gid=0,t.rdev=e.rdev,we.isDir(e.mode)?t.size=4096:we.isFile(e.mode)?t.size=e.usedBytes:we.isLink(e.mode)?t.size=e.link.length:t.size=0,t.atime=new Date(e.timestamp),t.mtime=new Date(e.timestamp),t.ctime=new Date(e.timestamp),t.blksize=4096,t.blocks=Math.ceil(t.size/t.blksize),t},setattr:function(e,t){void 0!==t.mode&&(e.mode=t.mode),void 0!==t.timestamp&&(e.timestamp=t.timestamp),void 0!==t.size&&be.resizeFileStorage(e,t.size)},lookup:function(e,t){throw we.genericErrors[44]},mknod:function(e,t,r,i){return be.createNode(e,t,r,i)},rename:function(e,t,r){if(we.isDir(e.mode)){var i;try{i=we.lookupNode(t,r)}catch(e){}if(i)for(var n in i.contents)throw new we.ErrnoError(55)}delete e.parent.contents[e.name],e.parent.timestamp=Date.now(),e.name=r,t.contents[r]=e,t.timestamp=e.parent.timestamp,e.parent=t},unlink:function(e,t){delete e.contents[t],e.timestamp=Date.now()},rmdir:function(e,t){var r=we.lookupNode(e,t);for(var i in r.contents)throw new we.ErrnoError(55);delete e.contents[t],e.timestamp=Date.now()},readdir:function(e){var t=[".",".."];for(var r in e.contents)e.contents.hasOwnProperty(r)&&t.push(r);return t},symlink:function(e,t,r){var i=be.createNode(e,t,41471,0);return i.link=r,i},readlink:function(e){if(!we.isLink(e.mode))throw new we.ErrnoError(28);return e.link}},stream_ops:{read:function(e,t,r,i,n){var s=e.node.contents;if(n>=e.node.usedBytes)return 0;var o=Math.min(e.node.usedBytes-n,i);if(o>8&&s.subarray)t.set(s.subarray(n,n+o),r);else for(var a=0;a0||r+t{if(!(e=_e.resolve(we.cwd(),e)))return{path:"",node:null};if((t=Object.assign({follow_mount:!0,recurse_count:0},t)).recurse_count>8)throw new we.ErrnoError(32);for(var r=me.normalizeArray(e.split("/").filter((e=>!!e)),!1),i=we.root,n="/",s=0;s40)throw new we.ErrnoError(32)}}return{path:n,node:i}},getPath:e=>{for(var t;;){if(we.isRoot(e)){var r=e.mount.mountpoint;return t?"/"!==r[r.length-1]?r+"/"+t:r+t:r}t=t?e.name+"/"+t:e.name,e=e.parent}},hashName:(e,t)=>{for(var r=0,i=0;i>>0)%we.nameTable.length},hashAddNode:e=>{var t=we.hashName(e.parent.id,e.name);e.name_next=we.nameTable[t],we.nameTable[t]=e},hashRemoveNode:e=>{var t=we.hashName(e.parent.id,e.name);if(we.nameTable[t]===e)we.nameTable[t]=e.name_next;else for(var r=we.nameTable[t];r;){if(r.name_next===e){r.name_next=e.name_next;break}r=r.name_next}},lookupNode:(e,t)=>{var r=we.mayLookup(e);if(r)throw new we.ErrnoError(r,e);for(var i=we.hashName(e.id,t),n=we.nameTable[i];n;n=n.name_next){var s=n.name;if(n.parent.id===e.id&&s===t)return n}return we.lookup(e,t)},createNode:(e,t,r,i)=>{var n=new we.FSNode(e,t,r,i);return we.hashAddNode(n),n},destroyNode:e=>{we.hashRemoveNode(e)},isRoot:e=>e===e.parent,isMountpoint:e=>!!e.mounted,isFile:e=>32768==(61440&e),isDir:e=>16384==(61440&e),isLink:e=>40960==(61440&e),isChrdev:e=>8192==(61440&e),isBlkdev:e=>24576==(61440&e),isFIFO:e=>4096==(61440&e),isSocket:e=>!(49152&~e),flagModes:{r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090},modeStringToFlags:e=>{var t=we.flagModes[e];if(void 0===t)throw new Error("Unknown file open mode: "+e);return t},flagsToPermissionString:e=>{var t=["r","w","rw"][3&e];return 512&e&&(t+="w"),t},nodePermissions:(e,t)=>we.ignorePermissions||(!t.includes("r")||292&e.mode)&&(!t.includes("w")||146&e.mode)&&(!t.includes("x")||73&e.mode)?0:2,mayLookup:e=>{var t=we.nodePermissions(e,"x");return t||(e.node_ops.lookup?0:2)},mayCreate:(e,t)=>{try{return we.lookupNode(e,t),20}catch(e){}return we.nodePermissions(e,"wx")},mayDelete:(e,t,r)=>{var i;try{i=we.lookupNode(e,t)}catch(e){return e.errno}var n=we.nodePermissions(e,"wx");if(n)return n;if(r){if(!we.isDir(i.mode))return 54;if(we.isRoot(i)||we.getPath(i)===we.cwd())return 10}else if(we.isDir(i.mode))return 31;return 0},mayOpen:(e,t)=>e?we.isLink(e.mode)?32:we.isDir(e.mode)&&("r"!==we.flagsToPermissionString(t)||512&t)?31:we.nodePermissions(e,we.flagsToPermissionString(t)):44,MAX_OPEN_FDS:4096,nextfd:(e=0,t=we.MAX_OPEN_FDS)=>{for(var r=e;r<=t;r++)if(!we.streams[r])return r;throw new we.ErrnoError(33)},getStream:e=>we.streams[e],createStream:(e,t,r)=>{we.FSStream||(we.FSStream=function(){this.shared={}},we.FSStream.prototype={},Object.defineProperties(we.FSStream.prototype,{object:{get:function(){return this.node},set:function(e){this.node=e}},isRead:{get:function(){return 1!=(2097155&this.flags)}},isWrite:{get:function(){return!!(2097155&this.flags)}},isAppend:{get:function(){return 1024&this.flags}},flags:{get:function(){return this.shared.flags},set:function(e){this.shared.flags=e}},position:{get:function(){return this.shared.position},set:function(e){this.shared.position=e}}})),e=Object.assign(new we.FSStream,e);var i=we.nextfd(t,r);return e.fd=i,we.streams[i]=e,e},closeStream:e=>{we.streams[e]=null},chrdev_stream_ops:{open:e=>{var t=we.getDevice(e.node.rdev);e.stream_ops=t.stream_ops,e.stream_ops.open&&e.stream_ops.open(e)},llseek:()=>{throw new we.ErrnoError(70)}},major:e=>e>>8,minor:e=>255&e,makedev:(e,t)=>e<<8|t,registerDevice:(e,t)=>{we.devices[e]={stream_ops:t}},getDevice:e=>we.devices[e],getMounts:e=>{for(var t=[],r=[e];r.length;){var i=r.pop();t.push(i),r.push.apply(r,i.mounts)}return t},syncfs:(e,t)=>{"function"==typeof e&&(t=e,e=!1),we.syncFSRequests++,we.syncFSRequests>1&&E("warning: "+we.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work");var r=we.getMounts(we.root.mount),i=0;function n(e){return we.syncFSRequests--,t(e)}function s(e){if(e)return s.errored?void 0:(s.errored=!0,n(e));++i>=r.length&&n(null)}r.forEach((t=>{if(!t.type.syncfs)return s(null);t.type.syncfs(t,e,s)}))},mount:(e,t,r)=>{var i,n="/"===r,s=!r;if(n&&we.root)throw new we.ErrnoError(10);if(!n&&!s){var o=we.lookupPath(r,{follow_mount:!1});if(r=o.path,i=o.node,we.isMountpoint(i))throw new we.ErrnoError(10);if(!we.isDir(i.mode))throw new we.ErrnoError(54)}var a={type:e,opts:t,mountpoint:r,mounts:[]},d=e.mount(a);return d.mount=a,a.root=d,n?we.root=d:i&&(i.mounted=a,i.mount&&i.mount.mounts.push(a)),d},unmount:e=>{var t=we.lookupPath(e,{follow_mount:!1});if(!we.isMountpoint(t.node))throw new we.ErrnoError(28);var r=t.node,i=r.mounted,n=we.getMounts(i);Object.keys(we.nameTable).forEach((e=>{for(var t=we.nameTable[e];t;){var r=t.name_next;n.includes(t.mount)&&we.destroyNode(t),t=r}})),r.mounted=null;var s=r.mount.mounts.indexOf(i);r.mount.mounts.splice(s,1)},lookup:(e,t)=>e.node_ops.lookup(e,t),mknod:(e,t,r)=>{var i=we.lookupPath(e,{parent:!0}).node,n=me.basename(e);if(!n||"."===n||".."===n)throw new we.ErrnoError(28);var s=we.mayCreate(i,n);if(s)throw new we.ErrnoError(s);if(!i.node_ops.mknod)throw new we.ErrnoError(63);return i.node_ops.mknod(i,n,t,r)},create:(e,t)=>(t=void 0!==t?t:438,t&=4095,t|=32768,we.mknod(e,t,0)),mkdir:(e,t)=>(t=void 0!==t?t:511,t&=1023,t|=16384,we.mknod(e,t,0)),mkdirTree:(e,t)=>{for(var r=e.split("/"),i="",n=0;n(void 0===r&&(r=t,t=438),t|=8192,we.mknod(e,t,r)),symlink:(e,t)=>{if(!_e.resolve(e))throw new we.ErrnoError(44);var r=we.lookupPath(t,{parent:!0}).node;if(!r)throw new we.ErrnoError(44);var i=me.basename(t),n=we.mayCreate(r,i);if(n)throw new we.ErrnoError(n);if(!r.node_ops.symlink)throw new we.ErrnoError(63);return r.node_ops.symlink(r,i,e)},rename:(e,t)=>{var r,i,n=me.dirname(e),s=me.dirname(t),o=me.basename(e),a=me.basename(t);if(r=we.lookupPath(e,{parent:!0}).node,i=we.lookupPath(t,{parent:!0}).node,!r||!i)throw new we.ErrnoError(44);if(r.mount!==i.mount)throw new we.ErrnoError(75);var d,l=we.lookupNode(r,o),u=_e.relative(e,s);if("."!==u.charAt(0))throw new we.ErrnoError(28);if("."!==(u=_e.relative(t,n)).charAt(0))throw new we.ErrnoError(55);try{d=we.lookupNode(i,a)}catch(e){}if(l!==d){var c=we.isDir(l.mode),f=we.mayDelete(r,o,c);if(f)throw new we.ErrnoError(f);if(f=d?we.mayDelete(i,a,c):we.mayCreate(i,a))throw new we.ErrnoError(f);if(!r.node_ops.rename)throw new we.ErrnoError(63);if(we.isMountpoint(l)||d&&we.isMountpoint(d))throw new we.ErrnoError(10);if(i!==r&&(f=we.nodePermissions(r,"w")))throw new we.ErrnoError(f);we.hashRemoveNode(l);try{r.node_ops.rename(l,i,a)}catch(e){throw e}finally{we.hashAddNode(l)}}},rmdir:e=>{var t=we.lookupPath(e,{parent:!0}).node,r=me.basename(e),i=we.lookupNode(t,r),n=we.mayDelete(t,r,!0);if(n)throw new we.ErrnoError(n);if(!t.node_ops.rmdir)throw new we.ErrnoError(63);if(we.isMountpoint(i))throw new we.ErrnoError(10);t.node_ops.rmdir(t,r),we.destroyNode(i)},readdir:e=>{var t=we.lookupPath(e,{follow:!0}).node;if(!t.node_ops.readdir)throw new we.ErrnoError(54);return t.node_ops.readdir(t)},unlink:e=>{var t=we.lookupPath(e,{parent:!0}).node;if(!t)throw new we.ErrnoError(44);var r=me.basename(e),i=we.lookupNode(t,r),n=we.mayDelete(t,r,!1);if(n)throw new we.ErrnoError(n);if(!t.node_ops.unlink)throw new we.ErrnoError(63);if(we.isMountpoint(i))throw new we.ErrnoError(10);t.node_ops.unlink(t,r),we.destroyNode(i)},readlink:e=>{var t=we.lookupPath(e).node;if(!t)throw new we.ErrnoError(44);if(!t.node_ops.readlink)throw new we.ErrnoError(28);return _e.resolve(we.getPath(t.parent),t.node_ops.readlink(t))},stat:(e,t)=>{var r=we.lookupPath(e,{follow:!t}).node;if(!r)throw new we.ErrnoError(44);if(!r.node_ops.getattr)throw new we.ErrnoError(63);return r.node_ops.getattr(r)},lstat:e=>we.stat(e,!0),chmod:(e,t,r)=>{var i;if(!(i="string"==typeof e?we.lookupPath(e,{follow:!r}).node:e).node_ops.setattr)throw new we.ErrnoError(63);i.node_ops.setattr(i,{mode:4095&t|-4096&i.mode,timestamp:Date.now()})},lchmod:(e,t)=>{we.chmod(e,t,!0)},fchmod:(e,t)=>{var r=we.getStream(e);if(!r)throw new we.ErrnoError(8);we.chmod(r.node,t)},chown:(e,t,r,i)=>{var n;if(!(n="string"==typeof e?we.lookupPath(e,{follow:!i}).node:e).node_ops.setattr)throw new we.ErrnoError(63);n.node_ops.setattr(n,{timestamp:Date.now()})},lchown:(e,t,r)=>{we.chown(e,t,r,!0)},fchown:(e,t,r)=>{var i=we.getStream(e);if(!i)throw new we.ErrnoError(8);we.chown(i.node,t,r)},truncate:(e,t)=>{if(t<0)throw new we.ErrnoError(28);var r;if(!(r="string"==typeof e?we.lookupPath(e,{follow:!0}).node:e).node_ops.setattr)throw new we.ErrnoError(63);if(we.isDir(r.mode))throw new we.ErrnoError(31);if(!we.isFile(r.mode))throw new we.ErrnoError(28);var i=we.nodePermissions(r,"w");if(i)throw new we.ErrnoError(i);r.node_ops.setattr(r,{size:t,timestamp:Date.now()})},ftruncate:(e,t)=>{var r=we.getStream(e);if(!r)throw new we.ErrnoError(8);if(!(2097155&r.flags))throw new we.ErrnoError(28);we.truncate(r.node,t)},utime:(e,t,r)=>{var i=we.lookupPath(e,{follow:!0}).node;i.node_ops.setattr(i,{timestamp:Math.max(t,r)})},open:(e,r,i)=>{if(""===e)throw new we.ErrnoError(44);var n;if(i=void 0===i?438:i,i=64&(r="string"==typeof r?we.modeStringToFlags(r):r)?4095&i|32768:0,"object"==typeof e)n=e;else{e=me.normalize(e);try{n=we.lookupPath(e,{follow:!(131072&r)}).node}catch(e){}}var s=!1;if(64&r)if(n){if(128&r)throw new we.ErrnoError(20)}else n=we.mknod(e,i,0),s=!0;if(!n)throw new we.ErrnoError(44);if(we.isChrdev(n.mode)&&(r&=-513),65536&r&&!we.isDir(n.mode))throw new we.ErrnoError(54);if(!s){var o=we.mayOpen(n,r);if(o)throw new we.ErrnoError(o)}512&r&&!s&&we.truncate(n,0),r&=-131713;var a=we.createStream({node:n,path:we.getPath(n),flags:r,seekable:!0,position:0,stream_ops:n.stream_ops,ungotten:[],error:!1});return a.stream_ops.open&&a.stream_ops.open(a),!t.logReadFiles||1&r||(we.readFiles||(we.readFiles={}),e in we.readFiles||(we.readFiles[e]=1)),a},close:e=>{if(we.isClosed(e))throw new we.ErrnoError(8);e.getdents&&(e.getdents=null);try{e.stream_ops.close&&e.stream_ops.close(e)}catch(e){throw e}finally{we.closeStream(e.fd)}e.fd=null},isClosed:e=>null===e.fd,llseek:(e,t,r)=>{if(we.isClosed(e))throw new we.ErrnoError(8);if(!e.seekable||!e.stream_ops.llseek)throw new we.ErrnoError(70);if(0!=r&&1!=r&&2!=r)throw new we.ErrnoError(28);return e.position=e.stream_ops.llseek(e,t,r),e.ungotten=[],e.position},read:(e,t,r,i,n)=>{if(i<0||n<0)throw new we.ErrnoError(28);if(we.isClosed(e))throw new we.ErrnoError(8);if(1==(2097155&e.flags))throw new we.ErrnoError(8);if(we.isDir(e.node.mode))throw new we.ErrnoError(31);if(!e.stream_ops.read)throw new we.ErrnoError(28);var s=void 0!==n;if(s){if(!e.seekable)throw new we.ErrnoError(70)}else n=e.position;var o=e.stream_ops.read(e,t,r,i,n);return s||(e.position+=o),o},write:(e,t,r,i,n,s)=>{if(i<0||n<0)throw new we.ErrnoError(28);if(we.isClosed(e))throw new we.ErrnoError(8);if(!(2097155&e.flags))throw new we.ErrnoError(8);if(we.isDir(e.node.mode))throw new we.ErrnoError(31);if(!e.stream_ops.write)throw new we.ErrnoError(28);e.seekable&&1024&e.flags&&we.llseek(e,0,2);var o=void 0!==n;if(o){if(!e.seekable)throw new we.ErrnoError(70)}else n=e.position;var a=e.stream_ops.write(e,t,r,i,n,s);return o||(e.position+=a),a},allocate:(e,t,r)=>{if(we.isClosed(e))throw new we.ErrnoError(8);if(t<0||r<=0)throw new we.ErrnoError(28);if(!(2097155&e.flags))throw new we.ErrnoError(8);if(!we.isFile(e.node.mode)&&!we.isDir(e.node.mode))throw new we.ErrnoError(43);if(!e.stream_ops.allocate)throw new we.ErrnoError(138);e.stream_ops.allocate(e,t,r)},mmap:(e,t,r,i,n)=>{if(2&i&&!(2&n)&&2!=(2097155&e.flags))throw new we.ErrnoError(2);if(1==(2097155&e.flags))throw new we.ErrnoError(2);if(!e.stream_ops.mmap)throw new we.ErrnoError(43);return e.stream_ops.mmap(e,t,r,i,n)},msync:(e,t,r,i,n)=>e&&e.stream_ops.msync?e.stream_ops.msync(e,t,r,i,n):0,munmap:e=>0,ioctl:(e,t,r)=>{if(!e.stream_ops.ioctl)throw new we.ErrnoError(59);return e.stream_ops.ioctl(e,t,r)},readFile:(e,t={})=>{if(t.flags=t.flags||0,t.encoding=t.encoding||"binary","utf8"!==t.encoding&&"binary"!==t.encoding)throw new Error('Invalid encoding type "'+t.encoding+'"');var r,i=we.open(e,t.flags),n=we.stat(e).size,s=new Uint8Array(n);return we.read(i,s,0,n,0),"utf8"===t.encoding?r=$(s,0):"binary"===t.encoding&&(r=s),we.close(i),r},writeFile:(e,t,r={})=>{r.flags=r.flags||577;var i=we.open(e,r.flags,r.mode);if("string"==typeof t){var n=new Uint8Array(V(t)+1),s=H(t,n,0,n.length);we.write(i,n,0,s,void 0,r.canOwn)}else{if(!ArrayBuffer.isView(t))throw new Error("Unsupported data type");we.write(i,t,0,t.byteLength,void 0,r.canOwn)}we.close(i)},cwd:()=>we.currentPath,chdir:e=>{var t=we.lookupPath(e,{follow:!0});if(null===t.node)throw new we.ErrnoError(44);if(!we.isDir(t.node.mode))throw new we.ErrnoError(54);var r=we.nodePermissions(t.node,"x");if(r)throw new we.ErrnoError(r);we.currentPath=t.path},createDefaultDirectories:()=>{we.mkdir("/tmp"),we.mkdir("/home"),we.mkdir("/home/web_user")},createDefaultDevices:()=>{we.mkdir("/dev"),we.registerDevice(we.makedev(1,3),{read:()=>0,write:(e,t,r,i,n)=>i}),we.mkdev("/dev/null",we.makedev(1,3)),ge.register(we.makedev(5,0),ge.default_tty_ops),ge.register(we.makedev(6,0),ge.default_tty1_ops),we.mkdev("/dev/tty",we.makedev(5,0)),we.mkdev("/dev/tty1",we.makedev(6,0));var e=function(){if("object"==typeof crypto&&"function"==typeof crypto.getRandomValues){var e=new Uint8Array(1);return()=>(crypto.getRandomValues(e),e[0])}if(m)try{var t=require("crypto");return()=>t.randomBytes(1)[0]}catch(e){}return()=>ie("randomDevice")}();we.createDevice("/dev","random",e),we.createDevice("/dev","urandom",e),we.mkdir("/dev/shm"),we.mkdir("/dev/shm/tmp")},createSpecialDirectories:()=>{we.mkdir("/proc");var e=we.mkdir("/proc/self");we.mkdir("/proc/self/fd"),we.mount({mount:()=>{var t=we.createNode(e,"fd",16895,73);return t.node_ops={lookup:(e,t)=>{var r=+t,i=we.getStream(r);if(!i)throw new we.ErrnoError(8);var n={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>i.path}};return n.parent=n,n}},t}},{},"/proc/self/fd")},createStandardStreams:()=>{t.stdin?we.createDevice("/dev","stdin",t.stdin):we.symlink("/dev/tty","/dev/stdin"),t.stdout?we.createDevice("/dev","stdout",null,t.stdout):we.symlink("/dev/tty","/dev/stdout"),t.stderr?we.createDevice("/dev","stderr",null,t.stderr):we.symlink("/dev/tty1","/dev/stderr"),we.open("/dev/stdin",0),we.open("/dev/stdout",1),we.open("/dev/stderr",1)},ensureErrnoError:()=>{we.ErrnoError||(we.ErrnoError=function(e,t){this.node=t,this.setErrno=function(e){this.errno=e},this.setErrno(e),this.message="FS error"},we.ErrnoError.prototype=new Error,we.ErrnoError.prototype.constructor=we.ErrnoError,[44].forEach((e=>{we.genericErrors[e]=new we.ErrnoError(e),we.genericErrors[e].stack=""})))},staticInit:()=>{we.ensureErrnoError(),we.nameTable=new Array(4096),we.mount(be,{},"/"),we.createDefaultDirectories(),we.createDefaultDevices(),we.createSpecialDirectories(),we.filesystems={MEMFS:be}},init:(e,r,i)=>{we.init.initialized=!0,we.ensureErrnoError(),t.stdin=e||t.stdin,t.stdout=r||t.stdout,t.stderr=i||t.stderr,we.createStandardStreams()},quit:()=>{we.init.initialized=!1;for(var e=0;e{var r=0;return e&&(r|=365),t&&(r|=146),r},findObject:(e,t)=>{var r=we.analyzePath(e,t);return r.exists?r.object:null},analyzePath:(e,t)=>{try{e=(i=we.lookupPath(e,{follow:!t})).path}catch(e){}var r={isRoot:!1,exists:!1,error:0,name:null,path:null,object:null,parentExists:!1,parentPath:null,parentObject:null};try{var i=we.lookupPath(e,{parent:!0});r.parentExists=!0,r.parentPath=i.path,r.parentObject=i.node,r.name=me.basename(e),i=we.lookupPath(e,{follow:!t}),r.exists=!0,r.path=i.path,r.object=i.node,r.name=i.node.name,r.isRoot="/"===i.path}catch(e){r.error=e.errno}return r},createPath:(e,t,r,i)=>{e="string"==typeof e?e:we.getPath(e);for(var n=t.split("/").reverse();n.length;){var s=n.pop();if(s){var o=me.join2(e,s);try{we.mkdir(o)}catch(e){}e=o}}return o},createFile:(e,t,r,i,n)=>{var s=me.join2("string"==typeof e?e:we.getPath(e),t),o=we.getMode(i,n);return we.create(s,o)},createDataFile:(e,t,r,i,n,s)=>{var o=t;e&&(e="string"==typeof e?e:we.getPath(e),o=t?me.join2(e,t):e);var a=we.getMode(i,n),d=we.create(o,a);if(r){if("string"==typeof r){for(var l=new Array(r.length),u=0,c=r.length;u{var n=me.join2("string"==typeof e?e:we.getPath(e),t),s=we.getMode(!!r,!!i);we.createDevice.major||(we.createDevice.major=64);var o=we.makedev(we.createDevice.major++,0);return we.registerDevice(o,{open:e=>{e.seekable=!1},close:e=>{i&&i.buffer&&i.buffer.length&&i(10)},read:(e,t,i,n,s)=>{for(var o=0,a=0;a{for(var o=0;o{if(e.isDevice||e.isFolder||e.link||e.contents)return!0;if("undefined"!=typeof XMLHttpRequest)throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.");if(!n)throw new Error("Cannot load without read() or XMLHttpRequest.");try{e.contents=ye(n(e.url),!0),e.usedBytes=e.contents.length}catch(e){throw new we.ErrnoError(29)}},createLazyFile:(e,t,r,i,n)=>{function s(){this.lengthKnown=!1,this.chunks=[]}if(s.prototype.get=function(e){if(!(e>this.length-1||e<0)){var t=e%this.chunkSize,r=e/this.chunkSize|0;return this.getter(r)[t]}},s.prototype.setDataGetter=function(e){this.getter=e},s.prototype.cacheLength=function(){var e=new XMLHttpRequest;if(e.open("HEAD",r,!1),e.send(null),!(e.status>=200&&e.status<300||304===e.status))throw new Error("Couldn't load "+r+". Status: "+e.status);var t,i=Number(e.getResponseHeader("Content-length")),n=(t=e.getResponseHeader("Accept-Ranges"))&&"bytes"===t,s=(t=e.getResponseHeader("Content-Encoding"))&&"gzip"===t,o=1048576;n||(o=i);var a=this;a.setDataGetter((e=>{var t=e*o,n=(e+1)*o-1;if(n=Math.min(n,i-1),void 0===a.chunks[e]&&(a.chunks[e]=((e,t)=>{if(e>t)throw new Error("invalid range ("+e+", "+t+") or no bytes requested!");if(t>i-1)throw new Error("only "+i+" bytes available! programmer error!");var n=new XMLHttpRequest;if(n.open("GET",r,!1),i!==o&&n.setRequestHeader("Range","bytes="+e+"-"+t),n.responseType="arraybuffer",n.overrideMimeType&&n.overrideMimeType("text/plain; charset=x-user-defined"),n.send(null),!(n.status>=200&&n.status<300||304===n.status))throw new Error("Couldn't load "+r+". Status: "+n.status);return void 0!==n.response?new Uint8Array(n.response||[]):ye(n.responseText||"",!0)})(t,n)),void 0===a.chunks[e])throw new Error("doXHR failed!");return a.chunks[e]})),!s&&i||(o=i=1,i=this.getter(0).length,o=i,w("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=i,this._chunkSize=o,this.lengthKnown=!0},"undefined"!=typeof XMLHttpRequest){if(!p)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var o=new s;Object.defineProperties(o,{length:{get:function(){return this.lengthKnown||this.cacheLength(),this._length}},chunkSize:{get:function(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}});var a={isDevice:!1,contents:o}}else a={isDevice:!1,url:r};var d=we.createFile(e,t,a,i,n);a.contents?d.contents=a.contents:a.url&&(d.contents=null,d.url=a.url),Object.defineProperties(d,{usedBytes:{get:function(){return this.contents.length}}});var l={};function u(e,t,r,i,n){var s=e.node.contents;if(n>=s.length)return 0;var o=Math.min(s.length-n,i);if(s.slice)for(var a=0;a{var t=d.stream_ops[e];l[e]=function(){return we.forceLoadFile(d),t.apply(null,arguments)}})),l.read=(e,t,r,i,n)=>(we.forceLoadFile(d),u(e,t,r,i,n)),l.mmap=(e,t,r,i,n)=>{we.forceLoadFile(d);var s=ve(t);if(!s)throw new we.ErrnoError(48);return u(e,P,s,t,r),{ptr:s,allocated:!0}},d.stream_ops=l,d},createPreloadedFile:(e,t,r,i,n,o,a,d,l,u)=>{var c=t?_e.resolve(me.join2(e,t)):e;function f(r){function s(r){u&&u(),d||we.createDataFile(e,t,r,i,n,l),o&&o(),re()}Browser.handledByPreloadPlugin(r,c,s,(()=>{a&&a(),re()}))||s(r)}te(),"string"==typeof r?function(e,t,r,i){var n=i?"":"al "+e;s(e,(r=>{C(r,'Loading data file "'+e+'" failed (no arrayBuffer).'),t(new Uint8Array(r)),n&&re()}),(t=>{if(!r)throw'Loading data file "'+e+'" failed.';r()})),n&&te()}(r,(e=>f(e)),a):f(r)},indexedDB:()=>window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB,DB_NAME:()=>"EM_FS_"+window.location.pathname,DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:(e,t,r)=>{t=t||(()=>{}),r=r||(()=>{});var i=we.indexedDB();try{var n=i.open(we.DB_NAME(),we.DB_VERSION)}catch(e){return r(e)}n.onupgradeneeded=()=>{w("creating db"),n.result.createObjectStore(we.DB_STORE_NAME)},n.onsuccess=()=>{var i=n.result.transaction([we.DB_STORE_NAME],"readwrite"),s=i.objectStore(we.DB_STORE_NAME),o=0,a=0,d=e.length;function l(){0==a?t():r()}e.forEach((e=>{var t=s.put(we.analyzePath(e).object.contents,e);t.onsuccess=()=>{++o+a==d&&l()},t.onerror=()=>{a++,o+a==d&&l()}})),i.onerror=r},n.onerror=r},loadFilesFromDB:(e,t,r)=>{t=t||(()=>{}),r=r||(()=>{});var i=we.indexedDB();try{var n=i.open(we.DB_NAME(),we.DB_VERSION)}catch(e){return r(e)}n.onupgradeneeded=r,n.onsuccess=()=>{var i=n.result;try{var s=i.transaction([we.DB_STORE_NAME],"readonly")}catch(e){return void r(e)}var o=s.objectStore(we.DB_STORE_NAME),a=0,d=0,l=e.length;function u(){0==d?t():r()}e.forEach((e=>{var t=o.get(e);t.onsuccess=()=>{we.analyzePath(e).exists&&we.unlink(e),we.createDataFile(me.dirname(e),me.basename(e),t.result,!0,!0,!0),++a+d==l&&u()},t.onerror=()=>{d++,a+d==l&&u()}})),s.onerror=r},n.onerror=r}},Ee={DEFAULT_POLLMASK:5,calculateAt:function(e,t,r){if(me.isAbs(t))return t;var i;if(-100===e)i=we.cwd();else{var n=we.getStream(e);if(!n)throw new we.ErrnoError(8);i=n.path}if(0==t.length){if(!r)throw new we.ErrnoError(44);return i}return me.join2(i,t)},doStat:function(e,t,r){try{var i=e(t)}catch(e){if(e&&e.node&&me.normalize(t)!==me.normalize(we.getPath(e.node)))return-54;throw e}return R[r>>2]=i.dev,R[r+4>>2]=0,R[r+8>>2]=i.ino,R[r+12>>2]=i.mode,R[r+16>>2]=i.nlink,R[r+20>>2]=i.uid,R[r+24>>2]=i.gid,R[r+28>>2]=i.rdev,R[r+32>>2]=0,oe=[i.size>>>0,(se=i.size,+Math.abs(se)>=1?se>0?(0|Math.min(+Math.floor(se/4294967296),4294967295))>>>0:~~+Math.ceil((se-+(~~se>>>0))/4294967296)>>>0:0)],R[r+40>>2]=oe[0],R[r+44>>2]=oe[1],R[r+48>>2]=4096,R[r+52>>2]=i.blocks,oe=[Math.floor(i.atime.getTime()/1e3)>>>0,(se=Math.floor(i.atime.getTime()/1e3),+Math.abs(se)>=1?se>0?(0|Math.min(+Math.floor(se/4294967296),4294967295))>>>0:~~+Math.ceil((se-+(~~se>>>0))/4294967296)>>>0:0)],R[r+56>>2]=oe[0],R[r+60>>2]=oe[1],R[r+64>>2]=0,oe=[Math.floor(i.mtime.getTime()/1e3)>>>0,(se=Math.floor(i.mtime.getTime()/1e3),+Math.abs(se)>=1?se>0?(0|Math.min(+Math.floor(se/4294967296),4294967295))>>>0:~~+Math.ceil((se-+(~~se>>>0))/4294967296)>>>0:0)],R[r+72>>2]=oe[0],R[r+76>>2]=oe[1],R[r+80>>2]=0,oe=[Math.floor(i.ctime.getTime()/1e3)>>>0,(se=Math.floor(i.ctime.getTime()/1e3),+Math.abs(se)>=1?se>0?(0|Math.min(+Math.floor(se/4294967296),4294967295))>>>0:~~+Math.ceil((se-+(~~se>>>0))/4294967296)>>>0:0)],R[r+88>>2]=oe[0],R[r+92>>2]=oe[1],R[r+96>>2]=0,oe=[i.ino>>>0,(se=i.ino,+Math.abs(se)>=1?se>0?(0|Math.min(+Math.floor(se/4294967296),4294967295))>>>0:~~+Math.ceil((se-+(~~se>>>0))/4294967296)>>>0:0)],R[r+104>>2]=oe[0],R[r+108>>2]=oe[1],0},doMsync:function(e,t,r,i,n){var s=F.slice(e,e+r);we.msync(t,s,n,r,i)},varargs:void 0,get:function(){return Ee.varargs+=4,R[Ee.varargs-4>>2]},getStr:function(e){return G(e)},getStreamFromFD:function(e){var t=we.getStream(e);if(!t)throw new we.ErrnoError(8);return t}};function Se(e){if(_)return lr(1,1,e);T=e,Z()||(Ue.terminateAllThreads(),t.onExit&&t.onExit(e),B=!0),f(e,new fe(e))}var xe=function(e,t){if(T=e,!t&&_)throw ke(e),"unwind";Se(e)},Ue={unusedWorkers:[],runningWorkers:[],tlsInitFunctions:[],pthreads:{},init:function(){_?Ue.initWorker():Ue.initMainThread()},initMainThread:function(){},initWorker:function(){k=!1},setExitStatus:function(e){T=e},terminateAllThreads:function(){for(var e in Ue.pthreads)(r=Ue.pthreads[e])&&Ue.returnWorkerToPool(r);for(var t=0;t{var n,s=i.data,o=s.cmd;if(e.pthread_ptr&&(Ue.currentProxiedOperationCallerThread=e.pthread_ptr),s.targetThread&&s.targetThread!=Tr()){var a=Ue.pthreads[s.targetThread];return a?a.postMessage(s,s.transferList):E('Internal error! Worker sent a message "'+o+'" to target pthread '+s.targetThread+", but that thread no longer exists!"),void(Ue.currentProxiedOperationCallerThread=void 0)}"processProxyingQueue"===o?ir(s.queue):"spawnThread"===o?pe(s):"cleanupThread"===o?he(s.thread):"killThread"===o?function(e){var t=Ue.pthreads[e];delete Ue.pthreads[e],t.terminate(),Lr(e),Ue.runningWorkers.splice(Ue.runningWorkers.indexOf(t),1),t.pthread_ptr=0}(s.thread):"cancelThread"===o?(n=s.thread,Ue.pthreads[n].postMessage({cmd:"cancel"})):"loaded"===o?(e.loaded=!0,r&&r(e),e.runPthread&&(e.runPthread(),delete e.runPthread)):"print"===o?w("Thread "+s.threadId+": "+s.text):"printErr"===o?E("Thread "+s.threadId+": "+s.text):"alert"===o?alert("Thread "+s.threadId+": "+s.text):"setimmediate"===s.target?e.postMessage(s):"onAbort"===o?t.onAbort&&t.onAbort(s.arg):o&&E("worker sent an unknown command "+o),Ue.currentProxiedOperationCallerThread=void 0},e.onerror=e=>{throw E("worker sent an error! "+e.filename+":"+e.lineno+": "+e.message),e},m&&(e.on("message",(function(t){e.onmessage({data:t})})),e.on("error",(function(t){e.onerror(t)})),e.on("detachedExit",(function(){}))),e.postMessage({cmd:"load",urlOrBlob:t.mainScriptUrlOrBlob,wasmMemory:U,wasmModule:A})},allocateUnusedWorker:function(){if(t.locateFile){var e=g("decoder-pro-mt-worker.worker.js");Ue.unusedWorkers.push(new Worker(e))}else Ue.unusedWorkers.push(new Worker(new URL("decoder-pro-mt-worker.worker.js","undefined"==typeof document&&"undefined"==typeof location?new(require("url").URL)("file:"+__filename).href:"undefined"==typeof document?location.href:document.currentScript&&document.currentScript.src||new URL("decoder-pro-mt.js",document.baseURI).href)))},getNewWorker:function(){return 0==Ue.unusedWorkers.length&&(Ue.allocateUnusedWorker(),Ue.loadWasmModuleToWorker(Ue.unusedWorkers[0])),Ue.unusedWorkers.pop()}};function Ae(e){for(;e.length>0;)e.shift()(t)}function ke(e){if(_)return lr(2,0,e);try{xe(e)}catch(e){!function(e){if(e instanceof fe||"unwind"==e)return T;f(1,e)}(e)}}t.PThread=Ue,t.establishStackSpace=function(){var e=Tr(),t=R[e+44>>2],r=R[e+48>>2];Mr(t,t-r),Nr(t)};var Te=[];function Be(e){var t=Te[e];return t||(e>=Te.length&&(Te.length=e+1),Te[e]=t=j.get(e)),t}function Ce(e){this.excPtr=e,this.ptr=e-24,this.set_type=function(e){M[this.ptr+4>>2]=e},this.get_type=function(){return M[this.ptr+4>>2]},this.set_destructor=function(e){M[this.ptr+8>>2]=e},this.get_destructor=function(){return M[this.ptr+8>>2]},this.set_refcount=function(e){R[this.ptr>>2]=e},this.set_caught=function(e){e=e?1:0,P[this.ptr+12|0]=e},this.get_caught=function(){return 0!=P[this.ptr+12|0]},this.set_rethrown=function(e){e=e?1:0,P[this.ptr+13|0]=e},this.get_rethrown=function(){return 0!=P[this.ptr+13|0]},this.init=function(e,t){this.set_adjusted_ptr(0),this.set_type(e),this.set_destructor(t),this.set_refcount(0),this.set_caught(!1),this.set_rethrown(!1)},this.add_ref=function(){Atomics.add(R,this.ptr+0>>2,1)},this.release_ref=function(){return 1===Atomics.sub(R,this.ptr+0>>2,1)},this.set_adjusted_ptr=function(e){M[this.ptr+16>>2]=e},this.get_adjusted_ptr=function(){return M[this.ptr+16>>2]},this.get_exception_ptr=function(){if($r(this.get_type()))return M[this.excPtr>>2];var e=this.get_adjusted_ptr();return 0!==e?e:this.excPtr}}function De(e,t,r,i){return _?lr(3,1,e,t,r,i):Pe(e,t,r,i)}function Pe(e,t,r,i){if("undefined"==typeof SharedArrayBuffer)return E("Current environment does not support SharedArrayBuffer, pthreads are not available!"),6;var n=[];if(_&&0===n.length)return De(e,t,r,i);var s={startRoutine:r,pthread_ptr:e,arg:i,transferList:n};return _?(s.cmd="spawnThread",postMessage(s,n),0):pe(s)}function Fe(e,t,r){if(_)return lr(4,1,e,t,r);Ee.varargs=r;try{var i=Ee.getStreamFromFD(e);switch(t){case 0:return(n=Ee.get())<0?-28:we.createStream(i,n).fd;case 1:case 2:case 6:case 7:return 0;case 3:return i.flags;case 4:var n=Ee.get();return i.flags|=n,0;case 5:return n=Ee.get(),I[n+0>>1]=2,0;case 16:case 8:default:return-28;case 9:return s=28,R[kr()>>2]=s,-1}}catch(e){if(void 0===we||!(e instanceof we.ErrnoError))throw e;return-e.errno}var s}function Ie(e,t,r,i){if(_)return lr(5,1,e,t,r,i);Ee.varargs=i;try{t=Ee.getStr(t),t=Ee.calculateAt(e,t);var n=i?Ee.get():0;return we.open(t,r,n).fd}catch(e){if(void 0===we||!(e instanceof we.ErrnoError))throw e;return-e.errno}}function Le(e){switch(e){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+e)}}t.invokeEntryPoint=function(e,t){var r=Be(e)(t);Z()?Ue.setExitStatus(r):Rr(r)};var Re=void 0;function Me(e){for(var t="",r=e;F[r];)t+=Re[F[r++]];return t}var ze={},Ne={},Oe={},$e=48,Ge=57;function He(e){if(void 0===e)return"_unknown";var t=(e=e.replace(/[^a-zA-Z0-9_]/g,"$")).charCodeAt(0);return t>=$e&&t<=Ge?"_"+e:e}function Ve(e,t){return e=He(e),new Function("body","return function "+e+'() {\n "use strict"; return body.apply(this, arguments);\n};\n')(t)}function We(e,t){var r=Ve(t,(function(e){this.name=t,this.message=e;var r=new Error(e).stack;void 0!==r&&(this.stack=this.toString()+"\n"+r.replace(/^Error(:[^\n]*)?\n/,""))}));return r.prototype=Object.create(e.prototype),r.prototype.constructor=r,r.prototype.toString=function(){return void 0===this.message?this.name:this.name+": "+this.message},r}var je=void 0;function Ye(e){throw new je(e)}var qe=void 0;function Ke(e){throw new qe(e)}function Xe(e,t,r){function i(t){var i=r(t);i.length!==e.length&&Ke("Mismatched type converter count");for(var n=0;n{Ne.hasOwnProperty(e)?n[t]=Ne[e]:(s.push(e),ze.hasOwnProperty(e)||(ze[e]=[]),ze[e].push((()=>{n[t]=Ne[e],++o===s.length&&i(n)})))})),0===s.length&&i(n)}function Ze(e,t,r={}){if(!("argPackAdvance"in t))throw new TypeError("registerType registeredInstance requires argPackAdvance");var i=t.name;if(e||Ye('type "'+i+'" must have a positive integer typeid pointer'),Ne.hasOwnProperty(e)){if(r.ignoreDuplicateRegistrations)return;Ye("Cannot register type '"+i+"' twice")}if(Ne[e]=t,delete Oe[e],ze.hasOwnProperty(e)){var n=ze[e];delete ze[e],n.forEach((e=>e()))}}function Je(e){if(!(this instanceof bt))return!1;if(!(e instanceof bt))return!1;for(var t=this.$$.ptrType.registeredClass,r=this.$$.ptr,i=e.$$.ptrType.registeredClass,n=e.$$.ptr;t.baseClass;)r=t.upcast(r),t=t.baseClass;for(;i.baseClass;)n=i.upcast(n),i=i.baseClass;return t===i&&r===n}function Qe(e){Ye(e.$$.ptrType.registeredClass.name+" instance already deleted")}var et=!1;function tt(e){}function rt(e){e.count.value-=1,0===e.count.value&&function(e){e.smartPtr?e.smartPtrType.rawDestructor(e.smartPtr):e.ptrType.registeredClass.rawDestructor(e.ptr)}(e)}function it(e,t,r){if(t===r)return e;if(void 0===r.baseClass)return null;var i=it(e,t,r.baseClass);return null===i?null:r.downcast(i)}var nt={};function st(){return Object.keys(ct).length}function ot(){var e=[];for(var t in ct)ct.hasOwnProperty(t)&&e.push(ct[t]);return e}var at=[];function dt(){for(;at.length;){var e=at.pop();e.$$.deleteScheduled=!1,e.delete()}}var lt=void 0;function ut(e){lt=e,at.length&<&<(dt)}var ct={};function ft(e,t){return t=function(e,t){for(void 0===t&&Ye("ptr should not be undefined");e.baseClass;)t=e.upcast(t),e=e.baseClass;return t}(e,t),ct[t]}function ht(e,t){return t.ptrType&&t.ptr||Ke("makeClassHandle requires ptr and ptrType"),!!t.smartPtrType!=!!t.smartPtr&&Ke("Both smartPtrType and smartPtr must be specified"),t.count={value:1},mt(Object.create(e,{$$:{value:t}}))}function pt(e){var t=this.getPointee(e);if(!t)return this.destructor(e),null;var r=ft(this.registeredClass,t);if(void 0!==r){if(0===r.$$.count.value)return r.$$.ptr=t,r.$$.smartPtr=e,r.clone();var i=r.clone();return this.destructor(e),i}function n(){return this.isSmartPointer?ht(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:t,smartPtrType:this,smartPtr:e}):ht(this.registeredClass.instancePrototype,{ptrType:this,ptr:e})}var s,o=this.registeredClass.getActualType(t),a=nt[o];if(!a)return n.call(this);s=this.isConst?a.constPointerType:a.pointerType;var d=it(t,this.registeredClass,s.registeredClass);return null===d?n.call(this):this.isSmartPointer?ht(s.registeredClass.instancePrototype,{ptrType:s,ptr:d,smartPtrType:this,smartPtr:e}):ht(s.registeredClass.instancePrototype,{ptrType:s,ptr:d})}function mt(e){return"undefined"==typeof FinalizationRegistry?(mt=e=>e,e):(et=new FinalizationRegistry((e=>{rt(e.$$)})),mt=e=>{var t=e.$$;if(t.smartPtr){var r={$$:t};et.register(e,r,e)}return e},tt=e=>et.unregister(e),mt(e))}function _t(){if(this.$$.ptr||Qe(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var e,t=mt(Object.create(Object.getPrototypeOf(this),{$$:{value:(e=this.$$,{count:e.count,deleteScheduled:e.deleteScheduled,preservePointerOnDelete:e.preservePointerOnDelete,ptr:e.ptr,ptrType:e.ptrType,smartPtr:e.smartPtr,smartPtrType:e.smartPtrType})}}));return t.$$.count.value+=1,t.$$.deleteScheduled=!1,t}function yt(){this.$$.ptr||Qe(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&Ye("Object already scheduled for deletion"),tt(this),rt(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)}function gt(){return!this.$$.ptr}function vt(){return this.$$.ptr||Qe(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&Ye("Object already scheduled for deletion"),at.push(this),1===at.length&<&<(dt),this.$$.deleteScheduled=!0,this}function bt(){}function wt(e,t,r){if(void 0===e[t].overloadTable){var i=e[t];e[t]=function(){return e[t].overloadTable.hasOwnProperty(arguments.length)||Ye("Function '"+r+"' called with an invalid number of arguments ("+arguments.length+") - expects one of ("+e[t].overloadTable+")!"),e[t].overloadTable[arguments.length].apply(this,arguments)},e[t].overloadTable=[],e[t].overloadTable[i.argCount]=i}}function Et(e,t,r,i,n,s,o,a){this.name=e,this.constructor=t,this.instancePrototype=r,this.rawDestructor=i,this.baseClass=n,this.getActualType=s,this.upcast=o,this.downcast=a,this.pureVirtualFunctions=[]}function St(e,t,r){for(;t!==r;)t.upcast||Ye("Expected null or instance of "+r.name+", got an instance of "+t.name),e=t.upcast(e),t=t.baseClass;return e}function xt(e,t){if(null===t)return this.isReference&&Ye("null is not a valid "+this.name),0;t.$$||Ye('Cannot pass "'+Yt(t)+'" as a '+this.name),t.$$.ptr||Ye("Cannot pass deleted object as a pointer of type "+this.name);var r=t.$$.ptrType.registeredClass;return St(t.$$.ptr,r,this.registeredClass)}function Ut(e,t){var r;if(null===t)return this.isReference&&Ye("null is not a valid "+this.name),this.isSmartPointer?(r=this.rawConstructor(),null!==e&&e.push(this.rawDestructor,r),r):0;t.$$||Ye('Cannot pass "'+Yt(t)+'" as a '+this.name),t.$$.ptr||Ye("Cannot pass deleted object as a pointer of type "+this.name),!this.isConst&&t.$$.ptrType.isConst&&Ye("Cannot convert argument of type "+(t.$$.smartPtrType?t.$$.smartPtrType.name:t.$$.ptrType.name)+" to parameter type "+this.name);var i=t.$$.ptrType.registeredClass;if(r=St(t.$$.ptr,i,this.registeredClass),this.isSmartPointer)switch(void 0===t.$$.smartPtr&&Ye("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:t.$$.smartPtrType===this?r=t.$$.smartPtr:Ye("Cannot convert argument of type "+(t.$$.smartPtrType?t.$$.smartPtrType.name:t.$$.ptrType.name)+" to parameter type "+this.name);break;case 1:r=t.$$.smartPtr;break;case 2:if(t.$$.smartPtrType===this)r=t.$$.smartPtr;else{var n=t.clone();r=this.rawShare(r,jt.toHandle((function(){n.delete()}))),null!==e&&e.push(this.rawDestructor,r)}break;default:Ye("Unsupporting sharing policy")}return r}function At(e,t){if(null===t)return this.isReference&&Ye("null is not a valid "+this.name),0;t.$$||Ye('Cannot pass "'+Yt(t)+'" as a '+this.name),t.$$.ptr||Ye("Cannot pass deleted object as a pointer of type "+this.name),t.$$.ptrType.isConst&&Ye("Cannot convert argument of type "+t.$$.ptrType.name+" to parameter type "+this.name);var r=t.$$.ptrType.registeredClass;return St(t.$$.ptr,r,this.registeredClass)}function kt(e){return this.fromWireType(R[e>>2])}function Tt(e){return this.rawGetPointee&&(e=this.rawGetPointee(e)),e}function Bt(e){this.rawDestructor&&this.rawDestructor(e)}function Ct(e){null!==e&&e.delete()}function Dt(e,t,r,i,n,s,o,a,d,l,u){this.name=e,this.registeredClass=t,this.isReference=r,this.isConst=i,this.isSmartPointer=n,this.pointeeType=s,this.sharingPolicy=o,this.rawGetPointee=a,this.rawConstructor=d,this.rawShare=l,this.rawDestructor=u,n||void 0!==t.baseClass?this.toWireType=Ut:i?(this.toWireType=xt,this.destructorFunction=null):(this.toWireType=At,this.destructorFunction=null)}function Pt(e,r,i){return e.includes("j")?function(e,r,i){var n=t["dynCall_"+e];return i&&i.length?n.apply(null,[r].concat(i)):n.call(null,r)}(e,r,i):Be(r).apply(null,i)}function Ft(e,t){var r,i,n,s=(e=Me(e)).includes("j")?(r=e,i=t,n=[],function(){return n.length=0,Object.assign(n,arguments),Pt(r,i,n)}):Be(t);return"function"!=typeof s&&Ye("unknown function pointer with signature "+e+": "+t),s}var It=void 0;function Lt(e){var t=Cr(e),r=Me(t);return Ur(t),r}function Rt(e,t){var r=[],i={};throw t.forEach((function e(t){i[t]||Ne[t]||(Oe[t]?Oe[t].forEach(e):(r.push(t),i[t]=!0))})),new It(e+": "+r.map(Lt).join([", "]))}function Mt(e,t){for(var r=[],i=0;i>2]);return r}function zt(e){for(;e.length;){var t=e.pop();e.pop()(t)}}function Nt(e,t){if(!(e instanceof Function))throw new TypeError("new_ called with constructor type "+typeof e+" which is not a function");var r=Ve(e.name||"unknownFunctionName",(function(){}));r.prototype=e.prototype;var i=new r,n=e.apply(i,t);return n instanceof Object?n:i}function Ot(e,t,r,i,n){var s=t.length;s<2&&Ye("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var o=null!==t[1]&&null!==r,a=!1,d=1;d0?", ":"")+c),f+=(l?"var rv = ":"")+"invoker(fn"+(c.length>0?", ":"")+c+");\n",a)f+="runDestructors(destructors);\n";else for(d=o?1:2;d4&&0==--Gt[e].refcount&&(Gt[e]=void 0,$t.push(e))}function Vt(){for(var e=0,t=5;t(e||Ye("Cannot use deleted val. handle = "+e),Gt[e].value),toHandle:e=>{switch(e){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:var t=$t.length?$t.pop():Gt.length;return Gt[t]={refcount:1,value:e},t}}};function Yt(e){if(null===e)return"null";var t=typeof e;return"object"===t||"array"===t||"function"===t?e.toString():""+e}function qt(e,t){switch(t){case 2:return function(e){return this.fromWireType(z[e>>2])};case 3:return function(e){return this.fromWireType(N[e>>3])};default:throw new TypeError("Unknown float type: "+e)}}function Kt(e,t,r){switch(t){case 0:return r?function(e){return P[e]}:function(e){return F[e]};case 1:return r?function(e){return I[e>>1]}:function(e){return L[e>>1]};case 2:return r?function(e){return R[e>>2]}:function(e){return M[e>>2]};default:throw new TypeError("Unknown integer type: "+e)}}var Xt="undefined"!=typeof TextDecoder?new TextDecoder("utf-16le"):void 0;function Zt(e,t){for(var r=e,i=r>>1,n=i+t/2;!(i>=n)&&L[i];)++i;if((r=i<<1)-e>32&&Xt)return Xt.decode(F.slice(e,r));for(var s="",o=0;!(o>=t/2);++o){var a=I[e+2*o>>1];if(0==a)break;s+=String.fromCharCode(a)}return s}function Jt(e,t,r){if(void 0===r&&(r=2147483647),r<2)return 0;for(var i=t,n=(r-=2)<2*e.length?r/2:e.length,s=0;s>1]=o,t+=2}return I[t>>1]=0,t-i}function Qt(e){return 2*e.length}function er(e,t){for(var r=0,i="";!(r>=t/4);){var n=R[e+4*r>>2];if(0==n)break;if(++r,n>=65536){var s=n-65536;i+=String.fromCharCode(55296|s>>10,56320|1023&s)}else i+=String.fromCharCode(n)}return i}function tr(e,t,r){if(void 0===r&&(r=2147483647),r<4)return 0;for(var i=t,n=i+r-4,s=0;s=55296&&o<=57343&&(o=65536+((1023&o)<<10)|1023&e.charCodeAt(++s)),R[t>>2]=o,(t+=4)+4>n)break}return R[t>>2]=0,t-i}function rr(e){for(var t=0,r=0;r=55296&&i<=57343&&++r,t+=4}return t}function ir(e){Atomics.store(R,e>>2,1),Tr()&&Ir(e),Atomics.compareExchange(R,e>>2,1,0)}t.executeNotifiedProxyingQueue=ir;var nr,sr={},or=[],ar=[];function dr(e){dr.shown||(dr.shown={}),dr.shown[e]||(dr.shown[e]=1,m&&(e="warning: "+e),E(e))}function lr(e,t){var r=arguments.length-2,i=arguments;return function(e){var t=zr(),r=e();return Nr(t),r}((function(){for(var n=r,s=Or(8*n),o=s>>3,a=0;a{var e=process.hrtime();return 1e3*e[0]+e[1]/1e6}:_?()=>performance.now()-t.__performance_now_clock_drift:()=>performance.now();var ur=[],cr={};function fr(){if(!fr.strings){var e={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:("object"==typeof navigator&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:c||"./this.program"};for(var t in cr)void 0===cr[t]?delete e[t]:e[t]=cr[t];var r=[];for(var t in e)r.push(t+"="+e[t]);fr.strings=r}return fr.strings}function hr(e,t){if(_)return lr(6,1,e,t);var r=0;return fr().forEach((function(i,n){var s=t+r;M[e+4*n>>2]=s,function(e,t,r){for(var i=0;i>2]=r.length;var i=0;return r.forEach((function(e){i+=e.length+1})),M[t>>2]=i,0}function mr(e){if(_)return lr(8,1,e);try{var t=Ee.getStreamFromFD(e);return we.close(t),0}catch(e){if(void 0===we||!(e instanceof we.ErrnoError))throw e;return e.errno}}function _r(e,t){if(_)return lr(9,1,e,t);try{var r=Ee.getStreamFromFD(e),i=r.tty?2:we.isDir(r.mode)?3:we.isLink(r.mode)?7:4;return P[0|t]=i,0}catch(e){if(void 0===we||!(e instanceof we.ErrnoError))throw e;return e.errno}}function yr(e,t,r,i){if(_)return lr(10,1,e,t,r,i);try{var n=function(e,t,r,i){for(var n=0,s=0;s>2],a=M[t+4>>2];t+=8;var d=we.read(e,P,o,a,i);if(d<0)return-1;if(n+=d,d>2]=n,0}catch(e){if(void 0===we||!(e instanceof we.ErrnoError))throw e;return e.errno}}function gr(e,t,r,i,n){if(_)return lr(11,1,e,t,r,i,n);try{var s=(d=r)+2097152>>>0<4194305-!!(a=t)?(a>>>0)+4294967296*d:NaN;if(isNaN(s))return 61;var o=Ee.getStreamFromFD(e);return we.llseek(o,s,i),oe=[o.position>>>0,(se=o.position,+Math.abs(se)>=1?se>0?(0|Math.min(+Math.floor(se/4294967296),4294967295))>>>0:~~+Math.ceil((se-+(~~se>>>0))/4294967296)>>>0:0)],R[n>>2]=oe[0],R[n+4>>2]=oe[1],o.getdents&&0===s&&0===i&&(o.getdents=null),0}catch(e){if(void 0===we||!(e instanceof we.ErrnoError))throw e;return e.errno}var a,d}function vr(e,t,r,i){if(_)return lr(12,1,e,t,r,i);try{var n=function(e,t,r,i){for(var n=0,s=0;s>2],a=M[t+4>>2];t+=8;var d=we.write(e,P,o,a,i);if(d<0)return-1;n+=d}return n}(Ee.getStreamFromFD(e),t,r);return M[i>>2]=n,0}catch(e){if(void 0===we||!(e instanceof we.ErrnoError))throw e;return e.errno}}Ue.init();var br=function(e,t,r,i){e||(e=this),this.parent=e,this.mount=e.mount,this.mounted=null,this.id=we.nextInode++,this.name=t,this.mode=r,this.node_ops={},this.stream_ops={},this.rdev=i},wr=365,Er=146;Object.defineProperties(br.prototype,{read:{get:function(){return(this.mode&wr)===wr},set:function(e){e?this.mode|=wr:this.mode&=-366}},write:{get:function(){return(this.mode&Er)===Er},set:function(e){e?this.mode|=Er:this.mode&=-147}},isFolder:{get:function(){return we.isDir(this.mode)}},isDevice:{get:function(){return we.isChrdev(this.mode)}}}),we.FSNode=br,we.staticInit(),function(){for(var e=new Array(256),t=0;t<256;++t)e[t]=String.fromCharCode(t);Re=e}(),je=t.BindingError=We(Error,"BindingError"),qe=t.InternalError=We(Error,"InternalError"),bt.prototype.isAliasOf=Je,bt.prototype.clone=_t,bt.prototype.delete=yt,bt.prototype.isDeleted=gt,bt.prototype.deleteLater=vt,t.getInheritedInstanceCount=st,t.getLiveInheritedInstances=ot,t.flushPendingDeletes=dt,t.setDelayFunction=ut,Dt.prototype.getPointee=Tt,Dt.prototype.destructor=Bt,Dt.prototype.argPackAdvance=8,Dt.prototype.readValueFromPointer=kt,Dt.prototype.deleteObject=Ct,Dt.prototype.fromWireType=pt,It=t.UnboundTypeError=We(Error,"UnboundTypeError"),t.count_emval_handles=Vt,t.get_first_emval=Wt;var Sr=[null,Se,ke,De,Fe,Ie,hr,pr,mr,_r,yr,gr,vr],xr={t:function(e){return Ar(e+24)+24},s:function(e,t,r){throw new Ce(e).init(t,r),e},G:function(e){Dr(e,!p,1,!h),Ue.threadInitTLS()},j:function(e){_?postMessage({cmd:"cleanupThread",thread:e}):he(e)},C:Pe,Q:Fe,F:Ie,v:function(e,t,r,i,n){},S:function(e,t,r,i,n){var s=Le(r);Ze(e,{name:t=Me(t),fromWireType:function(e){return!!e},toWireType:function(e,t){return t?i:n},argPackAdvance:8,readValueFromPointer:function(e){var i;if(1===r)i=P;else if(2===r)i=I;else{if(4!==r)throw new TypeError("Unknown boolean type size: "+t);i=R}return this.fromWireType(i[e>>s])},destructorFunction:null})},H:function(e,r,i,n,s,o,a,d,l,u,c,f,h){c=Me(c),o=Ft(s,o),d&&(d=Ft(a,d)),u&&(u=Ft(l,u)),h=Ft(f,h);var p=He(c);!function(e,r,i){t.hasOwnProperty(e)?((void 0===i||void 0!==t[e].overloadTable&&void 0!==t[e].overloadTable[i])&&Ye("Cannot register public name '"+e+"' twice"),wt(t,e,e),t.hasOwnProperty(i)&&Ye("Cannot register multiple overloads of a function with the same number of arguments ("+i+")!"),t[e].overloadTable[i]=r):(t[e]=r,void 0!==i&&(t[e].numArguments=i))}(p,(function(){Rt("Cannot construct "+c+" due to unbound types",[n])})),Xe([e,r,i],n?[n]:[],(function(r){var i,s;r=r[0],s=n?(i=r.registeredClass).instancePrototype:bt.prototype;var a=Ve(p,(function(){if(Object.getPrototypeOf(this)!==l)throw new je("Use 'new' to construct "+c);if(void 0===f.constructor_body)throw new je(c+" has no accessible constructor");var e=f.constructor_body[arguments.length];if(void 0===e)throw new je("Tried to invoke ctor of "+c+" with invalid number of parameters ("+arguments.length+") - expected ("+Object.keys(f.constructor_body).toString()+") parameters instead!");return e.apply(this,arguments)})),l=Object.create(s,{constructor:{value:a}});a.prototype=l;var f=new Et(c,a,l,h,i,o,d,u),m=new Dt(c,f,!0,!1,!1),_=new Dt(c+"*",f,!1,!1,!1),y=new Dt(c+" const*",f,!1,!0,!1);return nt[e]={pointerType:_,constPointerType:y},function(e,r,i){t.hasOwnProperty(e)||Ke("Replacing nonexistant public symbol"),void 0!==t[e].overloadTable&&void 0!==i?t[e].overloadTable[i]=r:(t[e]=r,t[e].argCount=i)}(p,a),[m,_,y]}))},y:function(e,t,r,i,n,s){C(t>0);var o=Mt(t,r);n=Ft(i,n),Xe([],[e],(function(e){var r="constructor "+(e=e[0]).name;if(void 0===e.registeredClass.constructor_body&&(e.registeredClass.constructor_body=[]),void 0!==e.registeredClass.constructor_body[t-1])throw new je("Cannot register multiple constructors with identical number of parameters ("+(t-1)+") for class '"+e.name+"'! Overload resolution is currently only performed using the parameter count, not actual type info!");return e.registeredClass.constructor_body[t-1]=()=>{Rt("Cannot construct "+e.name+" due to unbound types",o)},Xe([],o,(function(i){return i.splice(1,0,null),e.registeredClass.constructor_body[t-1]=Ot(r,i,null,n,s),[]})),[]}))},f:function(e,t,r,i,n,s,o,a){var d=Mt(r,i);t=Me(t),s=Ft(n,s),Xe([],[e],(function(e){var i=(e=e[0]).name+"."+t;function n(){Rt("Cannot call "+i+" due to unbound types",d)}t.startsWith("@@")&&(t=Symbol[t.substring(2)]),a&&e.registeredClass.pureVirtualFunctions.push(t);var l=e.registeredClass.instancePrototype,u=l[t];return void 0===u||void 0===u.overloadTable&&u.className!==e.name&&u.argCount===r-2?(n.argCount=r-2,n.className=e.name,l[t]=n):(wt(l,t,i),l[t].overloadTable[r-2]=n),Xe([],d,(function(n){var a=Ot(i,n,e,s,o);return void 0===l[t].overloadTable?(a.argCount=r-2,l[t]=a):l[t].overloadTable[r-2]=a,[]})),[]}))},R:function(e,t){Ze(e,{name:t=Me(t),fromWireType:function(e){var t=jt.toValue(e);return Ht(e),t},toWireType:function(e,t){return jt.toHandle(t)},argPackAdvance:8,readValueFromPointer:kt,destructorFunction:null})},p:function(e,t,r){var i=Le(r);Ze(e,{name:t=Me(t),fromWireType:function(e){return e},toWireType:function(e,t){return t},argPackAdvance:8,readValueFromPointer:qt(t,i),destructorFunction:null})},d:function(e,t,r,i,n){t=Me(t);var s=Le(r),o=e=>e;if(0===i){var a=32-8*r;o=e=>e<>>a}var d=t.includes("unsigned");Ze(e,{name:t,fromWireType:o,toWireType:d?function(e,t){return this.name,t>>>0}:function(e,t){return this.name,t},argPackAdvance:8,readValueFromPointer:Kt(t,s,0!==i),destructorFunction:null})},c:function(e,t,r){var i=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][t];function n(e){var t=M,r=t[e>>=2],n=t[e+1];return new i(D,n,r)}Ze(e,{name:r=Me(r),fromWireType:n,argPackAdvance:8,readValueFromPointer:n},{ignoreDuplicateRegistrations:!0})},o:function(e,t){var r="std::string"===(t=Me(t));Ze(e,{name:t,fromWireType:function(e){var t,i=M[e>>2],n=e+4;if(r)for(var s=n,o=0;o<=i;++o){var a=n+o;if(o==i||0==F[a]){var d=G(s,a-s);void 0===t?t=d:(t+=String.fromCharCode(0),t+=d),s=a+1}}else{var l=new Array(i);for(o=0;o>2]=i,r&&n)H(t,F,o,i+1);else if(n)for(var a=0;a255&&(Ur(o),Ye("String has UTF-16 code units that do not fit in 8 bits")),F[o+a]=d}else for(a=0;aL,a=1):4===t&&(i=er,n=tr,o=rr,s=()=>M,a=2),Ze(e,{name:r,fromWireType:function(e){for(var r,n=M[e>>2],o=s(),d=e+4,l=0;l<=n;++l){var u=e+4+l*t;if(l==n||0==o[u>>a]){var c=i(d,u-d);void 0===r?r=c:(r+=String.fromCharCode(0),r+=c),d=u+t}}return Ur(e),r},toWireType:function(e,i){"string"!=typeof i&&Ye("Cannot pass non-string to C++ string type "+r);var s=o(i),d=Ar(4+s+t);return M[d>>2]=s>>a,n(i,d+4,s+t),null!==e&&e.push(Ur,d),d},argPackAdvance:8,readValueFromPointer:kt,destructorFunction:function(e){Ur(e)}})},r:function(e,t){Ze(e,{isVoid:!0,name:t=Me(t),argPackAdvance:0,fromWireType:function(){},toWireType:function(e,t){}})},g:function(){return Date.now()},D:function(){return 2097152},E:function(e,t,r,i){if(e==t)setTimeout((()=>ir(i)));else if(_)postMessage({targetThread:e,cmd:"processProxyingQueue",queue:i});else{var n=Ue.pthreads[e];if(!n)return;n.postMessage({cmd:"processProxyingQueue",queue:i})}return 1},J:function(e,t,r){return-1},m:function(e,t,r,i){var n,s;(e=or[e])(t=jt.toValue(t),r=void 0===(s=sr[n=r])?Me(n):s,null,i)},i:Ht,q:function(e,t){var r=function(e,t){for(var r,i,n,s=new Array(e),o=0;o>2],i="parameter "+o,n=void 0,void 0===(n=Ne[r])&&Ye(i+" has unknown type "+Lt(r)),n);return s}(e,t),i=r[0],n=i.name+"_$"+r.slice(1).map((function(e){return e.name})).join("_")+"$",s=ar[n];if(void 0!==s)return s;for(var o=["retType"],a=[i],d="",l=0;l>3,n=0;n0)){if(_)return r(t),J(),void postMessage({cmd:"loaded"});!function(){if(t.preRun)for("function"==typeof t.preRun&&(t.preRun=[t.preRun]);t.preRun.length;)e=t.preRun.shift(),q.unshift(e);var e;Ae(q)}(),Q>0||(t.setStatus?(t.setStatus("Running..."),setTimeout((function(){setTimeout((function(){t.setStatus("")}),1),i()}),1)):i())}function i(){Pr||(Pr=!0,t.calledRun=!0,B||(J(),r(t),t.onRuntimeInitialized&&t.onRuntimeInitialized(),function(){if(!_){if(t.postRun)for("function"==typeof t.postRun&&(t.postRun=[t.postRun]);t.postRun.length;)e=t.postRun.shift(),X.unshift(e);var e;Ae(X)}}()))}}if(t.dynCall_jiji=function(){return(t.dynCall_jiji=t.asm.ma).apply(null,arguments)},t._ff_h264_cabac_tables=111557,t.keepRuntimeAlive=Z,t.wasmMemory=U,t.ExitStatus=fe,t.PThread=Ue,ee=function e(){Pr||Gr(),Pr||(ee=e)},t.preInit)for("function"==typeof t.preInit&&(t.preInit=[t.preInit]);t.preInit.length>0;)t.preInit.pop()();return Gr(),t.ready}),r=(()=>{var e="undefined"==typeof document&&"undefined"==typeof location?new(require("url").URL)("file:"+__filename).href:"undefined"==typeof document?location.href:document.currentScript&&document.currentScript.src||new URL("decoder-pro-mt.js",document.baseURI).href;return function(t){var r,i;(t=void 0!==(t=t||{})?t:{}).ready=new Promise((function(e,t){r=e,i=t})),(t=void 0!==t?t:{}).locateFile=function(e){return"decoder-pro-audio.wasm"==e&&"undefined"!=typeof EASYPLAYER_PRO_AUDIO_WASM_URL&&""!=EASYPLAYER_PRO_AUDIO_WASM_URL?EASYPLAYER_PRO_AUDIO_WASM_URL:e};var n,s,o,a,d,l,u=Object.assign({},t),c="./this.program",f="object"==typeof window,h="function"==typeof importScripts,p="object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node,m="";p?(m=h?require("path").dirname(m)+"/":__dirname+"/",l=()=>{d||(a=require("fs"),d=require("path"))},n=function(e,t){return l(),e=d.normalize(e),a.readFileSync(e,t?void 0:"utf8")},o=e=>{var t=n(e,!0);return t.buffer||(t=new Uint8Array(t)),t},s=(e,t,r)=>{l(),e=d.normalize(e),a.readFile(e,(function(e,i){e?r(e):t(i.buffer)}))},process.argv.length>1&&(c=process.argv[1].replace(/\\/g,"/")),process.argv.slice(2),process.on("uncaughtException",(function(e){if(!(e instanceof ee))throw e})),process.on("unhandledRejection",(function(e){throw e})),t.inspect=function(){return"[Emscripten Module object]"}):(f||h)&&(h?m=self.location.href:"undefined"!=typeof document&&document.currentScript&&(m=document.currentScript.src),e&&(m=e),m=0!==m.indexOf("blob:")?m.substr(0,m.replace(/[?#].*/,"").lastIndexOf("/")+1):"",n=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.send(null),t.responseText},h&&(o=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.responseType="arraybuffer",t.send(null),new Uint8Array(t.response)}),s=(e,t,r)=>{var i=new XMLHttpRequest;i.open("GET",e,!0),i.responseType="arraybuffer",i.onload=()=>{200==i.status||0==i.status&&i.response?t(i.response):r()},i.onerror=r,i.send(null)});var _=t.print||console.log.bind(console),y=t.printErr||console.warn.bind(console);Object.assign(t,u),u=null,t.arguments&&t.arguments,t.thisProgram&&(c=t.thisProgram),t.quit&&t.quit;var g,v,b=4;t.wasmBinary&&(g=t.wasmBinary),t.noExitRuntime,"object"!=typeof WebAssembly&&W("no native wasm support detected");var w=!1;function E(e,t){e||W(t)}var S,x,U,A,k,T,B,C,D,P,F="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0;function I(e,t,r){for(var i=t+r,n=t;e[n]&&!(n>=i);)++n;if(n-t>16&&e.buffer&&F)return F.decode(e.subarray(t,n));for(var s="";t>10,56320|1023&l)}}else s+=String.fromCharCode((31&o)<<6|a)}else s+=String.fromCharCode(o)}return s}function L(e,t){return e?I(U,e,t):""}function R(e,t,r,i){if(!(i>0))return 0;for(var n=r,s=r+i-1,o=0;o=55296&&a<=57343)a=65536+((1023&a)<<10)|1023&e.charCodeAt(++o);if(a<=127){if(r>=s)break;t[r++]=a}else if(a<=2047){if(r+1>=s)break;t[r++]=192|a>>6,t[r++]=128|63&a}else if(a<=65535){if(r+2>=s)break;t[r++]=224|a>>12,t[r++]=128|a>>6&63,t[r++]=128|63&a}else{if(r+3>=s)break;t[r++]=240|a>>18,t[r++]=128|a>>12&63,t[r++]=128|a>>6&63,t[r++]=128|63&a}}return t[r]=0,r-n}function M(e){for(var t=0,r=0;r=55296&&i<=57343?(t+=4,++r):t+=3}return t}t.INITIAL_MEMORY;var z=[],N=[],O=[];var $=0,G=null;function H(e){$++,t.monitorRunDependencies&&t.monitorRunDependencies($)}function V(e){if($--,t.monitorRunDependencies&&t.monitorRunDependencies($),0==$&&G){var r=G;G=null,r()}}function W(e){t.onAbort&&t.onAbort(e),y(e="Aborted("+e+")"),w=!0,e+=". Build with -sASSERTIONS for more info.";var r=new WebAssembly.RuntimeError(e);throw i(r),r}var j,Y,q,K,X="data:application/octet-stream;base64,";function Z(e){return e.startsWith(X)}function J(e){return e.startsWith("file://")}function Q(e){try{if(e==j&&g)return new Uint8Array(g);if(o)return o(e);throw"both async and sync fetching of the wasm failed"}catch(e){W(e)}}function ee(e){this.name="ExitStatus",this.message="Program terminated with exit("+e+")",this.status=e}function te(e){for(;e.length>0;)e.shift()(t)}function re(e){this.excPtr=e,this.ptr=e-24,this.set_type=function(e){B[this.ptr+4>>2]=e},this.get_type=function(){return B[this.ptr+4>>2]},this.set_destructor=function(e){B[this.ptr+8>>2]=e},this.get_destructor=function(){return B[this.ptr+8>>2]},this.set_refcount=function(e){T[this.ptr>>2]=e},this.set_caught=function(e){e=e?1:0,x[this.ptr+12|0]=e},this.get_caught=function(){return 0!=x[this.ptr+12|0]},this.set_rethrown=function(e){e=e?1:0,x[this.ptr+13|0]=e},this.get_rethrown=function(){return 0!=x[this.ptr+13|0]},this.init=function(e,t){this.set_adjusted_ptr(0),this.set_type(e),this.set_destructor(t),this.set_refcount(0),this.set_caught(!1),this.set_rethrown(!1)},this.add_ref=function(){var e=T[this.ptr>>2];T[this.ptr>>2]=e+1},this.release_ref=function(){var e=T[this.ptr>>2];return T[this.ptr>>2]=e-1,1===e},this.set_adjusted_ptr=function(e){B[this.ptr+16>>2]=e},this.get_adjusted_ptr=function(){return B[this.ptr+16>>2]},this.get_exception_ptr=function(){if(Xt(this.get_type()))return B[this.excPtr>>2];var e=this.get_adjusted_ptr();return 0!==e?e:this.excPtr}}t.locateFile?Z(j="decoder-pro-audio.wasm")||(Y=j,j=t.locateFile?t.locateFile(Y,m):m+Y):j=new URL("decoder-pro-audio.wasm","undefined"==typeof document&&"undefined"==typeof location?new(require("url").URL)("file:"+__filename).href:"undefined"==typeof document?location.href:document.currentScript&&document.currentScript.src||new URL("decoder-pro-mt.js",document.baseURI).href).toString();var ie={isAbs:e=>"/"===e.charAt(0),splitPath:e=>/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(e).slice(1),normalizeArray:(e,t)=>{for(var r=0,i=e.length-1;i>=0;i--){var n=e[i];"."===n?e.splice(i,1):".."===n?(e.splice(i,1),r++):r&&(e.splice(i,1),r--)}if(t)for(;r;r--)e.unshift("..");return e},normalize:e=>{var t=ie.isAbs(e),r="/"===e.substr(-1);return(e=ie.normalizeArray(e.split("/").filter((e=>!!e)),!t).join("/"))||t||(e="."),e&&r&&(e+="/"),(t?"/":"")+e},dirname:e=>{var t=ie.splitPath(e),r=t[0],i=t[1];return r||i?(i&&(i=i.substr(0,i.length-1)),r+i):"."},basename:e=>{if("/"===e)return"/";var t=(e=(e=ie.normalize(e)).replace(/\/$/,"")).lastIndexOf("/");return-1===t?e:e.substr(t+1)},join:function(){var e=Array.prototype.slice.call(arguments,0);return ie.normalize(e.join("/"))},join2:(e,t)=>ie.normalize(e+"/"+t)};var ne={resolve:function(){for(var e="",t=!1,r=arguments.length-1;r>=-1&&!t;r--){var i=r>=0?arguments[r]:le.cwd();if("string"!=typeof i)throw new TypeError("Arguments to path.resolve must be strings");if(!i)return"";e=i+"/"+e,t=ie.isAbs(i)}return(t?"/":"")+(e=ie.normalizeArray(e.split("/").filter((e=>!!e)),!t).join("/"))||"."},relative:(e,t)=>{function r(e){for(var t=0;t=0&&""===e[r];r--);return t>r?[]:e.slice(t,r-t+1)}e=ne.resolve(e).substr(1),t=ne.resolve(t).substr(1);for(var i=r(e.split("/")),n=r(t.split("/")),s=Math.min(i.length,n.length),o=s,a=0;a0?r:M(e)+1,n=new Array(i),s=R(e,n,0,n.length);return t&&(n.length=s),n}var oe={ttys:[],init:function(){},shutdown:function(){},register:function(e,t){oe.ttys[e]={input:[],output:[],ops:t},le.registerDevice(e,oe.stream_ops)},stream_ops:{open:function(e){var t=oe.ttys[e.node.rdev];if(!t)throw new le.ErrnoError(43);e.tty=t,e.seekable=!1},close:function(e){e.tty.ops.flush(e.tty)},flush:function(e){e.tty.ops.flush(e.tty)},read:function(e,t,r,i,n){if(!e.tty||!e.tty.ops.get_char)throw new le.ErrnoError(60);for(var s=0,o=0;o0?r.slice(0,i).toString("utf-8"):null}else"undefined"!=typeof window&&"function"==typeof window.prompt?null!==(t=window.prompt("Input: "))&&(t+="\n"):"function"==typeof readline&&null!==(t=readline())&&(t+="\n");if(!t)return null;e.input=se(t,!0)}return e.input.shift()},put_char:function(e,t){null===t||10===t?(_(I(e.output,0)),e.output=[]):0!=t&&e.output.push(t)},flush:function(e){e.output&&e.output.length>0&&(_(I(e.output,0)),e.output=[])}},default_tty1_ops:{put_char:function(e,t){null===t||10===t?(y(I(e.output,0)),e.output=[]):0!=t&&e.output.push(t)},flush:function(e){e.output&&e.output.length>0&&(y(I(e.output,0)),e.output=[])}}};function ae(e){e=function(e,t){return Math.ceil(e/t)*t}(e,65536);var t=Kt(65536,e);return t?(function(e,t){U.fill(0,e,e+t)}(t,e),t):0}var de={ops_table:null,mount:function(e){return de.createNode(null,"/",16895,0)},createNode:function(e,t,r,i){if(le.isBlkdev(r)||le.isFIFO(r))throw new le.ErrnoError(63);de.ops_table||(de.ops_table={dir:{node:{getattr:de.node_ops.getattr,setattr:de.node_ops.setattr,lookup:de.node_ops.lookup,mknod:de.node_ops.mknod,rename:de.node_ops.rename,unlink:de.node_ops.unlink,rmdir:de.node_ops.rmdir,readdir:de.node_ops.readdir,symlink:de.node_ops.symlink},stream:{llseek:de.stream_ops.llseek}},file:{node:{getattr:de.node_ops.getattr,setattr:de.node_ops.setattr},stream:{llseek:de.stream_ops.llseek,read:de.stream_ops.read,write:de.stream_ops.write,allocate:de.stream_ops.allocate,mmap:de.stream_ops.mmap,msync:de.stream_ops.msync}},link:{node:{getattr:de.node_ops.getattr,setattr:de.node_ops.setattr,readlink:de.node_ops.readlink},stream:{}},chrdev:{node:{getattr:de.node_ops.getattr,setattr:de.node_ops.setattr},stream:le.chrdev_stream_ops}});var n=le.createNode(e,t,r,i);return le.isDir(n.mode)?(n.node_ops=de.ops_table.dir.node,n.stream_ops=de.ops_table.dir.stream,n.contents={}):le.isFile(n.mode)?(n.node_ops=de.ops_table.file.node,n.stream_ops=de.ops_table.file.stream,n.usedBytes=0,n.contents=null):le.isLink(n.mode)?(n.node_ops=de.ops_table.link.node,n.stream_ops=de.ops_table.link.stream):le.isChrdev(n.mode)&&(n.node_ops=de.ops_table.chrdev.node,n.stream_ops=de.ops_table.chrdev.stream),n.timestamp=Date.now(),e&&(e.contents[t]=n,e.timestamp=n.timestamp),n},getFileDataAsTypedArray:function(e){return e.contents?e.contents.subarray?e.contents.subarray(0,e.usedBytes):new Uint8Array(e.contents):new Uint8Array(0)},expandFileStorage:function(e,t){var r=e.contents?e.contents.length:0;if(!(r>=t)){t=Math.max(t,r*(r<1048576?2:1.125)>>>0),0!=r&&(t=Math.max(t,256));var i=e.contents;e.contents=new Uint8Array(t),e.usedBytes>0&&e.contents.set(i.subarray(0,e.usedBytes),0)}},resizeFileStorage:function(e,t){if(e.usedBytes!=t)if(0==t)e.contents=null,e.usedBytes=0;else{var r=e.contents;e.contents=new Uint8Array(t),r&&e.contents.set(r.subarray(0,Math.min(t,e.usedBytes))),e.usedBytes=t}},node_ops:{getattr:function(e){var t={};return t.dev=le.isChrdev(e.mode)?e.id:1,t.ino=e.id,t.mode=e.mode,t.nlink=1,t.uid=0,t.gid=0,t.rdev=e.rdev,le.isDir(e.mode)?t.size=4096:le.isFile(e.mode)?t.size=e.usedBytes:le.isLink(e.mode)?t.size=e.link.length:t.size=0,t.atime=new Date(e.timestamp),t.mtime=new Date(e.timestamp),t.ctime=new Date(e.timestamp),t.blksize=4096,t.blocks=Math.ceil(t.size/t.blksize),t},setattr:function(e,t){void 0!==t.mode&&(e.mode=t.mode),void 0!==t.timestamp&&(e.timestamp=t.timestamp),void 0!==t.size&&de.resizeFileStorage(e,t.size)},lookup:function(e,t){throw le.genericErrors[44]},mknod:function(e,t,r,i){return de.createNode(e,t,r,i)},rename:function(e,t,r){if(le.isDir(e.mode)){var i;try{i=le.lookupNode(t,r)}catch(e){}if(i)for(var n in i.contents)throw new le.ErrnoError(55)}delete e.parent.contents[e.name],e.parent.timestamp=Date.now(),e.name=r,t.contents[r]=e,t.timestamp=e.parent.timestamp,e.parent=t},unlink:function(e,t){delete e.contents[t],e.timestamp=Date.now()},rmdir:function(e,t){var r=le.lookupNode(e,t);for(var i in r.contents)throw new le.ErrnoError(55);delete e.contents[t],e.timestamp=Date.now()},readdir:function(e){var t=[".",".."];for(var r in e.contents)e.contents.hasOwnProperty(r)&&t.push(r);return t},symlink:function(e,t,r){var i=de.createNode(e,t,41471,0);return i.link=r,i},readlink:function(e){if(!le.isLink(e.mode))throw new le.ErrnoError(28);return e.link}},stream_ops:{read:function(e,t,r,i,n){var s=e.node.contents;if(n>=e.node.usedBytes)return 0;var o=Math.min(e.node.usedBytes-n,i);if(o>8&&s.subarray)t.set(s.subarray(n,n+o),r);else for(var a=0;a0||r+t{if(!(e=ne.resolve(le.cwd(),e)))return{path:"",node:null};if((t=Object.assign({follow_mount:!0,recurse_count:0},t)).recurse_count>8)throw new le.ErrnoError(32);for(var r=ie.normalizeArray(e.split("/").filter((e=>!!e)),!1),i=le.root,n="/",s=0;s40)throw new le.ErrnoError(32)}}return{path:n,node:i}},getPath:e=>{for(var t;;){if(le.isRoot(e)){var r=e.mount.mountpoint;return t?"/"!==r[r.length-1]?r+"/"+t:r+t:r}t=t?e.name+"/"+t:e.name,e=e.parent}},hashName:(e,t)=>{for(var r=0,i=0;i>>0)%le.nameTable.length},hashAddNode:e=>{var t=le.hashName(e.parent.id,e.name);e.name_next=le.nameTable[t],le.nameTable[t]=e},hashRemoveNode:e=>{var t=le.hashName(e.parent.id,e.name);if(le.nameTable[t]===e)le.nameTable[t]=e.name_next;else for(var r=le.nameTable[t];r;){if(r.name_next===e){r.name_next=e.name_next;break}r=r.name_next}},lookupNode:(e,t)=>{var r=le.mayLookup(e);if(r)throw new le.ErrnoError(r,e);for(var i=le.hashName(e.id,t),n=le.nameTable[i];n;n=n.name_next){var s=n.name;if(n.parent.id===e.id&&s===t)return n}return le.lookup(e,t)},createNode:(e,t,r,i)=>{var n=new le.FSNode(e,t,r,i);return le.hashAddNode(n),n},destroyNode:e=>{le.hashRemoveNode(e)},isRoot:e=>e===e.parent,isMountpoint:e=>!!e.mounted,isFile:e=>32768==(61440&e),isDir:e=>16384==(61440&e),isLink:e=>40960==(61440&e),isChrdev:e=>8192==(61440&e),isBlkdev:e=>24576==(61440&e),isFIFO:e=>4096==(61440&e),isSocket:e=>!(49152&~e),flagModes:{r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090},modeStringToFlags:e=>{var t=le.flagModes[e];if(void 0===t)throw new Error("Unknown file open mode: "+e);return t},flagsToPermissionString:e=>{var t=["r","w","rw"][3&e];return 512&e&&(t+="w"),t},nodePermissions:(e,t)=>le.ignorePermissions||(!t.includes("r")||292&e.mode)&&(!t.includes("w")||146&e.mode)&&(!t.includes("x")||73&e.mode)?0:2,mayLookup:e=>{var t=le.nodePermissions(e,"x");return t||(e.node_ops.lookup?0:2)},mayCreate:(e,t)=>{try{le.lookupNode(e,t);return 20}catch(e){}return le.nodePermissions(e,"wx")},mayDelete:(e,t,r)=>{var i;try{i=le.lookupNode(e,t)}catch(e){return e.errno}var n=le.nodePermissions(e,"wx");if(n)return n;if(r){if(!le.isDir(i.mode))return 54;if(le.isRoot(i)||le.getPath(i)===le.cwd())return 10}else if(le.isDir(i.mode))return 31;return 0},mayOpen:(e,t)=>e?le.isLink(e.mode)?32:le.isDir(e.mode)&&("r"!==le.flagsToPermissionString(t)||512&t)?31:le.nodePermissions(e,le.flagsToPermissionString(t)):44,MAX_OPEN_FDS:4096,nextfd:(e=0,t=le.MAX_OPEN_FDS)=>{for(var r=e;r<=t;r++)if(!le.streams[r])return r;throw new le.ErrnoError(33)},getStream:e=>le.streams[e],createStream:(e,t,r)=>{le.FSStream||(le.FSStream=function(){this.shared={}},le.FSStream.prototype={},Object.defineProperties(le.FSStream.prototype,{object:{get:function(){return this.node},set:function(e){this.node=e}},isRead:{get:function(){return 1!=(2097155&this.flags)}},isWrite:{get:function(){return!!(2097155&this.flags)}},isAppend:{get:function(){return 1024&this.flags}},flags:{get:function(){return this.shared.flags},set:function(e){this.shared.flags=e}},position:{get:function(){return this.shared.position},set:function(e){this.shared.position=e}}})),e=Object.assign(new le.FSStream,e);var i=le.nextfd(t,r);return e.fd=i,le.streams[i]=e,e},closeStream:e=>{le.streams[e]=null},chrdev_stream_ops:{open:e=>{var t=le.getDevice(e.node.rdev);e.stream_ops=t.stream_ops,e.stream_ops.open&&e.stream_ops.open(e)},llseek:()=>{throw new le.ErrnoError(70)}},major:e=>e>>8,minor:e=>255&e,makedev:(e,t)=>e<<8|t,registerDevice:(e,t)=>{le.devices[e]={stream_ops:t}},getDevice:e=>le.devices[e],getMounts:e=>{for(var t=[],r=[e];r.length;){var i=r.pop();t.push(i),r.push.apply(r,i.mounts)}return t},syncfs:(e,t)=>{"function"==typeof e&&(t=e,e=!1),le.syncFSRequests++,le.syncFSRequests>1&&y("warning: "+le.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work");var r=le.getMounts(le.root.mount),i=0;function n(e){return le.syncFSRequests--,t(e)}function s(e){if(e)return s.errored?void 0:(s.errored=!0,n(e));++i>=r.length&&n(null)}r.forEach((t=>{if(!t.type.syncfs)return s(null);t.type.syncfs(t,e,s)}))},mount:(e,t,r)=>{var i,n="/"===r,s=!r;if(n&&le.root)throw new le.ErrnoError(10);if(!n&&!s){var o=le.lookupPath(r,{follow_mount:!1});if(r=o.path,i=o.node,le.isMountpoint(i))throw new le.ErrnoError(10);if(!le.isDir(i.mode))throw new le.ErrnoError(54)}var a={type:e,opts:t,mountpoint:r,mounts:[]},d=e.mount(a);return d.mount=a,a.root=d,n?le.root=d:i&&(i.mounted=a,i.mount&&i.mount.mounts.push(a)),d},unmount:e=>{var t=le.lookupPath(e,{follow_mount:!1});if(!le.isMountpoint(t.node))throw new le.ErrnoError(28);var r=t.node,i=r.mounted,n=le.getMounts(i);Object.keys(le.nameTable).forEach((e=>{for(var t=le.nameTable[e];t;){var r=t.name_next;n.includes(t.mount)&&le.destroyNode(t),t=r}})),r.mounted=null;var s=r.mount.mounts.indexOf(i);r.mount.mounts.splice(s,1)},lookup:(e,t)=>e.node_ops.lookup(e,t),mknod:(e,t,r)=>{var i=le.lookupPath(e,{parent:!0}).node,n=ie.basename(e);if(!n||"."===n||".."===n)throw new le.ErrnoError(28);var s=le.mayCreate(i,n);if(s)throw new le.ErrnoError(s);if(!i.node_ops.mknod)throw new le.ErrnoError(63);return i.node_ops.mknod(i,n,t,r)},create:(e,t)=>(t=void 0!==t?t:438,t&=4095,t|=32768,le.mknod(e,t,0)),mkdir:(e,t)=>(t=void 0!==t?t:511,t&=1023,t|=16384,le.mknod(e,t,0)),mkdirTree:(e,t)=>{for(var r=e.split("/"),i="",n=0;n(void 0===r&&(r=t,t=438),t|=8192,le.mknod(e,t,r)),symlink:(e,t)=>{if(!ne.resolve(e))throw new le.ErrnoError(44);var r=le.lookupPath(t,{parent:!0}).node;if(!r)throw new le.ErrnoError(44);var i=ie.basename(t),n=le.mayCreate(r,i);if(n)throw new le.ErrnoError(n);if(!r.node_ops.symlink)throw new le.ErrnoError(63);return r.node_ops.symlink(r,i,e)},rename:(e,t)=>{var r,i,n=ie.dirname(e),s=ie.dirname(t),o=ie.basename(e),a=ie.basename(t);if(r=le.lookupPath(e,{parent:!0}).node,i=le.lookupPath(t,{parent:!0}).node,!r||!i)throw new le.ErrnoError(44);if(r.mount!==i.mount)throw new le.ErrnoError(75);var d,l=le.lookupNode(r,o),u=ne.relative(e,s);if("."!==u.charAt(0))throw new le.ErrnoError(28);if("."!==(u=ne.relative(t,n)).charAt(0))throw new le.ErrnoError(55);try{d=le.lookupNode(i,a)}catch(e){}if(l!==d){var c=le.isDir(l.mode),f=le.mayDelete(r,o,c);if(f)throw new le.ErrnoError(f);if(f=d?le.mayDelete(i,a,c):le.mayCreate(i,a))throw new le.ErrnoError(f);if(!r.node_ops.rename)throw new le.ErrnoError(63);if(le.isMountpoint(l)||d&&le.isMountpoint(d))throw new le.ErrnoError(10);if(i!==r&&(f=le.nodePermissions(r,"w")))throw new le.ErrnoError(f);le.hashRemoveNode(l);try{r.node_ops.rename(l,i,a)}catch(e){throw e}finally{le.hashAddNode(l)}}},rmdir:e=>{var t=le.lookupPath(e,{parent:!0}).node,r=ie.basename(e),i=le.lookupNode(t,r),n=le.mayDelete(t,r,!0);if(n)throw new le.ErrnoError(n);if(!t.node_ops.rmdir)throw new le.ErrnoError(63);if(le.isMountpoint(i))throw new le.ErrnoError(10);t.node_ops.rmdir(t,r),le.destroyNode(i)},readdir:e=>{var t=le.lookupPath(e,{follow:!0}).node;if(!t.node_ops.readdir)throw new le.ErrnoError(54);return t.node_ops.readdir(t)},unlink:e=>{var t=le.lookupPath(e,{parent:!0}).node;if(!t)throw new le.ErrnoError(44);var r=ie.basename(e),i=le.lookupNode(t,r),n=le.mayDelete(t,r,!1);if(n)throw new le.ErrnoError(n);if(!t.node_ops.unlink)throw new le.ErrnoError(63);if(le.isMountpoint(i))throw new le.ErrnoError(10);t.node_ops.unlink(t,r),le.destroyNode(i)},readlink:e=>{var t=le.lookupPath(e).node;if(!t)throw new le.ErrnoError(44);if(!t.node_ops.readlink)throw new le.ErrnoError(28);return ne.resolve(le.getPath(t.parent),t.node_ops.readlink(t))},stat:(e,t)=>{var r=le.lookupPath(e,{follow:!t}).node;if(!r)throw new le.ErrnoError(44);if(!r.node_ops.getattr)throw new le.ErrnoError(63);return r.node_ops.getattr(r)},lstat:e=>le.stat(e,!0),chmod:(e,t,r)=>{var i;"string"==typeof e?i=le.lookupPath(e,{follow:!r}).node:i=e;if(!i.node_ops.setattr)throw new le.ErrnoError(63);i.node_ops.setattr(i,{mode:4095&t|-4096&i.mode,timestamp:Date.now()})},lchmod:(e,t)=>{le.chmod(e,t,!0)},fchmod:(e,t)=>{var r=le.getStream(e);if(!r)throw new le.ErrnoError(8);le.chmod(r.node,t)},chown:(e,t,r,i)=>{var n;"string"==typeof e?n=le.lookupPath(e,{follow:!i}).node:n=e;if(!n.node_ops.setattr)throw new le.ErrnoError(63);n.node_ops.setattr(n,{timestamp:Date.now()})},lchown:(e,t,r)=>{le.chown(e,t,r,!0)},fchown:(e,t,r)=>{var i=le.getStream(e);if(!i)throw new le.ErrnoError(8);le.chown(i.node,t,r)},truncate:(e,t)=>{if(t<0)throw new le.ErrnoError(28);var r;"string"==typeof e?r=le.lookupPath(e,{follow:!0}).node:r=e;if(!r.node_ops.setattr)throw new le.ErrnoError(63);if(le.isDir(r.mode))throw new le.ErrnoError(31);if(!le.isFile(r.mode))throw new le.ErrnoError(28);var i=le.nodePermissions(r,"w");if(i)throw new le.ErrnoError(i);r.node_ops.setattr(r,{size:t,timestamp:Date.now()})},ftruncate:(e,t)=>{var r=le.getStream(e);if(!r)throw new le.ErrnoError(8);if(!(2097155&r.flags))throw new le.ErrnoError(28);le.truncate(r.node,t)},utime:(e,t,r)=>{var i=le.lookupPath(e,{follow:!0}).node;i.node_ops.setattr(i,{timestamp:Math.max(t,r)})},open:(e,r,i)=>{if(""===e)throw new le.ErrnoError(44);var n;if(i=void 0===i?438:i,i=64&(r="string"==typeof r?le.modeStringToFlags(r):r)?4095&i|32768:0,"object"==typeof e)n=e;else{e=ie.normalize(e);try{n=le.lookupPath(e,{follow:!(131072&r)}).node}catch(e){}}var s=!1;if(64&r)if(n){if(128&r)throw new le.ErrnoError(20)}else n=le.mknod(e,i,0),s=!0;if(!n)throw new le.ErrnoError(44);if(le.isChrdev(n.mode)&&(r&=-513),65536&r&&!le.isDir(n.mode))throw new le.ErrnoError(54);if(!s){var o=le.mayOpen(n,r);if(o)throw new le.ErrnoError(o)}512&r&&!s&&le.truncate(n,0),r&=-131713;var a=le.createStream({node:n,path:le.getPath(n),flags:r,seekable:!0,position:0,stream_ops:n.stream_ops,ungotten:[],error:!1});return a.stream_ops.open&&a.stream_ops.open(a),!t.logReadFiles||1&r||(le.readFiles||(le.readFiles={}),e in le.readFiles||(le.readFiles[e]=1)),a},close:e=>{if(le.isClosed(e))throw new le.ErrnoError(8);e.getdents&&(e.getdents=null);try{e.stream_ops.close&&e.stream_ops.close(e)}catch(e){throw e}finally{le.closeStream(e.fd)}e.fd=null},isClosed:e=>null===e.fd,llseek:(e,t,r)=>{if(le.isClosed(e))throw new le.ErrnoError(8);if(!e.seekable||!e.stream_ops.llseek)throw new le.ErrnoError(70);if(0!=r&&1!=r&&2!=r)throw new le.ErrnoError(28);return e.position=e.stream_ops.llseek(e,t,r),e.ungotten=[],e.position},read:(e,t,r,i,n)=>{if(i<0||n<0)throw new le.ErrnoError(28);if(le.isClosed(e))throw new le.ErrnoError(8);if(1==(2097155&e.flags))throw new le.ErrnoError(8);if(le.isDir(e.node.mode))throw new le.ErrnoError(31);if(!e.stream_ops.read)throw new le.ErrnoError(28);var s=void 0!==n;if(s){if(!e.seekable)throw new le.ErrnoError(70)}else n=e.position;var o=e.stream_ops.read(e,t,r,i,n);return s||(e.position+=o),o},write:(e,t,r,i,n,s)=>{if(i<0||n<0)throw new le.ErrnoError(28);if(le.isClosed(e))throw new le.ErrnoError(8);if(!(2097155&e.flags))throw new le.ErrnoError(8);if(le.isDir(e.node.mode))throw new le.ErrnoError(31);if(!e.stream_ops.write)throw new le.ErrnoError(28);e.seekable&&1024&e.flags&&le.llseek(e,0,2);var o=void 0!==n;if(o){if(!e.seekable)throw new le.ErrnoError(70)}else n=e.position;var a=e.stream_ops.write(e,t,r,i,n,s);return o||(e.position+=a),a},allocate:(e,t,r)=>{if(le.isClosed(e))throw new le.ErrnoError(8);if(t<0||r<=0)throw new le.ErrnoError(28);if(!(2097155&e.flags))throw new le.ErrnoError(8);if(!le.isFile(e.node.mode)&&!le.isDir(e.node.mode))throw new le.ErrnoError(43);if(!e.stream_ops.allocate)throw new le.ErrnoError(138);e.stream_ops.allocate(e,t,r)},mmap:(e,t,r,i,n)=>{if(2&i&&!(2&n)&&2!=(2097155&e.flags))throw new le.ErrnoError(2);if(1==(2097155&e.flags))throw new le.ErrnoError(2);if(!e.stream_ops.mmap)throw new le.ErrnoError(43);return e.stream_ops.mmap(e,t,r,i,n)},msync:(e,t,r,i,n)=>e&&e.stream_ops.msync?e.stream_ops.msync(e,t,r,i,n):0,munmap:e=>0,ioctl:(e,t,r)=>{if(!e.stream_ops.ioctl)throw new le.ErrnoError(59);return e.stream_ops.ioctl(e,t,r)},readFile:(e,t={})=>{if(t.flags=t.flags||0,t.encoding=t.encoding||"binary","utf8"!==t.encoding&&"binary"!==t.encoding)throw new Error('Invalid encoding type "'+t.encoding+'"');var r,i=le.open(e,t.flags),n=le.stat(e).size,s=new Uint8Array(n);return le.read(i,s,0,n,0),"utf8"===t.encoding?r=I(s,0):"binary"===t.encoding&&(r=s),le.close(i),r},writeFile:(e,t,r={})=>{r.flags=r.flags||577;var i=le.open(e,r.flags,r.mode);if("string"==typeof t){var n=new Uint8Array(M(t)+1),s=R(t,n,0,n.length);le.write(i,n,0,s,void 0,r.canOwn)}else{if(!ArrayBuffer.isView(t))throw new Error("Unsupported data type");le.write(i,t,0,t.byteLength,void 0,r.canOwn)}le.close(i)},cwd:()=>le.currentPath,chdir:e=>{var t=le.lookupPath(e,{follow:!0});if(null===t.node)throw new le.ErrnoError(44);if(!le.isDir(t.node.mode))throw new le.ErrnoError(54);var r=le.nodePermissions(t.node,"x");if(r)throw new le.ErrnoError(r);le.currentPath=t.path},createDefaultDirectories:()=>{le.mkdir("/tmp"),le.mkdir("/home"),le.mkdir("/home/web_user")},createDefaultDevices:()=>{le.mkdir("/dev"),le.registerDevice(le.makedev(1,3),{read:()=>0,write:(e,t,r,i,n)=>i}),le.mkdev("/dev/null",le.makedev(1,3)),oe.register(le.makedev(5,0),oe.default_tty_ops),oe.register(le.makedev(6,0),oe.default_tty1_ops),le.mkdev("/dev/tty",le.makedev(5,0)),le.mkdev("/dev/tty1",le.makedev(6,0));var e=function(){if("object"==typeof crypto&&"function"==typeof crypto.getRandomValues){var e=new Uint8Array(1);return()=>(crypto.getRandomValues(e),e[0])}if(p)try{var t=require("crypto");return()=>t.randomBytes(1)[0]}catch(e){}return()=>W("randomDevice")}();le.createDevice("/dev","random",e),le.createDevice("/dev","urandom",e),le.mkdir("/dev/shm"),le.mkdir("/dev/shm/tmp")},createSpecialDirectories:()=>{le.mkdir("/proc");var e=le.mkdir("/proc/self");le.mkdir("/proc/self/fd"),le.mount({mount:()=>{var t=le.createNode(e,"fd",16895,73);return t.node_ops={lookup:(e,t)=>{var r=+t,i=le.getStream(r);if(!i)throw new le.ErrnoError(8);var n={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>i.path}};return n.parent=n,n}},t}},{},"/proc/self/fd")},createStandardStreams:()=>{t.stdin?le.createDevice("/dev","stdin",t.stdin):le.symlink("/dev/tty","/dev/stdin"),t.stdout?le.createDevice("/dev","stdout",null,t.stdout):le.symlink("/dev/tty","/dev/stdout"),t.stderr?le.createDevice("/dev","stderr",null,t.stderr):le.symlink("/dev/tty1","/dev/stderr"),le.open("/dev/stdin",0),le.open("/dev/stdout",1),le.open("/dev/stderr",1)},ensureErrnoError:()=>{le.ErrnoError||(le.ErrnoError=function(e,t){this.node=t,this.setErrno=function(e){this.errno=e},this.setErrno(e),this.message="FS error"},le.ErrnoError.prototype=new Error,le.ErrnoError.prototype.constructor=le.ErrnoError,[44].forEach((e=>{le.genericErrors[e]=new le.ErrnoError(e),le.genericErrors[e].stack=""})))},staticInit:()=>{le.ensureErrnoError(),le.nameTable=new Array(4096),le.mount(de,{},"/"),le.createDefaultDirectories(),le.createDefaultDevices(),le.createSpecialDirectories(),le.filesystems={MEMFS:de}},init:(e,r,i)=>{le.init.initialized=!0,le.ensureErrnoError(),t.stdin=e||t.stdin,t.stdout=r||t.stdout,t.stderr=i||t.stderr,le.createStandardStreams()},quit:()=>{le.init.initialized=!1;for(var e=0;e{var r=0;return e&&(r|=365),t&&(r|=146),r},findObject:(e,t)=>{var r=le.analyzePath(e,t);return r.exists?r.object:null},analyzePath:(e,t)=>{try{e=(i=le.lookupPath(e,{follow:!t})).path}catch(e){}var r={isRoot:!1,exists:!1,error:0,name:null,path:null,object:null,parentExists:!1,parentPath:null,parentObject:null};try{var i=le.lookupPath(e,{parent:!0});r.parentExists=!0,r.parentPath=i.path,r.parentObject=i.node,r.name=ie.basename(e),i=le.lookupPath(e,{follow:!t}),r.exists=!0,r.path=i.path,r.object=i.node,r.name=i.node.name,r.isRoot="/"===i.path}catch(e){r.error=e.errno}return r},createPath:(e,t,r,i)=>{e="string"==typeof e?e:le.getPath(e);for(var n=t.split("/").reverse();n.length;){var s=n.pop();if(s){var o=ie.join2(e,s);try{le.mkdir(o)}catch(e){}e=o}}return o},createFile:(e,t,r,i,n)=>{var s=ie.join2("string"==typeof e?e:le.getPath(e),t),o=le.getMode(i,n);return le.create(s,o)},createDataFile:(e,t,r,i,n,s)=>{var o=t;e&&(e="string"==typeof e?e:le.getPath(e),o=t?ie.join2(e,t):e);var a=le.getMode(i,n),d=le.create(o,a);if(r){if("string"==typeof r){for(var l=new Array(r.length),u=0,c=r.length;u{var n=ie.join2("string"==typeof e?e:le.getPath(e),t),s=le.getMode(!!r,!!i);le.createDevice.major||(le.createDevice.major=64);var o=le.makedev(le.createDevice.major++,0);return le.registerDevice(o,{open:e=>{e.seekable=!1},close:e=>{i&&i.buffer&&i.buffer.length&&i(10)},read:(e,t,i,n,s)=>{for(var o=0,a=0;a{for(var o=0;o{if(e.isDevice||e.isFolder||e.link||e.contents)return!0;if("undefined"!=typeof XMLHttpRequest)throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.");if(!n)throw new Error("Cannot load without read() or XMLHttpRequest.");try{e.contents=se(n(e.url),!0),e.usedBytes=e.contents.length}catch(e){throw new le.ErrnoError(29)}},createLazyFile:(e,t,r,i,n)=>{function s(){this.lengthKnown=!1,this.chunks=[]}if(s.prototype.get=function(e){if(!(e>this.length-1||e<0)){var t=e%this.chunkSize,r=e/this.chunkSize|0;return this.getter(r)[t]}},s.prototype.setDataGetter=function(e){this.getter=e},s.prototype.cacheLength=function(){var e=new XMLHttpRequest;if(e.open("HEAD",r,!1),e.send(null),!(e.status>=200&&e.status<300||304===e.status))throw new Error("Couldn't load "+r+". Status: "+e.status);var t,i=Number(e.getResponseHeader("Content-length")),n=(t=e.getResponseHeader("Accept-Ranges"))&&"bytes"===t,s=(t=e.getResponseHeader("Content-Encoding"))&&"gzip"===t,o=1048576;n||(o=i);var a=this;a.setDataGetter((e=>{var t=e*o,n=(e+1)*o-1;if(n=Math.min(n,i-1),void 0===a.chunks[e]&&(a.chunks[e]=((e,t)=>{if(e>t)throw new Error("invalid range ("+e+", "+t+") or no bytes requested!");if(t>i-1)throw new Error("only "+i+" bytes available! programmer error!");var n=new XMLHttpRequest;if(n.open("GET",r,!1),i!==o&&n.setRequestHeader("Range","bytes="+e+"-"+t),n.responseType="arraybuffer",n.overrideMimeType&&n.overrideMimeType("text/plain; charset=x-user-defined"),n.send(null),!(n.status>=200&&n.status<300||304===n.status))throw new Error("Couldn't load "+r+". Status: "+n.status);return void 0!==n.response?new Uint8Array(n.response||[]):se(n.responseText||"",!0)})(t,n)),void 0===a.chunks[e])throw new Error("doXHR failed!");return a.chunks[e]})),!s&&i||(o=i=1,i=this.getter(0).length,o=i,_("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=i,this._chunkSize=o,this.lengthKnown=!0},"undefined"!=typeof XMLHttpRequest){if(!h)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var o=new s;Object.defineProperties(o,{length:{get:function(){return this.lengthKnown||this.cacheLength(),this._length}},chunkSize:{get:function(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}});var a={isDevice:!1,contents:o}}else a={isDevice:!1,url:r};var d=le.createFile(e,t,a,i,n);a.contents?d.contents=a.contents:a.url&&(d.contents=null,d.url=a.url),Object.defineProperties(d,{usedBytes:{get:function(){return this.contents.length}}});var l={};function u(e,t,r,i,n){var s=e.node.contents;if(n>=s.length)return 0;var o=Math.min(s.length-n,i);if(s.slice)for(var a=0;a{var t=d.stream_ops[e];l[e]=function(){return le.forceLoadFile(d),t.apply(null,arguments)}})),l.read=(e,t,r,i,n)=>(le.forceLoadFile(d),u(e,t,r,i,n)),l.mmap=(e,t,r,i,n)=>{le.forceLoadFile(d);var s=ae(t);if(!s)throw new le.ErrnoError(48);return u(e,x,s,t,r),{ptr:s,allocated:!0}},d.stream_ops=l,d},createPreloadedFile:(e,t,r,i,n,o,a,d,l,u)=>{var c=t?ne.resolve(ie.join2(e,t)):e;function f(r){function s(r){u&&u(),d||le.createDataFile(e,t,r,i,n,l),o&&o(),V()}Browser.handledByPreloadPlugin(r,c,s,(()=>{a&&a(),V()}))||s(r)}H(),"string"==typeof r?function(e,t,r,i){var n=i?"":"al "+e;s(e,(r=>{E(r,'Loading data file "'+e+'" failed (no arrayBuffer).'),t(new Uint8Array(r)),n&&V()}),(t=>{if(!r)throw'Loading data file "'+e+'" failed.';r()})),n&&H()}(r,(e=>f(e)),a):f(r)},indexedDB:()=>window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB,DB_NAME:()=>"EM_FS_"+window.location.pathname,DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:(e,t,r)=>{t=t||(()=>{}),r=r||(()=>{});var i=le.indexedDB();try{var n=i.open(le.DB_NAME(),le.DB_VERSION)}catch(e){return r(e)}n.onupgradeneeded=()=>{_("creating db"),n.result.createObjectStore(le.DB_STORE_NAME)},n.onsuccess=()=>{var i=n.result.transaction([le.DB_STORE_NAME],"readwrite"),s=i.objectStore(le.DB_STORE_NAME),o=0,a=0,d=e.length;function l(){0==a?t():r()}e.forEach((e=>{var t=s.put(le.analyzePath(e).object.contents,e);t.onsuccess=()=>{++o+a==d&&l()},t.onerror=()=>{a++,o+a==d&&l()}})),i.onerror=r},n.onerror=r},loadFilesFromDB:(e,t,r)=>{t=t||(()=>{}),r=r||(()=>{});var i=le.indexedDB();try{var n=i.open(le.DB_NAME(),le.DB_VERSION)}catch(e){return r(e)}n.onupgradeneeded=r,n.onsuccess=()=>{var i=n.result;try{var s=i.transaction([le.DB_STORE_NAME],"readonly")}catch(e){return void r(e)}var o=s.objectStore(le.DB_STORE_NAME),a=0,d=0,l=e.length;function u(){0==d?t():r()}e.forEach((e=>{var t=o.get(e);t.onsuccess=()=>{le.analyzePath(e).exists&&le.unlink(e),le.createDataFile(ie.dirname(e),ie.basename(e),t.result,!0,!0,!0),++a+d==l&&u()},t.onerror=()=>{d++,a+d==l&&u()}})),s.onerror=r},n.onerror=r}},ue={DEFAULT_POLLMASK:5,calculateAt:function(e,t,r){if(ie.isAbs(t))return t;var i;if(-100===e)i=le.cwd();else{var n=le.getStream(e);if(!n)throw new le.ErrnoError(8);i=n.path}if(0==t.length){if(!r)throw new le.ErrnoError(44);return i}return ie.join2(i,t)},doStat:function(e,t,r){try{var i=e(t)}catch(e){if(e&&e.node&&ie.normalize(t)!==ie.normalize(le.getPath(e.node)))return-54;throw e}return T[r>>2]=i.dev,T[r+4>>2]=0,T[r+8>>2]=i.ino,T[r+12>>2]=i.mode,T[r+16>>2]=i.nlink,T[r+20>>2]=i.uid,T[r+24>>2]=i.gid,T[r+28>>2]=i.rdev,T[r+32>>2]=0,K=[i.size>>>0,(q=i.size,+Math.abs(q)>=1?q>0?(0|Math.min(+Math.floor(q/4294967296),4294967295))>>>0:~~+Math.ceil((q-+(~~q>>>0))/4294967296)>>>0:0)],T[r+40>>2]=K[0],T[r+44>>2]=K[1],T[r+48>>2]=4096,T[r+52>>2]=i.blocks,K=[Math.floor(i.atime.getTime()/1e3)>>>0,(q=Math.floor(i.atime.getTime()/1e3),+Math.abs(q)>=1?q>0?(0|Math.min(+Math.floor(q/4294967296),4294967295))>>>0:~~+Math.ceil((q-+(~~q>>>0))/4294967296)>>>0:0)],T[r+56>>2]=K[0],T[r+60>>2]=K[1],T[r+64>>2]=0,K=[Math.floor(i.mtime.getTime()/1e3)>>>0,(q=Math.floor(i.mtime.getTime()/1e3),+Math.abs(q)>=1?q>0?(0|Math.min(+Math.floor(q/4294967296),4294967295))>>>0:~~+Math.ceil((q-+(~~q>>>0))/4294967296)>>>0:0)],T[r+72>>2]=K[0],T[r+76>>2]=K[1],T[r+80>>2]=0,K=[Math.floor(i.ctime.getTime()/1e3)>>>0,(q=Math.floor(i.ctime.getTime()/1e3),+Math.abs(q)>=1?q>0?(0|Math.min(+Math.floor(q/4294967296),4294967295))>>>0:~~+Math.ceil((q-+(~~q>>>0))/4294967296)>>>0:0)],T[r+88>>2]=K[0],T[r+92>>2]=K[1],T[r+96>>2]=0,K=[i.ino>>>0,(q=i.ino,+Math.abs(q)>=1?q>0?(0|Math.min(+Math.floor(q/4294967296),4294967295))>>>0:~~+Math.ceil((q-+(~~q>>>0))/4294967296)>>>0:0)],T[r+104>>2]=K[0],T[r+108>>2]=K[1],0},doMsync:function(e,t,r,i,n){var s=U.slice(e,e+r);le.msync(t,s,n,r,i)},varargs:void 0,get:function(){return ue.varargs+=4,T[ue.varargs-4>>2]},getStr:function(e){return L(e)},getStreamFromFD:function(e){var t=le.getStream(e);if(!t)throw new le.ErrnoError(8);return t}};function ce(e){switch(e){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+e)}}var fe=void 0;function he(e){for(var t="",r=e;U[r];)t+=fe[U[r++]];return t}var pe={},me={},_e={},ye=48,ge=57;function ve(e){if(void 0===e)return"_unknown";var t=(e=e.replace(/[^a-zA-Z0-9_]/g,"$")).charCodeAt(0);return t>=ye&&t<=ge?"_"+e:e}function be(e,t){return e=ve(e),new Function("body","return function "+e+'() {\n "use strict"; return body.apply(this, arguments);\n};\n')(t)}function we(e,t){var r=be(t,(function(e){this.name=t,this.message=e;var r=new Error(e).stack;void 0!==r&&(this.stack=this.toString()+"\n"+r.replace(/^Error(:[^\n]*)?\n/,""))}));return r.prototype=Object.create(e.prototype),r.prototype.constructor=r,r.prototype.toString=function(){return void 0===this.message?this.name:this.name+": "+this.message},r}var Ee=void 0;function Se(e){throw new Ee(e)}var xe=void 0;function Ue(e){throw new xe(e)}function Ae(e,t,r){function i(t){var i=r(t);i.length!==e.length&&Ue("Mismatched type converter count");for(var n=0;n{me.hasOwnProperty(e)?n[t]=me[e]:(s.push(e),pe.hasOwnProperty(e)||(pe[e]=[]),pe[e].push((()=>{n[t]=me[e],++o===s.length&&i(n)})))})),0===s.length&&i(n)}function ke(e,t,r={}){if(!("argPackAdvance"in t))throw new TypeError("registerType registeredInstance requires argPackAdvance");var i=t.name;if(e||Se('type "'+i+'" must have a positive integer typeid pointer'),me.hasOwnProperty(e)){if(r.ignoreDuplicateRegistrations)return;Se("Cannot register type '"+i+"' twice")}if(me[e]=t,delete _e[e],pe.hasOwnProperty(e)){var n=pe[e];delete pe[e],n.forEach((e=>e()))}}function Te(e){if(!(this instanceof Xe))return!1;if(!(e instanceof Xe))return!1;for(var t=this.$$.ptrType.registeredClass,r=this.$$.ptr,i=e.$$.ptrType.registeredClass,n=e.$$.ptr;t.baseClass;)r=t.upcast(r),t=t.baseClass;for(;i.baseClass;)n=i.upcast(n),i=i.baseClass;return t===i&&r===n}function Be(e){Se(e.$$.ptrType.registeredClass.name+" instance already deleted")}var Ce=!1;function De(e){}function Pe(e){e.count.value-=1,0===e.count.value&&function(e){e.smartPtr?e.smartPtrType.rawDestructor(e.smartPtr):e.ptrType.registeredClass.rawDestructor(e.ptr)}(e)}function Fe(e,t,r){if(t===r)return e;if(void 0===r.baseClass)return null;var i=Fe(e,t,r.baseClass);return null===i?null:r.downcast(i)}var Ie={};function Le(){return Object.keys($e).length}function Re(){var e=[];for(var t in $e)$e.hasOwnProperty(t)&&e.push($e[t]);return e}var Me=[];function ze(){for(;Me.length;){var e=Me.pop();e.$$.deleteScheduled=!1,e.delete()}}var Ne=void 0;function Oe(e){Ne=e,Me.length&&Ne&&Ne(ze)}var $e={};function Ge(e,t){return t=function(e,t){for(void 0===t&&Se("ptr should not be undefined");e.baseClass;)t=e.upcast(t),e=e.baseClass;return t}(e,t),$e[t]}function He(e,t){return t.ptrType&&t.ptr||Ue("makeClassHandle requires ptr and ptrType"),!!t.smartPtrType!==!!t.smartPtr&&Ue("Both smartPtrType and smartPtr must be specified"),t.count={value:1},We(Object.create(e,{$$:{value:t}}))}function Ve(e){var t=this.getPointee(e);if(!t)return this.destructor(e),null;var r=Ge(this.registeredClass,t);if(void 0!==r){if(0===r.$$.count.value)return r.$$.ptr=t,r.$$.smartPtr=e,r.clone();var i=r.clone();return this.destructor(e),i}function n(){return this.isSmartPointer?He(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:t,smartPtrType:this,smartPtr:e}):He(this.registeredClass.instancePrototype,{ptrType:this,ptr:e})}var s,o=this.registeredClass.getActualType(t),a=Ie[o];if(!a)return n.call(this);s=this.isConst?a.constPointerType:a.pointerType;var d=Fe(t,this.registeredClass,s.registeredClass);return null===d?n.call(this):this.isSmartPointer?He(s.registeredClass.instancePrototype,{ptrType:s,ptr:d,smartPtrType:this,smartPtr:e}):He(s.registeredClass.instancePrototype,{ptrType:s,ptr:d})}function We(e){return"undefined"==typeof FinalizationRegistry?(We=e=>e,e):(Ce=new FinalizationRegistry((e=>{Pe(e.$$)})),We=e=>{var t=e.$$;if(!!t.smartPtr){var r={$$:t};Ce.register(e,r,e)}return e},De=e=>Ce.unregister(e),We(e))}function je(){if(this.$$.ptr||Be(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var e,t=We(Object.create(Object.getPrototypeOf(this),{$$:{value:(e=this.$$,{count:e.count,deleteScheduled:e.deleteScheduled,preservePointerOnDelete:e.preservePointerOnDelete,ptr:e.ptr,ptrType:e.ptrType,smartPtr:e.smartPtr,smartPtrType:e.smartPtrType})}}));return t.$$.count.value+=1,t.$$.deleteScheduled=!1,t}function Ye(){this.$$.ptr||Be(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&Se("Object already scheduled for deletion"),De(this),Pe(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)}function qe(){return!this.$$.ptr}function Ke(){return this.$$.ptr||Be(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&Se("Object already scheduled for deletion"),Me.push(this),1===Me.length&&Ne&&Ne(ze),this.$$.deleteScheduled=!0,this}function Xe(){}function Ze(e,t,r){if(void 0===e[t].overloadTable){var i=e[t];e[t]=function(){return e[t].overloadTable.hasOwnProperty(arguments.length)||Se("Function '"+r+"' called with an invalid number of arguments ("+arguments.length+") - expects one of ("+e[t].overloadTable+")!"),e[t].overloadTable[arguments.length].apply(this,arguments)},e[t].overloadTable=[],e[t].overloadTable[i.argCount]=i}}function Je(e,t,r,i,n,s,o,a){this.name=e,this.constructor=t,this.instancePrototype=r,this.rawDestructor=i,this.baseClass=n,this.getActualType=s,this.upcast=o,this.downcast=a,this.pureVirtualFunctions=[]}function Qe(e,t,r){for(;t!==r;)t.upcast||Se("Expected null or instance of "+r.name+", got an instance of "+t.name),e=t.upcast(e),t=t.baseClass;return e}function et(e,t){if(null===t)return this.isReference&&Se("null is not a valid "+this.name),0;t.$$||Se('Cannot pass "'+Ut(t)+'" as a '+this.name),t.$$.ptr||Se("Cannot pass deleted object as a pointer of type "+this.name);var r=t.$$.ptrType.registeredClass;return Qe(t.$$.ptr,r,this.registeredClass)}function tt(e,t){var r;if(null===t)return this.isReference&&Se("null is not a valid "+this.name),this.isSmartPointer?(r=this.rawConstructor(),null!==e&&e.push(this.rawDestructor,r),r):0;t.$$||Se('Cannot pass "'+Ut(t)+'" as a '+this.name),t.$$.ptr||Se("Cannot pass deleted object as a pointer of type "+this.name),!this.isConst&&t.$$.ptrType.isConst&&Se("Cannot convert argument of type "+(t.$$.smartPtrType?t.$$.smartPtrType.name:t.$$.ptrType.name)+" to parameter type "+this.name);var i=t.$$.ptrType.registeredClass;if(r=Qe(t.$$.ptr,i,this.registeredClass),this.isSmartPointer)switch(void 0===t.$$.smartPtr&&Se("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:t.$$.smartPtrType===this?r=t.$$.smartPtr:Se("Cannot convert argument of type "+(t.$$.smartPtrType?t.$$.smartPtrType.name:t.$$.ptrType.name)+" to parameter type "+this.name);break;case 1:r=t.$$.smartPtr;break;case 2:if(t.$$.smartPtrType===this)r=t.$$.smartPtr;else{var n=t.clone();r=this.rawShare(r,xt.toHandle((function(){n.delete()}))),null!==e&&e.push(this.rawDestructor,r)}break;default:Se("Unsupporting sharing policy")}return r}function rt(e,t){if(null===t)return this.isReference&&Se("null is not a valid "+this.name),0;t.$$||Se('Cannot pass "'+Ut(t)+'" as a '+this.name),t.$$.ptr||Se("Cannot pass deleted object as a pointer of type "+this.name),t.$$.ptrType.isConst&&Se("Cannot convert argument of type "+t.$$.ptrType.name+" to parameter type "+this.name);var r=t.$$.ptrType.registeredClass;return Qe(t.$$.ptr,r,this.registeredClass)}function it(e){return this.fromWireType(T[e>>2])}function nt(e){return this.rawGetPointee&&(e=this.rawGetPointee(e)),e}function st(e){this.rawDestructor&&this.rawDestructor(e)}function ot(e){null!==e&&e.delete()}function at(e,t,r,i,n,s,o,a,d,l,u){this.name=e,this.registeredClass=t,this.isReference=r,this.isConst=i,this.isSmartPointer=n,this.pointeeType=s,this.sharingPolicy=o,this.rawGetPointee=a,this.rawConstructor=d,this.rawShare=l,this.rawDestructor=u,n||void 0!==t.baseClass?this.toWireType=tt:i?(this.toWireType=et,this.destructorFunction=null):(this.toWireType=rt,this.destructorFunction=null)}var dt=[];function lt(e){var t=dt[e];return t||(e>=dt.length&&(dt.length=e+1),dt[e]=t=P.get(e)),t}function ut(e,r,i){return e.includes("j")?function(e,r,i){var n=t["dynCall_"+e];return i&&i.length?n.apply(null,[r].concat(i)):n.call(null,r)}(e,r,i):lt(r).apply(null,i)}function ct(e,t){var r,i,n,s=(e=he(e)).includes("j")?(r=e,i=t,n=[],function(){return n.length=0,Object.assign(n,arguments),ut(r,i,n)}):lt(t);return"function"!=typeof s&&Se("unknown function pointer with signature "+e+": "+t),s}var ft=void 0;function ht(e){var t=jt(e),r=he(t);return Vt(t),r}function pt(e,t){var r=[],i={};throw t.forEach((function e(t){i[t]||me[t]||(_e[t]?_e[t].forEach(e):(r.push(t),i[t]=!0))})),new ft(e+": "+r.map(ht).join([", "]))}function mt(e,t){for(var r=[],i=0;i>2]);return r}function _t(e){for(;e.length;){var t=e.pop();e.pop()(t)}}function yt(e,t){if(!(e instanceof Function))throw new TypeError("new_ called with constructor type "+typeof e+" which is not a function");var r=be(e.name||"unknownFunctionName",(function(){}));r.prototype=e.prototype;var i=new r,n=e.apply(i,t);return n instanceof Object?n:i}function gt(e,t,r,i,n){var s=t.length;s<2&&Se("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var o=null!==t[1]&&null!==r,a=!1,d=1;d0?", ":"")+c),f+=(l?"var rv = ":"")+"invoker(fn"+(c.length>0?", ":"")+c+");\n",a)f+="runDestructors(destructors);\n";else for(d=o?1:2;d4&&0==--bt[e].refcount&&(bt[e]=void 0,vt.push(e))}function Et(){for(var e=0,t=5;t(e||Se("Cannot use deleted val. handle = "+e),bt[e].value),toHandle:e=>{switch(e){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:var t=vt.length?vt.pop():bt.length;return bt[t]={refcount:1,value:e},t}}};function Ut(e){if(null===e)return"null";var t=typeof e;return"object"===t||"array"===t||"function"===t?e.toString():""+e}function At(e,t){switch(t){case 2:return function(e){return this.fromWireType(C[e>>2])};case 3:return function(e){return this.fromWireType(D[e>>3])};default:throw new TypeError("Unknown float type: "+e)}}function kt(e,t,r){switch(t){case 0:return r?function(e){return x[e]}:function(e){return U[e]};case 1:return r?function(e){return A[e>>1]}:function(e){return k[e>>1]};case 2:return r?function(e){return T[e>>2]}:function(e){return B[e>>2]};default:throw new TypeError("Unknown integer type: "+e)}}var Tt="undefined"!=typeof TextDecoder?new TextDecoder("utf-16le"):void 0;function Bt(e,t){for(var r=e,i=r>>1,n=i+t/2;!(i>=n)&&k[i];)++i;if((r=i<<1)-e>32&&Tt)return Tt.decode(U.subarray(e,r));for(var s="",o=0;!(o>=t/2);++o){var a=A[e+2*o>>1];if(0==a)break;s+=String.fromCharCode(a)}return s}function Ct(e,t,r){if(void 0===r&&(r=2147483647),r<2)return 0;for(var i=t,n=(r-=2)<2*e.length?r/2:e.length,s=0;s>1]=o,t+=2}return A[t>>1]=0,t-i}function Dt(e){return 2*e.length}function Pt(e,t){for(var r=0,i="";!(r>=t/4);){var n=T[e+4*r>>2];if(0==n)break;if(++r,n>=65536){var s=n-65536;i+=String.fromCharCode(55296|s>>10,56320|1023&s)}else i+=String.fromCharCode(n)}return i}function Ft(e,t,r){if(void 0===r&&(r=2147483647),r<4)return 0;for(var i=t,n=i+r-4,s=0;s=55296&&o<=57343)o=65536+((1023&o)<<10)|1023&e.charCodeAt(++s);if(T[t>>2]=o,(t+=4)+4>n)break}return T[t>>2]=0,t-i}function It(e){for(var t=0,r=0;r=55296&&i<=57343&&++r,t+=4}return t}var Lt={};var Rt=[];var Mt=[];var zt={};function Nt(){if(!Nt.strings){var e={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:("object"==typeof navigator&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:c||"./this.program"};for(var t in zt)void 0===zt[t]?delete e[t]:e[t]=zt[t];var r=[];for(var t in e)r.push(t+"="+e[t]);Nt.strings=r}return Nt.strings}var Ot=function(e,t,r,i){e||(e=this),this.parent=e,this.mount=e.mount,this.mounted=null,this.id=le.nextInode++,this.name=t,this.mode=r,this.node_ops={},this.stream_ops={},this.rdev=i},$t=365,Gt=146;Object.defineProperties(Ot.prototype,{read:{get:function(){return(this.mode&$t)===$t},set:function(e){e?this.mode|=$t:this.mode&=-366}},write:{get:function(){return(this.mode&Gt)===Gt},set:function(e){e?this.mode|=Gt:this.mode&=-147}},isFolder:{get:function(){return le.isDir(this.mode)}},isDevice:{get:function(){return le.isChrdev(this.mode)}}}),le.FSNode=Ot,le.staticInit(),function(){for(var e=new Array(256),t=0;t<256;++t)e[t]=String.fromCharCode(t);fe=e}(),Ee=t.BindingError=we(Error,"BindingError"),xe=t.InternalError=we(Error,"InternalError"),Xe.prototype.isAliasOf=Te,Xe.prototype.clone=je,Xe.prototype.delete=Ye,Xe.prototype.isDeleted=qe,Xe.prototype.deleteLater=Ke,t.getInheritedInstanceCount=Le,t.getLiveInheritedInstances=Re,t.flushPendingDeletes=ze,t.setDelayFunction=Oe,at.prototype.getPointee=nt,at.prototype.destructor=st,at.prototype.argPackAdvance=8,at.prototype.readValueFromPointer=it,at.prototype.deleteObject=ot,at.prototype.fromWireType=Ve,ft=t.UnboundTypeError=we(Error,"UnboundTypeError"),t.count_emval_handles=Et,t.get_first_emval=St;var Ht={q:function(e){return qt(e+24)+24},p:function(e,t,r){throw new re(e).init(t,r),e},C:function(e,t,r){ue.varargs=r;try{var i=ue.getStreamFromFD(e);switch(t){case 0:return(n=ue.get())<0?-28:le.createStream(i,n).fd;case 1:case 2:case 6:case 7:return 0;case 3:return i.flags;case 4:var n=ue.get();return i.flags|=n,0;case 5:n=ue.get();return A[n+0>>1]=2,0;case 16:case 8:default:return-28;case 9:return s=28,T[Wt()>>2]=s,-1}}catch(e){if(void 0===le||!(e instanceof le.ErrnoError))throw e;return-e.errno}var s},w:function(e,t,r,i){ue.varargs=i;try{t=ue.getStr(t),t=ue.calculateAt(e,t);var n=i?ue.get():0;return le.open(t,r,n).fd}catch(e){if(void 0===le||!(e instanceof le.ErrnoError))throw e;return-e.errno}},u:function(e,t,r,i,n){},E:function(e,t,r,i,n){var s=ce(r);ke(e,{name:t=he(t),fromWireType:function(e){return!!e},toWireType:function(e,t){return t?i:n},argPackAdvance:8,readValueFromPointer:function(e){var i;if(1===r)i=x;else if(2===r)i=A;else{if(4!==r)throw new TypeError("Unknown boolean type size: "+t);i=T}return this.fromWireType(i[e>>s])},destructorFunction:null})},t:function(e,r,i,n,s,o,a,d,l,u,c,f,h){c=he(c),o=ct(s,o),d&&(d=ct(a,d)),u&&(u=ct(l,u)),h=ct(f,h);var p=ve(c);!function(e,r,i){t.hasOwnProperty(e)?((void 0===i||void 0!==t[e].overloadTable&&void 0!==t[e].overloadTable[i])&&Se("Cannot register public name '"+e+"' twice"),Ze(t,e,e),t.hasOwnProperty(i)&&Se("Cannot register multiple overloads of a function with the same number of arguments ("+i+")!"),t[e].overloadTable[i]=r):(t[e]=r,void 0!==i&&(t[e].numArguments=i))}(p,(function(){pt("Cannot construct "+c+" due to unbound types",[n])})),Ae([e,r,i],n?[n]:[],(function(r){var i,s;r=r[0],s=n?(i=r.registeredClass).instancePrototype:Xe.prototype;var a=be(p,(function(){if(Object.getPrototypeOf(this)!==l)throw new Ee("Use 'new' to construct "+c);if(void 0===f.constructor_body)throw new Ee(c+" has no accessible constructor");var e=f.constructor_body[arguments.length];if(void 0===e)throw new Ee("Tried to invoke ctor of "+c+" with invalid number of parameters ("+arguments.length+") - expected ("+Object.keys(f.constructor_body).toString()+") parameters instead!");return e.apply(this,arguments)})),l=Object.create(s,{constructor:{value:a}});a.prototype=l;var f=new Je(c,a,l,h,i,o,d,u),m=new at(c,f,!0,!1,!1),_=new at(c+"*",f,!1,!1,!1),y=new at(c+" const*",f,!1,!0,!1);return Ie[e]={pointerType:_,constPointerType:y},function(e,r,i){t.hasOwnProperty(e)||Ue("Replacing nonexistant public symbol"),void 0!==t[e].overloadTable&&void 0!==i?t[e].overloadTable[i]=r:(t[e]=r,t[e].argCount=i)}(p,a),[m,_,y]}))},r:function(e,t,r,i,n,s){E(t>0);var o=mt(t,r);n=ct(i,n),Ae([],[e],(function(e){var r="constructor "+(e=e[0]).name;if(void 0===e.registeredClass.constructor_body&&(e.registeredClass.constructor_body=[]),void 0!==e.registeredClass.constructor_body[t-1])throw new Ee("Cannot register multiple constructors with identical number of parameters ("+(t-1)+") for class '"+e.name+"'! Overload resolution is currently only performed using the parameter count, not actual type info!");return e.registeredClass.constructor_body[t-1]=()=>{pt("Cannot construct "+e.name+" due to unbound types",o)},Ae([],o,(function(i){return i.splice(1,0,null),e.registeredClass.constructor_body[t-1]=gt(r,i,null,n,s),[]})),[]}))},d:function(e,t,r,i,n,s,o,a){var d=mt(r,i);t=he(t),s=ct(n,s),Ae([],[e],(function(e){var i=(e=e[0]).name+"."+t;function n(){pt("Cannot call "+i+" due to unbound types",d)}t.startsWith("@@")&&(t=Symbol[t.substring(2)]),a&&e.registeredClass.pureVirtualFunctions.push(t);var l=e.registeredClass.instancePrototype,u=l[t];return void 0===u||void 0===u.overloadTable&&u.className!==e.name&&u.argCount===r-2?(n.argCount=r-2,n.className=e.name,l[t]=n):(Ze(l,t,i),l[t].overloadTable[r-2]=n),Ae([],d,(function(n){var a=gt(i,n,e,s,o);return void 0===l[t].overloadTable?(a.argCount=r-2,l[t]=a):l[t].overloadTable[r-2]=a,[]})),[]}))},D:function(e,t){ke(e,{name:t=he(t),fromWireType:function(e){var t=xt.toValue(e);return wt(e),t},toWireType:function(e,t){return xt.toHandle(t)},argPackAdvance:8,readValueFromPointer:it,destructorFunction:null})},n:function(e,t,r){var i=ce(r);ke(e,{name:t=he(t),fromWireType:function(e){return e},toWireType:function(e,t){return t},argPackAdvance:8,readValueFromPointer:At(t,i),destructorFunction:null})},c:function(e,t,r,i,n){t=he(t);var s=ce(r),o=e=>e;if(0===i){var a=32-8*r;o=e=>e<>>a}var d=t.includes("unsigned");ke(e,{name:t,fromWireType:o,toWireType:d?function(e,t){return this.name,t>>>0}:function(e,t){return this.name,t},argPackAdvance:8,readValueFromPointer:kt(t,s,0!==i),destructorFunction:null})},b:function(e,t,r){var i=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][t];function n(e){var t=B,r=t[e>>=2],n=t[e+1];return new i(S,n,r)}ke(e,{name:r=he(r),fromWireType:n,argPackAdvance:8,readValueFromPointer:n},{ignoreDuplicateRegistrations:!0})},m:function(e,t){var r="std::string"===(t=he(t));ke(e,{name:t,fromWireType:function(e){var t,i=B[e>>2],n=e+4;if(r)for(var s=n,o=0;o<=i;++o){var a=n+o;if(o==i||0==U[a]){var d=L(s,a-s);void 0===t?t=d:(t+=String.fromCharCode(0),t+=d),s=a+1}}else{var l=new Array(i);for(o=0;o>2]=i,r&&n)R(t,U,o,i+1);else if(n)for(var a=0;a255&&(Vt(o),Se("String has UTF-16 code units that do not fit in 8 bits")),U[o+a]=d}else for(a=0;ak,a=1):4===t&&(i=Pt,n=Ft,o=It,s=()=>B,a=2),ke(e,{name:r,fromWireType:function(e){for(var r,n=B[e>>2],o=s(),d=e+4,l=0;l<=n;++l){var u=e+4+l*t;if(l==n||0==o[u>>a]){var c=i(d,u-d);void 0===r?r=c:(r+=String.fromCharCode(0),r+=c),d=u+t}}return Vt(e),r},toWireType:function(e,i){"string"!=typeof i&&Se("Cannot pass non-string to C++ string type "+r);var s=o(i),d=qt(4+s+t);return B[d>>2]=s>>a,n(i,d+4,s+t),null!==e&&e.push(Vt,d),d},argPackAdvance:8,readValueFromPointer:it,destructorFunction:function(e){Vt(e)}})},o:function(e,t){ke(e,{isVoid:!0,name:t=he(t),argPackAdvance:0,fromWireType:function(){},toWireType:function(e,t){}})},f:function(){return Date.now()},g:function(e,t,r,i){var n,s;(e=Rt[e])(t=xt.toValue(t),r=void 0===(s=Lt[n=r])?he(n):s,null,i)},j:wt,i:function(e,t){var r=function(e,t){for(var r,i,n,s=new Array(e),o=0;o>2],i="parameter "+o,n=void 0,void 0===(n=me[r])&&Se(i+" has unknown type "+ht(r)),n);return s}(e,t),i=r[0],n=i.name+"_$"+r.slice(1).map((function(e){return e.name})).join("_")+"$",s=Mt[n];if(void 0!==s)return s;for(var o=["retType"],a=[i],d="",l=0;l>2]=s,function(e,t,r){for(var i=0;i>2]=r.length;var i=0;return r.forEach((function(e){i+=e.length+1})),B[t>>2]=i,0},l:function(e){try{var t=ue.getStreamFromFD(e);return le.close(t),0}catch(e){if(void 0===le||!(e instanceof le.ErrnoError))throw e;return e.errno}},x:function(e,t){try{var r=ue.getStreamFromFD(e),i=r.tty?2:le.isDir(r.mode)?3:le.isLink(r.mode)?7:4;return x[t|0]=i,0}catch(e){if(void 0===le||!(e instanceof le.ErrnoError))throw e;return e.errno}},B:function(e,t,r,i){try{var n=function(e,t,r,i){for(var n=0,s=0;s>2],a=B[t+4>>2];t+=8;var d=le.read(e,x,o,a,i);if(d<0)return-1;if(n+=d,d>2]=n,0}catch(e){if(void 0===le||!(e instanceof le.ErrnoError))throw e;return e.errno}},s:function(e,t,r,i,n){try{var s=(d=r)+2097152>>>0<4194305-!!(a=t)?(a>>>0)+4294967296*d:NaN;if(isNaN(s))return 61;var o=ue.getStreamFromFD(e);return le.llseek(o,s,i),K=[o.position>>>0,(q=o.position,+Math.abs(q)>=1?q>0?(0|Math.min(+Math.floor(q/4294967296),4294967295))>>>0:~~+Math.ceil((q-+(~~q>>>0))/4294967296)>>>0:0)],T[n>>2]=K[0],T[n+4>>2]=K[1],o.getdents&&0===s&&0===i&&(o.getdents=null),0}catch(e){if(void 0===le||!(e instanceof le.ErrnoError))throw e;return e.errno}var a,d},k:function(e,t,r,i){try{var n=function(e,t,r,i){for(var n=0,s=0;s>2],a=B[t+4>>2];t+=8;var d=le.write(e,x,o,a,i);if(d<0)return-1;n+=d}return n}(ue.getStreamFromFD(e),t,r);return B[i>>2]=n,0}catch(e){if(void 0===le||!(e instanceof le.ErrnoError))throw e;return e.errno}},e:function(e){}};!function(){var e={a:Ht};function r(e,r){var i,n,s=e.exports;t.asm=s,v=t.asm.F,i=v.buffer,S=i,t.HEAP8=x=new Int8Array(i),t.HEAP16=A=new Int16Array(i),t.HEAP32=T=new Int32Array(i),t.HEAPU8=U=new Uint8Array(i),t.HEAPU16=k=new Uint16Array(i),t.HEAPU32=B=new Uint32Array(i),t.HEAPF32=C=new Float32Array(i),t.HEAPF64=D=new Float64Array(i),P=t.asm.I,n=t.asm.G,N.unshift(n),V()}function n(e){r(e.instance)}function o(t){return function(){if(!g&&(f||h)){if("function"==typeof fetch&&!J(j))return fetch(j,{credentials:"same-origin"}).then((function(e){if(!e.ok)throw"failed to load wasm binary file at '"+j+"'";return e.arrayBuffer()})).catch((function(){return Q(j)}));if(s)return new Promise((function(e,t){s(j,(function(t){e(new Uint8Array(t))}),t)}))}return Promise.resolve().then((function(){return Q(j)}))}().then((function(t){return WebAssembly.instantiate(t,e)})).then((function(e){return e})).then(t,(function(e){y("failed to asynchronously prepare wasm: "+e),W(e)}))}if(H(),t.instantiateWasm)try{return t.instantiateWasm(e,r)}catch(e){return y("Module.instantiateWasm callback failed with error: "+e),!1}(g||"function"!=typeof WebAssembly.instantiateStreaming||Z(j)||J(j)||p||"function"!=typeof fetch?o(n):fetch(j,{credentials:"same-origin"}).then((function(t){return WebAssembly.instantiateStreaming(t,e).then(n,(function(e){return y("wasm streaming compile failed: "+e),y("falling back to ArrayBuffer instantiation"),o(n)}))}))).catch(i)}(),t.___wasm_call_ctors=function(){return(t.___wasm_call_ctors=t.asm.G).apply(null,arguments)};var Vt=t._free=function(){return(Vt=t._free=t.asm.H).apply(null,arguments)},Wt=t.___errno_location=function(){return(Wt=t.___errno_location=t.asm.J).apply(null,arguments)},jt=t.___getTypeName=function(){return(jt=t.___getTypeName=t.asm.K).apply(null,arguments)};t.___embind_register_native_and_builtin_types=function(){return(t.___embind_register_native_and_builtin_types=t.asm.L).apply(null,arguments)};var Yt,qt=t._malloc=function(){return(qt=t._malloc=t.asm.M).apply(null,arguments)},Kt=t._emscripten_builtin_memalign=function(){return(Kt=t._emscripten_builtin_memalign=t.asm.N).apply(null,arguments)},Xt=t.___cxa_is_pointer_type=function(){return(Xt=t.___cxa_is_pointer_type=t.asm.O).apply(null,arguments)};function Zt(e){function i(){Yt||(Yt=!0,t.calledRun=!0,w||(t.noFSInit||le.init.initialized||le.init(),le.ignorePermissions=!1,te(N),r(t),t.onRuntimeInitialized&&t.onRuntimeInitialized(),function(){if(t.postRun)for("function"==typeof t.postRun&&(t.postRun=[t.postRun]);t.postRun.length;)e=t.postRun.shift(),O.unshift(e);var e;te(O)}()))}$>0||(!function(){if(t.preRun)for("function"==typeof t.preRun&&(t.preRun=[t.preRun]);t.preRun.length;)e=t.preRun.shift(),z.unshift(e);var e;te(z)}(),$>0||(t.setStatus?(t.setStatus("Running..."),setTimeout((function(){setTimeout((function(){t.setStatus("")}),1),i()}),1)):i()))}if(t.dynCall_viiijj=function(){return(t.dynCall_viiijj=t.asm.P).apply(null,arguments)},t.dynCall_jij=function(){return(t.dynCall_jij=t.asm.Q).apply(null,arguments)},t.dynCall_jii=function(){return(t.dynCall_jii=t.asm.R).apply(null,arguments)},t.dynCall_jiji=function(){return(t.dynCall_jiji=t.asm.S).apply(null,arguments)},G=function e(){Yt||Zt(),Yt||(G=e)},t.preInit)for("function"==typeof t.preInit&&(t.preInit=[t.preInit]);t.preInit.length>0;)t.preInit.pop()();return Zt(),t.ready}})(),i=1e-6,n="undefined"!=typeof Float32Array?Float32Array:Array;function s(){var e=new n(16);return n!=Float32Array&&(e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=0,e[12]=0,e[13]=0,e[14]=0),e[0]=1,e[5]=1,e[10]=1,e[15]=1,e}function o(e){return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}Math.hypot||(Math.hypot=function(){for(var e=0,t=arguments.length;t--;)e+=arguments[t]*arguments[t];return Math.sqrt(e)});var a,d=function(e,t,r,i,n,s,o){var a=1/(t-r),d=1/(i-n),l=1/(s-o);return e[0]=-2*a,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=-2*d,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=2*l,e[11]=0,e[12]=(t+r)*a,e[13]=(n+i)*d,e[14]=(o+s)*l,e[15]=1,e};function l(e,t,r){var i=new n(3);return i[0]=e,i[1]=t,i[2]=r,i}a=new n(3),n!=Float32Array&&(a[0]=0,a[1]=0,a[2]=0);var u=(e,t)=>{t&&e.pixelStorei(e.UNPACK_ALIGNMENT,1);const r=function(){const t=m(e.VERTEX_SHADER,"\n attribute vec4 aVertexPosition;\n attribute vec2 aTexturePosition;\n uniform mat4 uModelMatrix;\n uniform mat4 uViewMatrix;\n uniform mat4 uProjectionMatrix;\n varying lowp vec2 vTexturePosition;\n void main(void) {\n gl_Position = uProjectionMatrix * uViewMatrix * uModelMatrix * aVertexPosition;\n vTexturePosition = aTexturePosition;\n }\n "),r=m(e.FRAGMENT_SHADER,"\n precision highp float;\n varying highp vec2 vTexturePosition;\n uniform int isyuv;\n uniform sampler2D rgbaTexture;\n uniform sampler2D yTexture;\n uniform sampler2D uTexture;\n uniform sampler2D vTexture;\n\n const mat4 YUV2RGB = mat4( 1.1643828125, 0, 1.59602734375, -.87078515625,\n 1.1643828125, -.39176171875, -.81296875, .52959375,\n 1.1643828125, 2.017234375, 0, -1.081390625,\n 0, 0, 0, 1);\n\n\n void main(void) {\n\n if (isyuv>0) {\n\n highp float y = texture2D(yTexture, vTexturePosition).r;\n highp float u = texture2D(uTexture, vTexturePosition).r;\n highp float v = texture2D(vTexture, vTexturePosition).r;\n gl_FragColor = vec4(y, u, v, 1) * YUV2RGB;\n\n } else {\n gl_FragColor = texture2D(rgbaTexture, vTexturePosition);\n }\n }\n "),i=e.createProgram();if(e.attachShader(i,t),e.attachShader(i,r),e.linkProgram(i),!e.getProgramParameter(i,e.LINK_STATUS))return console.log("Unable to initialize the shader program: "+e.getProgramInfoLog(i)),null;return i}();let n={program:r,attribLocations:{vertexPosition:e.getAttribLocation(r,"aVertexPosition"),texturePosition:e.getAttribLocation(r,"aTexturePosition")},uniformLocations:{projectionMatrix:e.getUniformLocation(r,"uProjectionMatrix"),modelMatrix:e.getUniformLocation(r,"uModelMatrix"),viewMatrix:e.getUniformLocation(r,"uViewMatrix"),rgbatexture:e.getUniformLocation(r,"rgbaTexture"),ytexture:e.getUniformLocation(r,"yTexture"),utexture:e.getUniformLocation(r,"uTexture"),vtexture:e.getUniformLocation(r,"vTexture"),isyuv:e.getUniformLocation(r,"isyuv")}},a=function(){const t=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,t);e.bufferData(e.ARRAY_BUFFER,new Float32Array([-1,-1,-1,1,-1,-1,1,1,-1,-1,1,-1]),e.STATIC_DRAW);var r=[];r=r.concat([0,1],[1,1],[1,0],[0,0]);const i=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,i),e.bufferData(e.ARRAY_BUFFER,new Float32Array(r),e.STATIC_DRAW);const n=e.createBuffer();e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,n);return e.bufferData(e.ELEMENT_ARRAY_BUFFER,new Uint16Array([0,1,2,0,2,3]),e.STATIC_DRAW),{position:t,texPosition:i,indices:n}}(),u=p(),c=p(),f=p(),h=p();function p(){let t=e.createTexture();return e.bindTexture(e.TEXTURE_2D,t),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),t}function m(t,r){const i=e.createShader(t);return e.shaderSource(i,r),e.compileShader(i),e.getShaderParameter(i,e.COMPILE_STATUS)?i:(console.log("An error occurred compiling the shaders: "+e.getShaderInfoLog(i)),e.deleteShader(i),null)}function _(t,r){e.viewport(0,0,t,r),e.clearColor(0,0,0,0),e.clearDepth(1),e.enable(e.DEPTH_TEST),e.depthFunc(e.LEQUAL),e.clear(e.COLOR_BUFFER_BIT|e.DEPTH_BUFFER_BIT);const u=s();d(u,-1,1,-1,1,.1,100);const p=s();o(p);const m=s();!function(e,t,r,n){var s,a,d,l,u,c,f,h,p,m,_=t[0],y=t[1],g=t[2],v=n[0],b=n[1],w=n[2],E=r[0],S=r[1],x=r[2];Math.abs(_-E)>1,(1&t)<<7|r<<3])}function je(e){return Ye(e)&&e[1]===Pe.sequenceHeader}function Ye(e){return e[0]>>4===Ue.AAC}Ve((function(e){!function(){var t="undefined"!=typeof window&&void 0!==window.document?window.document:{},r=e.exports,i=function(){for(var e,r=[["requestFullscreen","exitFullscreen","fullscreenElement","fullscreenEnabled","fullscreenchange","fullscreenerror"],["webkitRequestFullscreen","webkitExitFullscreen","webkitFullscreenElement","webkitFullscreenEnabled","webkitfullscreenchange","webkitfullscreenerror"],["webkitRequestFullScreen","webkitCancelFullScreen","webkitCurrentFullScreenElement","webkitCancelFullScreen","webkitfullscreenchange","webkitfullscreenerror"],["mozRequestFullScreen","mozCancelFullScreen","mozFullScreenElement","mozFullScreenEnabled","mozfullscreenchange","mozfullscreenerror"],["msRequestFullscreen","msExitFullscreen","msFullscreenElement","msFullscreenEnabled","MSFullscreenChange","MSFullscreenError"]],i=0,n=r.length,s={};i{if(n=i,"[object Number]"!==Object.prototype.toString.call(n))return;var n;t+=i;const s=Qe(),o=s-r;o>=1e3&&(e(t/o*1e3),r=s,t=0)}}function tt(){const e=window.navigator.userAgent;return!e.match(/Chrome/gi)&&!!e.match(/Safari/gi)}function rt(e){return null==e}function it(e){e.close()}function nt(e,t){t&&(e=e.filter((e=>e.type&&e.type===t)));let r=e[0],i=null,n=1;if(e.length>0){let t=e[1];t&&t.ts-r.ts>1e5&&(r=t,n=2)}if(r)for(let s=n;s=1e3){e[s-1].ts-r.ts<1e3&&(i=s+1)}}}return i}function st(){return function(e){let t="";if("object"==typeof e)try{t=JSON.stringify(e),t=JSON.parse(t)}catch(r){t=e}else t=e;return t}(w)}function ot(e){return e[0]>>4===Fe.keyFrame&&e[1]===Pe.sequenceHeader}function at(e){return!0===e||"true"===e}function dt(e){return!0!==e&&"true"!==e}(()=>{try{if("object"==typeof WebAssembly&&"function"==typeof WebAssembly.instantiate){const e=new WebAssembly.Module(Uint8Array.of(0,97,115,109,1,0,0,0));if(e instanceof WebAssembly.Module)return new WebAssembly.Instance(e)instanceof WebAssembly.Instance}}catch(e){}})();var lt=function(e,t,r,i){return new(r||(r=Promise))((function(n,s){function o(e){try{d(i.next(e))}catch(e){s(e)}}function a(e){try{d(i.throw(e))}catch(e){s(e)}}function d(e){var t;e.done?n(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(o,a)}d((i=i.apply(e,t||[])).next())}))};const ut=Symbol(32),ct=Symbol(16),ft=Symbol(8);class ht{constructor(e){this.g=e,this.consumed=0,e&&(this.need=e.next().value)}setG(e){this.g=e,this.demand(e.next().value,!0)}consume(){this.buffer&&this.consumed&&(this.buffer.copyWithin(0,this.consumed),this.buffer=this.buffer.subarray(0,this.buffer.length-this.consumed),this.consumed=0)}demand(e,t){return t&&this.consume(),this.need=e,this.flush()}read(e){return lt(this,void 0,void 0,(function*(){return this.lastReadPromise&&(yield this.lastReadPromise),this.lastReadPromise=new Promise(((t,r)=>{var i;this.reject=r,this.resolve=e=>{delete this.lastReadPromise,delete this.resolve,delete this.need,t(e)};this.demand(e,!0)||null===(i=this.pull)||void 0===i||i.call(this,e)}))}))}readU32(){return this.read(ut)}readU16(){return this.read(ct)}readU8(){return this.read(ft)}close(){var e;this.g&&this.g.return(),this.buffer&&this.buffer.subarray(0,0),null===(e=this.reject)||void 0===e||e.call(this,new Error("EOF")),delete this.lastReadPromise}flush(){if(!this.buffer||!this.need)return;let e=null;const t=this.buffer.subarray(this.consumed);let r=0;const i=e=>t.length<(r=e);if("number"==typeof this.need){if(i(this.need))return;e=t.subarray(0,r)}else if(this.need===ut){if(i(4))return;e=t[0]<<24|t[1]<<16|t[2]<<8|t[3]}else if(this.need===ct){if(i(2))return;e=t[0]<<8|t[1]}else if(this.need===ft){if(i(1))return;e=t[0]}else if("buffer"in this.need){if("byteOffset"in this.need){if(i(this.need.byteLength-this.need.byteOffset))return;new Uint8Array(this.need.buffer,this.need.byteOffset).set(t.subarray(0,r)),e=this.need}else if(this.g)return void this.g.throw(new Error("Unsupported type"))}else{if(i(this.need.byteLength))return;new Uint8Array(this.need).set(t.subarray(0,r)),e=this.need}return this.consumed+=r,this.g?this.demand(this.g.next(e).value,!0):this.resolve&&this.resolve(e),e}write(e){if(e instanceof Uint8Array?this.malloc(e.length).set(e):"buffer"in e?this.malloc(e.byteLength).set(new Uint8Array(e.buffer,e.byteOffset,e.byteLength)):this.malloc(e.byteLength).set(new Uint8Array(e)),!this.g&&!this.resolve)return new Promise((e=>this.pull=e));this.flush()}writeU32(e){this.malloc(4).set([e>>24&255,e>>16&255,e>>8&255,255&e]),this.flush()}writeU16(e){this.malloc(2).set([e>>8&255,255&e]),this.flush()}writeU8(e){this.malloc(1)[0]=e,this.flush()}malloc(e){if(this.buffer){const t=this.buffer.length,r=t+e;if(r<=this.buffer.buffer.byteLength-this.buffer.byteOffset)this.buffer=new Uint8Array(this.buffer.buffer,this.buffer.byteOffset,r);else{const e=new Uint8Array(r);e.set(this.buffer),this.buffer=e}return this.buffer.subarray(t,r)}return this.buffer=new Uint8Array(e),this.buffer}}ht.U32=ut,ht.U16=ct,ht.U8=ft;class pt{constructor(e){this.log=(t,...r)=>{if(e._opt.debug&&e._opt.debugLevel==g){const i=e._opt.debugUuid?`[${e._opt.debugUuid}]`:"";console.log(`EasyPro${i}[✅✅✅][${t}]`,...r)}},this.warn=(t,...r)=>{if(e._opt.debug&&(e._opt.debugLevel==g||e._opt.debugLevel==v)){const i=e._opt.debugUuid?`[${e._opt.debugUuid}]`:"";console.log(`EasyPro${i}[❗❗❗][${t}]`,...r)}},this.error=(t,...r)=>{const i=e._opt.debugUuid?`[${e._opt.debugUuid}]`:"";console.error(`EasyPro${i}[❌❌❌][${t}]`,...r)}}}class mt{constructor(e){this._buffer=e,this._buffer_index=0,this._total_bytes=e.byteLength,this._total_bits=8*e.byteLength,this._current_word=0,this._current_word_bits_left=0}destroy(){this._buffer=null}_fillCurrentWord(){let e=this._total_bytes-this._buffer_index;if(e<=0)return void console.error("ExpGolomb: _fillCurrentWord() but no bytes available",this._total_bytes,this._buffer_index);let t=Math.min(4,e),r=new Uint8Array(4);r.set(this._buffer.subarray(this._buffer_index,this._buffer_index+t)),this._current_word=new DataView(r.buffer).getUint32(0,!1),this._buffer_index+=t,this._current_word_bits_left=8*t}readBits(e){if(e>32&&console.error("ExpGolomb: readBits() bits exceeded max 32bits!"),e<=this._current_word_bits_left){let t=this._current_word>>>32-e;return this._current_word<<=e,this._current_word_bits_left-=e,t}let t=this._current_word_bits_left?this._current_word:0;t>>>=32-this._current_word_bits_left;let r=e-this._current_word_bits_left;this._fillCurrentWord();let i=Math.min(r,this._current_word_bits_left),n=this._current_word>>>32-i;return this._current_word<<=i,this._current_word_bits_left-=i,t=t<>>e)return this._current_word<<=e,this._current_word_bits_left-=e,e;return this._fillCurrentWord(),e+this._skipLeadingZero()}readUEG(){let e=this._skipLeadingZero();return this.readBits(e+1)-1}readSEG(){let e=this.readUEG();return 1&e?e+1>>>1:-1*(e>>>1)}}class _t{static _ebsp2rbsp(e){let t=e,r=t.byteLength,i=new Uint8Array(r),n=0;for(let e=0;e=2&&3===t[e]&&0===t[e-1]&&0===t[e-2]||(i[n]=t[e],n++);return new Uint8Array(i.buffer,0,n)}static parseSPS(e){let t=_t._ebsp2rbsp(e),r=new mt(t);r.readByte();let i=r.readByte();r.readByte();let n=r.readByte();r.readUEG();let s=_t.getProfileString(i),o=_t.getLevelString(n),a=1,d=420,l=[0,420,422,444],u=8;if((100===i||110===i||122===i||244===i||44===i||83===i||86===i||118===i||128===i||138===i||144===i)&&(a=r.readUEG(),3===a&&r.readBits(1),a<=3&&(d=l[a]),u=r.readUEG()+8,r.readUEG(),r.readBits(1),r.readBool())){let e=3!==a?8:12;for(let t=0;t0&&e<16?(b=[1,12,10,16,40,24,20,32,80,18,15,64,160,4,3,2][e-1],w=[1,11,11,11,33,11,11,11,33,11,11,33,99,3,2,1][e-1]):255===e&&(b=r.readByte()<<8|r.readByte(),w=r.readByte()<<8|r.readByte())}if(r.readBool()&&r.readBool(),r.readBool()&&(r.readBits(4),r.readBool()&&r.readBits(24)),r.readBool()&&(r.readUEG(),r.readUEG()),r.readBool()){let e=r.readBits(32),t=r.readBits(32);S=r.readBool(),x=t,U=2*e,E=x/U}}let A=1;1===b&&1===w||(A=b/w);let k=0,T=0;if(0===a)k=1,T=2-m;else{k=3===a?1:2,T=(1===a?2:1)*(2-m)}let B=16*(h+1),C=16*(p+1)*(2-m);B-=(_+y)*k,C-=(g+v)*T;let D=Math.ceil(B*A);return r.destroy(),r=null,{profile_string:s,level_string:o,bit_depth:u,ref_frames:f,chroma_format:d,chroma_format_string:_t.getChromaFormatString(d),frame_rate:{fixed:S,fps:E,fps_den:U,fps_num:x},sar_ratio:{width:b,height:w},codec_size:{width:B,height:C},present_size:{width:D,height:C}}}static parseSPS$2(e){let t=e.subarray(1,4),r="avc1.";for(let e=0;e<3;e++){let i=t[e].toString(16);i.length<2&&(i="0"+i),r+=i}let i=_t._ebsp2rbsp(e),n=new mt(i);n.readByte();let s=n.readByte();n.readByte();let o=n.readByte();n.readUEG();let a=_t.getProfileString(s),d=_t.getLevelString(o),l=1,u=420,c=[0,420,422,444],f=8,h=8;if((100===s||110===s||122===s||244===s||44===s||83===s||86===s||118===s||128===s||138===s||144===s)&&(l=n.readUEG(),3===l&&n.readBits(1),l<=3&&(u=c[l]),f=n.readUEG()+8,h=n.readUEG()+8,n.readBits(1),n.readBool())){let e=3!==l?8:12;for(let t=0;t0&&e<16?(S=[1,12,10,16,40,24,20,32,80,18,15,64,160,4,3,2][e-1],x=[1,11,11,11,33,11,11,11,33,11,11,33,99,3,2,1][e-1]):255===e&&(S=n.readByte()<<8|n.readByte(),x=n.readByte()<<8|n.readByte())}if(n.readBool()&&n.readBool(),n.readBool()&&(n.readBits(4),n.readBool()&&n.readBits(24)),n.readBool()&&(n.readUEG(),n.readUEG()),n.readBool()){let e=n.readBits(32),t=n.readBits(32);A=n.readBool(),k=t,T=2*e,U=k/T}}let B=1;1===S&&1===x||(B=S/x);let C=0,D=0;if(0===l)C=1,D=2-g;else{C=3===l?1:2,D=(1===l?2:1)*(2-g)}let P=16*(_+1),F=16*(y+1)*(2-g);P-=(v+b)*C,F-=(w+E)*D;let I=Math.ceil(P*B);return n.destroy(),n=null,{codec_mimetype:r,profile_idc:s,level_idc:o,profile_string:a,level_string:d,chroma_format_idc:l,bit_depth:f,bit_depth_luma:f,bit_depth_chroma:h,ref_frames:m,chroma_format:u,chroma_format_string:_t.getChromaFormatString(u),frame_rate:{fixed:A,fps:U,fps_den:T,fps_num:k},sar_ratio:{width:S,height:x},codec_size:{width:P,height:F},present_size:{width:I,height:F}}}static _skipScalingList(e,t){let r=8,i=8,n=0;for(let s=0;s=this.buflen)return this.iserro=!0,0;this.iserro=!1,r=this.bufoff+e>8?8-this.bufoff:e,t<<=r,t+=this.buffer[this.bufpos]>>8-this.bufoff-r&255>>8-r,this.bufoff+=r,e-=r,8==this.bufoff&&(this.bufpos++,this.bufoff=0)}return t}look(e){let t=this.bufpos,r=this.bufoff,i=this.read(e);return this.bufpos=t,this.bufoff=r,i}read_golomb(){let e;for(e=0;0===this.read(1)&&!this.iserro;e++);return(1<>>24&255,e>>>16&255,e>>>8&255,255&e]),i=new Uint8Array(e+4);i.set(r,0),i.set(t.sps,4),t.sps=i}if(t.pps){const e=t.pps.byteLength,r=new Uint8Array([e>>>24&255,e>>>16&255,e>>>8&255,255&e]),i=new Uint8Array(e+4);i.set(r,0),i.set(t.pps,4),t.pps=i}return t}function vt({sps:e,pps:t}){const r=[23,0,0,0,0,1,66,0,30,255];r[0]=23,r[6]=e[1],r[7]=e[2],r[8]=e[3],r[10]=225,r[11]=e.byteLength>>8&255,r[12]=255&e.byteLength,r.push(...e,1,t.byteLength>>8&255,255&t.byteLength,...t);return new Uint8Array(r)}function bt(e,t){let r=[];r[0]=t?23:39,r[1]=1,r[2]=0,r[3]=0,r[4]=0;const i=new Uint8Array(r.length+e.byteLength);return i.set(r,0),i.set(e,r.length),i}function wt(e){return 31&e[0]}function Et(e){return e===Ae.kSliceSEI}function St(e){return!function(e){return e===Ae.sps||e===Ae.pps}(e)&&!Et(e)}function xt(e){return e===Ae.iFrame}const Ut=e=>{let t=e,r=t.byteLength,i=new Uint8Array(r),n=0;for(let e=0;e=2&&3===t[e]&&0===t[e-1]&&0===t[e-2]||(i[n]=t[e],n++);return new Uint8Array(i.buffer,0,n)},At=e=>{switch(e){case 0:return"4:0:0";case 1:return"4:2:0";case 2:return"4:2:2";case 3:return"4:4:4";default:return"Unknown"}},kt=e=>{let t=Ut(e),r=new mt(t);r.readByte(),r.readByte();let i=0,n=0,s=0,o=0;r.readBits(4);let a=r.readBits(3);r.readBool();let d=r.readBits(2),l=r.readBool(),u=r.readBits(5),c=r.readByte(),f=r.readByte(),h=r.readByte(),p=r.readByte(),m=r.readByte(),_=r.readByte(),y=r.readByte(),g=r.readByte(),v=r.readByte(),b=r.readByte(),w=r.readByte(),E=[],S=[];for(let e=0;e0)for(let e=a;e<8;e++)r.readBits(2);for(let e=0;e1&&r.readSEG();for(let e=0;e0&&e<16?(I=[1,12,10,16,40,24,20,32,80,18,15,64,160,4,3,2][e-1],L=[1,11,11,11,33,11,11,11,33,11,11,33,99,3,2,1][e-1]):255===e&&(I=r.readBits(16),L=r.readBits(16))}if(r.readBool()&&r.readBool(),r.readBool()){r.readBits(3),r.readBool(),r.readBool()&&(r.readByte(),r.readByte(),r.readByte())}if(r.readBool()&&(r.readUEG(),r.readUEG()),r.readBool(),r.readBool(),r.readBool(),P=r.readBool(),P&&(i+=r.readUEG(),n+=r.readUEG(),s+=r.readUEG(),o+=r.readUEG()),r.readBool()){if(M=r.readBits(32),z=r.readBits(32),r.readBool()){if(r.readUEG(),r.readBool()){let e=!1,t=!1,i=!1;e=r.readBool(),t=r.readBool(),(e||t)&&(i=r.readBool(),i&&(r.readByte(),r.readBits(5),r.readBool(),r.readBits(5)),r.readBits(4),r.readBits(4),i&&r.readBits(4),r.readBits(5),r.readBits(5),r.readBits(5));for(let n=0;n<=a;n++){let n=r.readBool();R=n;let s=!1,o=1;n||(s=r.readBool());let a=!1;if(s?r.readSEG():a=r.readBool(),a||(cpbcnt=r.readUEG()+1),e)for(let e=0;e{let t=Ut(e),r=new mt(t);return r.readByte(),r.readByte(),r.readBits(4),r.readBits(2),r.readBits(6),{num_temporal_layers:r.readBits(3)+1,temporal_id_nested:r.readBool()}},Bt=e=>{let t=Ut(e),r=new mt(t);r.readByte(),r.readByte(),r.readUEG(),r.readUEG(),r.readBool(),r.readBool(),r.readBits(3),r.readBool(),r.readBool(),r.readUEG(),r.readUEG(),r.readSEG(),r.readBool(),r.readBool(),r.readBool()&&r.readUEG(),r.readSEG(),r.readSEG(),r.readBool(),r.readBool(),r.readBool(),r.readBool();let i=r.readBool(),n=r.readBool(),s=1;return n&&i?s=0:n?s=3:i&&(s=2),{parallelismType:s}};function Ct(e,t=0){return(e[t]<<24>>>0)+(e[t+1]<<16)+(e[t+2]<<8)+(e[t+3]||0)}function Dt(e,t=4){if(e.length<4)return;const r=e.length,i=[];let n,s=0;for(;s+t>>=8),s+=t,n){if(s+n>r)break;i.push(e.subarray(s,s+n)),s+=n}return i}function Pt(e){const t=e.byteLength,r=new Uint8Array(4);r[0]=t>>>24&255,r[1]=t>>>16&255,r[2]=t>>>8&255,r[3]=255&t;const i=new Uint8Array(t+4);return i.set(r,0),i.set(e,4),i}function Ft(e,t){let r=null;return t?e.length>=28&&(r=1+(3&e[26])):e.length>=12&&(r=1+(3&e[9])),r}function It(e,t){let r={},i=e.length,n=[],s=new yt(e);s.read(1),s.read(6),s.read(6),s.read(3);for(let e=2;e0)for(let t=r;t<8;t++)e.read(2);i.sub_layer_profile_space=[],i.sub_layer_tier_flag=[],i.sub_layer_profile_idc=[],i.sub_layer_profile_compatibility_flag=[],i.sub_layer_progressive_source_flag=[],i.sub_layer_interlaced_source_flag=[],i.sub_layer_non_packed_constraint_flag=[],i.sub_layer_frame_only_constraint_flag=[],i.sub_layer_level_idc=[];for(let t=0;t>8,d[14]=255&i.min_spatial_segmentation_idc,d[15]=252|3&i.parallelismType,d[16]=252|3&i.chroma_format_idc,d[17]=248|7&i.bit_depth_luma_minus8,d[18]=248|7&i.bit_depth_chroma_minus8,d[19]=0,d[20]=0,d[21]=(3&i.constant_frame_rate)<<6|(7&i.num_temporal_layers)<<3|(i.temporal_id_nested?1:0)<<2|3,d[22]=3,d[23]=128|ke.vps,d[24]=0,d[25]=1,d[26]=(65280&e.byteLength)>>8,d[27]=255&e.byteLength,d.set(e,28),d[23+(5+e.byteLength)+0]=128|ke.sps,d[23+(5+e.byteLength)+1]=0,d[23+(5+e.byteLength)+2]=1,d[23+(5+e.byteLength)+3]=(65280&r.byteLength)>>8,d[23+(5+e.byteLength)+4]=255&r.byteLength,d.set(r,23+(5+e.byteLength)+5),d[23+(5+e.byteLength+5+r.byteLength)+0]=128|ke.pps,d[23+(5+e.byteLength+5+r.byteLength)+1]=0,d[23+(5+e.byteLength+5+r.byteLength)+2]=1,d[23+(5+e.byteLength+5+r.byteLength)+3]=(65280&t.byteLength)>>8,d[23+(5+e.byteLength+5+r.byteLength)+4]=255&t.byteLength,d.set(t,23+(5+e.byteLength+5+r.byteLength)+5);const l=[28,0,0,0,0],u=new Uint8Array(l.length+d.byteLength);return u.set(l,0),u.set(d,l.length),u}function Rt(e,t){let r=[];r[0]=t?28:44,r[1]=1,r[2]=0,r[3]=0,r[4]=0;const i=new Uint8Array(r.length+e.byteLength);return i.set(r,0),i.set(e,r.length),i}function Mt(e){return(126&e[0])>>1}function zt(e){return!function(e){return e>=32&&e<=40}(e)}function Nt(e){return e>=16&&e<=21}function Ot(e){return parseInt(e)===e}function $t(e){if(!Ot(e.length))return!1;for(var t=0;t255)return!1;return!0}function Gt(e,t){if(e.buffer&&"Uint8Array"===e.name)return t&&(e=e.slice?e.slice():Array.prototype.slice.call(e)),e;if(Array.isArray(e)){if(!$t(e))throw new Error("Array contains invalid value: "+e);return new Uint8Array(e)}if(Ot(e.length)&&$t(e))return new Uint8Array(e);throw new Error("unsupported array-like object")}function Ht(e){return new Uint8Array(e)}function Vt(e,t,r,i,n){null==i&&null==n||(e=e.slice?e.slice(i,n):Array.prototype.slice.call(e,i,n)),t.set(e,r)}var Wt,jt={toBytes:function(e){var t=[],r=0;for(e=encodeURI(e);r191&&i<224?(t.push(String.fromCharCode((31&i)<<6|63&e[r+1])),r+=2):(t.push(String.fromCharCode((15&i)<<12|(63&e[r+1])<<6|63&e[r+2])),r+=3)}return t.join("")}},Yt=(Wt="0123456789abcdef",{toBytes:function(e){for(var t=[],r=0;r>4]+Wt[15&i])}return t.join("")}}),qt={16:10,24:12,32:14},Kt=[1,2,4,8,16,32,64,128,27,54,108,216,171,77,154,47,94,188,99,198,151,53,106,212,179,125,250,239,197,145],Xt=[99,124,119,123,242,107,111,197,48,1,103,43,254,215,171,118,202,130,201,125,250,89,71,240,173,212,162,175,156,164,114,192,183,253,147,38,54,63,247,204,52,165,229,241,113,216,49,21,4,199,35,195,24,150,5,154,7,18,128,226,235,39,178,117,9,131,44,26,27,110,90,160,82,59,214,179,41,227,47,132,83,209,0,237,32,252,177,91,106,203,190,57,74,76,88,207,208,239,170,251,67,77,51,133,69,249,2,127,80,60,159,168,81,163,64,143,146,157,56,245,188,182,218,33,16,255,243,210,205,12,19,236,95,151,68,23,196,167,126,61,100,93,25,115,96,129,79,220,34,42,144,136,70,238,184,20,222,94,11,219,224,50,58,10,73,6,36,92,194,211,172,98,145,149,228,121,231,200,55,109,141,213,78,169,108,86,244,234,101,122,174,8,186,120,37,46,28,166,180,198,232,221,116,31,75,189,139,138,112,62,181,102,72,3,246,14,97,53,87,185,134,193,29,158,225,248,152,17,105,217,142,148,155,30,135,233,206,85,40,223,140,161,137,13,191,230,66,104,65,153,45,15,176,84,187,22],Zt=[82,9,106,213,48,54,165,56,191,64,163,158,129,243,215,251,124,227,57,130,155,47,255,135,52,142,67,68,196,222,233,203,84,123,148,50,166,194,35,61,238,76,149,11,66,250,195,78,8,46,161,102,40,217,36,178,118,91,162,73,109,139,209,37,114,248,246,100,134,104,152,22,212,164,92,204,93,101,182,146,108,112,72,80,253,237,185,218,94,21,70,87,167,141,157,132,144,216,171,0,140,188,211,10,247,228,88,5,184,179,69,6,208,44,30,143,202,63,15,2,193,175,189,3,1,19,138,107,58,145,17,65,79,103,220,234,151,242,207,206,240,180,230,115,150,172,116,34,231,173,53,133,226,249,55,232,28,117,223,110,71,241,26,113,29,41,197,137,111,183,98,14,170,24,190,27,252,86,62,75,198,210,121,32,154,219,192,254,120,205,90,244,31,221,168,51,136,7,199,49,177,18,16,89,39,128,236,95,96,81,127,169,25,181,74,13,45,229,122,159,147,201,156,239,160,224,59,77,174,42,245,176,200,235,187,60,131,83,153,97,23,43,4,126,186,119,214,38,225,105,20,99,85,33,12,125],Jt=[3328402341,4168907908,4000806809,4135287693,4294111757,3597364157,3731845041,2445657428,1613770832,33620227,3462883241,1445669757,3892248089,3050821474,1303096294,3967186586,2412431941,528646813,2311702848,4202528135,4026202645,2992200171,2387036105,4226871307,1101901292,3017069671,1604494077,1169141738,597466303,1403299063,3832705686,2613100635,1974974402,3791519004,1033081774,1277568618,1815492186,2118074177,4126668546,2211236943,1748251740,1369810420,3521504564,4193382664,3799085459,2883115123,1647391059,706024767,134480908,2512897874,1176707941,2646852446,806885416,932615841,168101135,798661301,235341577,605164086,461406363,3756188221,3454790438,1311188841,2142417613,3933566367,302582043,495158174,1479289972,874125870,907746093,3698224818,3025820398,1537253627,2756858614,1983593293,3084310113,2108928974,1378429307,3722699582,1580150641,327451799,2790478837,3117535592,0,3253595436,1075847264,3825007647,2041688520,3059440621,3563743934,2378943302,1740553945,1916352843,2487896798,2555137236,2958579944,2244988746,3151024235,3320835882,1336584933,3992714006,2252555205,2588757463,1714631509,293963156,2319795663,3925473552,67240454,4269768577,2689618160,2017213508,631218106,1269344483,2723238387,1571005438,2151694528,93294474,1066570413,563977660,1882732616,4059428100,1673313503,2008463041,2950355573,1109467491,537923632,3858759450,4260623118,3218264685,2177748300,403442708,638784309,3287084079,3193921505,899127202,2286175436,773265209,2479146071,1437050866,4236148354,2050833735,3362022572,3126681063,840505643,3866325909,3227541664,427917720,2655997905,2749160575,1143087718,1412049534,999329963,193497219,2353415882,3354324521,1807268051,672404540,2816401017,3160301282,369822493,2916866934,3688947771,1681011286,1949973070,336202270,2454276571,201721354,1210328172,3093060836,2680341085,3184776046,1135389935,3294782118,965841320,831886756,3554993207,4068047243,3588745010,2345191491,1849112409,3664604599,26054028,2983581028,2622377682,1235855840,3630984372,2891339514,4092916743,3488279077,3395642799,4101667470,1202630377,268961816,1874508501,4034427016,1243948399,1546530418,941366308,1470539505,1941222599,2546386513,3421038627,2715671932,3899946140,1042226977,2521517021,1639824860,227249030,260737669,3765465232,2084453954,1907733956,3429263018,2420656344,100860677,4160157185,470683154,3261161891,1781871967,2924959737,1773779408,394692241,2579611992,974986535,664706745,3655459128,3958962195,731420851,571543859,3530123707,2849626480,126783113,865375399,765172662,1008606754,361203602,3387549984,2278477385,2857719295,1344809080,2782912378,59542671,1503764984,160008576,437062935,1707065306,3622233649,2218934982,3496503480,2185314755,697932208,1512910199,504303377,2075177163,2824099068,1841019862,739644986],Qt=[2781242211,2230877308,2582542199,2381740923,234877682,3184946027,2984144751,1418839493,1348481072,50462977,2848876391,2102799147,434634494,1656084439,3863849899,2599188086,1167051466,2636087938,1082771913,2281340285,368048890,3954334041,3381544775,201060592,3963727277,1739838676,4250903202,3930435503,3206782108,4149453988,2531553906,1536934080,3262494647,484572669,2923271059,1783375398,1517041206,1098792767,49674231,1334037708,1550332980,4098991525,886171109,150598129,2481090929,1940642008,1398944049,1059722517,201851908,1385547719,1699095331,1587397571,674240536,2704774806,252314885,3039795866,151914247,908333586,2602270848,1038082786,651029483,1766729511,3447698098,2682942837,454166793,2652734339,1951935532,775166490,758520603,3000790638,4004797018,4217086112,4137964114,1299594043,1639438038,3464344499,2068982057,1054729187,1901997871,2534638724,4121318227,1757008337,0,750906861,1614815264,535035132,3363418545,3988151131,3201591914,1183697867,3647454910,1265776953,3734260298,3566750796,3903871064,1250283471,1807470800,717615087,3847203498,384695291,3313910595,3617213773,1432761139,2484176261,3481945413,283769337,100925954,2180939647,4037038160,1148730428,3123027871,3813386408,4087501137,4267549603,3229630528,2315620239,2906624658,3156319645,1215313976,82966005,3747855548,3245848246,1974459098,1665278241,807407632,451280895,251524083,1841287890,1283575245,337120268,891687699,801369324,3787349855,2721421207,3431482436,959321879,1469301956,4065699751,2197585534,1199193405,2898814052,3887750493,724703513,2514908019,2696962144,2551808385,3516813135,2141445340,1715741218,2119445034,2872807568,2198571144,3398190662,700968686,3547052216,1009259540,2041044702,3803995742,487983883,1991105499,1004265696,1449407026,1316239930,504629770,3683797321,168560134,1816667172,3837287516,1570751170,1857934291,4014189740,2797888098,2822345105,2754712981,936633572,2347923833,852879335,1133234376,1500395319,3084545389,2348912013,1689376213,3533459022,3762923945,3034082412,4205598294,133428468,634383082,2949277029,2398386810,3913789102,403703816,3580869306,2297460856,1867130149,1918643758,607656988,4049053350,3346248884,1368901318,600565992,2090982877,2632479860,557719327,3717614411,3697393085,2249034635,2232388234,2430627952,1115438654,3295786421,2865522278,3633334344,84280067,33027830,303828494,2747425121,1600795957,4188952407,3496589753,2434238086,1486471617,658119965,3106381470,953803233,334231800,3005978776,857870609,3151128937,1890179545,2298973838,2805175444,3056442267,574365214,2450884487,550103529,1233637070,4289353045,2018519080,2057691103,2399374476,4166623649,2148108681,387583245,3664101311,836232934,3330556482,3100665960,3280093505,2955516313,2002398509,287182607,3413881008,4238890068,3597515707,975967766],er=[1671808611,2089089148,2006576759,2072901243,4061003762,1807603307,1873927791,3310653893,810573872,16974337,1739181671,729634347,4263110654,3613570519,2883997099,1989864566,3393556426,2191335298,3376449993,2106063485,4195741690,1508618841,1204391495,4027317232,2917941677,3563566036,2734514082,2951366063,2629772188,2767672228,1922491506,3227229120,3082974647,4246528509,2477669779,644500518,911895606,1061256767,4144166391,3427763148,878471220,2784252325,3845444069,4043897329,1905517169,3631459288,827548209,356461077,67897348,3344078279,593839651,3277757891,405286936,2527147926,84871685,2595565466,118033927,305538066,2157648768,3795705826,3945188843,661212711,2999812018,1973414517,152769033,2208177539,745822252,439235610,455947803,1857215598,1525593178,2700827552,1391895634,994932283,3596728278,3016654259,695947817,3812548067,795958831,2224493444,1408607827,3513301457,0,3979133421,543178784,4229948412,2982705585,1542305371,1790891114,3410398667,3201918910,961245753,1256100938,1289001036,1491644504,3477767631,3496721360,4012557807,2867154858,4212583931,1137018435,1305975373,861234739,2241073541,1171229253,4178635257,33948674,2139225727,1357946960,1011120188,2679776671,2833468328,1374921297,2751356323,1086357568,2408187279,2460827538,2646352285,944271416,4110742005,3168756668,3066132406,3665145818,560153121,271589392,4279952895,4077846003,3530407890,3444343245,202643468,322250259,3962553324,1608629855,2543990167,1154254916,389623319,3294073796,2817676711,2122513534,1028094525,1689045092,1575467613,422261273,1939203699,1621147744,2174228865,1339137615,3699352540,577127458,712922154,2427141008,2290289544,1187679302,3995715566,3100863416,339486740,3732514782,1591917662,186455563,3681988059,3762019296,844522546,978220090,169743370,1239126601,101321734,611076132,1558493276,3260915650,3547250131,2901361580,1655096418,2443721105,2510565781,3828863972,2039214713,3878868455,3359869896,928607799,1840765549,2374762893,3580146133,1322425422,2850048425,1823791212,1459268694,4094161908,3928346602,1706019429,2056189050,2934523822,135794696,3134549946,2022240376,628050469,779246638,472135708,2800834470,3032970164,3327236038,3894660072,3715932637,1956440180,522272287,1272813131,3185336765,2340818315,2323976074,1888542832,1044544574,3049550261,1722469478,1222152264,50660867,4127324150,236067854,1638122081,895445557,1475980887,3117443513,2257655686,3243809217,489110045,2662934430,3778599393,4162055160,2561878936,288563729,1773916777,3648039385,2391345038,2493985684,2612407707,505560094,2274497927,3911240169,3460925390,1442818645,678973480,3749357023,2358182796,2717407649,2306869641,219617805,3218761151,3862026214,1120306242,1756942440,1103331905,2578459033,762796589,252780047,2966125488,1425844308,3151392187,372911126],tr=[1667474886,2088535288,2004326894,2071694838,4075949567,1802223062,1869591006,3318043793,808472672,16843522,1734846926,724270422,4278065639,3621216949,2880169549,1987484396,3402253711,2189597983,3385409673,2105378810,4210693615,1499065266,1195886990,4042263547,2913856577,3570689971,2728590687,2947541573,2627518243,2762274643,1920112356,3233831835,3082273397,4261223649,2475929149,640051788,909531756,1061110142,4160160501,3435941763,875846760,2779116625,3857003729,4059105529,1903268834,3638064043,825316194,353713962,67374088,3351728789,589522246,3284360861,404236336,2526454071,84217610,2593830191,117901582,303183396,2155911963,3806477791,3958056653,656894286,2998062463,1970642922,151591698,2206440989,741110872,437923380,454765878,1852748508,1515908788,2694904667,1381168804,993742198,3604373943,3014905469,690584402,3823320797,791638366,2223281939,1398011302,3520161977,0,3991743681,538992704,4244381667,2981218425,1532751286,1785380564,3419096717,3200178535,960056178,1246420628,1280103576,1482221744,3486468741,3503319995,4025428677,2863326543,4227536621,1128514950,1296947098,859002214,2240123921,1162203018,4193849577,33687044,2139062782,1347481760,1010582648,2678045221,2829640523,1364325282,2745433693,1077985408,2408548869,2459086143,2644360225,943212656,4126475505,3166494563,3065430391,3671750063,555836226,269496352,4294908645,4092792573,3537006015,3452783745,202118168,320025894,3974901699,1600119230,2543297077,1145359496,387397934,3301201811,2812801621,2122220284,1027426170,1684319432,1566435258,421079858,1936954854,1616945344,2172753945,1330631070,3705438115,572679748,707427924,2425400123,2290647819,1179044492,4008585671,3099120491,336870440,3739122087,1583276732,185277718,3688593069,3772791771,842159716,976899700,168435220,1229577106,101059084,606366792,1549591736,3267517855,3553849021,2897014595,1650632388,2442242105,2509612081,3840161747,2038008818,3890688725,3368567691,926374254,1835907034,2374863873,3587531953,1313788572,2846482505,1819063512,1448540844,4109633523,3941213647,1701162954,2054852340,2930698567,134748176,3132806511,2021165296,623210314,774795868,471606328,2795958615,3031746419,3334885783,3907527627,3722280097,1953799400,522133822,1263263126,3183336545,2341176845,2324333839,1886425312,1044267644,3048588401,1718004428,1212733584,50529542,4143317495,235803164,1633788866,892690282,1465383342,3115962473,2256965911,3250673817,488449850,2661202215,3789633753,4177007595,2560144171,286339874,1768537042,3654906025,2391705863,2492770099,2610673197,505291324,2273808917,3924369609,3469625735,1431699370,673740880,3755965093,2358021891,2711746649,2307489801,218961690,3217021541,3873845719,1111672452,1751693520,1094828930,2576986153,757954394,252645662,2964376443,1414855848,3149649517,370555436],rr=[1374988112,2118214995,437757123,975658646,1001089995,530400753,2902087851,1273168787,540080725,2910219766,2295101073,4110568485,1340463100,3307916247,641025152,3043140495,3736164937,632953703,1172967064,1576976609,3274667266,2169303058,2370213795,1809054150,59727847,361929877,3211623147,2505202138,3569255213,1484005843,1239443753,2395588676,1975683434,4102977912,2572697195,666464733,3202437046,4035489047,3374361702,2110667444,1675577880,3843699074,2538681184,1649639237,2976151520,3144396420,4269907996,4178062228,1883793496,2403728665,2497604743,1383856311,2876494627,1917518562,3810496343,1716890410,3001755655,800440835,2261089178,3543599269,807962610,599762354,33778362,3977675356,2328828971,2809771154,4077384432,1315562145,1708848333,101039829,3509871135,3299278474,875451293,2733856160,92987698,2767645557,193195065,1080094634,1584504582,3178106961,1042385657,2531067453,3711829422,1306967366,2438237621,1908694277,67556463,1615861247,429456164,3602770327,2302690252,1742315127,2968011453,126454664,3877198648,2043211483,2709260871,2084704233,4169408201,0,159417987,841739592,504459436,1817866830,4245618683,260388950,1034867998,908933415,168810852,1750902305,2606453969,607530554,202008497,2472011535,3035535058,463180190,2160117071,1641816226,1517767529,470948374,3801332234,3231722213,1008918595,303765277,235474187,4069246893,766945465,337553864,1475418501,2943682380,4003061179,2743034109,4144047775,1551037884,1147550661,1543208500,2336434550,3408119516,3069049960,3102011747,3610369226,1113818384,328671808,2227573024,2236228733,3535486456,2935566865,3341394285,496906059,3702665459,226906860,2009195472,733156972,2842737049,294930682,1206477858,2835123396,2700099354,1451044056,573804783,2269728455,3644379585,2362090238,2564033334,2801107407,2776292904,3669462566,1068351396,742039012,1350078989,1784663195,1417561698,4136440770,2430122216,775550814,2193862645,2673705150,1775276924,1876241833,3475313331,3366754619,270040487,3902563182,3678124923,3441850377,1851332852,3969562369,2203032232,3868552805,2868897406,566021896,4011190502,3135740889,1248802510,3936291284,699432150,832877231,708780849,3332740144,899835584,1951317047,4236429990,3767586992,866637845,4043610186,1106041591,2144161806,395441711,1984812685,1139781709,3433712980,3835036895,2664543715,1282050075,3240894392,1181045119,2640243204,25965917,4203181171,4211818798,3009879386,2463879762,3910161971,1842759443,2597806476,933301370,1509430414,3943906441,3467192302,3076639029,3776767469,2051518780,2631065433,1441952575,404016761,1942435775,1408749034,1610459739,3745345300,2017778566,3400528769,3110650942,941896748,3265478751,371049330,3168937228,675039627,4279080257,967311729,135050206,3635733660,1683407248,2076935265,3576870512,1215061108,3501741890],ir=[1347548327,1400783205,3273267108,2520393566,3409685355,4045380933,2880240216,2471224067,1428173050,4138563181,2441661558,636813900,4233094615,3620022987,2149987652,2411029155,1239331162,1730525723,2554718734,3781033664,46346101,310463728,2743944855,3328955385,3875770207,2501218972,3955191162,3667219033,768917123,3545789473,692707433,1150208456,1786102409,2029293177,1805211710,3710368113,3065962831,401639597,1724457132,3028143674,409198410,2196052529,1620529459,1164071807,3769721975,2226875310,486441376,2499348523,1483753576,428819965,2274680428,3075636216,598438867,3799141122,1474502543,711349675,129166120,53458370,2592523643,2782082824,4063242375,2988687269,3120694122,1559041666,730517276,2460449204,4042459122,2706270690,3446004468,3573941694,533804130,2328143614,2637442643,2695033685,839224033,1973745387,957055980,2856345839,106852767,1371368976,4181598602,1033297158,2933734917,1179510461,3046200461,91341917,1862534868,4284502037,605657339,2547432937,3431546947,2003294622,3182487618,2282195339,954669403,3682191598,1201765386,3917234703,3388507166,0,2198438022,1211247597,2887651696,1315723890,4227665663,1443857720,507358933,657861945,1678381017,560487590,3516619604,975451694,2970356327,261314535,3535072918,2652609425,1333838021,2724322336,1767536459,370938394,182621114,3854606378,1128014560,487725847,185469197,2918353863,3106780840,3356761769,2237133081,1286567175,3152976349,4255350624,2683765030,3160175349,3309594171,878443390,1988838185,3704300486,1756818940,1673061617,3403100636,272786309,1075025698,545572369,2105887268,4174560061,296679730,1841768865,1260232239,4091327024,3960309330,3497509347,1814803222,2578018489,4195456072,575138148,3299409036,446754879,3629546796,4011996048,3347532110,3252238545,4270639778,915985419,3483825537,681933534,651868046,2755636671,3828103837,223377554,2607439820,1649704518,3270937875,3901806776,1580087799,4118987695,3198115200,2087309459,2842678573,3016697106,1003007129,2802849917,1860738147,2077965243,164439672,4100872472,32283319,2827177882,1709610350,2125135846,136428751,3874428392,3652904859,3460984630,3572145929,3593056380,2939266226,824852259,818324884,3224740454,930369212,2801566410,2967507152,355706840,1257309336,4148292826,243256656,790073846,2373340630,1296297904,1422699085,3756299780,3818836405,457992840,3099667487,2135319889,77422314,1560382517,1945798516,788204353,1521706781,1385356242,870912086,325965383,2358957921,2050466060,2388260884,2313884476,4006521127,901210569,3990953189,1014646705,1503449823,1062597235,2031621326,3212035895,3931371469,1533017514,350174575,2256028891,2177544179,1052338372,741876788,1606591296,1914052035,213705253,2334669897,1107234197,1899603969,3725069491,2631447780,2422494913,1635502980,1893020342,1950903388,1120974935],nr=[2807058932,1699970625,2764249623,1586903591,1808481195,1173430173,1487645946,59984867,4199882800,1844882806,1989249228,1277555970,3623636965,3419915562,1149249077,2744104290,1514790577,459744698,244860394,3235995134,1963115311,4027744588,2544078150,4190530515,1608975247,2627016082,2062270317,1507497298,2200818878,567498868,1764313568,3359936201,2305455554,2037970062,1047239e3,1910319033,1337376481,2904027272,2892417312,984907214,1243112415,830661914,861968209,2135253587,2011214180,2927934315,2686254721,731183368,1750626376,4246310725,1820824798,4172763771,3542330227,48394827,2404901663,2871682645,671593195,3254988725,2073724613,145085239,2280796200,2779915199,1790575107,2187128086,472615631,3029510009,4075877127,3802222185,4107101658,3201631749,1646252340,4270507174,1402811438,1436590835,3778151818,3950355702,3963161475,4020912224,2667994737,273792366,2331590177,104699613,95345982,3175501286,2377486676,1560637892,3564045318,369057872,4213447064,3919042237,1137477952,2658625497,1119727848,2340947849,1530455833,4007360968,172466556,266959938,516552836,0,2256734592,3980931627,1890328081,1917742170,4294704398,945164165,3575528878,958871085,3647212047,2787207260,1423022939,775562294,1739656202,3876557655,2530391278,2443058075,3310321856,547512796,1265195639,437656594,3121275539,719700128,3762502690,387781147,218828297,3350065803,2830708150,2848461854,428169201,122466165,3720081049,1627235199,648017665,4122762354,1002783846,2117360635,695634755,3336358691,4234721005,4049844452,3704280881,2232435299,574624663,287343814,612205898,1039717051,840019705,2708326185,793451934,821288114,1391201670,3822090177,376187827,3113855344,1224348052,1679968233,2361698556,1058709744,752375421,2431590963,1321699145,3519142200,2734591178,188127444,2177869557,3727205754,2384911031,3215212461,2648976442,2450346104,3432737375,1180849278,331544205,3102249176,4150144569,2952102595,2159976285,2474404304,766078933,313773861,2570832044,2108100632,1668212892,3145456443,2013908262,418672217,3070356634,2594734927,1852171925,3867060991,3473416636,3907448597,2614737639,919489135,164948639,2094410160,2997825956,590424639,2486224549,1723872674,3157750862,3399941250,3501252752,3625268135,2555048196,3673637356,1343127501,4130281361,3599595085,2957853679,1297403050,81781910,3051593425,2283490410,532201772,1367295589,3926170974,895287692,1953757831,1093597963,492483431,3528626907,1446242576,1192455638,1636604631,209336225,344873464,1015671571,669961897,3375740769,3857572124,2973530695,3747192018,1933530610,3464042516,935293895,3454686199,2858115069,1863638845,3683022916,4085369519,3292445032,875313188,1080017571,3279033885,621591778,1233856572,2504130317,24197544,3017672716,3835484340,3247465558,2220981195,3060847922,1551124588,1463996600],sr=[4104605777,1097159550,396673818,660510266,2875968315,2638606623,4200115116,3808662347,821712160,1986918061,3430322568,38544885,3856137295,718002117,893681702,1654886325,2975484382,3122358053,3926825029,4274053469,796197571,1290801793,1184342925,3556361835,2405426947,2459735317,1836772287,1381620373,3196267988,1948373848,3764988233,3385345166,3263785589,2390325492,1480485785,3111247143,3780097726,2293045232,548169417,3459953789,3746175075,439452389,1362321559,1400849762,1685577905,1806599355,2174754046,137073913,1214797936,1174215055,3731654548,2079897426,1943217067,1258480242,529487843,1437280870,3945269170,3049390895,3313212038,923313619,679998e3,3215307299,57326082,377642221,3474729866,2041877159,133361907,1776460110,3673476453,96392454,878845905,2801699524,777231668,4082475170,2330014213,4142626212,2213296395,1626319424,1906247262,1846563261,562755902,3708173718,1040559837,3871163981,1418573201,3294430577,114585348,1343618912,2566595609,3186202582,1078185097,3651041127,3896688048,2307622919,425408743,3371096953,2081048481,1108339068,2216610296,0,2156299017,736970802,292596766,1517440620,251657213,2235061775,2933202493,758720310,265905162,1554391400,1532285339,908999204,174567692,1474760595,4002861748,2610011675,3234156416,3693126241,2001430874,303699484,2478443234,2687165888,585122620,454499602,151849742,2345119218,3064510765,514443284,4044981591,1963412655,2581445614,2137062819,19308535,1928707164,1715193156,4219352155,1126790795,600235211,3992742070,3841024952,836553431,1669664834,2535604243,3323011204,1243905413,3141400786,4180808110,698445255,2653899549,2989552604,2253581325,3252932727,3004591147,1891211689,2487810577,3915653703,4237083816,4030667424,2100090966,865136418,1229899655,953270745,3399679628,3557504664,4118925222,2061379749,3079546586,2915017791,983426092,2022837584,1607244650,2118541908,2366882550,3635996816,972512814,3283088770,1568718495,3499326569,3576539503,621982671,2895723464,410887952,2623762152,1002142683,645401037,1494807662,2595684844,1335535747,2507040230,4293295786,3167684641,367585007,3885750714,1865862730,2668221674,2960971305,2763173681,1059270954,2777952454,2724642869,1320957812,2194319100,2429595872,2815956275,77089521,3973773121,3444575871,2448830231,1305906550,4021308739,2857194700,2516901860,3518358430,1787304780,740276417,1699839814,1592394909,2352307457,2272556026,188821243,1729977011,3687994002,274084841,3594982253,3613494426,2701949495,4162096729,322734571,2837966542,1640576439,484830689,1202797690,3537852828,4067639125,349075736,3342319475,4157467219,4255800159,1030690015,1155237496,2951971274,1757691577,607398968,2738905026,499347990,3794078908,1011452712,227885567,2818666809,213114376,3034881240,1455525988,3414450555,850817237,1817998408,3092726480],or=[0,235474187,470948374,303765277,941896748,908933415,607530554,708780849,1883793496,2118214995,1817866830,1649639237,1215061108,1181045119,1417561698,1517767529,3767586992,4003061179,4236429990,4069246893,3635733660,3602770327,3299278474,3400528769,2430122216,2664543715,2362090238,2193862645,2835123396,2801107407,3035535058,3135740889,3678124923,3576870512,3341394285,3374361702,3810496343,3977675356,4279080257,4043610186,2876494627,2776292904,3076639029,3110650942,2472011535,2640243204,2403728665,2169303058,1001089995,899835584,666464733,699432150,59727847,226906860,530400753,294930682,1273168787,1172967064,1475418501,1509430414,1942435775,2110667444,1876241833,1641816226,2910219766,2743034109,2976151520,3211623147,2505202138,2606453969,2302690252,2269728455,3711829422,3543599269,3240894392,3475313331,3843699074,3943906441,4178062228,4144047775,1306967366,1139781709,1374988112,1610459739,1975683434,2076935265,1775276924,1742315127,1034867998,866637845,566021896,800440835,92987698,193195065,429456164,395441711,1984812685,2017778566,1784663195,1683407248,1315562145,1080094634,1383856311,1551037884,101039829,135050206,437757123,337553864,1042385657,807962610,573804783,742039012,2531067453,2564033334,2328828971,2227573024,2935566865,2700099354,3001755655,3168937228,3868552805,3902563182,4203181171,4102977912,3736164937,3501741890,3265478751,3433712980,1106041591,1340463100,1576976609,1408749034,2043211483,2009195472,1708848333,1809054150,832877231,1068351396,766945465,599762354,159417987,126454664,361929877,463180190,2709260871,2943682380,3178106961,3009879386,2572697195,2538681184,2236228733,2336434550,3509871135,3745345300,3441850377,3274667266,3910161971,3877198648,4110568485,4211818798,2597806476,2497604743,2261089178,2295101073,2733856160,2902087851,3202437046,2968011453,3936291284,3835036895,4136440770,4169408201,3535486456,3702665459,3467192302,3231722213,2051518780,1951317047,1716890410,1750902305,1113818384,1282050075,1584504582,1350078989,168810852,67556463,371049330,404016761,841739592,1008918595,775550814,540080725,3969562369,3801332234,4035489047,4269907996,3569255213,3669462566,3366754619,3332740144,2631065433,2463879762,2160117071,2395588676,2767645557,2868897406,3102011747,3069049960,202008497,33778362,270040487,504459436,875451293,975658646,675039627,641025152,2084704233,1917518562,1615861247,1851332852,1147550661,1248802510,1484005843,1451044056,933301370,967311729,733156972,632953703,260388950,25965917,328671808,496906059,1206477858,1239443753,1543208500,1441952575,2144161806,1908694277,1675577880,1842759443,3610369226,3644379585,3408119516,3307916247,4011190502,3776767469,4077384432,4245618683,2809771154,2842737049,3144396420,3043140495,2673705150,2438237621,2203032232,2370213795],ar=[0,185469197,370938394,487725847,741876788,657861945,975451694,824852259,1483753576,1400783205,1315723890,1164071807,1950903388,2135319889,1649704518,1767536459,2967507152,3152976349,2801566410,2918353863,2631447780,2547432937,2328143614,2177544179,3901806776,3818836405,4270639778,4118987695,3299409036,3483825537,3535072918,3652904859,2077965243,1893020342,1841768865,1724457132,1474502543,1559041666,1107234197,1257309336,598438867,681933534,901210569,1052338372,261314535,77422314,428819965,310463728,3409685355,3224740454,3710368113,3593056380,3875770207,3960309330,4045380933,4195456072,2471224067,2554718734,2237133081,2388260884,3212035895,3028143674,2842678573,2724322336,4138563181,4255350624,3769721975,3955191162,3667219033,3516619604,3431546947,3347532110,2933734917,2782082824,3099667487,3016697106,2196052529,2313884476,2499348523,2683765030,1179510461,1296297904,1347548327,1533017514,1786102409,1635502980,2087309459,2003294622,507358933,355706840,136428751,53458370,839224033,957055980,605657339,790073846,2373340630,2256028891,2607439820,2422494913,2706270690,2856345839,3075636216,3160175349,3573941694,3725069491,3273267108,3356761769,4181598602,4063242375,4011996048,3828103837,1033297158,915985419,730517276,545572369,296679730,446754879,129166120,213705253,1709610350,1860738147,1945798516,2029293177,1239331162,1120974935,1606591296,1422699085,4148292826,4233094615,3781033664,3931371469,3682191598,3497509347,3446004468,3328955385,2939266226,2755636671,3106780840,2988687269,2198438022,2282195339,2501218972,2652609425,1201765386,1286567175,1371368976,1521706781,1805211710,1620529459,2105887268,1988838185,533804130,350174575,164439672,46346101,870912086,954669403,636813900,788204353,2358957921,2274680428,2592523643,2441661558,2695033685,2880240216,3065962831,3182487618,3572145929,3756299780,3270937875,3388507166,4174560061,4091327024,4006521127,3854606378,1014646705,930369212,711349675,560487590,272786309,457992840,106852767,223377554,1678381017,1862534868,1914052035,2031621326,1211247597,1128014560,1580087799,1428173050,32283319,182621114,401639597,486441376,768917123,651868046,1003007129,818324884,1503449823,1385356242,1333838021,1150208456,1973745387,2125135846,1673061617,1756818940,2970356327,3120694122,2802849917,2887651696,2637442643,2520393566,2334669897,2149987652,3917234703,3799141122,4284502037,4100872472,3309594171,3460984630,3545789473,3629546796,2050466060,1899603969,1814803222,1730525723,1443857720,1560382517,1075025698,1260232239,575138148,692707433,878443390,1062597235,243256656,91341917,409198410,325965383,3403100636,3252238545,3704300486,3620022987,3874428392,3990953189,4042459122,4227665663,2460449204,2578018489,2226875310,2411029155,3198115200,3046200461,2827177882,2743944855],dr=[0,218828297,437656594,387781147,875313188,958871085,775562294,590424639,1750626376,1699970625,1917742170,2135253587,1551124588,1367295589,1180849278,1265195639,3501252752,3720081049,3399941250,3350065803,3835484340,3919042237,4270507174,4085369519,3102249176,3051593425,2734591178,2952102595,2361698556,2177869557,2530391278,2614737639,3145456443,3060847922,2708326185,2892417312,2404901663,2187128086,2504130317,2555048196,3542330227,3727205754,3375740769,3292445032,3876557655,3926170974,4246310725,4027744588,1808481195,1723872674,1910319033,2094410160,1608975247,1391201670,1173430173,1224348052,59984867,244860394,428169201,344873464,935293895,984907214,766078933,547512796,1844882806,1627235199,2011214180,2062270317,1507497298,1423022939,1137477952,1321699145,95345982,145085239,532201772,313773861,830661914,1015671571,731183368,648017665,3175501286,2957853679,2807058932,2858115069,2305455554,2220981195,2474404304,2658625497,3575528878,3625268135,3473416636,3254988725,3778151818,3963161475,4213447064,4130281361,3599595085,3683022916,3432737375,3247465558,3802222185,4020912224,4172763771,4122762354,3201631749,3017672716,2764249623,2848461854,2331590177,2280796200,2431590963,2648976442,104699613,188127444,472615631,287343814,840019705,1058709744,671593195,621591778,1852171925,1668212892,1953757831,2037970062,1514790577,1463996600,1080017571,1297403050,3673637356,3623636965,3235995134,3454686199,4007360968,3822090177,4107101658,4190530515,2997825956,3215212461,2830708150,2779915199,2256734592,2340947849,2627016082,2443058075,172466556,122466165,273792366,492483431,1047239e3,861968209,612205898,695634755,1646252340,1863638845,2013908262,1963115311,1446242576,1530455833,1277555970,1093597963,1636604631,1820824798,2073724613,1989249228,1436590835,1487645946,1337376481,1119727848,164948639,81781910,331544205,516552836,1039717051,821288114,669961897,719700128,2973530695,3157750862,2871682645,2787207260,2232435299,2283490410,2667994737,2450346104,3647212047,3564045318,3279033885,3464042516,3980931627,3762502690,4150144569,4199882800,3070356634,3121275539,2904027272,2686254721,2200818878,2384911031,2570832044,2486224549,3747192018,3528626907,3310321856,3359936201,3950355702,3867060991,4049844452,4234721005,1739656202,1790575107,2108100632,1890328081,1402811438,1586903591,1233856572,1149249077,266959938,48394827,369057872,418672217,1002783846,919489135,567498868,752375421,209336225,24197544,376187827,459744698,945164165,895287692,574624663,793451934,1679968233,1764313568,2117360635,1933530610,1343127501,1560637892,1243112415,1192455638,3704280881,3519142200,3336358691,3419915562,3907448597,3857572124,4075877127,4294704398,3029510009,3113855344,2927934315,2744104290,2159976285,2377486676,2594734927,2544078150],lr=[0,151849742,303699484,454499602,607398968,758720310,908999204,1059270954,1214797936,1097159550,1517440620,1400849762,1817998408,1699839814,2118541908,2001430874,2429595872,2581445614,2194319100,2345119218,3034881240,3186202582,2801699524,2951971274,3635996816,3518358430,3399679628,3283088770,4237083816,4118925222,4002861748,3885750714,1002142683,850817237,698445255,548169417,529487843,377642221,227885567,77089521,1943217067,2061379749,1640576439,1757691577,1474760595,1592394909,1174215055,1290801793,2875968315,2724642869,3111247143,2960971305,2405426947,2253581325,2638606623,2487810577,3808662347,3926825029,4044981591,4162096729,3342319475,3459953789,3576539503,3693126241,1986918061,2137062819,1685577905,1836772287,1381620373,1532285339,1078185097,1229899655,1040559837,923313619,740276417,621982671,439452389,322734571,137073913,19308535,3871163981,4021308739,4104605777,4255800159,3263785589,3414450555,3499326569,3651041127,2933202493,2815956275,3167684641,3049390895,2330014213,2213296395,2566595609,2448830231,1305906550,1155237496,1607244650,1455525988,1776460110,1626319424,2079897426,1928707164,96392454,213114376,396673818,514443284,562755902,679998e3,865136418,983426092,3708173718,3557504664,3474729866,3323011204,4180808110,4030667424,3945269170,3794078908,2507040230,2623762152,2272556026,2390325492,2975484382,3092726480,2738905026,2857194700,3973773121,3856137295,4274053469,4157467219,3371096953,3252932727,3673476453,3556361835,2763173681,2915017791,3064510765,3215307299,2156299017,2307622919,2459735317,2610011675,2081048481,1963412655,1846563261,1729977011,1480485785,1362321559,1243905413,1126790795,878845905,1030690015,645401037,796197571,274084841,425408743,38544885,188821243,3613494426,3731654548,3313212038,3430322568,4082475170,4200115116,3780097726,3896688048,2668221674,2516901860,2366882550,2216610296,3141400786,2989552604,2837966542,2687165888,1202797690,1320957812,1437280870,1554391400,1669664834,1787304780,1906247262,2022837584,265905162,114585348,499347990,349075736,736970802,585122620,972512814,821712160,2595684844,2478443234,2293045232,2174754046,3196267988,3079546586,2895723464,2777952454,3537852828,3687994002,3234156416,3385345166,4142626212,4293295786,3841024952,3992742070,174567692,57326082,410887952,292596766,777231668,660510266,1011452712,893681702,1108339068,1258480242,1343618912,1494807662,1715193156,1865862730,1948373848,2100090966,2701949495,2818666809,3004591147,3122358053,2235061775,2352307457,2535604243,2653899549,3915653703,3764988233,4219352155,4067639125,3444575871,3294430577,3746175075,3594982253,836553431,953270745,600235211,718002117,367585007,484830689,133361907,251657213,2041877159,1891211689,1806599355,1654886325,1568718495,1418573201,1335535747,1184342925];function ur(e){for(var t=[],r=0;r>2,this._Ke[r][t%4]=s[t],this._Kd[e-r][t%4]=s[t];for(var o,a=0,d=n;d>16&255]<<24^Xt[o>>8&255]<<16^Xt[255&o]<<8^Xt[o>>24&255]^Kt[a]<<24,a+=1,8!=n)for(t=1;t>8&255]<<8^Xt[o>>16&255]<<16^Xt[o>>24&255]<<24;for(t=n/2+1;t>2,u=d%4,this._Ke[l][u]=s[t],this._Kd[e-l][u]=s[t++],d++}for(var l=1;l>24&255]^ar[o>>16&255]^dr[o>>8&255]^lr[255&o]},cr.prototype.encrypt=function(e){if(16!=e.length)throw new Error("invalid plaintext size (must be 16 bytes)");for(var t=this._Ke.length-1,r=[0,0,0,0],i=ur(e),n=0;n<4;n++)i[n]^=this._Ke[0][n];for(var s=1;s>24&255]^Qt[i[(n+1)%4]>>16&255]^er[i[(n+2)%4]>>8&255]^tr[255&i[(n+3)%4]]^this._Ke[s][n];i=r.slice()}var o,a=Ht(16);for(n=0;n<4;n++)o=this._Ke[t][n],a[4*n]=255&(Xt[i[n]>>24&255]^o>>24),a[4*n+1]=255&(Xt[i[(n+1)%4]>>16&255]^o>>16),a[4*n+2]=255&(Xt[i[(n+2)%4]>>8&255]^o>>8),a[4*n+3]=255&(Xt[255&i[(n+3)%4]]^o);return a},cr.prototype.decrypt=function(e){if(16!=e.length)throw new Error("invalid ciphertext size (must be 16 bytes)");for(var t=this._Kd.length-1,r=[0,0,0,0],i=ur(e),n=0;n<4;n++)i[n]^=this._Kd[0][n];for(var s=1;s>24&255]^ir[i[(n+3)%4]>>16&255]^nr[i[(n+2)%4]>>8&255]^sr[255&i[(n+1)%4]]^this._Kd[s][n];i=r.slice()}var o,a=Ht(16);for(n=0;n<4;n++)o=this._Kd[t][n],a[4*n]=255&(Zt[i[n]>>24&255]^o>>24),a[4*n+1]=255&(Zt[i[(n+3)%4]>>16&255]^o>>16),a[4*n+2]=255&(Zt[i[(n+2)%4]>>8&255]^o>>8),a[4*n+3]=255&(Zt[255&i[(n+1)%4]]^o);return a};var fr=function(e){if(!(this instanceof fr))throw Error("AES must be instanitated with `new`");this.description="Electronic Code Block",this.name="ecb",this._aes=new cr(e)};fr.prototype.encrypt=function(e){if((e=Gt(e)).length%16!=0)throw new Error("invalid plaintext size (must be multiple of 16 bytes)");for(var t=Ht(e.length),r=Ht(16),i=0;iNumber.MAX_SAFE_INTEGER)throw new Error("integer value out of safe range");for(var t=15;t>=0;--t)this._counter[t]=e%256,e=parseInt(e/256)},_r.prototype.setBytes=function(e){if(16!=(e=Gt(e,!0)).length)throw new Error("invalid counter bytes size (must be 16 bytes)");this._counter=e},_r.prototype.increment=function(){for(var e=15;e>=0;e--){if(255!==this._counter[e]){this._counter[e]++;break}this._counter[e]=0}};var yr=function(e,t){if(!(this instanceof yr))throw Error("AES must be instanitated with `new`");this.description="Counter",this.name="ctr",t instanceof _r||(t=new _r(t)),this._counter=t,this._remainingCounter=null,this._remainingCounterIndex=16,this._aes=new cr(e)};yr.prototype.encrypt=function(e){for(var t=Gt(e,!0),r=0;r16)throw new Error("PKCS#7 padding byte out of range");for(var r=e.length-t,i=0;i=i&&console.debug("["+s.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)},log:function(e,t){this.debug(e.msg)},info:function(e,t){2>=i&&console.info("["+s.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)},warn:function(e,t){3>=i&&console.warn("["+s.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)},error:function(e,t){4>=i&&console.error("["+s.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)}},n);s.getDurationString=function(e,t){var r;function i(e,t){for(var r=(""+e).split(".");r[0].length0){for(var r="",i=0;i0&&(r+=","),r+="["+s.getDurationString(e.start(i))+","+s.getDurationString(e.end(i))+"]";return r}return"(empty)"},t.Log=s;var o=function(e){if(!(e instanceof ArrayBuffer))throw"Needs an array buffer";this.buffer=e,this.dataview=new DataView(e),this.position=0};o.prototype.getPosition=function(){return this.position},o.prototype.getEndPosition=function(){return this.buffer.byteLength},o.prototype.getLength=function(){return this.buffer.byteLength},o.prototype.seek=function(e){var t=Math.max(0,Math.min(this.buffer.byteLength,e));return this.position=isNaN(t)||!isFinite(t)?0:t,!0},o.prototype.isEos=function(){return this.getPosition()>=this.getEndPosition()},o.prototype.readAnyInt=function(e,t){var r=0;if(this.position+e<=this.buffer.byteLength){switch(e){case 1:r=t?this.dataview.getInt8(this.position):this.dataview.getUint8(this.position);break;case 2:r=t?this.dataview.getInt16(this.position):this.dataview.getUint16(this.position);break;case 3:if(t)throw"No method for reading signed 24 bits values";r=this.dataview.getUint8(this.position)<<16,r|=this.dataview.getUint8(this.position+1)<<8,r|=this.dataview.getUint8(this.position+2);break;case 4:r=t?this.dataview.getInt32(this.position):this.dataview.getUint32(this.position);break;case 8:if(t)throw"No method for reading signed 64 bits values";r=this.dataview.getUint32(this.position)<<32,r|=this.dataview.getUint32(this.position+4);break;default:throw"readInt method not implemented for size: "+e}return this.position+=e,r}throw"Not enough bytes in buffer"},o.prototype.readUint8=function(){return this.readAnyInt(1,!1)},o.prototype.readUint16=function(){return this.readAnyInt(2,!1)},o.prototype.readUint24=function(){return this.readAnyInt(3,!1)},o.prototype.readUint32=function(){return this.readAnyInt(4,!1)},o.prototype.readUint64=function(){return this.readAnyInt(8,!1)},o.prototype.readString=function(e){if(this.position+e<=this.buffer.byteLength){for(var t="",r=0;rthis._byteLength&&(this._byteLength=t);else{for(r<1&&(r=1);t>r;)r*=2;var i=new ArrayBuffer(r),n=new Uint8Array(this._buffer);new Uint8Array(i,0,n.length).set(n),this.buffer=i,this._byteLength=t}}},a.prototype._trimAlloc=function(){if(this._byteLength!=this._buffer.byteLength){var e=new ArrayBuffer(this._byteLength),t=new Uint8Array(e),r=new Uint8Array(this._buffer,0,t.length);t.set(r),this.buffer=e}},a.BIG_ENDIAN=!1,a.LITTLE_ENDIAN=!0,a.prototype._byteLength=0,Object.defineProperty(a.prototype,"byteLength",{get:function(){return this._byteLength-this._byteOffset}}),Object.defineProperty(a.prototype,"buffer",{get:function(){return this._trimAlloc(),this._buffer},set:function(e){this._buffer=e,this._dataView=new DataView(this._buffer,this._byteOffset),this._byteLength=this._buffer.byteLength}}),Object.defineProperty(a.prototype,"byteOffset",{get:function(){return this._byteOffset},set:function(e){this._byteOffset=e,this._dataView=new DataView(this._buffer,this._byteOffset),this._byteLength=this._buffer.byteLength}}),Object.defineProperty(a.prototype,"dataView",{get:function(){return this._dataView},set:function(e){this._byteOffset=e.byteOffset,this._buffer=e.buffer,this._dataView=new DataView(this._buffer,this._byteOffset),this._byteLength=this._byteOffset+e.byteLength}}),a.prototype.seek=function(e){var t=Math.max(0,Math.min(this.byteLength,e));this.position=isNaN(t)||!isFinite(t)?0:t},a.prototype.isEof=function(){return this.position>=this._byteLength},a.prototype.mapUint8Array=function(e){this._realloc(1*e);var t=new Uint8Array(this._buffer,this.byteOffset+this.position,e);return this.position+=1*e,t},a.prototype.readInt32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var r=new Int32Array(e);return a.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),a.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},a.prototype.readInt16Array=function(e,t){e=null==e?this.byteLength-this.position/2:e;var r=new Int16Array(e);return a.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),a.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},a.prototype.readInt8Array=function(e){e=null==e?this.byteLength-this.position:e;var t=new Int8Array(e);return a.memcpy(t.buffer,0,this.buffer,this.byteOffset+this.position,e*t.BYTES_PER_ELEMENT),this.position+=t.byteLength,t},a.prototype.readUint32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var r=new Uint32Array(e);return a.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),a.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},a.prototype.readUint16Array=function(e,t){e=null==e?this.byteLength-this.position/2:e;var r=new Uint16Array(e);return a.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),a.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},a.prototype.readUint8Array=function(e){e=null==e?this.byteLength-this.position:e;var t=new Uint8Array(e);return a.memcpy(t.buffer,0,this.buffer,this.byteOffset+this.position,e*t.BYTES_PER_ELEMENT),this.position+=t.byteLength,t},a.prototype.readFloat64Array=function(e,t){e=null==e?this.byteLength-this.position/8:e;var r=new Float64Array(e);return a.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),a.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},a.prototype.readFloat32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var r=new Float32Array(e);return a.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),a.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},a.prototype.readInt32=function(e){var t=this._dataView.getInt32(this.position,null==e?this.endianness:e);return this.position+=4,t},a.prototype.readInt16=function(e){var t=this._dataView.getInt16(this.position,null==e?this.endianness:e);return this.position+=2,t},a.prototype.readInt8=function(){var e=this._dataView.getInt8(this.position);return this.position+=1,e},a.prototype.readUint32=function(e){var t=this._dataView.getUint32(this.position,null==e?this.endianness:e);return this.position+=4,t},a.prototype.readUint16=function(e){var t=this._dataView.getUint16(this.position,null==e?this.endianness:e);return this.position+=2,t},a.prototype.readUint8=function(){var e=this._dataView.getUint8(this.position);return this.position+=1,e},a.prototype.readFloat32=function(e){var t=this._dataView.getFloat32(this.position,null==e?this.endianness:e);return this.position+=4,t},a.prototype.readFloat64=function(e){var t=this._dataView.getFloat64(this.position,null==e?this.endianness:e);return this.position+=8,t},a.endianness=new Int8Array(new Int16Array([1]).buffer)[0]>0,a.memcpy=function(e,t,r,i,n){var s=new Uint8Array(e,t,n),o=new Uint8Array(r,i,n);s.set(o)},a.arrayToNative=function(e,t){return t==this.endianness?e:this.flipArrayEndianness(e)},a.nativeToEndian=function(e,t){return this.endianness==t?e:this.flipArrayEndianness(e)},a.flipArrayEndianness=function(e){for(var t=new Uint8Array(e.buffer,e.byteOffset,e.byteLength),r=0;rn;i--,n++){var s=t[n];t[n]=t[i],t[i]=s}return e},a.prototype.failurePosition=0,String.fromCharCodeUint8=function(e){for(var t=[],r=0;r>16),this.writeUint8((65280&e)>>8),this.writeUint8(255&e)},a.prototype.adjustUint32=function(e,t){var r=this.position;this.seek(e),this.writeUint32(t),this.seek(r)},a.prototype.mapInt32Array=function(e,t){this._realloc(4*e);var r=new Int32Array(this._buffer,this.byteOffset+this.position,e);return a.arrayToNative(r,null==t?this.endianness:t),this.position+=4*e,r},a.prototype.mapInt16Array=function(e,t){this._realloc(2*e);var r=new Int16Array(this._buffer,this.byteOffset+this.position,e);return a.arrayToNative(r,null==t?this.endianness:t),this.position+=2*e,r},a.prototype.mapInt8Array=function(e){this._realloc(1*e);var t=new Int8Array(this._buffer,this.byteOffset+this.position,e);return this.position+=1*e,t},a.prototype.mapUint32Array=function(e,t){this._realloc(4*e);var r=new Uint32Array(this._buffer,this.byteOffset+this.position,e);return a.arrayToNative(r,null==t?this.endianness:t),this.position+=4*e,r},a.prototype.mapUint16Array=function(e,t){this._realloc(2*e);var r=new Uint16Array(this._buffer,this.byteOffset+this.position,e);return a.arrayToNative(r,null==t?this.endianness:t),this.position+=2*e,r},a.prototype.mapFloat64Array=function(e,t){this._realloc(8*e);var r=new Float64Array(this._buffer,this.byteOffset+this.position,e);return a.arrayToNative(r,null==t?this.endianness:t),this.position+=8*e,r},a.prototype.mapFloat32Array=function(e,t){this._realloc(4*e);var r=new Float32Array(this._buffer,this.byteOffset+this.position,e);return a.arrayToNative(r,null==t?this.endianness:t),this.position+=4*e,r};var l=function(e){this.buffers=[],this.bufferIndex=-1,e&&(this.insertBuffer(e),this.bufferIndex=0)};(l.prototype=new a(new ArrayBuffer,0,a.BIG_ENDIAN)).initialized=function(){var e;return this.bufferIndex>-1||(this.buffers.length>0?0===(e=this.buffers[0]).fileStart?(this.buffer=e,this.bufferIndex=0,s.debug("MultiBufferStream","Stream ready for parsing"),!0):(s.warn("MultiBufferStream","The first buffer should have a fileStart of 0"),this.logBufferLevel(),!1):(s.warn("MultiBufferStream","No buffer to start parsing from"),this.logBufferLevel(),!1))},ArrayBuffer.concat=function(e,t){s.debug("ArrayBuffer","Trying to create a new buffer of size: "+(e.byteLength+t.byteLength));var r=new Uint8Array(e.byteLength+t.byteLength);return r.set(new Uint8Array(e),0),r.set(new Uint8Array(t),e.byteLength),r.buffer},l.prototype.reduceBuffer=function(e,t,r){var i;return(i=new Uint8Array(r)).set(new Uint8Array(e,t,r)),i.buffer.fileStart=e.fileStart+t,i.buffer.usedBytes=0,i.buffer},l.prototype.insertBuffer=function(e){for(var t=!0,r=0;ri.byteLength){this.buffers.splice(r,1),r--;continue}s.warn("MultiBufferStream","Buffer (fileStart: "+e.fileStart+" - Length: "+e.byteLength+") already appended, ignoring")}else e.fileStart+e.byteLength<=i.fileStart||(e=this.reduceBuffer(e,0,i.fileStart-e.fileStart)),s.debug("MultiBufferStream","Appending new buffer (fileStart: "+e.fileStart+" - Length: "+e.byteLength+")"),this.buffers.splice(r,0,e),0===r&&(this.buffer=e);t=!1;break}if(e.fileStart0)){t=!1;break}e=this.reduceBuffer(e,n,o)}}t&&(s.debug("MultiBufferStream","Appending new buffer (fileStart: "+e.fileStart+" - Length: "+e.byteLength+")"),this.buffers.push(e),0===r&&(this.buffer=e))},l.prototype.logBufferLevel=function(e){var t,r,i,n,o,a=[],d="";for(i=0,n=0,t=0;t0&&(d+=o.end-1+"]");var l=e?s.info:s.debug;0===this.buffers.length?l("MultiBufferStream","No more buffer in memory"):l("MultiBufferStream",this.buffers.length+" stored buffer(s) ("+i+"/"+n+" bytes), continuous ranges: "+d)},l.prototype.cleanBuffers=function(){var e,t;for(e=0;e"+this.buffer.byteLength+")"),!0}return!1}return!1},l.prototype.findPosition=function(e,t,r){var i,n=null,o=-1;for(i=!0===e?0:this.bufferIndex;i=t?(s.debug("MultiBufferStream","Found position in existing buffer #"+o),o):-1},l.prototype.findEndContiguousBuf=function(e){var t,r,i,n=void 0!==e?e:this.bufferIndex;if(r=this.buffers[n],this.buffers.length>n+1)for(t=n+1;t>3;return 31===i&&r.data.length>=2&&(i=32+((7&r.data[0])<<3)+((224&r.data[1])>>5)),i}return null},r.DecoderConfigDescriptor=function(e){r.Descriptor.call(this,4,e)},r.DecoderConfigDescriptor.prototype=new r.Descriptor,r.DecoderConfigDescriptor.prototype.parse=function(e){this.oti=e.readUint8(),this.streamType=e.readUint8(),this.bufferSize=e.readUint24(),this.maxBitrate=e.readUint32(),this.avgBitrate=e.readUint32(),this.size-=13,this.parseRemainingDescriptors(e)},r.DecoderSpecificInfo=function(e){r.Descriptor.call(this,5,e)},r.DecoderSpecificInfo.prototype=new r.Descriptor,r.SLConfigDescriptor=function(e){r.Descriptor.call(this,6,e)},r.SLConfigDescriptor.prototype=new r.Descriptor,this};t.MPEG4DescriptorParser=u;var c={ERR_INVALID_DATA:-1,ERR_NOT_ENOUGH_DATA:0,OK:1,BASIC_BOXES:["mdat","idat","free","skip","meco","strk"],FULL_BOXES:["hmhd","nmhd","iods","xml ","bxml","ipro","mere"],CONTAINER_BOXES:[["moov",["trak","pssh"]],["trak"],["edts"],["mdia"],["minf"],["dinf"],["stbl",["sgpd","sbgp"]],["mvex",["trex"]],["moof",["traf"]],["traf",["trun","sgpd","sbgp"]],["vttc"],["tref"],["iref"],["mfra",["tfra"]],["meco"],["hnti"],["hinf"],["strk"],["strd"],["sinf"],["rinf"],["schi"],["trgr"],["udta",["kind"]],["iprp",["ipma"]],["ipco"]],boxCodes:[],fullBoxCodes:[],containerBoxCodes:[],sampleEntryCodes:{},sampleGroupEntryCodes:[],trackGroupTypes:[],UUIDBoxes:{},UUIDs:[],initialize:function(){c.FullBox.prototype=new c.Box,c.ContainerBox.prototype=new c.Box,c.SampleEntry.prototype=new c.Box,c.TrackGroupTypeBox.prototype=new c.FullBox,c.BASIC_BOXES.forEach((function(e){c.createBoxCtor(e)})),c.FULL_BOXES.forEach((function(e){c.createFullBoxCtor(e)})),c.CONTAINER_BOXES.forEach((function(e){c.createContainerBoxCtor(e[0],null,e[1])}))},Box:function(e,t,r){this.type=e,this.size=t,this.uuid=r},FullBox:function(e,t,r){c.Box.call(this,e,t,r),this.flags=0,this.version=0},ContainerBox:function(e,t,r){c.Box.call(this,e,t,r),this.boxes=[]},SampleEntry:function(e,t,r,i){c.ContainerBox.call(this,e,t),this.hdr_size=r,this.start=i},SampleGroupEntry:function(e){this.grouping_type=e},TrackGroupTypeBox:function(e,t){c.FullBox.call(this,e,t)},createBoxCtor:function(e,t){c.boxCodes.push(e),c[e+"Box"]=function(t){c.Box.call(this,e,t)},c[e+"Box"].prototype=new c.Box,t&&(c[e+"Box"].prototype.parse=t)},createFullBoxCtor:function(e,t){c[e+"Box"]=function(t){c.FullBox.call(this,e,t)},c[e+"Box"].prototype=new c.FullBox,c[e+"Box"].prototype.parse=function(e){this.parseFullHeader(e),t&&t.call(this,e)}},addSubBoxArrays:function(e){if(e){this.subBoxNames=e;for(var t=e.length,r=0;rr?(s.error("BoxParser","Box of type '"+u+"' has a size "+l+" greater than its container size "+r),{code:c.ERR_NOT_ENOUGH_DATA,type:u,size:l,hdr_size:d,start:a}):0!==l&&a+l>e.getEndPosition()?(e.seek(a),s.info("BoxParser","Not enough data in stream to parse the entire '"+u+"' box"),{code:c.ERR_NOT_ENOUGH_DATA,type:u,size:l,hdr_size:d,start:a}):t?{code:c.OK,type:u,size:l,hdr_size:d,start:a}:(c[u+"Box"]?i=new c[u+"Box"](l):"uuid"!==u?(s.warn("BoxParser","Unknown box type: '"+u+"'"),(i=new c.Box(u,l)).has_unparsed_data=!0):c.UUIDBoxes[o]?i=new c.UUIDBoxes[o](l):(s.warn("BoxParser","Unknown uuid type: '"+o+"'"),(i=new c.Box(u,l)).uuid=o,i.has_unparsed_data=!0),i.hdr_size=d,i.start=a,i.write===c.Box.prototype.write&&"mdat"!==i.type&&(s.info("BoxParser","'"+f+"' box writing not yet implemented, keeping unparsed data in memory for later write"),i.parseDataAndRewind(e)),i.parse(e),(n=e.getPosition()-(i.start+i.size))<0?(s.warn("BoxParser","Parsing of box '"+f+"' did not read the entire indicated box data size (missing "+-n+" bytes), seeking forward"),e.seek(i.start+i.size)):n>0&&(s.error("BoxParser","Parsing of box '"+f+"' read "+n+" more bytes than the indicated box data size, seeking backwards"),0!==i.size&&e.seek(i.start+i.size)),{code:c.OK,box:i,size:i.size})},c.Box.prototype.parse=function(e){"mdat"!=this.type?this.data=e.readUint8Array(this.size-this.hdr_size):0===this.size?e.seek(e.getEndPosition()):e.seek(this.start+this.size)},c.Box.prototype.parseDataAndRewind=function(e){this.data=e.readUint8Array(this.size-this.hdr_size),e.position-=this.size-this.hdr_size},c.FullBox.prototype.parseDataAndRewind=function(e){this.parseFullHeader(e),this.data=e.readUint8Array(this.size-this.hdr_size),this.hdr_size-=4,e.position-=this.size-this.hdr_size},c.FullBox.prototype.parseFullHeader=function(e){this.version=e.readUint8(),this.flags=e.readUint24(),this.hdr_size+=4},c.FullBox.prototype.parse=function(e){this.parseFullHeader(e),this.data=e.readUint8Array(this.size-this.hdr_size)},c.ContainerBox.prototype.parse=function(e){for(var t,r;e.getPosition()>10&31,t[1]=this.language>>5&31,t[2]=31&this.language,this.languageString=String.fromCharCode(t[0]+96,t[1]+96,t[2]+96)},c.SAMPLE_ENTRY_TYPE_VISUAL="Visual",c.SAMPLE_ENTRY_TYPE_AUDIO="Audio",c.SAMPLE_ENTRY_TYPE_HINT="Hint",c.SAMPLE_ENTRY_TYPE_METADATA="Metadata",c.SAMPLE_ENTRY_TYPE_SUBTITLE="Subtitle",c.SAMPLE_ENTRY_TYPE_SYSTEM="System",c.SAMPLE_ENTRY_TYPE_TEXT="Text",c.SampleEntry.prototype.parseHeader=function(e){e.readUint8Array(6),this.data_reference_index=e.readUint16(),this.hdr_size+=8},c.SampleEntry.prototype.parse=function(e){this.parseHeader(e),this.data=e.readUint8Array(this.size-this.hdr_size)},c.SampleEntry.prototype.parseDataAndRewind=function(e){this.parseHeader(e),this.data=e.readUint8Array(this.size-this.hdr_size),this.hdr_size-=8,e.position-=this.size-this.hdr_size},c.SampleEntry.prototype.parseFooter=function(e){c.ContainerBox.prototype.parse.call(this,e)},c.createMediaSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_HINT),c.createMediaSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_METADATA),c.createMediaSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_SUBTITLE),c.createMediaSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_SYSTEM),c.createMediaSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_TEXT),c.createMediaSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_VISUAL,(function(e){var t;this.parseHeader(e),e.readUint16(),e.readUint16(),e.readUint32Array(3),this.width=e.readUint16(),this.height=e.readUint16(),this.horizresolution=e.readUint32(),this.vertresolution=e.readUint32(),e.readUint32(),this.frame_count=e.readUint16(),t=Math.min(31,e.readUint8()),this.compressorname=e.readString(t),t<31&&e.readString(31-t),this.depth=e.readUint16(),e.readUint16(),this.parseFooter(e)})),c.createMediaSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_AUDIO,(function(e){this.parseHeader(e),e.readUint32Array(2),this.channel_count=e.readUint16(),this.samplesize=e.readUint16(),e.readUint16(),e.readUint16(),this.samplerate=e.readUint32()/65536,this.parseFooter(e)})),c.createSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_VISUAL,"avc1"),c.createSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_VISUAL,"avc2"),c.createSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_VISUAL,"avc3"),c.createSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_VISUAL,"avc4"),c.createSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_VISUAL,"av01"),c.createSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_VISUAL,"hvc1"),c.createSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_VISUAL,"hev1"),c.createSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_VISUAL,"vvc1"),c.createSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_VISUAL,"vvi1"),c.createSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_VISUAL,"vvs1"),c.createSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_VISUAL,"vvcN"),c.createSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_VISUAL,"vp08"),c.createSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_VISUAL,"vp09"),c.createSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_AUDIO,"mp4a"),c.createSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_AUDIO,"ac-3"),c.createSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_AUDIO,"ec-3"),c.createSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_AUDIO,"Opus"),c.createEncryptedSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_VISUAL,"encv"),c.createEncryptedSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_AUDIO,"enca"),c.createEncryptedSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_SUBTITLE,"encu"),c.createEncryptedSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_SYSTEM,"encs"),c.createEncryptedSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_TEXT,"enct"),c.createEncryptedSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_METADATA,"encm"),c.createBoxCtor("a1lx",(function(e){var t=16*(1+(1&(1&e.readUint8())));this.layer_size=[];for(var r=0;r<3;r++)this.layer_size[r]=16==t?e.readUint16():e.readUint32()})),c.createBoxCtor("a1op",(function(e){this.op_index=e.readUint8()})),c.createFullBoxCtor("auxC",(function(e){this.aux_type=e.readCString();var t=this.size-this.hdr_size-(this.aux_type.length+1);this.aux_subtype=e.readUint8Array(t)})),c.createBoxCtor("av1C",(function(e){var t=e.readUint8();if(t>>7&!1)s.error("av1C marker problem");else if(this.version=127&t,1===this.version)if(t=e.readUint8(),this.seq_profile=t>>5&7,this.seq_level_idx_0=31&t,t=e.readUint8(),this.seq_tier_0=t>>7&1,this.high_bitdepth=t>>6&1,this.twelve_bit=t>>5&1,this.monochrome=t>>4&1,this.chroma_subsampling_x=t>>3&1,this.chroma_subsampling_y=t>>2&1,this.chroma_sample_position=3&t,t=e.readUint8(),this.reserved_1=t>>5&7,0===this.reserved_1){if(this.initial_presentation_delay_present=t>>4&1,1===this.initial_presentation_delay_present)this.initial_presentation_delay_minus_one=15&t;else if(this.reserved_2=15&t,0!==this.reserved_2)return void s.error("av1C reserved_2 parsing problem");var r=this.size-this.hdr_size-4;this.configOBUs=e.readUint8Array(r)}else s.error("av1C reserved_1 parsing problem");else s.error("av1C version "+this.version+" not supported")})),c.createBoxCtor("avcC",(function(e){var t,r;for(this.configurationVersion=e.readUint8(),this.AVCProfileIndication=e.readUint8(),this.profile_compatibility=e.readUint8(),this.AVCLevelIndication=e.readUint8(),this.lengthSizeMinusOne=3&e.readUint8(),this.nb_SPS_nalus=31&e.readUint8(),r=this.size-this.hdr_size-6,this.SPS=[],t=0;t0&&(this.ext=e.readUint8Array(r))})),c.createBoxCtor("btrt",(function(e){this.bufferSizeDB=e.readUint32(),this.maxBitrate=e.readUint32(),this.avgBitrate=e.readUint32()})),c.createBoxCtor("clap",(function(e){this.cleanApertureWidthN=e.readUint32(),this.cleanApertureWidthD=e.readUint32(),this.cleanApertureHeightN=e.readUint32(),this.cleanApertureHeightD=e.readUint32(),this.horizOffN=e.readUint32(),this.horizOffD=e.readUint32(),this.vertOffN=e.readUint32(),this.vertOffD=e.readUint32()})),c.createBoxCtor("clli",(function(e){this.max_content_light_level=e.readUint16(),this.max_pic_average_light_level=e.readUint16()})),c.createFullBoxCtor("co64",(function(e){var t,r;if(t=e.readUint32(),this.chunk_offsets=[],0===this.version)for(r=0;r>7}else("rICC"===this.colour_type||"prof"===this.colour_type)&&(this.ICC_profile=e.readUint8Array(this.size-4))})),c.createFullBoxCtor("cprt",(function(e){this.parseLanguage(e),this.notice=e.readCString()})),c.createFullBoxCtor("cslg",(function(e){0===this.version&&(this.compositionToDTSShift=e.readInt32(),this.leastDecodeToDisplayDelta=e.readInt32(),this.greatestDecodeToDisplayDelta=e.readInt32(),this.compositionStartTime=e.readInt32(),this.compositionEndTime=e.readInt32())})),c.createFullBoxCtor("ctts",(function(e){var t,r;if(t=e.readUint32(),this.sample_counts=[],this.sample_offsets=[],0===this.version)for(r=0;r>6,this.bsid=t>>1&31,this.bsmod=(1&t)<<2|r>>6&3,this.acmod=r>>3&7,this.lfeon=r>>2&1,this.bit_rate_code=3&r|i>>5&7})),c.createBoxCtor("dec3",(function(e){var t=e.readUint16();this.data_rate=t>>3,this.num_ind_sub=7&t,this.ind_subs=[];for(var r=0;r>6,i.bsid=n>>1&31,i.bsmod=(1&n)<<4|s>>4&15,i.acmod=s>>1&7,i.lfeon=1&s,i.num_dep_sub=o>>1&15,i.num_dep_sub>0&&(i.chan_loc=(1&o)<<8|e.readUint8())}})),c.createFullBoxCtor("dfLa",(function(e){var t=[],r=["STREAMINFO","PADDING","APPLICATION","SEEKTABLE","VORBIS_COMMENT","CUESHEET","PICTURE","RESERVED"];for(this.parseFullHeader(e);;){var i=e.readUint8(),n=Math.min(127&i,r.length-1);if(n?e.readUint8Array(e.readUint24()):(e.readUint8Array(13),this.samplerate=e.readUint32()>>12,e.readUint8Array(20)),t.push(r[n]),128&i)break}this.numMetadataBlocks=t.length+" ("+t.join(", ")+")"})),c.createBoxCtor("dimm",(function(e){this.bytessent=e.readUint64()})),c.createBoxCtor("dmax",(function(e){this.time=e.readUint32()})),c.createBoxCtor("dmed",(function(e){this.bytessent=e.readUint64()})),c.createBoxCtor("dOps",(function(e){if(this.Version=e.readUint8(),this.OutputChannelCount=e.readUint8(),this.PreSkip=e.readUint16(),this.InputSampleRate=e.readUint32(),this.OutputGain=e.readInt16(),this.ChannelMappingFamily=e.readUint8(),0!==this.ChannelMappingFamily){this.StreamCount=e.readUint8(),this.CoupledCount=e.readUint8(),this.ChannelMapping=[];for(var t=0;t=4;)this.compatible_brands[r]=e.readString(4),t-=4,r++})),c.createFullBoxCtor("hdlr",(function(e){0===this.version&&(e.readUint32(),this.handler=e.readString(4),e.readUint32Array(3),this.name=e.readString(this.size-this.hdr_size-20),"\0"===this.name[this.name.length-1]&&(this.name=this.name.slice(0,-1)))})),c.createBoxCtor("hvcC",(function(e){var t,r,i,n;this.configurationVersion=e.readUint8(),n=e.readUint8(),this.general_profile_space=n>>6,this.general_tier_flag=(32&n)>>5,this.general_profile_idc=31&n,this.general_profile_compatibility=e.readUint32(),this.general_constraint_indicator=e.readUint8Array(6),this.general_level_idc=e.readUint8(),this.min_spatial_segmentation_idc=4095&e.readUint16(),this.parallelismType=3&e.readUint8(),this.chroma_format_idc=3&e.readUint8(),this.bit_depth_luma_minus8=7&e.readUint8(),this.bit_depth_chroma_minus8=7&e.readUint8(),this.avgFrameRate=e.readUint16(),n=e.readUint8(),this.constantFrameRate=n>>6,this.numTemporalLayers=(13&n)>>3,this.temporalIdNested=(4&n)>>2,this.lengthSizeMinusOne=3&n,this.nalu_arrays=[];var s=e.readUint8();for(t=0;t>7,o.nalu_type=63&n;var a=e.readUint16();for(r=0;r>4&15,this.length_size=15&t,t=e.readUint8(),this.base_offset_size=t>>4&15,1===this.version||2===this.version?this.index_size=15&t:this.index_size=0,this.items=[];var r=0;if(this.version<2)r=e.readUint16();else{if(2!==this.version)throw"version of iloc box not supported";r=e.readUint32()}for(var i=0;i>7,this.axis=1&t})),c.createFullBoxCtor("infe",(function(e){if(0!==this.version&&1!==this.version||(this.item_ID=e.readUint16(),this.item_protection_index=e.readUint16(),this.item_name=e.readCString(),this.content_type=e.readCString(),this.content_encoding=e.readCString()),1===this.version)return this.extension_type=e.readString(4),s.warn("BoxParser","Cannot parse extension type"),void e.seek(this.start+this.size);this.version>=2&&(2===this.version?this.item_ID=e.readUint16():3===this.version&&(this.item_ID=e.readUint32()),this.item_protection_index=e.readUint16(),this.item_type=e.readString(4),this.item_name=e.readCString(),"mime"===this.item_type?(this.content_type=e.readCString(),this.content_encoding=e.readCString()):"uri "===this.item_type&&(this.item_uri_type=e.readCString()))})),c.createFullBoxCtor("ipma",(function(e){var t,r;for(entry_count=e.readUint32(),this.associations=[],t=0;t>7==1,1&this.flags?o.property_index=(127&s)<<8|e.readUint8():o.property_index=127&s}}})),c.createFullBoxCtor("iref",(function(e){var t,r;for(this.references=[];e.getPosition()>7,i.assignment_type=127&n,i.assignment_type){case 0:i.grouping_type=e.readString(4);break;case 1:i.grouping_type=e.readString(4),i.grouping_type_parameter=e.readUint32();break;case 2:case 3:break;case 4:i.sub_track_id=e.readUint32();break;default:s.warn("BoxParser","Unknown leva assignement type")}}})),c.createBoxCtor("lsel",(function(e){this.layer_id=e.readUint16()})),c.createBoxCtor("maxr",(function(e){this.period=e.readUint32(),this.bytes=e.readUint32()})),c.createBoxCtor("mdcv",(function(e){this.display_primaries=[],this.display_primaries[0]={},this.display_primaries[0].x=e.readUint16(),this.display_primaries[0].y=e.readUint16(),this.display_primaries[1]={},this.display_primaries[1].x=e.readUint16(),this.display_primaries[1].y=e.readUint16(),this.display_primaries[2]={},this.display_primaries[2].x=e.readUint16(),this.display_primaries[2].y=e.readUint16(),this.white_point={},this.white_point.x=e.readUint16(),this.white_point.y=e.readUint16(),this.max_display_mastering_luminance=e.readUint32(),this.min_display_mastering_luminance=e.readUint32()})),c.createFullBoxCtor("mdhd",(function(e){1==this.version?(this.creation_time=e.readUint64(),this.modification_time=e.readUint64(),this.timescale=e.readUint32(),this.duration=e.readUint64()):(this.creation_time=e.readUint32(),this.modification_time=e.readUint32(),this.timescale=e.readUint32(),this.duration=e.readUint32()),this.parseLanguage(e),e.readUint16()})),c.createFullBoxCtor("mehd",(function(e){1&this.flags&&(s.warn("BoxParser","mehd box incorrectly uses flags set to 1, converting version to 1"),this.version=1),1==this.version?this.fragment_duration=e.readUint64():this.fragment_duration=e.readUint32()})),c.createFullBoxCtor("meta",(function(e){this.boxes=[],c.ContainerBox.prototype.parse.call(this,e)})),c.createFullBoxCtor("mfhd",(function(e){this.sequence_number=e.readUint32()})),c.createFullBoxCtor("mfro",(function(e){this._size=e.readUint32()})),c.createFullBoxCtor("mvhd",(function(e){1==this.version?(this.creation_time=e.readUint64(),this.modification_time=e.readUint64(),this.timescale=e.readUint32(),this.duration=e.readUint64()):(this.creation_time=e.readUint32(),this.modification_time=e.readUint32(),this.timescale=e.readUint32(),this.duration=e.readUint32()),this.rate=e.readUint32(),this.volume=e.readUint16()>>8,e.readUint16(),e.readUint32Array(2),this.matrix=e.readUint32Array(9),e.readUint32Array(6),this.next_track_id=e.readUint32()})),c.createBoxCtor("npck",(function(e){this.packetssent=e.readUint32()})),c.createBoxCtor("nump",(function(e){this.packetssent=e.readUint64()})),c.createFullBoxCtor("padb",(function(e){var t=e.readUint32();this.padbits=[];for(var r=0;r0){var t=e.readUint32();this.kid=[];for(var r=0;r0&&(this.data=e.readUint8Array(i))})),c.createFullBoxCtor("clef",(function(e){this.width=e.readUint32(),this.height=e.readUint32()})),c.createFullBoxCtor("enof",(function(e){this.width=e.readUint32(),this.height=e.readUint32()})),c.createFullBoxCtor("prof",(function(e){this.width=e.readUint32(),this.height=e.readUint32()})),c.createContainerBoxCtor("tapt",null,["clef","prof","enof"]),c.createBoxCtor("rtp ",(function(e){this.descriptionformat=e.readString(4),this.sdptext=e.readString(this.size-this.hdr_size-4)})),c.createFullBoxCtor("saio",(function(e){1&this.flags&&(this.aux_info_type=e.readUint32(),this.aux_info_type_parameter=e.readUint32());var t=e.readUint32();this.offset=[];for(var r=0;r>7,this.avgRateFlag=t>>6&1,this.durationFlag&&(this.duration=e.readUint32()),this.avgRateFlag&&(this.accurateStatisticsFlag=e.readUint8(),this.avgBitRate=e.readUint16(),this.avgFrameRate=e.readUint16()),this.dependency=[];for(var r=e.readUint8(),i=0;i>7,this.num_leading_samples=127&t})),c.createSampleGroupCtor("rash",(function(e){if(this.operation_point_count=e.readUint16(),this.description_length!==2+(1===this.operation_point_count?2:6*this.operation_point_count)+9)s.warn("BoxParser","Mismatch in "+this.grouping_type+" sample group length"),this.data=e.readUint8Array(this.description_length-2);else{if(1===this.operation_point_count)this.target_rate_share=e.readUint16();else{this.target_rate_share=[],this.available_bitrate=[];for(var t=0;t>4,this.skip_byte_block=15&t,this.isProtected=e.readUint8(),this.Per_Sample_IV_Size=e.readUint8(),this.KID=c.parseHex16(e),this.constant_IV_size=0,this.constant_IV=0,1===this.isProtected&&0===this.Per_Sample_IV_Size&&(this.constant_IV_size=e.readUint8(),this.constant_IV=e.readUint8Array(this.constant_IV_size))})),c.createSampleGroupCtor("stsa",(function(e){s.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),c.createSampleGroupCtor("sync",(function(e){var t=e.readUint8();this.NAL_unit_type=63&t})),c.createSampleGroupCtor("tele",(function(e){var t=e.readUint8();this.level_independently_decodable=t>>7})),c.createSampleGroupCtor("tsas",(function(e){s.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),c.createSampleGroupCtor("tscl",(function(e){s.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),c.createSampleGroupCtor("vipr",(function(e){s.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),c.createFullBoxCtor("sbgp",(function(e){this.grouping_type=e.readString(4),1===this.version?this.grouping_type_parameter=e.readUint32():this.grouping_type_parameter=0,this.entries=[];for(var t=e.readUint32(),r=0;r>6,this.sample_depends_on[i]=t>>4&3,this.sample_is_depended_on[i]=t>>2&3,this.sample_has_redundancy[i]=3&t})),c.createFullBoxCtor("senc"),c.createFullBoxCtor("sgpd",(function(e){this.grouping_type=e.readString(4),s.debug("BoxParser","Found Sample Groups of type "+this.grouping_type),1===this.version?this.default_length=e.readUint32():this.default_length=0,this.version>=2&&(this.default_group_description_index=e.readUint32()),this.entries=[];for(var t=e.readUint32(),r=0;r>31&1,i.referenced_size=2147483647&n,i.subsegment_duration=e.readUint32(),n=e.readUint32(),i.starts_with_SAP=n>>31&1,i.SAP_type=n>>28&7,i.SAP_delta_time=268435455&n}})),c.SingleItemTypeReferenceBox=function(e,t,r,i){c.Box.call(this,e,t),this.hdr_size=r,this.start=i},c.SingleItemTypeReferenceBox.prototype=new c.Box,c.SingleItemTypeReferenceBox.prototype.parse=function(e){this.from_item_ID=e.readUint16();var t=e.readUint16();this.references=[];for(var r=0;r>4&15,this.sample_sizes[t+1]=15&i}else if(8===this.field_size)for(t=0;t0)for(r=0;r>4&15,this.default_skip_byte_block=15&t}this.default_isProtected=e.readUint8(),this.default_Per_Sample_IV_Size=e.readUint8(),this.default_KID=c.parseHex16(e),1===this.default_isProtected&&0===this.default_Per_Sample_IV_Size&&(this.default_constant_IV_size=e.readUint8(),this.default_constant_IV=e.readUint8Array(this.default_constant_IV_size))})),c.createFullBoxCtor("tfdt",(function(e){1==this.version?this.baseMediaDecodeTime=e.readUint64():this.baseMediaDecodeTime=e.readUint32()})),c.createFullBoxCtor("tfhd",(function(e){var t=0;this.track_id=e.readUint32(),this.size-this.hdr_size>t&&this.flags&c.TFHD_FLAG_BASE_DATA_OFFSET?(this.base_data_offset=e.readUint64(),t+=8):this.base_data_offset=0,this.size-this.hdr_size>t&&this.flags&c.TFHD_FLAG_SAMPLE_DESC?(this.default_sample_description_index=e.readUint32(),t+=4):this.default_sample_description_index=0,this.size-this.hdr_size>t&&this.flags&c.TFHD_FLAG_SAMPLE_DUR?(this.default_sample_duration=e.readUint32(),t+=4):this.default_sample_duration=0,this.size-this.hdr_size>t&&this.flags&c.TFHD_FLAG_SAMPLE_SIZE?(this.default_sample_size=e.readUint32(),t+=4):this.default_sample_size=0,this.size-this.hdr_size>t&&this.flags&c.TFHD_FLAG_SAMPLE_FLAGS?(this.default_sample_flags=e.readUint32(),t+=4):this.default_sample_flags=0})),c.createFullBoxCtor("tfra",(function(e){this.track_ID=e.readUint32(),e.readUint24();var t=e.readUint8();this.length_size_of_traf_num=t>>4&3,this.length_size_of_trun_num=t>>2&3,this.length_size_of_sample_num=3&t,this.entries=[];for(var r=e.readUint32(),i=0;i>8,e.readUint16(),this.matrix=e.readInt32Array(9),this.width=e.readUint32(),this.height=e.readUint32()})),c.createBoxCtor("tmax",(function(e){this.time=e.readUint32()})),c.createBoxCtor("tmin",(function(e){this.time=e.readUint32()})),c.createBoxCtor("totl",(function(e){this.bytessent=e.readUint32()})),c.createBoxCtor("tpay",(function(e){this.bytessent=e.readUint32()})),c.createBoxCtor("tpyl",(function(e){this.bytessent=e.readUint64()})),c.TrackGroupTypeBox.prototype.parse=function(e){this.parseFullHeader(e),this.track_group_id=e.readUint32()},c.createTrackGroupCtor("msrc"),c.TrackReferenceTypeBox=function(e,t,r,i){c.Box.call(this,e,t),this.hdr_size=r,this.start=i},c.TrackReferenceTypeBox.prototype=new c.Box,c.TrackReferenceTypeBox.prototype.parse=function(e){this.track_ids=e.readUint32Array((this.size-this.hdr_size)/4)},c.trefBox.prototype.parse=function(e){for(var t,r;e.getPosition()t&&this.flags&c.TRUN_FLAGS_DATA_OFFSET?(this.data_offset=e.readInt32(),t+=4):this.data_offset=0,this.size-this.hdr_size>t&&this.flags&c.TRUN_FLAGS_FIRST_FLAG?(this.first_sample_flags=e.readUint32(),t+=4):this.first_sample_flags=0,this.sample_duration=[],this.sample_size=[],this.sample_flags=[],this.sample_composition_time_offset=[],this.size-this.hdr_size>t)for(var r=0;r0&&(this.location=e.readCString())})),c.createUUIDBox("a5d40b30e81411ddba2f0800200c9a66",!0,!1,(function(e){this.LiveServerManifest=e.readString(this.size-this.hdr_size).replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")})),c.createUUIDBox("d08a4f1810f34a82b6c832d8aba183d3",!0,!1,(function(e){this.system_id=c.parseHex16(e);var t=e.readUint32();t>0&&(this.data=e.readUint8Array(t))})),c.createUUIDBox("a2394f525a9b4f14a2446c427c648df4",!0,!1),c.createUUIDBox("8974dbce7be74c5184f97148f9882554",!0,!1,(function(e){this.default_AlgorithmID=e.readUint24(),this.default_IV_size=e.readUint8(),this.default_KID=c.parseHex16(e)})),c.createUUIDBox("d4807ef2ca3946958e5426cb9e46a79f",!0,!1,(function(e){this.fragment_count=e.readUint8(),this.entries=[];for(var t=0;t>4,this.chromaSubsampling=t>>1&7,this.videoFullRangeFlag=1&t,this.colourPrimaries=e.readUint8(),this.transferCharacteristics=e.readUint8(),this.matrixCoefficients=e.readUint8(),this.codecIntializationDataSize=e.readUint16(),this.codecIntializationData=e.readUint8Array(this.codecIntializationDataSize)):(this.profile=e.readUint8(),this.level=e.readUint8(),t=e.readUint8(),this.bitDepth=t>>4&15,this.colorSpace=15&t,t=e.readUint8(),this.chromaSubsampling=t>>4&15,this.transferFunction=t>>1&7,this.videoFullRangeFlag=1&t,this.codecIntializationDataSize=e.readUint16(),this.codecIntializationData=e.readUint8Array(this.codecIntializationDataSize))})),c.createBoxCtor("vttC",(function(e){this.text=e.readString(this.size-this.hdr_size)})),c.createFullBoxCtor("vvcC",(function(e){var t,r,i={held_bits:void 0,num_held_bits:0,stream_read_1_bytes:function(e){this.held_bits=e.readUint8(),this.num_held_bits=8},stream_read_2_bytes:function(e){this.held_bits=e.readUint16(),this.num_held_bits=16},extract_bits:function(e){var t=this.held_bits>>this.num_held_bits-e&(1<=0;--r){var o=i.extract_bits(1);this.ptl_sublayer_present_mask|=o<1;++r)i.extract_bits(1);for(r=this.num_sublayers-2;r>=0;--r)this.ptl_sublayer_present_mask&1<>=1;t+=c.decimalToHex(i,0),t+=".",0===this.hvcC.general_tier_flag?t+="L":t+="H",t+=this.hvcC.general_level_idc;var n=!1,s="";for(e=5;e>=0;e--)(this.hvcC.general_constraint_indicator[e]||n)&&(s="."+c.decimalToHex(this.hvcC.general_constraint_indicator[e],0)+s,n=!0);t+=s}return t},c.vvc1SampleEntry.prototype.getCodec=c.vvi1SampleEntry.prototype.getCodec=function(){var e,t=c.SampleEntry.prototype.getCodec.call(this);if(this.vvcC){t+="."+this.vvcC.general_profile_idc,this.vvcC.general_tier_flag?t+=".H":t+=".L",t+=this.vvcC.general_level_idc;var r="";if(this.vvcC.general_constraint_info){var i,n=[],s=0;for(s|=this.vvcC.ptl_frame_only_constraint<<7,s|=this.vvcC.ptl_multilayer_enabled<<6,e=0;e>2&63,n.push(s),s&&(i=e),s=this.vvcC.general_constraint_info[e]>>2&3;if(void 0===i)r=".CA";else{r=".C";var o="ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",a=0,d=0;for(e=0;e<=i;++e)for(a=a<<8|n[e],d+=8;d>=5;){r+=o[a>>d-5&31],a&=(1<<(d-=5))-1}d&&(r+=o[31&(a<<=5-d)])}}t+=r}return t},c.mp4aSampleEntry.prototype.getCodec=function(){var e=c.SampleEntry.prototype.getCodec.call(this);if(this.esds&&this.esds.esd){var t=this.esds.esd.getOTI(),r=this.esds.esd.getAudioConfig();return e+"."+c.decimalToHex(t)+(r?"."+r:"")}return e},c.stxtSampleEntry.prototype.getCodec=function(){var e=c.SampleEntry.prototype.getCodec.call(this);return this.mime_format?e+"."+this.mime_format:e},c.vp08SampleEntry.prototype.getCodec=c.vp09SampleEntry.prototype.getCodec=function(){var e=c.SampleEntry.prototype.getCodec.call(this),t=this.vpcC.level;0==t&&(t="00");var r=this.vpcC.bitDepth;return 8==r&&(r="08"),e+".0"+this.vpcC.profile+"."+t+"."+r},c.av01SampleEntry.prototype.getCodec=function(){var e,t=c.SampleEntry.prototype.getCodec.call(this),r=this.av1C.seq_level_idx_0;return r<10&&(r="0"+r),2===this.av1C.seq_profile&&1===this.av1C.high_bitdepth?e=1===this.av1C.twelve_bit?"12":"10":this.av1C.seq_profile<=2&&(e=1===this.av1C.high_bitdepth?"10":"08"),t+"."+this.av1C.seq_profile+"."+r+(this.av1C.seq_tier_0?"H":"M")+"."+e},c.Box.prototype.writeHeader=function(e,t){this.size+=8,this.size>d&&(this.size+=8),"uuid"===this.type&&(this.size+=16),s.debug("BoxWriter","Writing box "+this.type+" of size: "+this.size+" at position "+e.getPosition()+(t||"")),this.size>d?e.writeUint32(1):(this.sizePosition=e.getPosition(),e.writeUint32(this.size)),e.writeString(this.type,null,4),"uuid"===this.type&&e.writeUint8Array(this.uuid),this.size>d&&e.writeUint64(this.size)},c.FullBox.prototype.writeHeader=function(e){this.size+=4,c.Box.prototype.writeHeader.call(this,e," v="+this.version+" f="+this.flags),e.writeUint8(this.version),e.writeUint24(this.flags)},c.Box.prototype.write=function(e){"mdat"===this.type?this.data&&(this.size=this.data.length,this.writeHeader(e),e.writeUint8Array(this.data)):(this.size=this.data?this.data.length:0,this.writeHeader(e),this.data&&e.writeUint8Array(this.data))},c.ContainerBox.prototype.write=function(e){this.size=0,this.writeHeader(e);for(var t=0;t=2&&e.writeUint32(this.default_sample_description_index),e.writeUint32(this.entries.length),t=0;t0)for(t=0;t+1t?1:0,this.flags=0,this.size=4,1===this.version&&(this.size+=4),this.writeHeader(e),1===this.version?e.writeUint64(this.baseMediaDecodeTime):e.writeUint32(this.baseMediaDecodeTime)},c.tfhdBox.prototype.write=function(e){this.version=0,this.size=4,this.flags&c.TFHD_FLAG_BASE_DATA_OFFSET&&(this.size+=8),this.flags&c.TFHD_FLAG_SAMPLE_DESC&&(this.size+=4),this.flags&c.TFHD_FLAG_SAMPLE_DUR&&(this.size+=4),this.flags&c.TFHD_FLAG_SAMPLE_SIZE&&(this.size+=4),this.flags&c.TFHD_FLAG_SAMPLE_FLAGS&&(this.size+=4),this.writeHeader(e),e.writeUint32(this.track_id),this.flags&c.TFHD_FLAG_BASE_DATA_OFFSET&&e.writeUint64(this.base_data_offset),this.flags&c.TFHD_FLAG_SAMPLE_DESC&&e.writeUint32(this.default_sample_description_index),this.flags&c.TFHD_FLAG_SAMPLE_DUR&&e.writeUint32(this.default_sample_duration),this.flags&c.TFHD_FLAG_SAMPLE_SIZE&&e.writeUint32(this.default_sample_size),this.flags&c.TFHD_FLAG_SAMPLE_FLAGS&&e.writeUint32(this.default_sample_flags)},c.tkhdBox.prototype.write=function(e){this.version=0,this.size=80,this.writeHeader(e),e.writeUint32(this.creation_time),e.writeUint32(this.modification_time),e.writeUint32(this.track_id),e.writeUint32(0),e.writeUint32(this.duration),e.writeUint32(0),e.writeUint32(0),e.writeInt16(this.layer),e.writeInt16(this.alternate_group),e.writeInt16(this.volume<<8),e.writeUint16(0),e.writeInt32Array(this.matrix),e.writeUint32(this.width),e.writeUint32(this.height)},c.trexBox.prototype.write=function(e){this.version=0,this.flags=0,this.size=20,this.writeHeader(e),e.writeUint32(this.track_id),e.writeUint32(this.default_sample_description_index),e.writeUint32(this.default_sample_duration),e.writeUint32(this.default_sample_size),e.writeUint32(this.default_sample_flags)},c.trunBox.prototype.write=function(e){this.version=0,this.size=4,this.flags&c.TRUN_FLAGS_DATA_OFFSET&&(this.size+=4),this.flags&c.TRUN_FLAGS_FIRST_FLAG&&(this.size+=4),this.flags&c.TRUN_FLAGS_DURATION&&(this.size+=4*this.sample_duration.length),this.flags&c.TRUN_FLAGS_SIZE&&(this.size+=4*this.sample_size.length),this.flags&c.TRUN_FLAGS_FLAGS&&(this.size+=4*this.sample_flags.length),this.flags&c.TRUN_FLAGS_CTS_OFFSET&&(this.size+=4*this.sample_composition_time_offset.length),this.writeHeader(e),e.writeUint32(this.sample_count),this.flags&c.TRUN_FLAGS_DATA_OFFSET&&(this.data_offset_position=e.getPosition(),e.writeInt32(this.data_offset)),this.flags&c.TRUN_FLAGS_FIRST_FLAG&&e.writeUint32(this.first_sample_flags);for(var t=0;t-1||e[r]instanceof c.Box||t[r]instanceof c.Box||void 0===e[r]||void 0===t[r]||"function"==typeof e[r]||"function"==typeof t[r]||e.subBoxNames&&e.subBoxNames.indexOf(r.slice(0,4))>-1||t.subBoxNames&&t.subBoxNames.indexOf(r.slice(0,4))>-1||"data"===r||"start"===r||"size"===r||"creation_time"===r||"modification_time"===r||c.DIFF_PRIMITIVE_ARRAY_PROP_NAMES.indexOf(r)>-1||e[r]===t[r]))return!1;return!0},c.boxEqual=function(e,t){if(!c.boxEqualFields(e,t))return!1;for(var r=0;r1)for(t=1;t-1&&this.fragmentedTracks.splice(t,1)},p.prototype.setExtractionOptions=function(e,t,r){var i=this.getTrackById(e);if(i){var n={};this.extractedTracks.push(n),n.id=e,n.user=t,n.trak=i,i.nextSample=0,n.nb_samples=1e3,n.samples=[],r&&r.nbSamples&&(n.nb_samples=r.nbSamples)}},p.prototype.unsetExtractionOptions=function(e){for(var t=-1,r=0;r-1&&this.extractedTracks.splice(t,1)},p.prototype.parse=function(){var e,t;if(!this.restoreParsePosition||this.restoreParsePosition())for(;;){if(this.hasIncompleteMdat&&this.hasIncompleteMdat()){if(this.processIncompleteMdat())continue;return}if(this.saveParsePosition&&this.saveParsePosition(),(e=c.parseOneBox(this.stream,false)).code===c.ERR_NOT_ENOUGH_DATA){if(this.processIncompleteBox){if(this.processIncompleteBox(e))continue;return}return}var r;switch(r="uuid"!==(t=e.box).type?t.type:t.uuid,this.boxes.push(t),r){case"mdat":this.mdats.push(t);break;case"moof":this.moofs.push(t);break;case"moov":this.moovStartFound=!0,0===this.mdats.length&&(this.isProgressive=!0);default:void 0!==this[r]&&s.warn("ISOFile","Duplicate Box of type: "+r+", overriding previous occurrence"),this[r]=t}this.updateUsedBytes&&this.updateUsedBytes(t,e)}},p.prototype.checkBuffer=function(e){if(null==e)throw"Buffer must be defined and non empty";if(void 0===e.fileStart)throw"Buffer must have a fileStart property";return 0===e.byteLength?(s.warn("ISOFile","Ignoring empty buffer (fileStart: "+e.fileStart+")"),this.stream.logBufferLevel(),!1):(s.info("ISOFile","Processing buffer (fileStart: "+e.fileStart+")"),e.usedBytes=0,this.stream.insertBuffer(e),this.stream.logBufferLevel(),!!this.stream.initialized()||(s.warn("ISOFile","Not ready to start parsing"),!1))},p.prototype.appendBuffer=function(e,t){var r;if(this.checkBuffer(e))return this.parse(),this.moovStartFound&&!this.moovStartSent&&(this.moovStartSent=!0,this.onMoovStart&&this.onMoovStart()),this.moov?(this.sampleListBuilt||(this.buildSampleLists(),this.sampleListBuilt=!0),this.updateSampleLists(),this.onReady&&!this.readySent&&(this.readySent=!0,this.onReady(this.getInfo())),this.processSamples(t),this.nextSeekPosition?(r=this.nextSeekPosition,this.nextSeekPosition=void 0):r=this.nextParsePosition,this.stream.getEndFilePositionAfter&&(r=this.stream.getEndFilePositionAfter(r))):r=this.nextParsePosition?this.nextParsePosition:0,this.sidx&&this.onSidx&&!this.sidxSent&&(this.onSidx(this.sidx),this.sidxSent=!0),this.meta&&(this.flattenItemInfo&&!this.itemListBuilt&&(this.flattenItemInfo(),this.itemListBuilt=!0),this.processItems&&this.processItems(this.onItem)),this.stream.cleanBuffers&&(s.info("ISOFile","Done processing buffer (fileStart: "+e.fileStart+") - next buffer to fetch should have a fileStart position of "+r),this.stream.logBufferLevel(),this.stream.cleanBuffers(),this.stream.logBufferLevel(!0),s.info("ISOFile","Sample data size in memory: "+this.getAllocatedSampleDataSize())),r},p.prototype.getInfo=function(){var e,t,r,i,n,s,o={},a=new Date("1904-01-01T00:00:00Z").getTime();if(this.moov)for(o.hasMoov=!0,o.duration=this.moov.mvhd.duration,o.timescale=this.moov.mvhd.timescale,o.isFragmented=null!=this.moov.mvex,o.isFragmented&&this.moov.mvex.mehd&&(o.fragment_duration=this.moov.mvex.mehd.fragment_duration),o.isProgressive=this.isProgressive,o.hasIOD=null!=this.moov.iods,o.brands=[],o.brands.push(this.ftyp.major_brand),o.brands=o.brands.concat(this.ftyp.compatible_brands),o.created=new Date(a+1e3*this.moov.mvhd.creation_time),o.modified=new Date(a+1e3*this.moov.mvhd.modification_time),o.tracks=[],o.audioTracks=[],o.videoTracks=[],o.subtitleTracks=[],o.metadataTracks=[],o.hintTracks=[],o.otherTracks=[],e=0;e0?o.mime+='video/mp4; codecs="':o.audioTracks&&o.audioTracks.length>0?o.mime+='audio/mp4; codecs="':o.mime+='application/mp4; codecs="',e=0;e=r.samples.length)&&(s.info("ISOFile","Sending fragmented data on track #"+i.id+" for samples ["+Math.max(0,r.nextSample-i.nb_samples)+","+(r.nextSample-1)+"]"),s.info("ISOFile","Sample data size in memory: "+this.getAllocatedSampleDataSize()),this.onSegment&&this.onSegment(i.id,i.user,i.segmentStream.buffer,r.nextSample,e||r.nextSample>=r.samples.length),i.segmentStream=null,i!==this.fragmentedTracks[t]))break}}if(null!==this.onSamples)for(t=0;t=r.samples.length)&&(s.debug("ISOFile","Sending samples on track #"+o.id+" for sample "+r.nextSample),this.onSamples&&this.onSamples(o.id,o.user,o.samples),o.samples=[],o!==this.extractedTracks[t]))break}}}},p.prototype.getBox=function(e){var t=this.getBoxes(e,!0);return t.length?t[0]:null},p.prototype.getBoxes=function(e,t){var r=[];return p._sweep.call(this,e,r,t),r},p._sweep=function(e,t,r){for(var i in this.type&&this.type==e&&t.push(this),this.boxes){if(t.length&&r)return;p._sweep.call(this.boxes[i],e,t,r)}},p.prototype.getTrackSamplesInfo=function(e){var t=this.getTrackById(e);return t?t.samples:void 0},p.prototype.getTrackSample=function(e,t){var r=this.getTrackById(e);return this.getSample(r,t)},p.prototype.releaseUsedSamples=function(e,t){var r=0,i=this.getTrackById(e);i.lastValidSample||(i.lastValidSample=0);for(var n=i.lastValidSample;ne*n.timescale){l=i-1;break}t&&n.is_sync&&(d=i)}for(t&&(l=d),e=r.samples[l].cts,r.nextSample=l;r.samples[l].alreadyRead===r.samples[l].size&&r.samples[l+1];)l++;return o=r.samples[l].offset+r.samples[l].alreadyRead,s.info("ISOFile","Seeking to "+(t?"RAP":"")+" sample #"+r.nextSample+" on track "+r.tkhd.track_id+", time "+s.getDurationString(e,a)+" and offset: "+o),{offset:o,time:e/a}},p.prototype.seek=function(e,t){var r,i,n,o=this.moov,a={offset:1/0,time:1/0};if(this.moov){for(n=0;n-1){a=d;break}switch(a){case"Visual":if(n.add("vmhd").set("graphicsmode",0).set("opcolor",[0,0,0]),s.set("width",t.width).set("height",t.height).set("horizresolution",72<<16).set("vertresolution",72<<16).set("frame_count",1).set("compressorname",t.type+" Compressor").set("depth",24),t.avcDecoderConfigRecord){var f=new c.avcCBox,h=new o(t.avcDecoderConfigRecord);f.parse(h),s.addBox(f)}break;case"Audio":n.add("smhd").set("balance",t.balance||0),s.set("channel_count",t.channel_count||2).set("samplesize",t.samplesize||16).set("samplerate",t.samplerate||65536);break;case"Hint":n.add("hmhd");break;case"Subtitle":if(n.add("sthd"),"stpp"===t.type)s.set("namespace",t.namespace||"nonamespace").set("schema_location",t.schema_location||"").set("auxiliary_mime_types",t.auxiliary_mime_types||"");break;default:n.add("nmhd")}t.description&&s.addBox(t.description),t.description_boxes&&t.description_boxes.forEach((function(e){s.addBox(e)})),n.add("dinf").add("dref").addEntry((new c["url Box"]).set("flags",1));var p=n.add("stbl");return p.add("stsd").addEntry(s),p.add("stts").set("sample_counts",[]).set("sample_deltas",[]),p.add("stsc").set("first_chunk",[]).set("samples_per_chunk",[]).set("sample_description_index",[]),p.add("stco").set("chunk_offsets",[]),p.add("stsz").set("sample_sizes",[]),this.moov.mvex.add("trex").set("track_id",t.id).set("default_sample_description_index",t.default_sample_description_index||1).set("default_sample_duration",t.default_sample_duration||0).set("default_sample_size",t.default_sample_size||0).set("default_sample_flags",t.default_sample_flags||0),this.buildTrakSampleLists(r),t.id}},c.Box.prototype.computeSize=function(e){var t=e||new a;t.endianness=a.BIG_ENDIAN,this.write(t)},p.prototype.addSample=function(e,t,r){var i=r||{},n={},s=this.getTrackById(e);if(null!==s){n.number=s.samples.length,n.track_id=s.tkhd.track_id,n.timescale=s.mdia.mdhd.timescale,n.description_index=i.sample_description_index?i.sample_description_index-1:0,n.description=s.mdia.minf.stbl.stsd.entries[n.description_index],n.data=t,n.size=t.byteLength,n.alreadyRead=n.size,n.duration=i.duration||1,n.cts=i.cts||0,n.dts=i.dts||0,n.is_sync=i.is_sync||!1,n.is_leading=i.is_leading||0,n.depends_on=i.depends_on||0,n.is_depended_on=i.is_depended_on||0,n.has_redundancy=i.has_redundancy||0,n.degradation_priority=i.degradation_priority||0,n.offset=0,n.subsamples=i.subsamples,s.samples.push(n),s.samples_size+=n.size,s.samples_duration+=n.duration,s.first_dts||(s.first_dts=i.dts),this.processSamples();var o=this.createSingleSampleMoof(n);return this.addBox(o),o.computeSize(),o.trafs[0].truns[0].data_offset=o.size+8,this.add("mdat").data=new Uint8Array(t),n}},p.prototype.createSingleSampleMoof=function(e){var t=0;t=e.is_sync?1<<25:65536;var r=new c.moofBox;r.add("mfhd").set("sequence_number",this.nextMoofNumber),this.nextMoofNumber++;var i=r.add("traf"),n=this.getTrackById(e.track_id);return i.add("tfhd").set("track_id",e.track_id).set("flags",c.TFHD_FLAG_DEFAULT_BASE_IS_MOOF),i.add("tfdt").set("baseMediaDecodeTime",e.dts-(n.first_dts||0)),i.add("trun").set("flags",c.TRUN_FLAGS_DATA_OFFSET|c.TRUN_FLAGS_DURATION|c.TRUN_FLAGS_SIZE|c.TRUN_FLAGS_FLAGS|c.TRUN_FLAGS_CTS_OFFSET).set("data_offset",0).set("first_sample_flags",0).set("sample_count",1).set("sample_duration",[e.duration]).set("sample_size",[e.size]).set("sample_flags",[t]).set("sample_composition_time_offset",[e.cts-e.dts]),r},p.prototype.lastMoofIndex=0,p.prototype.samplesDataSize=0,p.prototype.resetTables=function(){var e,t,r,i,n,s;for(this.initial_duration=this.moov.mvhd.duration,this.moov.mvhd.duration=0,e=0;e=2&&(d=n[o].grouping_type+"/0",(a=new l(n[o].grouping_type,0)).is_fragment=!0,t.sample_groups_info[d]||(t.sample_groups_info[d]=a))}else for(o=0;o=2&&(d=i[o].grouping_type+"/0",a=new l(i[o].grouping_type,0),e.sample_groups_info[d]||(e.sample_groups_info[d]=a))},p.setSampleGroupProperties=function(e,t,r,i){var n,s;for(n in t.sample_groups=[],i){var o;if(t.sample_groups[n]={},t.sample_groups[n].grouping_type=i[n].grouping_type,t.sample_groups[n].grouping_type_parameter=i[n].grouping_type_parameter,r>=i[n].last_sample_in_run&&(i[n].last_sample_in_run<0&&(i[n].last_sample_in_run=0),i[n].entry_index++,i[n].entry_index<=i[n].sbgp.entries.length-1&&(i[n].last_sample_in_run+=i[n].sbgp.entries[i[n].entry_index].sample_count)),i[n].entry_index<=i[n].sbgp.entries.length-1?t.sample_groups[n].group_description_index=i[n].sbgp.entries[i[n].entry_index].group_description_index:t.sample_groups[n].group_description_index=-1,0!==t.sample_groups[n].group_description_index)o=i[n].fragment_description?i[n].fragment_description:i[n].description,t.sample_groups[n].group_description_index>0?(s=t.sample_groups[n].group_description_index>65535?(t.sample_groups[n].group_description_index>>16)-1:t.sample_groups[n].group_description_index-1,o&&s>=0&&(t.sample_groups[n].description=o.entries[s])):o&&o.version>=2&&o.default_group_description_index>0&&(t.sample_groups[n].description=o.entries[o.default_group_description_index-1])}},p.process_sdtp=function(e,t,r){t&&(e?(t.is_leading=e.is_leading[r],t.depends_on=e.sample_depends_on[r],t.is_depended_on=e.sample_is_depended_on[r],t.has_redundancy=e.sample_has_redundancy[r]):(t.is_leading=0,t.depends_on=0,t.is_depended_on=0,t.has_redundancy=0))},p.prototype.buildSampleLists=function(){var e,t;for(e=0;ev&&(b++,v<0&&(v=0),v+=s.sample_counts[b]),t>0?(e.samples[t-1].duration=s.sample_deltas[b],e.samples_duration+=e.samples[t-1].duration,A.dts=e.samples[t-1].dts+e.samples[t-1].duration):A.dts=0,o?(t>=w&&(E++,w<0&&(w=0),w+=o.sample_counts[E]),A.cts=e.samples[t].dts+o.sample_offsets[E]):A.cts=A.dts,a?(t==a.sample_numbers[S]-1?(A.is_sync=!0,S++):(A.is_sync=!1,A.degradation_priority=0),l&&l.entries[x].sample_delta+U==t+1&&(A.subsamples=l.entries[x].subsamples,U+=l.entries[x].sample_delta,x++)):A.is_sync=!0,p.process_sdtp(e.mdia.minf.stbl.sdtp,A,A.number),A.degradation_priority=f?f.priority[t]:0,l&&l.entries[x].sample_delta+U==t&&(A.subsamples=l.entries[x].subsamples,U+=l.entries[x].sample_delta),(u.length>0||c.length>0)&&p.setSampleGroupProperties(e,A,t,e.sample_groups_info)}t>0&&(e.samples[t-1].duration=Math.max(e.mdia.mdhd.duration-e.samples[t-1].dts,0),e.samples_duration+=e.samples[t-1].duration)}},p.prototype.updateSampleLists=function(){var e,t,r,i,n,s,o,a,d,l,u,f,h,m,_;if(void 0!==this.moov)for(;this.lastMoofIndex0&&p.initSampleGroups(f,u,u.sbgps,f.mdia.minf.stbl.sgpds,u.sgpds),t=0;t0?m.dts=f.samples[f.samples.length-2].dts+f.samples[f.samples.length-2].duration:(u.tfdt?m.dts=u.tfdt.baseMediaDecodeTime:m.dts=0,f.first_traf_merged=!0),m.cts=m.dts,y.flags&c.TRUN_FLAGS_CTS_OFFSET&&(m.cts=m.dts+y.sample_composition_time_offset[r]),_=o,y.flags&c.TRUN_FLAGS_FLAGS?_=y.sample_flags[r]:0===r&&y.flags&c.TRUN_FLAGS_FIRST_FLAG&&(_=y.first_sample_flags),m.is_sync=!(_>>16&1),m.is_leading=_>>26&3,m.depends_on=_>>24&3,m.is_depended_on=_>>22&3,m.has_redundancy=_>>20&3,m.degradation_priority=65535&_;var g=!!(u.tfhd.flags&c.TFHD_FLAG_BASE_DATA_OFFSET),v=!!(u.tfhd.flags&c.TFHD_FLAG_DEFAULT_BASE_IS_MOOF),b=!!(y.flags&c.TRUN_FLAGS_DATA_OFFSET),w=0;w=g?u.tfhd.base_data_offset:v||0===t?l.start:a,m.offset=0===t&&0===r?b?w+y.data_offset:w:a,a=m.offset+m.size,(u.sbgps.length>0||u.sgpds.length>0||f.mdia.minf.stbl.sbgps.length>0||f.mdia.minf.stbl.sgpds.length>0)&&p.setSampleGroupProperties(f,m,m.number_in_traf,u.sample_groups_info)}}if(u.subs){f.has_fragment_subsamples=!0;var E=u.first_sample_index;for(t=0;t-1))return null;var o=(r=this.stream.buffers[n]).byteLength-(i.offset+i.alreadyRead-r.fileStart);if(i.size-i.alreadyRead<=o)return s.debug("ISOFile","Getting sample #"+t+" data (alreadyRead: "+i.alreadyRead+" offset: "+(i.offset+i.alreadyRead-r.fileStart)+" read size: "+(i.size-i.alreadyRead)+" full size: "+i.size+")"),a.memcpy(i.data.buffer,i.alreadyRead,r,i.offset+i.alreadyRead-r.fileStart,i.size-i.alreadyRead),r.usedBytes+=i.size-i.alreadyRead,this.stream.logBufferLevel(),i.alreadyRead=i.size,i;if(0===o)return null;s.debug("ISOFile","Getting sample #"+t+" partial data (alreadyRead: "+i.alreadyRead+" offset: "+(i.offset+i.alreadyRead-r.fileStart)+" read size: "+o+" full size: "+i.size+")"),a.memcpy(i.data.buffer,i.alreadyRead,r,i.offset+i.alreadyRead-r.fileStart,o),i.alreadyRead+=o,r.usedBytes+=o,this.stream.logBufferLevel()}},p.prototype.releaseSample=function(e,t){var r=e.samples[t];return r.data?(this.samplesDataSize-=r.size,r.data=null,r.alreadyRead=0,r.size):0},p.prototype.getAllocatedSampleDataSize=function(){return this.samplesDataSize},p.prototype.getCodecs=function(){var e,t="";for(e=0;e0&&(t+=","),t+=this.moov.traks[e].mdia.minf.stbl.stsd.entries[0].getCodec()}return t},p.prototype.getTrexById=function(e){var t;if(!this.moov||!this.moov.mvex)return null;for(t=0;t0&&(r.protection=n.ipro.protections[n.iinf.item_infos[e].protection_index-1]),n.iinf.item_infos[e].item_type?r.type=n.iinf.item_infos[e].item_type:r.type="mime",r.content_type=n.iinf.item_infos[e].content_type,r.content_encoding=n.iinf.item_infos[e].content_encoding;if(n.iloc)for(e=0;e0&&c.property_index-1-1))return null;var d=(t=this.stream.buffers[o]).byteLength-(n.offset+n.alreadyRead-t.fileStart);if(!(n.length-n.alreadyRead<=d))return s.debug("ISOFile","Getting item #"+e+" extent #"+i+" partial data (alreadyRead: "+n.alreadyRead+" offset: "+(n.offset+n.alreadyRead-t.fileStart)+" read size: "+d+" full extent size: "+n.length+" full item size: "+r.size+")"),a.memcpy(r.data.buffer,r.alreadyRead,t,n.offset+n.alreadyRead-t.fileStart,d),n.alreadyRead+=d,r.alreadyRead+=d,t.usedBytes+=d,this.stream.logBufferLevel(),null;s.debug("ISOFile","Getting item #"+e+" extent #"+i+" data (alreadyRead: "+n.alreadyRead+" offset: "+(n.offset+n.alreadyRead-t.fileStart)+" read size: "+(n.length-n.alreadyRead)+" full extent size: "+n.length+" full item size: "+r.size+")"),a.memcpy(r.data.buffer,r.alreadyRead,t,n.offset+n.alreadyRead-t.fileStart,n.length-n.alreadyRead),t.usedBytes+=n.length-n.alreadyRead,this.stream.logBufferLevel(),r.alreadyRead+=n.length-n.alreadyRead,n.alreadyRead=n.length}}return r.alreadyRead===r.size?r:null},p.prototype.releaseItem=function(e){var t=this.items[e];if(t.data){this.itemsDataSize-=t.size,t.data=null,t.alreadyRead=0;for(var r=0;r0?this.moov.traks[e].samples[0].duration:0),t.push(i)}return t},c.Box.prototype.printHeader=function(e){this.size+=8,this.size>d&&(this.size+=8),"uuid"===this.type&&(this.size+=16),e.log(e.indent+"size:"+this.size),e.log(e.indent+"type:"+this.type)},c.FullBox.prototype.printHeader=function(e){this.size+=4,c.Box.prototype.printHeader.call(this,e),e.log(e.indent+"version:"+this.version),e.log(e.indent+"flags:"+this.flags)},c.Box.prototype.print=function(e){this.printHeader(e)},c.ContainerBox.prototype.print=function(e){this.printHeader(e);for(var t=0;t>8)),e.log(e.indent+"matrix: "+this.matrix.join(", ")),e.log(e.indent+"next_track_id: "+this.next_track_id)},c.tkhdBox.prototype.print=function(e){c.FullBox.prototype.printHeader.call(this,e),e.log(e.indent+"creation_time: "+this.creation_time),e.log(e.indent+"modification_time: "+this.modification_time),e.log(e.indent+"track_id: "+this.track_id),e.log(e.indent+"duration: "+this.duration),e.log(e.indent+"volume: "+(this.volume>>8)),e.log(e.indent+"matrix: "+this.matrix.join(", ")),e.log(e.indent+"layer: "+this.layer),e.log(e.indent+"alternate_group: "+this.alternate_group),e.log(e.indent+"width: "+this.width),e.log(e.indent+"height: "+this.height)};var m={createFile:function(e,t){var r=void 0===e||e,i=new p(t);return i.discardMdatData=!r,i}};t.createFile=m.createFile}));function br(e){return e.reduce(((e,t)=>256*e+t))}function wr(e){const t=[101,103,119,99],r=e.length-28,i=e.slice(r,r+t.length);return t.every(((e,t)=>e===i[t]))}vr.Log,vr.MP4BoxStream,vr.DataStream,vr.MultiBufferStream,vr.MPEG4DescriptorParser,vr.BoxParser,vr.XMLSubtitlein4Parser,vr.Textin4Parser,vr.ISOFile,vr.createFile;class Er{constructor(){this.s=null,this.a=null,this.l=0,this.c=0,this.u=1/0,this.A=!1,this.d=!1,this.r=4194304,this.n=new Uint8Array([30,158,90,33,244,57,83,165,2,70,35,87,215,231,226,108]),this.t=this.n.slice().reverse()}destroy(){this.s=null,this.a=null,this.l=0,this.c=0,this.u=1/0,this.A=!1,this.d=!1,this.r=4194304,this.n=null,this.t=null}transport(e){if(!this.s&&this.l>50)return e;if(this.l++,this.d)return e;const t=new Uint8Array(e);if(this.A){if(!(this.c~e))}(e.slice(r+32,r+32+t))]}return null}(t,this.t);if(!r)return e;const i=function(e){try{if("object"!=typeof WebAssembly||"function"!=typeof WebAssembly.instantiate)throw null;{const e=new WebAssembly.Module(Uint8Array.of(0,97,115,109,1,0,0,0));if(!(e instanceof WebAssembly.Module&&new WebAssembly.Instance(e)instanceof WebAssembly.Instance))throw null}}catch(e){return new Error("video_error_4")}let t;try{t={env:{__handle_stack_overflow:()=>e(new Error("video_error_1")),memory:new WebAssembly.Memory({initial:256,maximum:256})}}}catch(e){return new Error("video_error_5")}return t}(e);if(i instanceof Error)return console.error(i.message),this.d=!0,e;this.A=!0,this.u=r[1],wr(t)&&this.c++,WebAssembly.instantiate(r[2],i).then((e=>{if("function"!=typeof(t=e.instance.exports).parse||"object"!=typeof t.memory)return this.d=!0,void console.error("video_error_3");var t;this.s=e.instance.exports,this.a=new Uint8Array(this.s.memory.buffer)})).catch((e=>{this.d=!0,console.error("video_error_6")}))}return e}}const Sr=0,xr=32,Ur=16,Ar=[214,144,233,254,204,225,61,183,22,182,20,194,40,251,44,5,43,103,154,118,42,190,4,195,170,68,19,38,73,134,6,153,156,66,80,244,145,239,152,122,51,84,11,67,237,207,172,98,228,179,28,169,201,8,232,149,128,223,148,250,117,143,63,166,71,7,167,252,243,115,23,186,131,89,60,25,230,133,79,168,104,107,129,178,113,100,218,139,248,235,15,75,112,86,157,53,30,36,14,94,99,88,209,162,37,34,124,59,1,33,120,135,212,0,70,87,159,211,39,82,76,54,2,231,160,196,200,158,234,191,138,210,64,199,56,181,163,247,242,206,249,97,21,161,224,174,93,164,155,52,26,85,173,147,50,48,245,140,177,227,29,246,226,46,130,102,202,96,192,41,35,171,13,83,78,111,213,219,55,69,222,253,142,47,3,255,106,114,109,108,91,81,141,27,175,146,187,221,188,127,17,217,92,65,31,16,90,216,10,193,49,136,165,205,123,189,45,116,208,18,184,229,180,176,137,105,151,74,12,150,119,126,101,185,241,9,197,110,198,132,24,240,125,236,58,220,77,32,121,238,95,62,215,203,57,72],kr=[462357,472066609,943670861,1415275113,1886879365,2358483617,2830087869,3301692121,3773296373,4228057617,404694573,876298825,1347903077,1819507329,2291111581,2762715833,3234320085,3705924337,4177462797,337322537,808926789,1280531041,1752135293,2223739545,2695343797,3166948049,3638552301,4110090761,269950501,741554753,1213159005,1684763257];function Tr(e){const t=[];for(let r=0,i=e.length;r>>32-r}function Cr(e){return(255&Ar[e>>>24&255])<<24|(255&Ar[e>>>16&255])<<16|(255&Ar[e>>>8&255])<<8|255&Ar[255&e]}function Dr(e){return e^Br(e,2)^Br(e,10)^Br(e,18)^Br(e,24)}function Pr(e){return e^Br(e,13)^Br(e,23)}function Fr(e,t,r){const i=new Array(4),n=new Array(4);for(let t=0;t<4;t++)n[0]=255&e[4*t],n[1]=255&e[4*t+1],n[2]=255&e[4*t+2],n[3]=255&e[4*t+3],i[t]=n[0]<<24|n[1]<<16|n[2]<<8|n[3];for(let e,t=0;t<32;t+=4)e=i[1]^i[2]^i[3]^r[t+0],i[0]^=Dr(Cr(e)),e=i[2]^i[3]^i[0]^r[t+1],i[1]^=Dr(Cr(e)),e=i[3]^i[0]^i[1]^r[t+2],i[2]^=Dr(Cr(e)),e=i[0]^i[1]^i[2]^r[t+3],i[3]^=Dr(Cr(e));for(let e=0;e<16;e+=4)t[e]=i[3-e/4]>>>24&255,t[e+1]=i[3-e/4]>>>16&255,t[e+2]=i[3-e/4]>>>8&255,t[e+3]=255&i[3-e/4]}function Ir(e,t,r,{padding:i="pkcs#7",mode:n,iv:s=[],output:o="string"}={}){if("cbc"===n&&("string"==typeof s&&(s=Tr(s)),16!==s.length))throw new Error("iv is invalid");if("string"==typeof t&&(t=Tr(t)),16!==t.length)throw new Error("key is invalid");if(e="string"==typeof e?r!==Sr?function(e){const t=[];for(let r=0,i=e.length;r>>6),t.push(128|63&i);else if(i<=55295||i>=57344&&i<=65535)t.push(224|i>>>12),t.push(128|i>>>6&63),t.push(128|63&i);else{if(!(i>=65536&&i<=1114111))throw t.push(i),new Error("input is not supported");r++,t.push(240|i>>>18&28),t.push(128|i>>>12&63),t.push(128|i>>>6&63),t.push(128|63&i)}}return t}(e):Tr(e):[...e],("pkcs#5"===i||"pkcs#7"===i)&&r!==Sr){const t=Ur-e.length%Ur;for(let r=0;r=Ur;){const t=e.slice(c,c+16),i=new Array(16);if("cbc"===n)for(let e=0;e1===(e=e.toString(16)).length?"0"+e:e)).join(""):function(e){const t=[];for(let r=0,i=e.length;r=240&&e[r]<=247?(t.push(String.fromCodePoint(((7&e[r])<<18)+((63&e[r+1])<<12)+((63&e[r+2])<<6)+(63&e[r+3]))),r+=3):e[r]>=224&&e[r]<=239?(t.push(String.fromCodePoint(((15&e[r])<<12)+((63&e[r+1])<<6)+(63&e[r+2]))),r+=2):e[r]>=192&&e[r]<=223?(t.push(String.fromCodePoint(((31&e[r])<<6)+(63&e[r+1]))),r++):t.push(String.fromCodePoint(e[r]));return t.join("")}(d):d}class Lr{on(e,t,r){const i=this.e||(this.e={});return(i[e]||(i[e]=[])).push({fn:t,ctx:r}),this}once(e,t,r){const i=this;function n(...s){i.off(e,n),t.apply(r,s)}return n._=t,this.on(e,n,r)}emit(e,...t){const r=((this.e||(this.e={}))[e]||[]).slice();for(let e=0;e{delete r[e]})),void delete this.e;const i=r[e],n=[];if(i&&t)for(let e=0,r=i.length;e=2&&!this.isDestroyed;)if(255==this.tempBuffer[this.parsedOffset]){if(!(!1&this.tempBuffer[this.parsedOffset+1])){this.versionLayer=this.tempBuffer[this.parsedOffset+1],this.state=Rr.findFirstStartCode,this.fisrtStartCodeOffset=this.parsedOffset,this.parsedOffset+=2,e=!0;break}this.parsedOffset++}else this.parsedOffset++;if(e)continue;break}if(this.state==Rr.findFirstStartCode){let e=!1;for(;this.tempBuffer.length-this.parsedOffset>=2&&!this.isDestroyed;)if(255==this.tempBuffer[this.parsedOffset]){if(this.tempBuffer[this.parsedOffset+1]==this.versionLayer){this.state=Rr.findSecondStartCode,this.secondStartCodeOffset=this.parsedOffset,this.parsedOffset+=2,e=!0;break}this.parsedOffset++}else this.parsedOffset++;if(e)continue;break}if(this.state==Rr.findSecondStartCode){let e=this.tempBuffer.slice(this.fisrtStartCodeOffset,this.secondStartCodeOffset);this.emit("data",e,t),this.tempBuffer=this.tempBuffer.slice(this.secondStartCodeOffset),this.fisrtStartCodeOffset=0,this.parsedOffset=2,this.state=Rr.findFirstStartCode}}}}function zr(e,t,r){for(let i=2;ie+t.byteLength),0));let r=0;return e.forEach((e=>{t.set(e,r),r+=e.byteLength})),t}class Or{static init(){Or.types={avc1:[],avcC:[],hvc1:[],hvcC:[],av01:[],av1C:[],btrt:[],dinf:[],dref:[],esds:[],ftyp:[],hdlr:[],mdat:[],mdhd:[],mdia:[],mfhd:[],minf:[],moof:[],moov:[],mp4a:[],mvex:[],mvhd:[],sdtp:[],stbl:[],stco:[],stsc:[],stsd:[],stsz:[],stts:[],tfdt:[],tfhd:[],traf:[],trak:[],trun:[],trex:[],tkhd:[],vmhd:[],smhd:[],".mp3":[],Opus:[],dOps:[],"ac-3":[],dac3:[],"ec-3":[],dec3:[]};for(let e in Or.types)Or.types.hasOwnProperty(e)&&(Or.types[e]=[e.charCodeAt(0),e.charCodeAt(1),e.charCodeAt(2),e.charCodeAt(3)]);let e=Or.constants={};e.FTYP=new Uint8Array([105,115,111,109,0,0,0,1,105,115,111,109,97,118,99,49]),e.STSD_PREFIX=new Uint8Array([0,0,0,0,0,0,0,1]),e.STTS=new Uint8Array([0,0,0,0,0,0,0,0]),e.STSC=e.STCO=e.STTS,e.STSZ=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0]),e.HDLR_VIDEO=new Uint8Array([0,0,0,0,0,0,0,0,118,105,100,101,0,0,0,0,0,0,0,0,0,0,0,0,86,105,100,101,111,72,97,110,100,108,101,114,0]),e.HDLR_AUDIO=new Uint8Array([0,0,0,0,0,0,0,0,115,111,117,110,0,0,0,0,0,0,0,0,0,0,0,0,83,111,117,110,100,72,97,110,100,108,101,114,0]),e.DREF=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,12,117,114,108,32,0,0,0,1]),e.SMHD=new Uint8Array([0,0,0,0,0,0,0,0]),e.VMHD=new Uint8Array([0,0,0,1,0,0,0,0,0,0,0,0])}static box(e){let t=8,r=null,i=Array.prototype.slice.call(arguments,1),n=i.length;for(let e=0;e>>24&255,r[1]=t>>>16&255,r[2]=t>>>8&255,r[3]=255&t,r.set(e,4);let s=8;for(let e=0;e>>24&255,e>>>16&255,e>>>8&255,255&e,t>>>24&255,t>>>16&255,t>>>8&255,255&t,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255]))}static trak(e){return Or.box(Or.types.trak,Or.tkhd(e),Or.mdia(e))}static tkhd(e){let t=e.id,r=e.duration,i=e.presentWidth,n=e.presentHeight;return Or.box(Or.types.tkhd,new Uint8Array([0,0,0,7,0,0,0,0,0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t,0,0,0,0,r>>>24&255,r>>>16&255,r>>>8&255,255&r,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,i>>>8&255,255&i,0,0,n>>>8&255,255&n,0,0]))}static mdia(e){return Or.box(Or.types.mdia,Or.mdhd(e),Or.hdlr(e),Or.minf(e))}static mdhd(e){let t=e.timescale,r=e.duration;return Or.box(Or.types.mdhd,new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t,r>>>24&255,r>>>16&255,r>>>8&255,255&r,85,196,0,0]))}static hdlr(e){let t=null;return t="audio"===e.type?Or.constants.HDLR_AUDIO:Or.constants.HDLR_VIDEO,Or.box(Or.types.hdlr,t)}static minf(e){let t=null;return t="audio"===e.type?Or.box(Or.types.smhd,Or.constants.SMHD):Or.box(Or.types.vmhd,Or.constants.VMHD),Or.box(Or.types.minf,t,Or.dinf(),Or.stbl(e))}static dinf(){return Or.box(Or.types.dinf,Or.box(Or.types.dref,Or.constants.DREF))}static stbl(e){return Or.box(Or.types.stbl,Or.stsd(e),Or.box(Or.types.stts,Or.constants.STTS),Or.box(Or.types.stsc,Or.constants.STSC),Or.box(Or.types.stsz,Or.constants.STSZ),Or.box(Or.types.stco,Or.constants.STCO))}static stsd(e){return"audio"===e.type?"mp3"===e.audioType?Or.box(Or.types.stsd,Or.constants.STSD_PREFIX,Or.mp3(e)):Or.box(Or.types.stsd,Or.constants.STSD_PREFIX,Or.mp4a(e)):"avc"===e.videoType?Or.box(Or.types.stsd,Or.constants.STSD_PREFIX,Or.avc1(e)):Or.box(Or.types.stsd,Or.constants.STSD_PREFIX,Or.hvc1(e))}static mp3(e){let t=e.channelCount,r=e.audioSampleRate,i=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,t,0,16,0,0,0,0,r>>>8&255,255&r,0,0]);return Or.box(Or.types[".mp3"],i)}static mp4a(e){let t=e.channelCount,r=e.audioSampleRate,i=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,t,0,16,0,0,0,0,r>>>8&255,255&r,0,0]);return Or.box(Or.types.mp4a,i,Or.esds(e))}static esds(e){let t=e.config||[],r=t.length,i=new Uint8Array([0,0,0,0,3,23+r,0,1,0,4,15+r,64,21,0,0,0,0,0,0,0,0,0,0,0,5].concat([r]).concat(t).concat([6,1,2]));return Or.box(Or.types.esds,i)}static avc1(e){let t=e.avcc;const r=e.codecWidth,i=e.codecHeight;let n=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,r>>>8&255,255&r,i>>>8&255,255&i,0,72,0,0,0,72,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,255,255]);return Or.box(Or.types.avc1,n,Or.box(Or.types.avcC,t))}static hvc1(e){let t=e.avcc;const r=e.codecWidth,i=e.codecHeight;let n=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,r>>>8&255,255&r,i>>>8&255,255&i,0,72,0,0,0,72,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,255,255]);return Or.box(Or.types.hvc1,n,Or.box(Or.types.hvcC,t))}static mvex(e){return Or.box(Or.types.mvex,Or.trex(e))}static trex(e){let t=e.id,r=new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1]);return Or.box(Or.types.trex,r)}static moof(e,t){return Or.box(Or.types.moof,Or.mfhd(e.sequenceNumber),Or.traf(e,t))}static mfhd(e){let t=new Uint8Array([0,0,0,0,e>>>24&255,e>>>16&255,e>>>8&255,255&e]);return Or.box(Or.types.mfhd,t)}static traf(e,t){let r=e.id,i=Or.box(Or.types.tfhd,new Uint8Array([0,0,0,0,r>>>24&255,r>>>16&255,r>>>8&255,255&r])),n=Or.box(Or.types.tfdt,new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t])),s=Or.sdtp(e),o=Or.trun(e,s.byteLength+16+16+8+16+8+8);return Or.box(Or.types.traf,i,n,o,s)}static sdtp(e){let t=new Uint8Array(5),r=e.flags;return t[4]=r.isLeading<<6|r.dependsOn<<4|r.isDependedOn<<2|r.hasRedundancy,Or.box(Or.types.sdtp,t)}static trun(e,t){let r=new Uint8Array(28);t+=36,r.set([0,0,15,1,0,0,0,1,t>>>24&255,t>>>16&255,t>>>8&255,255&t],0);let i=e.duration,n=e.size,s=e.flags,o=e.cts;return r.set([i>>>24&255,i>>>16&255,i>>>8&255,255&i,n>>>24&255,n>>>16&255,n>>>8&255,255&n,s.isLeading<<2|s.dependsOn,s.isDependedOn<<6|s.hasRedundancy<<4|s.isNonSync,0,0,o>>>24&255,o>>>16&255,o>>>8&255,255&o],12),Or.box(Or.types.trun,r)}static mdat(e){return Or.box(Or.types.mdat,e)}}function $r(e={},t={},r=!1){let i=[],n=[],s={},o=new AbortController,a=null,d=null,l=null,g=null,v=null,w=null,Pe=!1,Fe=!1,Ve=!!at(r),Qe=!1,lt=null,ut=null,ct=null,ft=[],mt=null,yt=null,Ut=0,At=0,kt=null,Tt=null,Bt=0,Ct=0,Ot=!1,$t=!1,Gt=!1,Ht=null,Vt=null,Wt=null,jt=!1,Yt=()=>{const e=st();return{debug:e.debug,debugLevel:e.debugLevel,debugUuid:e.debugUuid,useOffscreen:e.useOffscreen,useWCS:e.useWCS,useMSE:e.useMSE,videoBuffer:e.videoBuffer,videoBufferDelay:e.videoBufferDelay,openWebglAlignment:e.openWebglAlignment,playType:e.playType,hasAudio:e.hasAudio,hasVideo:e.hasVideo,playbackRate:1,playbackForwardMaxRateDecodeIFrame:e.playbackForwardMaxRateDecodeIFrame,playbackIsCacheBeforeDecodeForFpsRender:e.playbackConfig.isCacheBeforeDecodeForFpsRender,sampleRate:0,networkDelay:e.networkDelay,visibility:!0,useSIMD:e.useSIMD,isRecording:!1,recordType:e.recordType,isNakedFlow:e.isNakedFlow,checkFirstIFrame:e.checkFirstIFrame,audioBufferSize:1024,isM7sCrypto:e.isM7sCrypto,m7sCryptoAudio:e.m7sCryptoAudio,cryptoKey:e.cryptoKey,cryptoIV:e.cryptoIV,isSm4Crypto:e.isSm4Crypto,sm4CryptoKey:e.sm4CryptoKey,isXorCrypto:e.isXorCrypto,isHls265:!1,isFlv:e.isFlv,isFmp4:e.isFmp4,isMpeg4:e.isMpeg4,isTs:e.isTs,isFmp4Private:e.isFmp4Private,isEmitSEI:e.isEmitSEI,isRecordTypeFlv:!1,isWasmMp4:!1,isChrome:!1,isDropSameTimestampGop:e.isDropSameTimestampGop,mseDecodeAudio:e.mseDecodeAudio,nakedFlowH265DemuxUseNew:e.nakedFlowH265DemuxUseNew,mseDecoderUseWorker:e.mseDecoderUseWorker,mseAutoCleanupSourceBuffer:e.mseAutoCleanupSourceBuffer,mseAutoCleanupMaxBackwardDuration:e.mseAutoCleanupMaxBackwardDuration,mseAutoCleanupMinBackwardDuration:e.mseAutoCleanupMinBackwardDuration,mseCorrectTimeDuration:e.mseCorrectTimeDuration}};"VideoEncoder"in self&&(s={hasInit:!1,isEmitInfo:!1,offscreenCanvas:null,offscreenCanvasCtx:null,decoder:new VideoDecoder({output:function(e){if(s.isEmitInfo||(Qt.debug.log("worker","Webcodecs Video Decoder initSize"),postMessage({cmd:S,w:e.codedWidth,h:e.codedHeight}),s.isEmitInfo=!0,s.offscreenCanvas=new OffscreenCanvas(e.codedWidth,e.codedHeight),s.offscreenCanvasCtx=s.offscreenCanvas.getContext("2d")),"function"==typeof e.createImageBitmap)e.createImageBitmap().then((t=>{s.offscreenCanvasCtx.drawImage(t,0,0,e.codedWidth,e.codedHeight);let r=s.offscreenCanvas.transferToImageBitmap();postMessage({cmd:x,buffer:r,delay:Qt.delay,ts:0},[r]),it(e)}));else{s.offscreenCanvasCtx.drawImage(e,0,0,e.codedWidth,e.codedHeight);let t=s.offscreenCanvas.transferToImageBitmap();postMessage({cmd:x,buffer:t,delay:Qt.delay,ts:0},[t]),it(e)}},error:function(e){Qt.debug.error("worker","VideoDecoder error",e)}}),decode:function(e,t,r){const i=e[0]>>4==1;if(s.hasInit){const r=new EncodedVideoChunk({data:e.slice(5),timestamp:t,type:i?Te:Be});s.decoder.decode(r)}else if(i&&0===e[1]){const t=15&e[0];postMessage({cmd:C,code:t});const r=new Uint8Array(e);postMessage({cmd:D,buffer:r,codecId:t},[r.buffer]);const i=function(e){let t=e.subarray(1,4),r="avc1.";for(let e=0;e<3;e++){let i=t[e].toString(16);i.length<2&&(i="0"+i),r+=i}return{codec:r,description:e}}(e.slice(5));s.decoder.configure(i),s.hasInit=!0}},reset(){s.hasInit=!1,s.isEmitInfo=!1,s.offscreenCanvas=null,s.offscreenCanvasCtx=null}});let qt=function(){if(jt=!0,Qt.fetchStatus!==Re||dt(Qt._opt.isChrome)){if(o)try{o.abort(),o=null}catch(e){Qt.debug.log("worker","abort catch",e)}}else o=null,Qt.debug.log("worker",`abort() and not abortController.abort() _status is ${Qt.fetchStatus} and _isChrome is ${Qt._opt.isChrome}`)},Kt={init(){Kt.lastBuf=null,Kt.vps=null,Kt.sps=null,Kt.pps=null,Kt.streamType=null,Kt.localDts=0,Kt.isSendSeqHeader=!1},destroy(){Kt.lastBuf=null,Kt.vps=null,Kt.sps=null,Kt.pps=null,Kt.streamType=null,Kt.localDts=0,Kt.isSendSeqHeader=!1},dispatch(e){const t=new Uint8Array(e);Kt.extractNALu$2(t)},getNaluDts(){let e=Kt.localDts;return Kt.localDts=Kt.localDts+40,e},getNaluAudioDts(){const e=Qt._opt.sampleRate,t=Qt._opt.audioBufferSize;return Kt.localDts+parseInt(t/e*1e3)},extractNALu(e){let t,r,i=0,n=e.byteLength,s=0,o=[];for(;i1)for(let e=0;e>1,r!==ke.vps&&r!==ke.sps&&r!==ke.pps||(t=xe.h265)),t}(e),Ht=Kt.streamType===xe.h265),Kt.streamType===xe.h264){const t=Kt.handleAddNaluStartCode(e),r=Kt.extractNALu(t);if(0===r.length)return void Qt.debug.warn("worker","handleVideoNalu","h264 naluList.length === 0");const i=[];if(r.forEach((e=>{const t=wt(e);t===Ae.pps||t===Ae.sps?Kt.handleVideoH264Nalu(e):St(t)&&i.push(e)})),1===i.length)Kt.handleVideoH264Nalu(i[0]);else{const e=function(e){if(0===e.length)return!1;const t=wt(e[0]);for(let r=1;r{Kt.handleVideoH264Nalu(e)}))}}else if(Kt.streamType===xe.h265)if(Qt._opt.nakedFlowH265DemuxUseNew){const t=Kt.handleAddNaluStartCode(e),r=Kt.extractNALu(t);if(0===r.length)return void Qt.debug.warn("worker","handleVideoNalu","h265 naluList.length === 0");const i=[];if(r.forEach((e=>{const t=Mt(e);t===ke.pps||t===ke.sps||t===ke.vps?Kt.handleVideoH265Nalu(e):zt(t)&&i.push(e)})),1===i.length)Kt.handleVideoH265Nalu(i[0]);else{const e=function(e){if(0===e.length)return!1;const t=Mt(e[0]);for(let r=1;r{Kt.handleVideoH265Nalu(e)}))}}else{Mt(e)===ke.pps?Kt.extractH265PPS(e):Kt.handleVideoH265Nalu(e)}},extractH264PPS(e){const t=Kt.handleAddNaluStartCode(e);Kt.extractNALu(t).forEach((e=>{Et(wt(e))?Kt.extractH264SEI(e):Kt.handleVideoH264Nalu(e)}))},extractH265PPS(e){const t=Kt.handleAddNaluStartCode(e);Kt.extractNALu(t).forEach((e=>{const t=Mt(e);t===ke.sei?Kt.extractH265SEI(e):Kt.handleVideoH265Nalu(e)}))},extractH264SEI(e){const t=Kt.handleAddNaluStartCode(e);Kt.extractNALu(t).forEach((e=>{Kt.handleVideoH264Nalu(e)}))},extractH265SEI(e){const t=Kt.handleAddNaluStartCode(e);Kt.extractNALu(t).forEach((e=>{Kt.handleVideoH265Nalu(e)}))},handleAddNaluStartCode(e){const t=[0,0,0,1],r=new Uint8Array(e.length+t.length);return r.set(t),r.set(e,t.length),r},handleVideoH264Nalu(e){const t=wt(e);switch(t){case Ae.sps:Kt.sps=e;break;case Ae.pps:Kt.pps=e}if(Kt.isSendSeqHeader){if(Kt.sps&&Kt.pps){const e=vt({sps:Kt.sps,pps:Kt.pps}),t=Kt.getNaluDts();Qt.decode(e,{type:Z,ts:t,isIFrame:!0,cts:0}),Kt.sps=null,Kt.pps=null}if(St(t)){const r=xt(t),i=Kt.getNaluDts(),n=function(e,t){let r=[];r[0]=t?23:39,r[1]=1,r[2]=0,r[3]=0,r[4]=0,r[5]=e.byteLength>>24&255,r[6]=e.byteLength>>16&255,r[7]=e.byteLength>>8&255,r[8]=255&e.byteLength;const i=new Uint8Array(r.length+e.byteLength);return i.set(r,0),i.set(e,r.length),i}(e,r);Kt.doDecode(n,{type:Z,ts:i,isIFrame:r,cts:0})}else Qt.debug.warn("work",`handleVideoH264Nalu Avc Seq Head is ${t}`)}else if(Kt.sps&&Kt.pps){Kt.isSendSeqHeader=!0;const e=vt({sps:Kt.sps,pps:Kt.pps});Qt.decode(e,{type:Z,ts:0,isIFrame:!0,cts:0}),Kt.sps=null,Kt.pps=null}},handleVideoH264NaluList(e,t,r){if(Kt.isSendSeqHeader){const i=Kt.getNaluDts(),n=bt(e.reduce(((e,t)=>{const r=Pt(e),i=Pt(t),n=new Uint8Array(r.byteLength+i.byteLength);return n.set(r,0),n.set(i,r.byteLength),n})),t);Kt.doDecode(n,{type:Z,ts:i,isIFrame:t,cts:0}),Qt.debug.log("worker",`handleVideoH264NaluList list size is ${e.length} package length is ${n.byteLength} isIFrame is ${t},nalu type is ${r}, dts is ${i}`)}else Qt.debug.warn("worker","handleVideoH264NaluList isSendSeqHeader is false")},handleVideoH265Nalu(e){const t=Mt(e);switch(t){case ke.vps:Kt.vps=e;break;case ke.sps:Kt.sps=e;break;case ke.pps:Kt.pps=e}if(Kt.isSendSeqHeader){if(Kt.vps&&Kt.sps&&Kt.pps){const e=Lt({vps:Kt.vps,sps:Kt.sps,pps:Kt.pps}),t=Kt.getNaluDts();Qt.decode(e,{type:Z,ts:t,isIFrame:!0,cts:0}),Kt.vps=null,Kt.sps=null,Kt.pps=null}if(zt(t)){const r=Nt(t),i=Kt.getNaluDts(),n=function(e,t){let r=[];r[0]=t?28:44,r[1]=1,r[2]=0,r[3]=0,r[4]=0,r[5]=e.byteLength>>24&255,r[6]=e.byteLength>>16&255,r[7]=e.byteLength>>8&255,r[8]=255&e.byteLength;const i=new Uint8Array(r.length+e.byteLength);return i.set(r,0),i.set(e,r.length),i}(e,r);Kt.doDecode(n,{type:Z,ts:i,isIFrame:r,cts:0})}else Qt.debug.warn("work",`handleVideoH265Nalu HevcSeqHead is ${t}`)}else if(Kt.vps&&Kt.sps&&Kt.pps){Kt.isSendSeqHeader=!0;const e=Lt({vps:Kt.vps,sps:Kt.sps,pps:Kt.pps});Qt.decode(e,{type:Z,ts:0,isIFrame:!0,cts:0}),Kt.vps=null,Kt.sps=null,Kt.pps=null}},handleVideoH265NaluList(e,t,r){if(Kt.isSendSeqHeader){const i=Kt.getNaluDts(),n=Rt(e.reduce(((e,t)=>{const r=Pt(e),i=Pt(t),n=new Uint8Array(r.byteLength+i.byteLength);return n.set(r,0),n.set(i,r.byteLength),n})),t);Kt.doDecode(n,{type:Z,ts:i,isIFrame:t,cts:0}),Qt.debug.log("worker",`handleVideoH265NaluList list size is ${e.length} package length is ${n.byteLength} isIFrame is ${t},nalu type is ${r}, dts is ${i}`)}else Qt.debug.warn("worker","handleVideoH265NaluList isSendSeqHeader is false")},doDecode(e,t){Qt.calcNetworkDelay(t.ts),t.isIFrame&&Qt.calcIframeIntervalTimestamp(t.ts),postMessage({cmd:L,type:he,value:e.byteLength}),postMessage({cmd:L,type:pe,value:t.ts}),Qt.decode(e,t)}},Xt={LOG_NAME:"worker fmp4Demuxer",mp4Box:vr.createFile(),offset:0,videoTrackId:null,audioTrackId:null,isHevc:!1,listenMp4Box(){Xt.mp4Box.onReady=Xt.onReady,Xt.mp4Box.onError=Xt.onError,Xt.mp4Box.onSamples=Xt.onSamples},initTransportDescarmber(){Xt.transportDescarmber=new Er},_getSeqHeader(e){const t=Xt.mp4Box.getTrackById(e.id);for(const e of t.mdia.minf.stbl.stsd.entries)if(e.avcC||e.hvcC){const t=new vr.DataStream(void 0,0,vr.DataStream.BIG_ENDIAN);let r=[];e.avcC?(e.avcC.write(t),r=[23,0,0,0,0]):(Xt.isHevc=!0,Ht=!0,e.hvcC.write(t),r=[28,0,0,0,0]);const i=new Uint8Array(t.buffer,8),n=new Uint8Array(r.length+i.length);return n.set(r,0),n.set(i,r.length),n}return null},onReady(e){Qt.debug.log(Xt.LOG_NAME,"onReady()",e);const t=e.videoTracks[0],r=e.audioTracks[0];if(t){Xt.videoTrackId=t.id;const e=Xt._getSeqHeader(t);e&&(Qt.debug.log(Xt.LOG_NAME,"seqHeader"),Qt.decodeVideo(e,0,!0,0)),Xt.mp4Box.setExtractionOptions(t.id)}if(r&&Qt._opt.hasAudio){Xt.audioTrackId=r.id;const e=r.audio||{},t=Ke.indexOf(e.sample_rate),i=r.codec.replace("mp4a.40.","");Xt.mp4Box.setExtractionOptions(r.id);const n=We({profile:parseInt(i,10),sampleRate:t,channel:e.channel_count});Qt.debug.log(Xt.LOG_NAME,"aacADTSHeader"),Qt.decodeAudio(n,0)}Xt.mp4Box.start()},onError(e){Qt.debug.error(Xt.LOG_NAME,"mp4Box onError",e)},onSamples(e,t,r){if(e===Xt.videoTrackId)for(const e of r){const t=e.data,r=e.is_sync,i=1e3*e.cts/e.timescale;e.duration,e.timescale,r&&Qt.calcIframeIntervalTimestamp(i);let n=null;n=Xt.isHevc?Rt(t,r):bt(t,r),postMessage({cmd:L,type:he,value:n.byteLength}),postMessage({cmd:L,type:pe,value:i}),Qt.decode(n,{type:Z,ts:i,isIFrame:r,cts:0})}else if(e===Xt.audioTrackId){if(Qt._opt.hasAudio)for(const e of r){const t=e.data,r=1e3*e.cts/e.timescale;e.duration,e.timescale;const i=new Uint8Array(t.byteLength+2);i.set([175,1],0),i.set(t,2),postMessage({cmd:L,type:fe,value:i.byteLength}),Qt.decode(i,{type:X,ts:r,isIFrame:!1,cts:0})}}else Qt.debug.warn(Xt.LOG_NAME,"onSamples() trackId error",e)},dispatch(e){let t=e;"string"!=typeof e?"object"==typeof e?(Xt.transportDescarmber&&(t=Xt.transportDescarmber.transport(t)),t.buffer.fileStart=Xt.offset,Xt.offset+=t.byteLength,Xt.mp4Box.appendBuffer(t.buffer)):Qt.debug.warn(Xt.LOG_NAME,"dispatch()","data is not object",e):Qt.debug.warn(Xt.LOG_NAME,"dispatch()","data is string",e)},destroy(){Xt.mp4Box&&(Xt.mp4Box.flush(),Xt.mp4Box=null),Xt.transportDescarmber&&(Xt.transportDescarmber.destroy(),Xt.transportDescarmber=null),Xt.offset=0,Xt.videoTrackId=null,Xt.audioTrackId=null,Xt.isHevc=!1}},Zt={LOG_NAME:"worker mpeg4Demuxer",lastBuffer:new Uint8Array(0),parsedOffset:0,firstStartCodeOffset:0,secondStartCodeOffset:0,state:"init",hasInitVideoCodec:!1,localDts:0,dispatch(e){const t=new Uint8Array(e);Zt.extractNALu(t)},destroy(){Zt.lastBuffer=new Uint8Array(0),Zt.parsedOffset=0,Zt.firstStartCodeOffset=0,Zt.secondStartCodeOffset=0,Zt.state="init",Zt.hasInitVideoCodec=!1,Zt.localDts=0},extractNALu(e){if(!e||e.byteLength<1)return void Qt.debug.warn(Zt.LOG_NAME,"extractNALu() buffer error",e);const t=new Uint8Array(Zt.lastBuffer.length+e.length);for(t.set(Zt.lastBuffer,0),t.set(new Uint8Array(e),Zt.lastBuffer.length),Zt.lastBuffer=t;;){if("init"===Zt.state){let e=!1;for(;Zt.lastBuffer.length-Zt.parsedOffset>=4;)if(0===Zt.lastBuffer[Zt.parsedOffset])if(0===Zt.lastBuffer[Zt.parsedOffset+1])if(1===Zt.lastBuffer[Zt.parsedOffset+2]){if(182===Zt.lastBuffer[Zt.parsedOffset+3]){Zt.state="findFirstStartCode",Zt.firstStartCodeOffset=Zt.parsedOffset,Zt.parsedOffset+=4,e=!0;break}Zt.parsedOffset++}else Zt.parsedOffset++;else Zt.parsedOffset++;else Zt.parsedOffset++;if(e)continue;break}if("findFirstStartCode"===Zt.state){let e=!1;for(;Zt.lastBuffer.length-Zt.parsedOffset>=4;)if(0===Zt.lastBuffer[Zt.parsedOffset])if(0===Zt.lastBuffer[Zt.parsedOffset+1])if(1===Zt.lastBuffer[Zt.parsedOffset+2]){if(182===Zt.lastBuffer[Zt.parsedOffset+3]){Zt.state="findSecondStartCode",Zt.secondStartCodeOffset=Zt.parsedOffset,Zt.parsedOffset+=4,e=!0;break}Zt.parsedOffset++}else Zt.parsedOffset++;else Zt.parsedOffset++;else Zt.parsedOffset++;if(e)continue;break}if("findSecondStartCode"===Zt.state){if(!(Zt.lastBuffer.length-Zt.parsedOffset>0))break;{let e,t,r=192&Zt.lastBuffer[Zt.parsedOffset];e=0==r?Zt.secondStartCodeOffset-14:Zt.secondStartCodeOffset;let i=0==(192&Zt.lastBuffer[Zt.firstStartCodeOffset+4]);if(i){if(Zt.firstStartCodeOffset-14<0)return void Qt.debug.warn(Zt.LOG_NAME,"firstStartCodeOffset -14 is",Zt.firstStartCodeOffset-14);Zt.hasInitVideoCodec||(Zt.hasInitVideoCodec=!0,Qt.debug.log(Zt.LOG_NAME,"setCodec"),tr.setCodec(Se,"")),t=Zt.lastBuffer.subarray(Zt.firstStartCodeOffset-14,e)}else t=Zt.lastBuffer.subarray(Zt.firstStartCodeOffset,e);let n=Zt.getNaluDts();Zt.hasInitVideoCodec?(postMessage({cmd:L,type:he,value:t.byteLength}),postMessage({cmd:L,type:pe,value:n}),tr.decode(t,i?1:0,n)):Qt.debug.warn(Zt.LOG_NAME,"has not init video codec"),Zt.lastBuffer=Zt.lastBuffer.subarray(e),Zt.firstStartCodeOffset=0==r?14:0,Zt.parsedOffset=Zt.firstStartCodeOffset+4,Zt.state="findFirstStartCode"}}}},getNaluDts(){let e=Zt.localDts;return Zt.localDts=Zt.localDts+40,e}},Jt={isFirstDispatch:!0,_pmtId:-1,_remainingPacketData:null,_videoPesData:[],_audioPesData:[],_gopId:0,_videoPid:-1,_audioPid:-1,_codecType:we,_audioCodecType:Ue.AAC,_vps:null,_sps:null,_pps:null,TAG_NAME:"worker TsDemuxer",videoTrack:{samples:[]},audioTrack:{samples:[]},_baseDts:-1,_audioNextPts:void 0,_videoNextDts:void 0,_audioTimestampBreak:!1,_videoTimestampBreak:!1,_lastAudioExceptionGapDot:0,_lastAudioExceptionOverlapDot:0,_lastAudioExceptionLargeGapDot:0,_isSendAACSeqHeader:!1,init(){},dispatch(e){const t=new Uint8Array(e);Jt.demuxAndFix(t,Jt.isFirstDispatch,!0,0),Jt.isFirstDispatch&&(Jt.isFirstDispatch=!1)},_probe:e=>!!e.length&&(71===e[0]&&71===e[188]&&71===e[376]),_parsePES(e){const t=e[8];if(null==t||e.lengthe.length-6)return;let i,n;const s=e[7];return 192&s&&(i=536870912*(14&e[9])+4194304*(255&e[10])+16384*(254&e[11])+128*(255&e[12])+(254&e[13])/2,64&s?(n=536870912*(14&e[14])+4194304*(255&e[15])+16384*(254&e[16])+128*(255&e[17])+(254&e[18])/2,i-n>54e5&&(i=n)):n=i),{data:e.subarray(9+t),pts:i,dts:n,originalPts:i,originalDts:n}},demuxAndFix(e,t,r,i){Jt._demux(e,t,r),Jt._fix(i,t,r)},_initVideoTrack:()=>({samples:[]}),_initAudioTrack:()=>({samples:[]}),_demux(e,t=!1,r=!0){t&&(Jt._pmtId=-1,Jt.videoTrack=Jt._initVideoTrack(),Jt.audioTrack=Jt._initAudioTrack()),!r||t?(Jt._remainingPacketData=null,Jt._videoPesData=[],Jt._audioPesData=[]):(Jt.videoTrack.samples=[],Jt.audioTrack.samples=[],Jt._remainingPacketData&&(e=Nr(Jt._remainingPacketData,e),Jt._remainingPacketData=null));let i=e.length;const n=i%188;n&&(Jt._remainingPacketData=e.subarray(i-n),i-=n);for(let t=0;t>4>1){if(n=t+5+e[t+4],n===t+188)continue}else n=t+4;switch(i){case 0:r&&(n+=e[n]+1),Jt._pmtId=(31&e[n+10])<<8|e[n+11];break;case Jt._pmtId:{r&&(n+=e[n]+1);const t=n+3+((15&e[n+1])<<8|e[n+2])-4;for(n+=12+((15&e[n+10])<<8|e[n+11]);n=t)return[];const n=[];for(;i=r)return;const n=i,s=[],o=(60&e[i+2])>>>2,a=qe[o];if(!a)throw new Error(`Invalid sampling index: ${o}`);const d=1+((192&e[i+2])>>>6),l=(1&e[i+2])<<2|(192&e[i+3])>>>6;let u,c,f=0;const h=Ze(a);for(;i+7>5,r-i=r?void 0:e.subarray(i),frames:s,samplingFrequencyIndex:o,sampleRate:a,objectType:d,channelCount:l,originCodec:`mp4a.40.${d}`}}(e.data,e.originalPts);if(t){if(Jt.audioTrack.codec=t.codec,Jt.audioTrack.sampleRate=t.sampleRate,Jt.audioTrack.channelCount=t.channelCount,!Jt._isSendAACSeqHeader){const e=We({profile:t.objectType,sampleRate:t.samplingFrequencyIndex,channel:t.channelCount});Jt._isSendAACSeqHeader=!0,Qt.debug.log(Jt.TAG_NAME,"aac seq header",`profile: ${t.objectType}, sampleRate:${t.sampleRate},sampleRateIndex: ${t.samplingFrequencyIndex}, channel: ${t.channelCount}`),Qt.decodeAudio(e,0)}if(Jt._isSendAACSeqHeader){const e=[];t.frames.forEach((t=>{const r=t.pts,i=new Uint8Array(t.data.length+2);i.set([175,1],0),i.set(t.data,2);const n={type:X,pts:r,dts:r,payload:i};e.push(n)})),Jt.audioTrack.samples=Jt.audioTrack.samples.concat(e)}else Qt.debug.warn(Jt.TAG_NAME,"aac seq header not send")}else Qt.debug.warn(Jt.TAG_NAME,"aac parseADTS error")}Jt._audioPesData=[]}}else Qt.debug.warn(Jt.TAG_NAME,"Cannot parse audio pes",Jt._audioPesData)},_fix(e=0,t=!1,r=!0){e=Math.round(9e4*e);const i=Jt.videoTrack,n=Jt.audioTrack,s=i.samples,o=n.samples;if(!s.length&&!o.length)return;const a=s[0],d=o[0];let l=0;if(s.length&&o.length&&(l=a.dts-d.pts),Jt._baseDtsInited||Jt._calculateBaseDts(),t&&(Jt._calculateBaseDts(),Jt._baseDts-=e),!r){Jt._videoNextDts=l>0?e+l:e,Jt._audioNextPts=l>0?e:e-l;const t=a?a.dts-Jt._baseDts-Jt._videoNextDts:0,r=d?d.pts-Jt._baseDts-Jt._audioNextPts:0;Math.abs(t||r)>MAX_VIDEO_FRAME_DURATION&&(Jt._calculateBaseDts(Jt.audioTrack,Jt.videoTrack),Jt._baseDts-=e)}Jt._resetBaseDtsWhenStreamBreaked(),Jt._fixAudio(n),Jt._fixVideo(i);let u=i.samples.concat(n.samples);u=u.map((e=>(e.dts=Math.round(e.dts/90),e.pts=Math.round(e.pts/90),e.cts=e.pts-e.dts,e))).sort(((e,t)=>e.dts-t.dts)),u.forEach((e=>{const t=new Uint8Array(e.payload);delete e.payload,e.type===Z?Jt._doDecodeVideo({...e,payload:t}):e.type===X&&Jt._doDecodeAudio({...e,payload:t})}))},_calculateBaseDts(){const e=Jt.audioTrack,t=Jt.videoTrack,r=e.samples,i=t.samples;if(!r.length&&!i.length)return!1;let n=1/0,s=1/0;r.length&&(e.baseDts=n=r[0].pts),i.length&&(t.baseDts=s=i[0].dts),Jt._baseDts=Math.min(n,s);const o=s-n;return Number.isFinite(o)&&Math.abs(o)>45e3&&Qt.debug.warn(Jt.TAG_NAME,`large av first frame gap,\n video pts: ${s},\n audio pts: ${n},\n base dts: ${Jt._baseDts},\n detect is: ${o}`),Jt._baseDtsInited=!0,!0},_resetBaseDtsWhenStreamBreaked(){if(Jt._baseDtsInited&&Jt._videoTimestampBreak&&Jt._audioTimestampBreak){if(!Jt._calculateBaseDts(Jt.audioTrack,Jt.videoTrack))return;Jt._baseDts-=Math.min(Jt._audioNextPts,Jt._videoNextDts),Jt._audioLastSample=null,Jt._videoLastSample=null,Jt._videoTimestampBreak=!1,Jt._audioTimestampBreak=!1}},_createVideoSample(e,t,r){if(!e.length)return;const i=Jt._codecType===Ee,n={isIFrame:!1,type:Z,isHevc:i,vps:null,sps:null,pps:null,pts:t,dts:r,payload:null};e.forEach((e=>{const t=i?e[0]>>>1&63:31&e[0];switch(t){case 5:case 16:case 17:case 18:case 19:case 20:case 21:case 22:case 23:if(!i&&5!==t||i&&5===t)break;n.isIFrame=!0,Jt._gopId++;break;case 6:case 39:case 40:if(!i&&6!==t||i&&6===t)break;return void function(e,t){const r=e.length;let i=t?2:1,n=0,s=0,o="";for(;255===e[i];)n+=255,i++;for(n+=e[i++];255===e[i];)s+=255,i++;if(s+=e[i++],5===n&&r>i+16)for(let t=0;t<16;t++)o+=e[i].toString(16),i++;e.subarray(i)}(function(e){const t=e.byteLength,r=[];let i=1;for(;i>>8,s[7]=255&o;let a=8;s.set(e,8),a+=o,s[a]=1;let d=t.byteLength;s[a+1]=d>>>8,s[a+2]=255&d,s.set(t,a+3),a+=3+d,i&&(s[a]=252|n.chroma_format_idc,s[a+1]=248|n.bit_depth_luma-8,s[a+2]=248|n.bit_depth_chroma-8,s[a+3]=0,a+=4);const l=[23,0,0,0,0],u=new Uint8Array(l.length+s.byteLength);return u.set(l,0),u.set(s,l.length),u}({sps:n.sps,pps:n.pps})),s&&(Qt.debug.log(Jt.TAG_NAME,"_createVideoSample","seqHeader"),Qt.decodeVideo(s,Z,Math.round(n.pts/90),!0,0)),n.isIFrame&&Qt.calcIframeIntervalTimestamp(Math.round(n.dts/90)),Jt.videoTrack.samples=Jt.videoTrack.samples.concat(n)},_fixAudio(e){const t=e.samples;t.length&&(t.forEach((e=>{e.pts-=Jt._baseDts,e.dts=e.pts})),Jt._doFixAudioInternal(e,t,9e4))},_fixVideo(e){const t=e.samples;if(!t.length)return;if(t.forEach((e=>{e.dts-=Jt._baseDts,e.pts-=Jt._baseDts})),void 0===Jt._videoNextDts){const e=t[0];Jt._videoNextDts=e.dts}const r=t.length;let i=0;const n=t[0],s=t[1],o=Jt._videoNextDts-n.dts;let a;Math.abs(o)>45e3&&(n.dts+=o,n.pts+=o,Qt.debug.warn(Jt.TAG_NAME,`large video gap between chunk,\n next dts is ${Jt._videoNextDts},\n first dts is ${n.dts},\n next dts is ${s.dts},\n duration is ${o}`),s&&Math.abs(s.dts-n.dts)>9e4&&(Jt._videoTimestampBreak=!0,t.forEach(((e,t)=>{0!==t&&(e.dts+=o,e.pts+=o)}))));const d=e.samples[0],l=e.samples[r-1];a=1===r?9e3:Math.floor((l.dts-d.dts)/(r-1));for(let n=0;n9e4||i<0){Jt._videoTimestampBreak=!0,i=Jt._audioTimestampBreak?a:Math.max(i,2700);const r=Jt._audioNextPts||0;o&&o.dts>r&&(i=a),Qt.debug.warn(Jt.TAG_NAME,`large video gap between frames,\n time is ${s/e.timescale},\n dts is ${s},\n origin dts is ${t[n].originalDts},\n next dts is ${Jt._videoNextDts},\n sample Duration is ${i} ,\n ref Sample DurationInt is ${a}`)}t[n].duration=i,Jt._videoNextDts+=i}},_doFixAudioInternal(e,t,r){e.sampleDuration||(e.sampleDuration=Ze(e.timescale,r));const i=e.sampleDuration;if(void 0===Jt._audioNextPts){const e=t[0];Jt._audioNextPts=e.pts}for(let r=0;r=3*i&&o<=Ge&&!tt()){Xe(e.codec,e.channelCount)||t[0].data.subarray();const a=Math.floor(o/i);Math.abs(s.pts-Jt._lastAudioExceptionGapDot)>AUDIO_EXCETION_LOG_EMIT_DURATION&&(Jt._lastAudioExceptionGapDot=s.pts),Qt.debug.warn(Jt.TAG_NAME,`audio gap detected,\n pts is ${t.pts},\n originPts is ${t.originalPts},\n count is ${a},\n nextPts is ${n},\n ref sample duration is ${i}`);for(let e=0;e=-9e4?(Math.abs(s.pts-Jt._lastAudioExceptionOverlapDot)>He&&(Jt._lastAudioExceptionOverlapDot=s.pts,Qt.debug.warn(Jt.TAG_NAME,`audio overlap detected,\n pts is ${s.pts},\n originPts is ${s.originalPts},\n nextPts is ${n},\n ref sample duration is ${i}`)),t.splice(r,1),r--):(Math.abs(o)>=Ge&&(Jt._audioTimestampBreak=!0,Math.abs(s.pts-Jt._lastAudioExceptionLargeGapDot)>He&&(Jt._lastAudioExceptionLargeGapDot=s.pts,Qt.debug.warn(Jt.TAG_NAME,`large audio gap detected,\n time is ${s.pts/1e3}\n pts is ${s.pts},\n originPts is ${s.originalPts},\n nextPts is ${n},\n sample duration is ${o}\n ref sample duration is ${i}`))),s.dts=s.pts=n,Jt._audioNextPts+=i)}},_doDecodeVideo(e){const t=new Uint8Array(e.payload);let r=null;r=e.isHevc?Rt(t,e.isIFrame):bt(t,e.isIFrame),postMessage({cmd:L,type:he,value:r.byteLength}),postMessage({cmd:L,type:pe,value:e.dts});const i=e.pts-e.dts;let n=Qt.cryptoPayload(r,e.isIFrame);Qt.decode(n,{type:Z,ts:e.dts,isIFrame:e.isIFrame,cts:i})},_doDecodeAudio(){const e=new Uint8Array(sample.payload);postMessage({cmd:L,type:fe,value:e.byteLength});let t=e;at(Qt._opt.m7sCryptoAudio)&&(t=Qt.cryptoPayloadAudio(e)),Qt.decode(t,{type:X,ts:sample.dts,isIFrame:!1,cts:0})},destroy(){Jt.videoTrack=null,Jt.audioTrack=null,Jt.tempSampleListInfo={},Jt._baseDts=-1,Jt._baseDtsInited=!1,Jt._basefps=50,Jt._hasCalcFps=!1,Jt._audioNextPts=void 0,Jt._videoNextDts=void 0,Jt._audioTimestampBreak=!1,Jt._videoTimestampBreak=!1,Jt._lastAudioExceptionGapDot=0,Jt._lastAudioExceptionOverlapDot=0,Jt._lastAudioExceptionLargeGapDot=0,Jt._isForHls=!0,Jt._isSendAACSeqHeader=!1,Qt.debug.log(Jt.TAG_NAME,"destroy")}},Qt={isPlayer:!0,isPlayback:!1,dropping:!1,isPushDropping:!1,isWorkerFetch:!1,isDestroyed:!1,fetchStatus:Le,_opt:Yt(),mp3Demuxer:null,delay:-1,pushLatestDelay:-1,firstTimestamp:null,startTimestamp:null,preDelayTimestamp:null,stopId:null,streamFps:null,streamAudioFps:null,streamVideoFps:null,writableStream:null,networkDelay:0,webglObj:null,startStreamRateAndStatsInterval:function(){Qt.stopStreamRateAndStatsInterval(),l=setInterval((()=>{d&&d(0);const e=JSON.stringify({demuxBufferDelay:Qt.getVideoBufferLength(),audioDemuxBufferDelay:Qt.getAudioBufferLength(),flvBufferByteLength:Qt.getFlvBufferLength(),netBuf:Qt.networkDelay||0,pushLatestDelay:Qt.pushLatestDelay||0,latestDelay:Qt.delay,isStreamTsMoreThanLocal:Qe});postMessage({cmd:L,type:_e,value:e})}),1e3)},stopStreamRateAndStatsInterval:function(){l&&(clearInterval(l),l=null)},useOffscreen:function(){return Qt._opt.useOffscreen&&"undefined"!=typeof OffscreenCanvas},getDelay:function(e,t){if(!e||Qt._opt.hasVideo&&!Ve)return-1;if(t===X)return Qt.delay;if(Qt.preDelayTimestamp&&Qt.preDelayTimestamp>e)return Qt.preDelayTimestamp-e>1e3&&Qt.debug.warn("worker",`getDelay() and preDelayTimestamp is ${Qt.preDelayTimestamp} > timestamp is ${e} more than ${Qt.preDelayTimestamp-e}ms and return ${Qt.delay}`),Qt.preDelayTimestamp=e,Qt.delay;if(Qt.firstTimestamp){if(e){const t=Date.now()-Qt.startTimestamp,r=e-Qt.firstTimestamp;t>=r?(Qe=!1,Qt.delay=t-r):(Qe=!0,Qt.delay=r-t)}}else Qt.firstTimestamp=e,Qt.startTimestamp=Date.now(),Qt.delay=-1;return Qt.preDelayTimestamp=e,Qt.delay},getDelayNotUpdateDelay:function(e,t){if(!e||Qt._opt.hasVideo&&!Ve)return-1;if(t===X)return Qt.pushLatestDelay;if(Qt.preDelayTimestamp&&Qt.preDelayTimestamp-e>1e3)return Qt.debug.warn("worker",`getDelayNotUpdateDelay() and preDelayTimestamp is ${Qt.preDelayTimestamp} > timestamp is ${e} more than ${Qt.preDelayTimestamp-e}ms and return -1`),-1;if(Qt.firstTimestamp){let t=-1;if(e){const r=Date.now()-Qt.startTimestamp,i=e-Qt.firstTimestamp;r>=i?(Qe=!1,t=r-i):(Qe=!0,t=i-r)}return t}return-1},resetDelay:function(){Qt.firstTimestamp=null,Qt.startTimestamp=null,Qt.delay=-1,Qt.dropping=!1},resetAllDelay:function(){Qt.resetDelay(),Qt.preDelayTimestamp=null},doDecode:function(e){Qt._opt.isEmitSEI&&e.type===Z&&Qt.isWorkerFetch&&Qt.findSei(e.payload,e.ts),Qt._opt.useWCS&&Qt.useOffscreen()&&e.type===Z&&s.decode?s.decode(e.payload,e.ts,e.cts):e.decoder.decode(e.payload,e.ts,e.isIFrame,e.cts)},decodeNext(e){if(0===i.length)return;const t=e.ts,n=i[0],s=e.type===Z&&ot(e.payload);if(dt(r))s&&(Qt.debug.log("worker",`decode data type is ${e.type} and\n ts is ${t} next data type is ${n.type} ts is ${n.ts}\n isVideoSqeHeader is ${s}`),i.shift(),Qt.doDecode(n));else{const r=n.ts-t,o=n.type===X&&e.type===Z;(r<=20||o||s)&&(Qt.debug.log("worker",`decode data type is ${e.type} and\n ts is ${t} next data type is ${n.type} ts is ${n.ts}\n diff is ${r} and isVideoAndNextAudio is ${o} and isVideoSqeHeader is ${s}`),i.shift(),Qt.doDecode(n))}},init:function(){Qt.debug.log("worker","init and opt is",JSON.stringify(Qt._opt));const e=Qt._opt.playType===m,t=Qt._opt.playType===_;if(Kt.init(),Qt.isPlayer=e,Qt.isPlayback=t,Qt.isPlaybackCacheBeforeDecodeForFpsRender())Qt.debug.log("worker","playback and playbackIsCacheBeforeDecodeForFpsRender is true");else{Qt.debug.log("worker","setInterval()");const t=Qt._opt.videoBuffer+Qt._opt.videoBufferDelay,r=()=>{let r=null;if(i.length){if(Qt.isPushDropping)return void Qt.debug.warn("worker",`loop() isPushDropping is true and bufferList length is ${i.length}`);if(Qt.dropping){for(r=i.shift(),Qt.debug.warn("worker",`loop() dropBuffer is dropping and isIFrame ${r.isIFrame} and delay is ${Qt.delay} and bufferlist is ${i.length}`);!r.isIFrame&&i.length;)r=i.shift();const e=Qt.getDelayNotUpdateDelay(r.ts,r.type);r.isIFrame&&e<=Qt.getNotDroppingDelayTs()&&(Qt.debug.log("worker","loop() is dropping = false, is iFrame"),Qt.dropping=!1,Qt.doDecode(r),Qt.decodeNext(r))}else if(Qt.isPlayback||Qt.isPlayUseMSE()||0===Qt._opt.videoBuffer)for(;i.length;)r=i.shift(),Qt.doDecode(r);else if(r=i[0],-1===Qt.getDelay(r.ts,r.type))Qt.debug.log("worker","loop() common dumex delay is -1 ,data.ts is",r.ts),i.shift(),Qt.doDecode(r),Qt.decodeNext(r);else if(Qt.delay>t&&e)Qt.hasIframeInBufferList()?(Qt.debug.log("worker",`delay is ${Qt.delay} > maxDelay ${t}, set dropping is true`),Qt.resetAllDelay(),Qt.dropping=!0,postMessage({cmd:M})):(i.shift(),Qt.doDecode(r),Qt.decodeNext(r));else for(;i.length;){if(r=i[0],!(Qt.getDelay(r.ts,r.type)>Qt._opt.videoBuffer)){Qt.delay<0&&Qt.debug.warn("worker",`loop() do not decode and delay is ${Qt.delay}, bufferList is ${i.length}`);break}i.shift(),Qt.doDecode(r)}}else-1!==Qt.delay&&Qt.debug.log("worker","loop() bufferList is empty and reset delay"),Qt.resetAllDelay()};Qt.stopId=setInterval((()=>{let e=(new Date).getTime();lt||(lt=e);const t=e-lt;t>100&&Qt.debug.warn("worker",`loop demux diff time is ${t}`),r(),lt=(new Date).getTime()}),20)}dt(Qt._opt.checkFirstIFrame)&&(Ve=!0)},playbackCacheLoop:function(){Qt.stopId&&(clearInterval(Qt.stopId),Qt.stopId=null);const e=()=>{let e=null;i.length&&(e=i.shift(),Qt.doDecode(e))};e();const t=Math.ceil(1e3/(Qt.streamFps*Qt._opt.playbackRate));Qt.debug.log("worker",`playbackCacheLoop fragDuration is ${t}, streamFps is ${Qt.streamFps}, streamAudioFps is ${Qt.streamAudioFps} ,streamVideoFps is ${Qt.streamVideoFps} playbackRate is ${Qt._opt.playbackRate}`),Qt.stopId=setInterval(e,t)},close:function(){if(Qt.debug.log("worker","close"),Qt.isDestroyed=!0,qt(),!a||1!==a.readyState&&2!==a.readyState?a&&Qt.debug.log("worker",`close() and socket.readyState is ${a.readyState}`):(jt=!0,a.close(1e3,"Client disconnecting")),a=null,Qt.stopStreamRateAndStatsInterval(),Qt.stopId&&(clearInterval(Qt.stopId),Qt.stopId=null),Qt.mp3Demuxer&&(Qt.mp3Demuxer.destroy(),Qt.mp3Demuxer=null),Qt.writableStream&&dt(Qt.writableStream.locked)&&Qt.writableStream.close().catch((e=>{Qt.debug.log("worker","close() and writableStream.close() error",e)})),Qt.writableStream=null,er)try{er.clear&&er.clear(),er=null}catch(e){Qt.debug.warn("worker","close() and audioDecoder.clear error",e)}if(tr)try{tr.clear&&tr.clear(),tr=null}catch(e){Qt.debug.warn("worker","close() and videoDecoder.clear error",e)}d=null,lt=null,Qe=!1,s&&(s.reset&&s.reset(),s=null),Qt.firstTimestamp=null,Qt.startTimestamp=null,Qt.networkDelay=0,Qt.streamFps=null,Qt.streamAudioFps=null,Qt.streamVideoFps=null,Qt.delay=-1,Qt.pushLatestDelay=-1,Qt.preDelayTimestamp=null,Qt.dropping=!1,Qt.isPushDropping=!1,Qt.isPlayer=!0,Qt.isPlayback=!1,Qt.isWorkerFetch=!1,Qt._opt=Yt(),Qt.webglObj&&(Qt.webglObj.destroy(),Qt.offscreenCanvas.removeEventListener("webglcontextlost",Qt.onOffscreenCanvasWebglContextLost),Qt.offscreenCanvas.removeEventListener("webglcontextrestored",Qt.onOffscreenCanvasWebglContextRestored),Qt.offscreenCanvas=null,Qt.offscreenCanvasGL=null,Qt.offscreenCanvasCtx=null),i=[],n=[],g=null,v=null,w=null,Pe=!1,Fe=!1,Ve=!1,Ot=!1,$t=!1,Gt=!1,Ht=null,Vt=null,ft=[],Ut=0,At=0,ut=null,ct=null,kt=null,Tt=null,Wt=null,Bt=0,Ct=0,mt=null,yt=null,Qt.fetchStatus=Le,Kt.destroy(),Xt.destroy(),Zt.destroy(),Jt.destroy(),postMessage({cmd:G})},pushBuffer:function(e,t){if(t.type===X&&je(e)){if(Qt.debug.log("worker",`pushBuffer audio ts is ${t.ts}, isAacCodecPacket is true`),Qt._opt.isRecordTypeFlv){const t=new Uint8Array(e);postMessage({cmd:j,buffer:t},[t.buffer])}Qt.decodeAudio(e,t.ts)}else if(t.type===Z&&t.isIFrame&&ot(e)){if(Qt.debug.log("worker",`pushBuffer video ts is ${t.ts}, isVideoSequenceHeader is true`),Qt._opt.isRecordTypeFlv){const t=new Uint8Array(e);postMessage({cmd:Y,buffer:t},[t.buffer])}Qt.decodeVideo(e,t.ts,t.isIFrame,t.cts)}else{if(Qt._opt.isRecording)if(Qt._opt.isRecordTypeFlv){const r=new Uint8Array(e);postMessage({cmd:q,type:t.type,buffer:r,ts:t.ts},[r.buffer])}else if(Qt._opt.recordType===y)if(t.type===Z){const r=new Uint8Array(e).slice(5);postMessage({cmd:P,buffer:r,isIFrame:t.isIFrame,ts:t.ts,cts:t.cts},[r.buffer])}else if(t.type===X&&Qt._opt.isWasmMp4){const r=new Uint8Array(e),i=Ye(r)?r.slice(2):r.slice(1);postMessage({cmd:T,buffer:i,ts:t.ts},[i.buffer])}if(Qt.isPlayer&&Bt>0&&Tt>0&&t.type===Z){const e=t.ts-Tt,r=Bt+Bt/2;e>r&&Qt.debug.log("worker",`pushBuffer video\n ts is ${t.ts}, preTimestamp is ${Tt},\n diff is ${e} and preTimestampDuration is ${Bt} and maxDiff is ${r}\n maybe trigger black screen or flower screen\n `)}if(Qt.isPlayer&&Tt>0&&t.type===Z&&t.tsb&&(Qt.debug.warn("worker",`pushBuffer,\n preTimestamp is ${Tt}, options.ts is ${t.ts},\n diff is ${Tt-t.ts} more than 3600000,\n and resetAllDelay`),Qt.resetAllDelay(),Tt=null,Bt=0),Qt.isPlayer&&Tt>0&&t.ts<=Tt&&t.type===Z&&(Qt.debug.warn("worker",`pushBuffer,\n options.ts is ${t.ts} less than (or equal) preTimestamp is ${Tt} and\n payloadBufferSize is ${e.byteLength} and prevPayloadBufferSize is ${Ct}`),Qt._opt.isDropSameTimestampGop&&Ve)){const e=Qt.hasIframeInBufferList(),t=dt(Qt.isPushDropping);return Qt.debug.log("worker",`pushBuffer, isDropSameTimestampGop is true and\n hasIframe is ${e} and isNotPushDropping is ${t} and next dropBuffer`),void(e&&t?Qt.dropBuffer$2():(Qt.clearBuffer(!0),at(Qt._opt.checkFirstIFrame)&&at(r)&&postMessage({cmd:K})))}if(Qt.isPlayer&&Ve){const e=Qt._opt.videoBuffer+Qt._opt.videoBufferDelay,r=Qt.getDelayNotUpdateDelay(t.ts,t.type);Qt.pushLatestDelay=r,r>e&&Qt.delay0&&Qt.hasIframeInBufferList()&&!1===Qt.isPushDropping&&(Qt.debug.log("worker",`pushBuffer(), pushLatestDelay is ${r} more than ${e} and decoder.delay is ${Qt.delay} and has iIframe and next decoder.dropBuffer$2()`),Qt.dropBuffer$2())}if(Qt.isPlayer&&t.type===Z&&(Tt>0&&(Bt=t.ts-Tt),Ct=e.byteLength,Tt=t.ts),t.type===X?i.push({ts:t.ts,payload:e,decoder:{decode:Qt.decodeAudio},type:X,isIFrame:!1}):t.type===Z&&i.push({ts:t.ts,cts:t.cts,payload:e,decoder:{decode:Qt.decodeVideo},type:Z,isIFrame:t.isIFrame}),Qt.isPlaybackCacheBeforeDecodeForFpsRender()&&(rt(Qt.streamVideoFps)||rt(Qt.streamAudioFps))){let e=Qt.streamVideoFps,t=Qt.streamAudioFps;if(rt(Qt.streamVideoFps)&&(e=nt(i,Z),e&&(Qt.streamVideoFps=e,postMessage({cmd:z,value:Qt.streamVideoFps}),Qt.streamFps=t?e+t:e,dt(Qt._opt.hasAudio)&&(Qt.debug.log("worker","playbackCacheBeforeDecodeForFpsRender, _opt.hasAudio is false and set streamAudioFps is 0"),Qt.streamAudioFps=0),Qt.playbackCacheLoop())),rt(Qt.streamAudioFps)&&(t=nt(i,X),t&&(Qt.streamAudioFps=t,Qt.streamFps=e?e+t:t,Qt.playbackCacheLoop())),rt(Qt.streamVideoFps)&&rt(Qt.streamAudioFps)){const r=i.map((e=>({type:e.type,ts:e.ts})));Qt.debug.log("worker",`playbackCacheBeforeDecodeForFpsRender, calc streamAudioFps is ${t}, streamVideoFps is ${e}, bufferListLength is ${i.length}, and ts list is ${JSON.stringify(r)}`)}const r=Qt.getAudioBufferLength()>0,n=r?60:40;i.length>=n&&(Qt.debug.warn("worker",`playbackCacheBeforeDecodeForFpsRender, bufferListLength is ${i.length} more than ${n}, and hasAudio is ${r} an set streamFps is 25`),Qt.streamVideoFps=25,postMessage({cmd:z,value:Qt.streamVideoFps}),r?(Qt.streamAudioFps=25,Qt.streamFps=Qt.streamVideoFps+Qt.streamAudioFps):Qt.streamFps=Qt.streamVideoFps,Qt.playbackCacheLoop())}}},getVideoBufferLength(){let e=0;return i.forEach((t=>{t.type===Z&&(e+=1)})),e},hasIframeInBufferList:()=>i.some((e=>e.type===Z&&e.isIFrame)),isAllIframeInBufferList(){const e=Qt.getVideoBufferLength();let t=0;return i.forEach((e=>{e.type===Z&&e.isIFrame&&(t+=1)})),e===t},getNotDroppingDelayTs:()=>Qt._opt.videoBuffer+Qt._opt.videoBufferDelay/2,getAudioBufferLength(){let e=0;return i.forEach((t=>{t.type===X&&(e+=1)})),e},getFlvBufferLength(){let e=0;return g&&g.buffer&&(e=g.buffer.byteLength),Qt._opt.isNakedFlow&&Kt.lastBuf&&(e=Kt.lastBuf.byteLength),e},fetchStream:function(e,t){Qt.debug.log("worker","fetchStream, url is "+e,"options:",JSON.stringify(t)),Qt.isWorkerFetch=!0,t.isFlv?Qt._opt.isFlv=!0:t.isFmp4?Qt._opt.isFmp4=!0:t.isMpeg4?Qt._opt.isMpeg4=!0:t.isNakedFlow?Qt._opt.isNakedFlow=!0:t.isTs&&(Qt._opt.isTs=!0),d=et((e=>{postMessage({cmd:L,type:ce,value:e})})),Qt.startStreamRateAndStatsInterval(),t.isFmp4&&(Xt.listenMp4Box(),Qt._opt.isFmp4Private&&Xt.initTransportDescarmber()),t.protocol===f?(g=new ht(Qt.demuxFlv()),fetch(e,{signal:o.signal}).then((e=>{if(at(jt))return Qt.debug.log("worker","request abort and run res.body.cancel()"),Qt.fetchStatus=Le,void e.body.cancel();if(!function(e){return e.ok&&e.status>=200&&e.status<=299}(e))return Qt.debug.warn("worker",`fetch response status is ${e.status} and ok is ${e.ok} and emit error and next abort()`),qt(),void postMessage({cmd:L,type:ve.fetchError,value:`fetch response status is ${e.status} and ok is ${e.ok}`});if(postMessage({cmd:L,type:me}),"undefined"!=typeof WritableStream)Qt.writableStream=new WritableStream({write:e=>o&&o.signal&&o.signal.aborted?(Qt.debug.log("worker","writableStream write() and abortController.signal.aborted is true so return"),void(Qt.fetchStatus=Me)):at(jt)?(Qt.debug.log("worker","writableStream write() and requestAbort is true so return"),void(Qt.fetchStatus=Me)):(Qt.fetchStatus=Re,d(e.byteLength),void(t.isFlv?g.write(e):t.isFmp4?Qt.demuxFmp4(e):t.isMpeg4?Qt.demuxMpeg4(e):t.isTs&&Qt.demuxTs(e))),close:()=>{Qt.fetchStatus=Me,g=null,qt(),postMessage({cmd:L,type:ue,value:h,msg:"fetch done"})},abort:e=>{if(o&&o.signal&&o.signal.aborted)return Qt.debug.log("worker","writableStream abort() and abortController.signal.aborted is true so return"),void(Qt.fetchStatus=Me);g=null,e.name!==De&&(qt(),postMessage({cmd:L,type:ve.fetchError,value:e.toString()}))}}),e.body.pipeTo(Qt.writableStream);else{const r=e.body.getReader(),i=()=>{r.read().then((({done:e,value:r})=>e?(Qt.fetchStatus=Me,g=null,qt(),void postMessage({cmd:L,type:ue,value:h,msg:"fetch done"})):o&&o.signal&&o.signal.aborted?(Qt.debug.log("worker","fetchNext().then() and abortController.signal.aborted is true so return"),void(Qt.fetchStatus=Me)):at(jt)?(Qt.debug.log("worker","fetchNext().then() and requestAbort is true so return"),void(Qt.fetchStatus=Me)):(Qt.fetchStatus=Re,d(r.byteLength),t.isFlv?g.write(r):t.isFmp4?Qt.demuxFmp4(r):t.isMpeg4&&Qt.demuxMpeg4(r),void i()))).catch((e=>{if(o&&o.signal&&o.signal.aborted)return Qt.debug.log("worker","fetchNext().catch() and abortController.signal.aborted is true so return"),void(Qt.fetchStatus=Me);g=null,e.name!==De&&(qt(),postMessage({cmd:L,type:ve.fetchError,value:e.toString()}))}))};i()}})).catch((e=>{o&&o.signal&&o.signal.aborted?Qt.debug.log("worker","fetch().catch() and abortController.signal.aborted is true so return"):e.name!==De&&(qt(),postMessage({cmd:L,type:ve.fetchError,value:e.toString()}),g=null)}))):t.protocol===c&&(t.isFlv&&(g=new ht(Qt.demuxFlv())),a=new WebSocket(e),a.binaryType="arraybuffer",a.onopen=()=>{Qt.debug.log("worker","fetchStream, WebsocketStream socket open"),postMessage({cmd:L,type:me}),postMessage({cmd:L,type:ge})},a.onclose=e=>{Qt.debug.log("worker",`fetchStream, WebsocketStream socket close and code is ${e.code}`),1006===e.code&&Qt.debug.error("worker",`fetchStream, WebsocketStream socket close abnormally and code is ${e.code}`),at(jt)?Qt.debug.log("worker","fetchStream, WebsocketStream socket close and requestAbort is true so return"):(g=null,postMessage({cmd:L,type:ue,value:p,msg:e.code}))},a.onerror=e=>{Qt.debug.error("worker","fetchStream, WebsocketStream socket error",e),g=null,postMessage({cmd:L,type:ve.websocketError,value:e.isTrusted?"websocket user aborted":"websocket error"})},a.onmessage=e=>{d(e.data.byteLength),t.isFlv?g.write(e.data):t.isFmp4?Qt.demuxFmp4(e.data):t.isMpeg4?Qt.demuxMpeg4(e.data):Qt._opt.isNakedFlow?Qt.demuxNakedFlow(e.data):Qt.demuxM7s(e.data)})},demuxFlv:function*(){yield 9;const e=new ArrayBuffer(4),t=new Uint8Array(e),r=new Uint32Array(e);for(;;){t[3]=0;const e=yield 15,i=e[4];t[0]=e[7],t[1]=e[6],t[2]=e[5];const n=r[0];t[0]=e[10],t[1]=e[9],t[2]=e[8],t[3]=e[11];let s=r[0];const o=(yield n).slice();switch(i){case J:if(o.byteLength>0){let e=o;at(Qt._opt.m7sCryptoAudio)&&(e=Qt.cryptoPayloadAudio(o)),Qt.decode(e,{type:X,ts:s})}else Qt.debug.warn("worker",`demuxFlv() type is audio and payload.byteLength is ${o.byteLength} and return`);break;case Q:if(o.byteLength>=6){const e=o[0];if(Qt._isEnhancedH265Header(e))Qt._decodeEnhancedH265Video(o,s);else{o[0];const e=o[0]>>4===Ie;if(e&&ot(o)&&null===Ht){const e=15&o[0];Ht=e===Ee,Vt=Ft(o,Ht),Qt.debug.log("worker",`demuxFlv() isVideoSequenceHeader is true and isHevc is ${Ht} and nalUnitSize is ${Vt}`)}e&&Qt.calcIframeIntervalTimestamp(s),Qt.isPlayer&&Qt.calcNetworkDelay(s),r[0]=o[4],r[1]=o[3],r[2]=o[2],r[3]=0;let t=r[0],i=Qt.cryptoPayload(o,e);Qt.decode(i,{type:Z,ts:s,isIFrame:e,cts:t})}}else Qt.debug.warn("worker",`demuxFlv() type is video and payload.byteLength is ${o.byteLength} and return`);break;case ee:postMessage({cmd:W,buffer:o},[o.buffer]);break;default:Qt.debug.log("worker",`demuxFlv() type is ${i}`)}}},decode:function(e,t){t.type===X?Qt._opt.hasAudio&&(postMessage({cmd:L,type:fe,value:e.byteLength}),Qt.isPlayer?Qt.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts}):Qt.isPlayback&&(Qt.isPlaybackOnlyDecodeIFrame()||(Qt.isPlaybackCacheBeforeDecodeForFpsRender(),Qt.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts})))):t.type===Z&&Qt._opt.hasVideo&&(postMessage({cmd:L,type:he,value:e.byteLength}),postMessage({cmd:L,type:pe,value:t.ts}),Qt.isPlayer?Qt.pushBuffer(e,{type:t.type,ts:t.ts,isIFrame:t.isIFrame,cts:t.cts}):Qt.isPlayback&&(Qt.isPlaybackOnlyDecodeIFrame()?t.isIFrame&&Qt.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts,isIFrame:t.isIFrame}):(Qt.isPlaybackCacheBeforeDecodeForFpsRender(),Qt.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts,isIFrame:t.isIFrame}))))},cryptoPayload:function(e,t){let r=e;return Qt._opt.isM7sCrypto?Qt._opt.cryptoIV&&Qt._opt.cryptoIV.byteLength>0&&Qt._opt.cryptoKey&&Qt._opt.cryptoKey.byteLength>0?r=function(e,t,r,i=!1){t=new Uint8Array(t),r=new Uint8Array(r);const n=e.byteLength;let s=5;for(;sn)break;let d=e[s+4],l=!1;if(i?(d=d>>>1&63,l=[0,1,2,3,4,5,6,7,8,9,16,17,18,19,20,21].includes(d)):(d&=31,l=1===d||5===d),l){const i=e.slice(s+4+2,s+4+a);let n=new gr.ModeOfOperation.ctr(t,new gr.Counter(r));const o=n.decrypt(i);n=null,e.set(o,s+4+2)}s=s+4+a}var o;return e}(e,Qt._opt.cryptoKey,Qt._opt.cryptoIV,Ht):Qt.debug.error("worker",`isM7sCrypto cryptoKey.length is ${Qt._opt.cryptoKey&&Qt._opt.cryptoKey.byteLength} or cryptoIV.length is ${Qt._opt.cryptoIV&&Qt._opt.cryptoIV.byteLength} null`):Qt._opt.isSm4Crypto?Qt._opt.sm4CryptoKey&&t?r=function(e,t,r=!1){const i=e.byteLength;let n=5;for(;ni)break;let a=e[n+4],d=!1;if(r?(a=a>>>1&63,d=[0,1,2,3,4,5,6,7,8,9,16,17,18,19,20,21].includes(a)):(a&=31,d=1===a||5===a),d){const r=Ir(e.slice(n+4+2,n+4+o),t,0,{padding:"none",output:"array"});e.set(r,n+4+2)}n=n+4+o}var s;return e}(e,Qt._opt.sm4CryptoKey):Qt._opt.sm4CryptoKey||Qt.debug.error("worker","isSm4Crypto opt.sm4CryptoKey is null"):Qt._opt.isXorCrypto&&(Qt._opt.cryptoIV&&Qt._opt.cryptoIV.byteLength>0&&Qt._opt.cryptoKey&&Qt._opt.cryptoKey.byteLength>0?r=function(e,t,r,i=!1){const n=e.byteLength;let s=5;for(;sn)break;let d=e[s+4],l=!1;if(i?(d=d>>>1&63,l=[0,1,2,3,4,5,6,7,8,9,16,17,18,19,20,21].includes(d)):(d&=31,l=1===d||5===d),l){const i=zr(e.slice(s+4,s+4+a),t,r);e.set(i,s+4)}s=s+4+a}var o;return e}(e,Qt._opt.cryptoKey,Qt._opt.cryptoIV,Ht):Qt.debug.error("worker",`isXorCrypto cryptoKey.length is ${Qt._opt.cryptoKey&&Qt._opt.cryptoKey.byteLength} or cryptoIV.length is ${Qt._opt.cryptoIV&&Qt._opt.cryptoIV.byteLength} null`)),r},cryptoPayloadAudio:function(e){let t=e;if(Qt._opt.isM7sCrypto)if(Qt._opt.cryptoIV&&Qt._opt.cryptoIV.byteLength>0&&Qt._opt.cryptoKey&&Qt._opt.cryptoKey.byteLength>0){e[0]>>4===Ue.AAC&&(t=function(e,t,r){if(e.byteLength<=30)return e;const i=e.slice(32);let n=new gr.ModeOfOperation.ctr(t,new gr.Counter(r));const s=n.decrypt(i);return n=null,e.set(s,32),e}(e,Qt._opt.cryptoKey,Qt._opt.cryptoIV))}else Qt.debug.error("worker",`isM7sCrypto cryptoKey.length is ${Qt._opt.cryptoKey&&Qt._opt.cryptoKey.byteLength} or cryptoIV.length is ${Qt._opt.cryptoIV&&Qt._opt.cryptoIV.byteLength} null`);return t},setCodecAudio:function(e,t){const r=e[0]>>4,i=e[0]>>1&1;if(Wt=r===Ue.AAC?i?16:8:0===i?8:16,er&&er.setCodec)if(je(e)||r===Ue.ALAW||r===Ue.MULAW||r===Ue.MP3){Qt.debug.log("worker",`setCodecAudio: init audio codec, codeId is ${r}`);const i=r===Ue.AAC?e.slice(2):new Uint8Array(0);er.setCodec(r,Qt._opt.sampleRate,i),r===Ue.AAC&&postMessage({cmd:B,buffer:i},[i.buffer]),Fe=!0,r!==Ue.AAC&&(r===Ue.MP3?(Qt.mp3Demuxer||(Qt.mp3Demuxer=new Mr(Qt),Qt.mp3Demuxer.on("data",((e,t)=>{er.decode(e,t)}))),Qt.mp3Demuxer.dispatch(e.slice(1),t)):er.decode(e.slice(1),t))}else Qt.debug.warn("worker","setCodecAudio: hasInitAudioCodec is false, codecId is ",r);else Qt.debug.error("worker","setCodecAudio: audioDecoder or audioDecoder.setCodec is null")},decodeAudio:function(e,t){if(Qt.isDestroyed)Qt.debug.log("worker","decodeAudio, decoder is destroyed and return");else if(at(r)&&at(Qt._opt.mseDecodeAudio))postMessage({cmd:I,payload:e,ts:t,cts:t},[e.buffer]);else{const r=e[0]>>4;Fe?r===Ue.MP3?Qt.mp3Demuxer.dispatch(e.slice(1),t):er.decode(r===Ue.AAC?e.slice(2):e.slice(1),t):Qt.setCodecAudio(e,t)}},setCodecVideo:function(e){const t=15&e[0];if(tr&&tr.setCodec)if(ot(e))if(t===we||t===Ee){Qt.debug.log("worker",`setCodecVideo: init video codec , codecId is ${t}`);const r=e.slice(5);if(t===we&&Qt._opt.useSIMD){const e=gt(r);if(e.codecWidth>4080||e.codecHeight>4080)return postMessage({cmd:$}),void Qt.debug.warn("worker",`setCodecVideo: SIMD H264 decode video width is too large, width is ${e.codecWidth}, height is ${e.codecHeight}`)}const i=new Uint8Array(e);Pe=!0,tr.setCodec(t,r),postMessage({cmd:C,code:t}),postMessage({cmd:D,buffer:i,codecId:t},[i.buffer])}else Qt.debug.warn("worker",`setCodecVideo: hasInitVideoCodec is false, codecId is ${t} is not H264 or H265`);else Qt.debug.warn("worker",`decodeVideo: hasInitVideoCodec is false, codecId is ${t} and frameType is ${e[0]>>4} and packetType is ${e[1]}`);else Qt.debug.error("worker","setCodecVideo: videoDecoder or videoDecoder.setCodec is null")},decodeVideo:function(e,t,i,n=0){if(Qt.isDestroyed)Qt.debug.log("worker","decodeVideo, decoder is destroyed and return");else if(at(r))postMessage({cmd:F,payload:e,isIFrame:i,ts:t,cts:n,delay:Qt.delay},[e.buffer]);else if(Pe)if(!Ve&&i&&(Ve=!0),Ve){if(i&&ot(e)){const t=15&e[0];let r={};if(t===we){r=gt(e.slice(5))}else t===Ee&&(r=function(e){let t={codecWidth:0,codecHeight:0,videoType:Ce.h265,width:0,height:0,profile:0,level:0};e=e.slice(5);do{let r={};if(e.length<23){console.warn("parseHEVCDecoderConfigurationRecord$2",`arrayBuffer.length ${e.length} < 23`);break}if(r.configurationVersion=e[0],1!=r.configurationVersion)break;r.general_profile_space=e[1]>>6&3,r.general_tier_flag=e[1]>>5&1,r.general_profile_idc=31&e[1],r.general_profile_compatibility_flags=e[2]<<24|e[3]<<16|e[4]<<8|e[5],r.general_constraint_indicator_flags=e[6]<<24|e[7]<<16|e[8]<<8|e[9],r.general_constraint_indicator_flags=r.general_constraint_indicator_flags<<16|e[10]<<8|e[11],r.general_level_idc=e[12],r.min_spatial_segmentation_idc=(15&e[13])<<8|e[14],r.parallelismType=3&e[15],r.chromaFormat=3&e[16],r.bitDepthLumaMinus8=7&e[17],r.bitDepthChromaMinus8=7&e[18],r.avgFrameRate=e[19]<<8|e[20],r.constantFrameRate=e[21]>>6&3,r.numTemporalLayers=e[21]>>3&7,r.temporalIdNested=e[21]>>2&1,r.lengthSizeMinusOne=3&e[21];let i=e[22],n=e.slice(23);for(let e=0;e0){let e=i.findIndex((e=>at(e.isIFrame)&&e.type===Z));if(Qt.isAllIframeInBufferList())for(let t=0;t=Qt.getNotDroppingDelayTs()){Qt.debug.log("worker",`dropBuffer$2() isAllIframeInBufferList() is true, and index is ${t} and tempDelay is ${n} and notDroppingDelayTs is ${Qt.getNotDroppingDelayTs()}`),e=t;break}}if(e>=0){Qt.isPushDropping=!0,postMessage({cmd:M});const t=i.length;i=i.slice(e);const r=i.shift();Qt.resetAllDelay(),Qt.getDelay(r.ts,r.type),Qt.doDecode(r),Qt.isPushDropping=!1,Qt.debug.log("worker",`dropBuffer$2() iFrameIndex is ${e},and old bufferList length is ${t} ,new bufferList is ${i.length} and new delay is ${Qt.delay} `)}else Qt.isPushDropping=!1}0===i.length&&(Qt.isPushDropping=!1)},demuxM7s:function(e){const t=new DataView(e),r=t.getUint32(1,!1),i=t.getUint8(0),n=new ArrayBuffer(4),s=new Uint32Array(n);switch(i){case X:Qt.decode(new Uint8Array(e,5),{type:X,ts:r});break;case Z:if(t.byteLength>=11){const i=new Uint8Array(e,5),n=i[0];if(Qt._isEnhancedH265Header(n))Qt._decodeEnhancedH265Video(i,r);else{const e=t.getUint8(5)>>4==1;if(e&&(Qt.calcIframeIntervalTimestamp(r),ot(i)&&null===Ht)){const e=15&i[0];Ht=e===Ee}Qt.isPlayer&&Qt.calcNetworkDelay(r),s[0]=i[4],s[1]=i[3],s[2]=i[2],s[3]=0;let n=s[0],o=Qt.cryptoPayload(i,e);Qt.decode(o,{type:Z,ts:r,isIFrame:e,cts:n})}}else Qt.debug.warn("worker",`demuxM7s() type is video and arrayBuffer length is ${e.byteLength} and return`)}},demuxNakedFlow:function(e){Kt.dispatch(e)},demuxFmp4:function(e){const t=new Uint8Array(e);Xt.dispatch(t)},demuxMpeg4:function(e){Zt.dispatch(e)},demuxTs:function(e){Jt.dispatch(e)},_decodeEnhancedH265Video:function(e,t){const r=e[0],i=48&r,n=15&r,s=e.slice(1,5),o=new ArrayBuffer(4),a=new Uint32Array(o),d="a"==String.fromCharCode(s[0]);if(Ht=dt(d),n===ze){if(i===$e){const r=e.slice(5);if(d);else{const i=new Uint8Array(5+r.length);i.set([28,0,0,0,0],0),i.set(r,5),Vt=Ft(e,Ht),Qt.debug.log("worker",`demuxFlv() isVideoSequenceHeader(enhancedH265) is true and isHevc is ${Ht} and nalUnitSize is ${Vt}`),Qt.decode(i,{type:Z,ts:t,isIFrame:!0,cts:0})}}}else if(n===Ne){let r=e,n=0;const s=i===$e;if(s&&Qt.calcIframeIntervalTimestamp(t),d);else{a[0]=e[4],a[1]=e[3],a[2]=e[2],a[3]=0,n=a[0];r=Rt(e.slice(8),s),r=Qt.cryptoPayload(r,s),Qt.decode(r,{type:Z,ts:t,isIFrame:s,cts:n})}}else if(n===Oe){const r=i===$e;r&&Qt.calcIframeIntervalTimestamp(t);let n=Rt(e.slice(5),r);n=Qt.cryptoPayload(n,r),Qt.decode(n,{type:Z,ts:t,isIFrame:r,cts:0})}},_isEnhancedH265Header:function(e){return!(128&~e)},findSei:function(e,t){let r=4;rt(Vt)||(r=Vt);Dt(e.slice(5),r).forEach((e=>{const r=Ht?e[0]>>>1&63:31&e[0];(Ht&&(r===ke.suffixSei||r===ke.prefixSei)||dt(Ht)&&r===Ae.kSliceSEI)&&postMessage({cmd:V,buffer:e,ts:t},[e.buffer])}))},flvHasUnitTypeIDR(e,t){const r=Dt(e.slice(5));let i=!1;return r.forEach((e=>{const r=t?e[0]>>>1&63:31&e[0];(t&&(r===ke.iFrame||r===ke.nLp)||dt(t)&&r===Ae.iFrame)&&(i=!0)})),i},calcNetworkDelay:function(e){if(!(Ve&&e>0))return;null===ut?(ut=e,ct=Je()):et?r-t:0;Qt.networkDelay=i,i>Qt._opt.networkDelay&&Qt._opt.playType===m&&(Qt.debug.warn("worker",`calcNetworkDelay now dts:${e}, start dts is ${ut} vs start is ${t},local diff is ${r} ,delay is ${i}`),postMessage({cmd:L,type:ye,value:i}))},calcIframeIntervalTimestamp:function(e){null===kt?kt=e:kt=Qt._opt.playbackForwardMaxRateDecodeIFrame},isPlayUseMSE:function(){return Qt.isPlayer&&Qt._opt.useMSE&&at(r)},isPlayUseMSEAndDecoderInWorker:function(){return Qt.isPlayUseMSE()&&Qt._opt.mseDecoderUseWorker},playbackUpdatePlaybackRate:function(){Qt.clearBuffer(!0)},onOffscreenCanvasWebglContextLost:function(e){Qt.debug.error("worker","handleOffscreenCanvasWebglContextLost and next try to create webgl"),e.preventDefault(),Ot=!0,Qt.webglObj.destroy(),Qt.webglObj=null,Qt.offscreenCanvasGL=null,setTimeout((()=>{Qt.offscreenCanvasGL=Qt.offscreenCanvas.getContext("webgl"),Qt.offscreenCanvasGL&&Qt.offscreenCanvasGL.getContextAttributes().stencil?(Qt.webglObj=u(Qt.offscreenCanvasGL,Qt._opt.openWebglAlignment),Ot=!1):Qt.debug.error("worker","handleOffscreenCanvasWebglContextLost, stencil is false")}),500)},onOffscreenCanvasWebglContextRestored:function(e){Qt.debug.log("worker","handleOffscreenCanvasWebglContextRestored"),e.preventDefault()},videoInfo:function(e,t,r){postMessage({cmd:C,code:e}),postMessage({cmd:S,w:t,h:r}),v=t,w=r,Qt.useOffscreen()&&(Qt.offscreenCanvas=new OffscreenCanvas(t,r),Qt.offscreenCanvasGL=Qt.offscreenCanvas.getContext("webgl"),Qt.webglObj=u(Qt.offscreenCanvasGL,Qt._opt.openWebglAlignment),Qt.offscreenCanvas.addEventListener("webglcontextlost",Qt.onOffscreenCanvasWebglContextLost,!1),Qt.offscreenCanvas.addEventListener("webglcontextrestored",Qt.onOffscreenCanvasWebglContextRestored,!1))},audioInfo:function(e,t,r){postMessage({cmd:k,code:e}),postMessage({cmd:A,sampleRate:t,channels:r,depth:Wt}),At=r},yuvData:function(t,r){if(Qt.isDestroyed)return void Qt.debug.log("worker","yuvData, decoder is destroyed and return");const i=v*w*3/2;let n=e.HEAPU8.subarray(t,t+i),s=new Uint8Array(n);if(mt=null,Qt.useOffscreen())try{if(Ot)return;Qt.webglObj.renderYUV(v,w,s);let e=Qt.offscreenCanvas.transferToImageBitmap();postMessage({cmd:x,buffer:e,delay:Qt.delay,ts:r},[e])}catch(e){Qt.debug.error("worker","yuvData, transferToImageBitmap error is",e)}else postMessage({cmd:x,output:s,delay:Qt.delay,ts:r},[s.buffer])},pcmData:function(e,r,i){if(Qt.isDestroyed)return void Qt.debug.log("worker","pcmData, decoder is destroyed and return");let s=r,o=[],a=0,d=Qt._opt.audioBufferSize;for(let r=0;r<2;r++){let i=t.HEAPU32[(e>>2)+r]>>2;o[r]=t.HEAPF32.subarray(i,i+s)}if(Ut){if(!(s>=(r=d-Ut)))return Ut+=s,n[0]=Float32Array.of(...n[0],...o[0]),void(2==At&&(n[1]=Float32Array.of(...n[1],...o[1])));ft[0]=Float32Array.of(...n[0],...o[0].subarray(0,r)),2==At&&(ft[1]=Float32Array.of(...n[1],...o[1].subarray(0,r))),postMessage({cmd:U,buffer:ft,ts:i},ft.map((e=>e.buffer))),a=r,s-=r}for(Ut=s;Ut>=d;Ut-=d)ft[0]=o[0].slice(a,a+=d),2==At&&(ft[1]=o[1].slice(a-d,a)),postMessage({cmd:U,buffer:ft,ts:i},ft.map((e=>e.buffer)));Ut&&(n[0]=o[0].slice(a),2==At&&(n[1]=o[1].slice(a)))},errorInfo:function(e){null===mt&&(mt=Je());const t=Je(),r=(i=yt>0?2*yt:5e3,n=1e3,s=5e3,Math.max(Math.min(i,Math.max(n,s)),Math.min(n,s)));var i,n,s;const o=t-mt;o>r&&(Qt.debug.warn("worker",`errorInfo() emit simdDecodeError and\n iframeIntervalTimestamp is ${yt} and diff is ${o} and maxDiff is ${r}\n and replay`),Gt=!0,postMessage({cmd:O}))},sendWebsocketMessage:function(e){a?a.readyState===be?a.send(e):Qt.debug.error("worker","socket is not open"):Qt.debug.error("worker","socket is null")},timeEnd:function(){},postStreamToMain(e,t){postMessage({cmd:H,type:t,buffer:e},[e.buffer])}};Qt.debug=new pt(Qt);let er=null;t.AudioDecoder&&(er=new t.AudioDecoder(Qt));let tr=null;e.VideoDecoder&&(tr=new e.VideoDecoder(Qt)),postMessage({cmd:E}),self.onmessage=function(e){let t=e.data;switch(t.cmd){case te:try{Qt._opt=Object.assign(Qt._opt,JSON.parse(t.opt))}catch(e){}Qt.init();break;case re:Qt.pushBuffer(t.buffer,t.options);break;case ie:Qt.decodeAudio(t.buffer,t.ts);break;case ne:Qt.decodeVideo(t.buffer,t.ts,t.isIFrame);break;case ae:Qt.clearBuffer(t.needClear);break;case de:Qt.fetchStream(t.url,JSON.parse(t.opt));break;case se:Qt.close();break;case oe:Qt.debug.log("worker","updateConfig",t.key,t.value),Qt._opt[t.key]=t.value,"playbackRate"===t.key&&(Qt.playbackUpdatePlaybackRate(),Qt.isPlaybackCacheBeforeDecodeForFpsRender()&&Qt.playbackCacheLoop());break;case le:Qt.sendWebsocketMessage(t.message)}}}Or.init(),Date.now||(Date.now=function(){return(new Date).getTime()});const Gr=[];Gr.push(r({printErr:function(e){console.warn("EasyPro[❌❌❌][worker]:",e)}}),t({printErr:function(e){console.warn("EasyPro[❌❌❌][worker]:",e)}})),Promise.all(Gr).then((e=>{const t=e[0];$r(e[1],t)}))})); diff --git a/demo/js/decoder-pro-simd-mt-worker.js b/html-demo/js/decoder-pro-simd-mt-worker.js similarity index 100% rename from demo/js/decoder-pro-simd-mt-worker.js rename to html-demo/js/decoder-pro-simd-mt-worker.js diff --git a/demo/js/decoder-pro-simd-mt-worker.wasm b/html-demo/js/decoder-pro-simd-mt-worker.wasm similarity index 100% rename from demo/js/decoder-pro-simd-mt-worker.wasm rename to html-demo/js/decoder-pro-simd-mt-worker.wasm diff --git a/demo/js/decoder-pro-simd-mt-worker.worker.js b/html-demo/js/decoder-pro-simd-mt-worker.worker.js similarity index 100% rename from demo/js/decoder-pro-simd-mt-worker.worker.js rename to html-demo/js/decoder-pro-simd-mt-worker.worker.js diff --git a/html-demo/js/decoder-pro-simd-mt.js b/html-demo/js/decoder-pro-simd-mt.js new file mode 100644 index 0000000..4fc2193 --- /dev/null +++ b/html-demo/js/decoder-pro-simd-mt.js @@ -0,0 +1 @@ +!function(e){"function"==typeof define&&define.amd?define(e):e()}((function(){"use strict";var e,t=(e="undefined"==typeof document&&"undefined"==typeof location?new(require("url").URL)("file:"+__filename).href:"undefined"==typeof document?location.href:document.currentScript&&document.currentScript.src||new URL("decoder-pro-simd-mt.js",document.baseURI).href,async function(t={}){var r,i,n;(n=t).ready=new Promise(((e,t)=>{r=e,i=t})),(n=void 0!==n?n:{}).locateFile=function(e){return"decoder-pro-simd-mt-worker.wasm"==e&&"undefined"!=typeof EASYPLAYER_PRO_SIMD_MT_WORKER_WASM_URL&&""!=EASYPLAYER_PRO_SIMD_MT_WORKER_WASM_URL?EASYPLAYER_PRO_SIMD_MT_WORKER_WASM_URL:e};var s,a,o,d=Object.assign({},n),l=(e,t)=>{throw t},u="object"==typeof window,c="function"==typeof importScripts,h="object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node,f=n.ENVIRONMENT_IS_PTHREAD||!1,p="";function m(e){return n.locateFile?n.locateFile(e,p):p+e}if(h){const{createRequire:e}=await import("module");var _=e("undefined"==typeof document&&"undefined"==typeof location?new(require("url").URL)("file:"+__filename).href:"undefined"==typeof document?location.href:document.currentScript&&document.currentScript.src||new URL("decoder-pro-simd-mt.js",document.baseURI).href),y=_("fs"),g=_("path");let t;p=c?g.dirname(p)+"/":_("url").fileURLToPath(new URL("./","undefined"==typeof document&&"undefined"==typeof location?new(require("url").URL)("file:"+__filename).href:"undefined"==typeof document?location.href:document.currentScript&&document.currentScript.src||new URL("decoder-pro-simd-mt.js",document.baseURI).href)),s=(e,t)=>(e=X(e)?new URL(e):g.normalize(e),y.readFileSync(e,t?void 0:"utf8")),o=e=>{var t=s(e,!0);return t.buffer||(t=new Uint8Array(t)),t},a=(e,t,r,i=!0)=>{e=X(e)?new URL(e):g.normalize(e),y.readFile(e,i?void 0:"utf8",((e,n)=>{e?r(e):t(i?n.buffer:n)}))},!n.thisProgram&&process.argv.length>1&&process.argv[1].replace(/\\/g,"/"),process.argv.slice(2),l=(e,t)=>{throw process.exitCode=e,t},n.inspect=()=>"[Emscripten Module object]";try{t=_("worker_threads")}catch(e){throw console.error('The "worker_threads" module is not supported in this node.js build - perhaps a newer version is needed?'),e}global.Worker=t.Worker}else(u||c)&&(c?p=self.location.href:"undefined"!=typeof document&&document.currentScript&&(p=document.currentScript.src),e&&(p=e),p=0!==p.indexOf("blob:")?p.substr(0,p.replace(/[?#].*/,"").lastIndexOf("/")+1):"",h||(s=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.send(null),t.responseText},c&&(o=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.responseType="arraybuffer",t.send(null),new Uint8Array(t.response)}),a=(e,t,r)=>{var i=new XMLHttpRequest;i.open("GET",e,!0),i.responseType="arraybuffer",i.onload=()=>{200==i.status||0==i.status&&i.response?t(i.response):r()},i.onerror=r,i.send(null)}));h&&"undefined"==typeof performance&&(global.performance=_("perf_hooks").performance);var v=console.log.bind(console),b=console.error.bind(console);h&&(v=(...e)=>y.writeSync(1,e.join(" ")+"\n"),b=(...e)=>y.writeSync(2,e.join(" ")+"\n"));var w,S,E,U=n.print||v,x=n.printErr||b;Object.assign(n,d),d=null,n.arguments&&n.arguments,n.thisProgram&&n.thisProgram,n.quit&&(l=n.quit),n.wasmBinary&&(w=n.wasmBinary),"object"!=typeof WebAssembly&&Y("no native wasm support detected");var A,T,k,C,B,D,P,F,I,L,R=!1,M=n.INITIAL_MEMORY||536870912;if(f)S=n.wasmMemory;else if(n.wasmMemory)S=n.wasmMemory;else if(!((S=new WebAssembly.Memory({initial:M/65536,maximum:M/65536,shared:!0})).buffer instanceof SharedArrayBuffer))throw x("requested a shared WebAssembly.Memory but the returned buffer is not a SharedArrayBuffer, indicating that while the browser has SharedArrayBuffer it does not have WebAssembly threads support - you may need to set a flag"),h&&x("(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and/or recent version)"),Error("bad memory");L=S.buffer,n.HEAP8=T=new Int8Array(L),n.HEAP16=C=new Int16Array(L),n.HEAPU8=k=new Uint8Array(L),n.HEAPU16=B=new Uint16Array(L),n.HEAP32=D=new Int32Array(L),n.HEAPU32=P=new Uint32Array(L),n.HEAPF32=F=new Float32Array(L),n.HEAPF64=I=new Float64Array(L),M=S.buffer.byteLength;var z=[],O=[],N=[];function $(){f||fe(O)}function G(e){z.unshift(e)}var H=0,V=null;function W(e){H++,n.monitorRunDependencies&&n.monitorRunDependencies(H)}function j(e){if(H--,n.monitorRunDependencies&&n.monitorRunDependencies(H),0==H&&V){var t=V;V=null,t()}}function Y(e){n.onAbort&&n.onAbort(e),x(e="Aborted("+e+")"),R=!0,A=1,e+=". Build with -sASSERTIONS for more info.";var t=new WebAssembly.RuntimeError(e);throw i(t),t}var q,K=e=>e.startsWith("data:application/octet-stream;base64,"),X=e=>e.startsWith("file://");function Z(e){if(e==q&&w)return new Uint8Array(w);if(o)return o(e);throw"both async and sync fetching of the wasm failed"}function J(e,t,r){return function(e){if(!w&&(u||c)){if("function"==typeof fetch&&!X(e))return fetch(e,{credentials:"same-origin"}).then((t=>{if(!t.ok)throw"failed to load wasm binary file at '"+e+"'";return t.arrayBuffer()})).catch((()=>Z(e)));if(a)return new Promise(((t,r)=>{a(e,(e=>t(new Uint8Array(e))),r)}))}return Promise.resolve().then((()=>Z(e)))}(e).then((e=>WebAssembly.instantiate(e,t))).then((e=>e)).then(r,(e=>{x(`failed to asynchronously prepare wasm: ${e}`),Y(e)}))}function Q(e){this.name="ExitStatus",this.message=`Program terminated with exit(${e})`,this.status=e}n.locateFile?K(q="decoder-pro-simd-mt-worker.wasm")||(q=m(q)):q=new URL("decoder-pro-simd-mt-worker.wasm","undefined"==typeof document&&"undefined"==typeof location?new(require("url").URL)("file:"+__filename).href:"undefined"==typeof document?location.href:document.currentScript&&document.currentScript.src||new URL("decoder-pro-simd-mt.js",document.baseURI).href).href;var ee=e=>{e.terminate(),e.onmessage=e=>{}},te=e=>{var t=he.pthreads[e];he.returnWorkerToPool(t)},re=e=>{var t=he.getNewWorker();if(!t)return 6;he.runningWorkers.push(t),he.pthreads[e.pthread_ptr]=t,t.pthread_ptr=e.pthread_ptr;var r={cmd:"run",start_routine:e.startRoutine,arg:e.arg,pthread_ptr:e.pthread_ptr};return h&&t.unref(),t.postMessage(r,e.transferList),0},ie=0,ne=()=>ge||ie>0,se="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0,ae=(e,t,r)=>{for(var i=t+r,n=t;e[n]&&!(n>=i);)++n;if(n-t>16&&e.buffer&&se)return se.decode(e.buffer instanceof SharedArrayBuffer?e.slice(t,n):e.subarray(t,n));for(var s="";t>10,56320|1023&l)}}else s+=String.fromCharCode((31&a)<<6|o)}else s+=String.fromCharCode(a)}return s},oe=(e,t)=>e?ae(k,e,t):"",de=function(e,t){var r=arguments.length-2,i=arguments;return(e=>{var t=or(),r=e();return dr(t),r})((()=>{for(var n=r,s=lr(8*n),a=s>>3,o=0;o{if(A=e,f)throw pe(e),"unwind";le(e)},ce=e=>{if(e instanceof Q||"unwind"==e)return A;l(1,e)},he={unusedWorkers:[],runningWorkers:[],tlsInitFunctions:[],pthreads:{},init(){f?he.initWorker():he.initMainThread()},initMainThread(){for(var e=8;e--;)he.allocateUnusedWorker();G((()=>{W(),he.loadWasmModuleToAllWorkers((()=>j()))}))},initWorker(){ge=!1},setExitStatus:e=>{A=e},terminateAllThreads__deps:["$terminateWorker"],terminateAllThreads:()=>{for(var e of he.runningWorkers)ee(e);for(var e of he.unusedWorkers)ee(e);he.unusedWorkers=[],he.runningWorkers=[],he.pthreads=[]},returnWorkerToPool:e=>{var t=e.pthread_ptr;delete he.pthreads[t],he.unusedWorkers.push(e),he.runningWorkers.splice(he.runningWorkers.indexOf(e),1),e.pthread_ptr=0,ir(t)},receiveObjectTransfer(e){},threadInitTLS(){he.tlsInitFunctions.forEach((e=>e()))},loadWasmModuleToWorker:e=>new Promise((t=>{e.onmessage=r=>{var i=r.data,s=i.cmd;if(i.targetThread&&i.targetThread!=Jt()){var a=he.pthreads[i.targetThread];a?a.postMessage(i,i.transferList):x(`Internal error! Worker sent a message "${s}" to target pthread ${i.targetThread}, but that thread no longer exists!`)}else{var o;"checkMailbox"===s?It():"spawnThread"===s?re(i):"cleanupThread"===s?te(i.thread):"killThread"===s?(e=>{var t=he.pthreads[e];delete he.pthreads[e],ee(t),ir(e),he.runningWorkers.splice(he.runningWorkers.indexOf(t),1),t.pthread_ptr=0})(i.thread):"cancelThread"===s?(o=i.thread,he.pthreads[o].postMessage({cmd:"cancel"})):"loaded"===s?(e.loaded=!0,h&&!e.pthread_ptr&&e.unref(),t(e)):"alert"===s?alert(`Thread ${i.threadId}: ${i.text}`):"setimmediate"===i.target?e.postMessage(i):"callHandler"===s?n[i.handler](...i.args):s&&x(`worker sent an unknown command ${s}`)}},e.onerror=e=>{throw x(`worker sent an error! ${e.filename}:${e.lineno}: ${e.message}`),e},h&&(e.on("message",(t=>e.onmessage({data:t}))),e.on("error",(t=>e.onerror(t))));var r=[];for(var i of["onExit","onAbort","print","printErr"])n.hasOwnProperty(i)&&r.push(i);e.postMessage({cmd:"load",handlers:r,urlOrBlob:n.mainScriptUrlOrBlob,wasmMemory:S,wasmModule:E})})),loadWasmModuleToAllWorkers(e){if(f)return e();Promise.all(he.unusedWorkers.map(he.loadWasmModuleToWorker)).then(e)},allocateUnusedWorker(){var e;if(n.locateFile){var t=m("decoder-pro-simd-mt-worker.worker.js");e=new Worker(t,{type:"module"})}else e=new Worker(new URL("decoder-pro-simd-mt-worker.worker.js","undefined"==typeof document&&"undefined"==typeof location?new(require("url").URL)("file:"+__filename).href:"undefined"==typeof document?location.href:document.currentScript&&document.currentScript.src||new URL("decoder-pro-simd-mt.js",document.baseURI).href),{type:"module"});he.unusedWorkers.push(e)},getNewWorker:()=>(0==he.unusedWorkers.length&&(he.allocateUnusedWorker(),he.loadWasmModuleToWorker(he.unusedWorkers[0])),he.unusedWorkers.pop())};n.PThread=he;var fe=e=>{for(;e.length>0;)e.shift()(n)};function pe(e){if(f)return de(1,0,e);ue(e)}n.establishStackSpace=()=>{var e=Jt(),t=P[e+52>>2],r=P[e+56>>2];ar(t,t-r),dr(t)};var me,_e=[],ye=e=>{var t=_e[e];return t||(e>=_e.length&&(_e.length=e+1),_e[e]=t=me.get(e)),t};n.invokeEntryPoint=(e,t)=>{!function(e){ne()?he.setExitStatus(e):nr(e)}(ye(e)(t))};var ge=n.noExitRuntime||!0,ve=e=>{he.tlsInitFunctions.push(e)};function be(e){this.excPtr=e,this.ptr=e-24,this.set_type=function(e){P[this.ptr+4>>2]=e},this.get_type=function(){return P[this.ptr+4>>2]},this.set_destructor=function(e){P[this.ptr+8>>2]=e},this.get_destructor=function(){return P[this.ptr+8>>2]},this.set_caught=function(e){e=e?1:0,T[this.ptr+12|0]=e},this.get_caught=function(){return 0!=T[this.ptr+12|0]},this.set_rethrown=function(e){e=e?1:0,T[this.ptr+13|0]=e},this.get_rethrown=function(){return 0!=T[this.ptr+13|0]},this.init=function(e,t){this.set_adjusted_ptr(0),this.set_type(e),this.set_destructor(t)},this.set_adjusted_ptr=function(e){P[this.ptr+16>>2]=e},this.get_adjusted_ptr=function(){return P[this.ptr+16>>2]},this.get_exception_ptr=function(){if(ur(this.get_type()))return P[this.excPtr>>2];var e=this.get_adjusted_ptr();return 0!==e?e:this.excPtr}}function we(e,t,r,i){return f?de(2,1,e,t,r,i):xe(e,t,r,i)}var Se,Ee,Ue,xe=(e,t,r,i)=>{if("undefined"==typeof SharedArrayBuffer)return x("Current environment does not support SharedArrayBuffer, pthreads are not available!"),6;var n=[];if(f&&0===n.length)return we(e,t,r,i);var s={startRoutine:r,pthread_ptr:e,arg:i,transferList:n};return f?(s.cmd="spawnThread",postMessage(s,n),0):re(s)},Ae=e=>{for(var t="",r=e;k[r];)t+=Se[k[r++]];return t},Te={},ke={},Ce={},Be=e=>{throw new Ee(e)},De=e=>{throw new Ue(e)},Pe=(e,t,r)=>{function i(t){var i=r(t);i.length!==e.length&&De("Mismatched type converter count");for(var n=0;n{ke.hasOwnProperty(e)?n[t]=ke[e]:(s.push(e),Te.hasOwnProperty(e)||(Te[e]=[]),Te[e].push((()=>{n[t]=ke[e],++a===s.length&&i(n)})))})),0===s.length&&i(n)};function Fe(e,t,r={}){if(!("argPackAdvance"in t))throw new TypeError("registerType registeredInstance requires argPackAdvance");return function(e,t,r={}){var i=t.name;if(e||Be(`type "${i}" must have a positive integer typeid pointer`),ke.hasOwnProperty(e)){if(r.ignoreDuplicateRegistrations)return;Be(`Cannot register type '${i}' twice`)}if(ke[e]=t,delete Ce[e],Te.hasOwnProperty(e)){var n=Te[e];delete Te[e],n.forEach((e=>e()))}}(e,t,r)}var Ie,Le=e=>{Be(e.$$.ptrType.registeredClass.name+" instance already deleted")},Re=!1,Me=e=>{},ze=e=>{e.count.value-=1,0===e.count.value&&(e=>{e.smartPtr?e.smartPtrType.rawDestructor(e.smartPtr):e.ptrType.registeredClass.rawDestructor(e.ptr)})(e)},Oe=(e,t,r)=>{if(t===r)return e;if(void 0===r.baseClass)return null;var i=Oe(e,t,r.baseClass);return null===i?null:r.downcast(i)},Ne={},$e=()=>Object.keys(je).length,Ge=()=>{var e=[];for(var t in je)je.hasOwnProperty(t)&&e.push(je[t]);return e},He=[],Ve=()=>{for(;He.length;){var e=He.pop();e.$$.deleteScheduled=!1,e.delete()}},We=e=>{Ie=e,He.length&&Ie&&Ie(Ve)},je={},Ye=(e,t)=>(t=((e,t)=>{for(void 0===t&&Be("ptr should not be undefined");e.baseClass;)t=e.upcast(t),e=e.baseClass;return t})(e,t),je[t]),qe=(e,t)=>(t.ptrType&&t.ptr||De("makeClassHandle requires ptr and ptrType"),!!t.smartPtrType!=!!t.smartPtr&&De("Both smartPtrType and smartPtr must be specified"),t.count={value:1},Xe(Object.create(e,{$$:{value:t}})));function Ke(e){var t=this.getPointee(e);if(!t)return this.destructor(e),null;var r=Ye(this.registeredClass,t);if(void 0!==r){if(0===r.$$.count.value)return r.$$.ptr=t,r.$$.smartPtr=e,r.clone();var i=r.clone();return this.destructor(e),i}function n(){return this.isSmartPointer?qe(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:t,smartPtrType:this,smartPtr:e}):qe(this.registeredClass.instancePrototype,{ptrType:this,ptr:e})}var s,a=this.registeredClass.getActualType(t),o=Ne[a];if(!o)return n.call(this);s=this.isConst?o.constPointerType:o.pointerType;var d=Oe(t,this.registeredClass,s.registeredClass);return null===d?n.call(this):this.isSmartPointer?qe(s.registeredClass.instancePrototype,{ptrType:s,ptr:d,smartPtrType:this,smartPtr:e}):qe(s.registeredClass.instancePrototype,{ptrType:s,ptr:d})}var Xe=e=>"undefined"==typeof FinalizationRegistry?(Xe=e=>e,e):(Re=new FinalizationRegistry((e=>{ze(e.$$)})),Xe=e=>{var t=e.$$;if(t.smartPtr){var r={$$:t};Re.register(e,r,e)}return e},Me=e=>Re.unregister(e),Xe(e));function Ze(){}var Je=(e,t)=>Object.defineProperty(t,"name",{value:e}),Qe=(e,t,r)=>{if(void 0===e[t].overloadTable){var i=e[t];e[t]=function(){return e[t].overloadTable.hasOwnProperty(arguments.length)||Be(`Function '${r}' called with an invalid number of arguments (${arguments.length}) - expects one of (${e[t].overloadTable})!`),e[t].overloadTable[arguments.length].apply(this,arguments)},e[t].overloadTable=[],e[t].overloadTable[i.argCount]=i}};function et(e,t,r,i,n,s,a,o){this.name=e,this.constructor=t,this.instancePrototype=r,this.rawDestructor=i,this.baseClass=n,this.getActualType=s,this.upcast=a,this.downcast=o,this.pureVirtualFunctions=[]}var tt=(e,t,r)=>{for(;t!==r;)t.upcast||Be(`Expected null or instance of ${r.name}, got an instance of ${t.name}`),e=t.upcast(e),t=t.baseClass;return e};function rt(e,t){if(null===t)return this.isReference&&Be(`null is not a valid ${this.name}`),0;t.$$||Be(`Cannot pass "${St(t)}" as a ${this.name}`),t.$$.ptr||Be(`Cannot pass deleted object as a pointer of type ${this.name}`);var r=t.$$.ptrType.registeredClass;return tt(t.$$.ptr,r,this.registeredClass)}function it(e,t){var r;if(null===t)return this.isReference&&Be(`null is not a valid ${this.name}`),this.isSmartPointer?(r=this.rawConstructor(),null!==e&&e.push(this.rawDestructor,r),r):0;t.$$||Be(`Cannot pass "${St(t)}" as a ${this.name}`),t.$$.ptr||Be(`Cannot pass deleted object as a pointer of type ${this.name}`),!this.isConst&&t.$$.ptrType.isConst&&Be(`Cannot convert argument of type ${t.$$.smartPtrType?t.$$.smartPtrType.name:t.$$.ptrType.name} to parameter type ${this.name}`);var i=t.$$.ptrType.registeredClass;if(r=tt(t.$$.ptr,i,this.registeredClass),this.isSmartPointer)switch(void 0===t.$$.smartPtr&&Be("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:t.$$.smartPtrType===this?r=t.$$.smartPtr:Be(`Cannot convert argument of type ${t.$$.smartPtrType?t.$$.smartPtrType.name:t.$$.ptrType.name} to parameter type ${this.name}`);break;case 1:r=t.$$.smartPtr;break;case 2:if(t.$$.smartPtrType===this)r=t.$$.smartPtr;else{var n=t.clone();r=this.rawShare(r,bt.toHandle((()=>n.delete()))),null!==e&&e.push(this.rawDestructor,r)}break;default:Be("Unsupporting sharing policy")}return r}function nt(e,t){if(null===t)return this.isReference&&Be(`null is not a valid ${this.name}`),0;t.$$||Be(`Cannot pass "${St(t)}" as a ${this.name}`),t.$$.ptr||Be(`Cannot pass deleted object as a pointer of type ${this.name}`),t.$$.ptrType.isConst&&Be(`Cannot convert argument of type ${t.$$.ptrType.name} to parameter type ${this.name}`);var r=t.$$.ptrType.registeredClass;return tt(t.$$.ptr,r,this.registeredClass)}function st(e){return this.fromWireType(P[e>>2])}function at(e,t,r,i,n,s,a,o,d,l,u){this.name=e,this.registeredClass=t,this.isReference=r,this.isConst=i,this.isSmartPointer=n,this.pointeeType=s,this.sharingPolicy=a,this.rawGetPointee=o,this.rawConstructor=d,this.rawShare=l,this.rawDestructor=u,n||void 0!==t.baseClass?this.toWireType=it:i?(this.toWireType=rt,this.destructorFunction=null):(this.toWireType=nt,this.destructorFunction=null)}var ot,dt=(e,t,r)=>e.includes("j")?((e,t,r)=>{var i=n["dynCall_"+e];return r&&r.length?i.apply(null,[t].concat(r)):i.call(null,t)})(e,t,r):ye(t).apply(null,r),lt=(e,t)=>{var r,i,n,s=(e=Ae(e)).includes("j")?(r=e,i=t,n=[],function(){return n.length=0,Object.assign(n,arguments),dt(r,i,n)}):ye(t);return"function"!=typeof s&&Be(`unknown function pointer with signature ${e}: ${t}`),s},ut=e=>{var t=Qt(e),r=Ae(t);return Xt(t),r},ct=(e,t)=>{var r=[],i={};throw t.forEach((function e(t){i[t]||ke[t]||(Ce[t]?Ce[t].forEach(e):(r.push(t),i[t]=!0))})),new ot(`${e}: `+r.map(ut).join([", "]))},ht=(e,t)=>{for(var r=[],i=0;i>2]);return r},ft=e=>{for(;e.length;){var t=e.pop();e.pop()(t)}};function pt(e,t){if(!(e instanceof Function))throw new TypeError(`new_ called with constructor type ${typeof e} which is not a function`);var r=Je(e.name||"unknownFunctionName",(function(){}));r.prototype=e.prototype;var i=new r,n=e.apply(i,t);return n instanceof Object?n:i}function mt(e,t,r,i,n,s){var a=t.length;a<2&&Be("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var o=null!==t[1]&&null!==r,d=!1,l=1;l0?", ":"")+h),f+=(u||s?"var rv = ":"")+"invoker(fn"+(h.length>0?", ":"")+h+");\n",d)f+="runDestructors(destructors);\n";else for(l=o?1:2;l{e>=yt.reserved&&0==--yt.get(e).refcount&&yt.free(e)},vt=()=>{for(var e=0,t=yt.reserved;t(e||Be("Cannot use deleted val. handle = "+e),yt.get(e).value),toHandle:e=>{switch(e){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:return yt.allocate({refcount:1,value:e})}}};function wt(e){return this.fromWireType(D[e>>2])}var St=e=>{if(null===e)return"null";var t=typeof e;return"object"===t||"array"===t||"function"===t?e.toString():""+e},Et=(e,t)=>{switch(t){case 4:return function(e){return this.fromWireType(F[e>>2])};case 8:return function(e){return this.fromWireType(I[e>>3])};default:throw new TypeError(`invalid float width (${t}): ${e}`)}},Ut=(e,t,r)=>{switch(t){case 1:return r?e=>T[0|e]:e=>k[0|e];case 2:return r?e=>C[e>>1]:e=>B[e>>1];case 4:return r?e=>D[e>>2]:e=>P[e>>2];default:throw new TypeError(`invalid integer width (${t}): ${e}`)}},xt="undefined"!=typeof TextDecoder?new TextDecoder("utf-16le"):void 0,At=(e,t)=>{for(var r=e,i=r>>1,n=i+t/2;!(i>=n)&&B[i];)++i;if((r=i<<1)-e>32&&xt)return xt.decode(k.slice(e,r));for(var s="",a=0;!(a>=t/2);++a){var o=C[e+2*a>>1];if(0==o)break;s+=String.fromCharCode(o)}return s},Tt=(e,t,r)=>{if(void 0===r&&(r=2147483647),r<2)return 0;for(var i=t,n=(r-=2)<2*e.length?r/2:e.length,s=0;s>1]=a,t+=2}return C[t>>1]=0,t-i},kt=e=>2*e.length,Ct=(e,t)=>{for(var r=0,i="";!(r>=t/4);){var n=D[e+4*r>>2];if(0==n)break;if(++r,n>=65536){var s=n-65536;i+=String.fromCharCode(55296|s>>10,56320|1023&s)}else i+=String.fromCharCode(n)}return i},Bt=(e,t,r)=>{if(void 0===r&&(r=2147483647),r<4)return 0;for(var i=t,n=i+r-4,s=0;s=55296&&a<=57343&&(a=65536+((1023&a)<<10)|1023&e.charCodeAt(++s)),D[t>>2]=a,(t+=4)+4>n)break}return D[t>>2]=0,t-i},Dt=e=>{for(var t=0,r=0;r=55296&&i<=57343&&++r,t+=4}return t},Pt=e=>{if(!R)try{e(),(()=>{if(!ne())try{f?nr(A):ue(A)}catch(e){ce(e)}})()}catch(e){ce(e)}},Ft=e=>{if("function"==typeof Atomics.waitAsync){Atomics.waitAsync(D,e>>2,e).value.then(It);var t=e+128;Atomics.store(D,t>>2,1)}};n.__emscripten_thread_mailbox_await=Ft;var It=()=>{var e=Jt();e&&(Ft(e),Pt(sr))};n.checkMailbox=It;var Lt,Rt=[],Mt={},zt=e=>{var t=Mt[e];return void 0===t?Ae(e):t},Ot=[],Nt=(e,t)=>{var r=ke[e];return void 0===r&&Be(t+" has unknown type "+ut(e)),r},$t=(e,t,r)=>{var i=[],n=e.toWireType(i,r);return i.length&&(P[t>>2]=bt.toHandle(i)),n};Lt=()=>performance.timeOrigin+performance.now();var Gt,Ht,Vt,Wt=[null,[],[]];function jt(e,t,r,i){if(f)return de(3,1,e,t,r,i);for(var n,s,a,o=0,d=0;d>2],u=P[t+4>>2];t+=8;for(var c=0;c>2]=o,0}he.init(),(()=>{for(var e=new Array(256),t=0;t<256;++t)e[t]=String.fromCharCode(t);Se=e})(),Ee=n.BindingError=class extends Error{constructor(e){super(e),this.name="BindingError"}},Ue=n.InternalError=class extends Error{constructor(e){super(e),this.name="InternalError"}},Object.assign(Ze.prototype,{isAliasOf(e){if(!(this instanceof Ze))return!1;if(!(e instanceof Ze))return!1;var t=this.$$.ptrType.registeredClass,r=this.$$.ptr;e.$$=e.$$;for(var i=e.$$.ptrType.registeredClass,n=e.$$.ptr;t.baseClass;)r=t.upcast(r),t=t.baseClass;for(;i.baseClass;)n=i.upcast(n),i=i.baseClass;return t===i&&r===n},clone(){if(this.$$.ptr||Le(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var e,t=Xe(Object.create(Object.getPrototypeOf(this),{$$:{value:(e=this.$$,{count:e.count,deleteScheduled:e.deleteScheduled,preservePointerOnDelete:e.preservePointerOnDelete,ptr:e.ptr,ptrType:e.ptrType,smartPtr:e.smartPtr,smartPtrType:e.smartPtrType})}}));return t.$$.count.value+=1,t.$$.deleteScheduled=!1,t},delete(){this.$$.ptr||Le(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&Be("Object already scheduled for deletion"),Me(this),ze(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)},isDeleted(){return!this.$$.ptr},deleteLater(){return this.$$.ptr||Le(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&Be("Object already scheduled for deletion"),He.push(this),1===He.length&&Ie&&Ie(Ve),this.$$.deleteScheduled=!0,this}}),n.getInheritedInstanceCount=$e,n.getLiveInheritedInstances=Ge,n.flushPendingDeletes=Ve,n.setDelayFunction=We,Object.assign(at.prototype,{getPointee(e){return this.rawGetPointee&&(e=this.rawGetPointee(e)),e},destructor(e){this.rawDestructor&&this.rawDestructor(e)},argPackAdvance:8,readValueFromPointer:st,deleteObject(e){null!==e&&e.delete()},fromWireType:Ke}),ot=n.UnboundTypeError=(Gt=Error,(Vt=Je(Ht="UnboundTypeError",(function(e){this.name=Ht,this.message=e;var t=new Error(e).stack;void 0!==t&&(this.stack=this.toString()+"\n"+t.replace(/^Error(:[^\n]*)?\n/,""))}))).prototype=Object.create(Gt.prototype),Vt.prototype.constructor=Vt,Vt.prototype.toString=function(){return void 0===this.message?this.name:`${this.name}: ${this.message}`},Vt),Object.assign(_t.prototype,{get(e){return this.allocated[e]},has(e){return void 0!==this.allocated[e]},allocate(e){var t=this.freelist.pop()||this.allocated.length;return this.allocated[t]=e,t},free(e){this.allocated[e]=void 0,this.freelist.push(e)}}),yt.allocated.push({value:void 0},{value:null},{value:!0},{value:!1}),yt.reserved=yt.allocated.length,n.count_emval_handles=vt;var Yt=[le,pe,we,jt],qt={e:(e,t,r,i)=>{Y(`Assertion failed: ${oe(e)}, at: `+[t?oe(t):"unknown filename",r,i?oe(i):"unknown function"])},s:(e,t,r)=>{throw new be(e).init(t,r),e},D:e=>{er(e,!c,1,!u,65536,!1),he.threadInitTLS()},m:e=>{f?postMessage({cmd:"cleanupThread",thread:e}):te(e)},A:xe,v:(e,t,r,i,n)=>{},J:(e,t,r,i)=>{Fe(e,{name:t=Ae(t),fromWireType:function(e){return!!e},toWireType:function(e,t){return t?r:i},argPackAdvance:8,readValueFromPointer:function(e){return this.fromWireType(k[e])},destructorFunction:null})},u:(e,t,r,i,s,a,o,d,l,u,c,h,f)=>{c=Ae(c),a=lt(s,a),d&&(d=lt(o,d)),u&&(u=lt(l,u)),f=lt(h,f);var p=(e=>{if(void 0===e)return"_unknown";var t=(e=e.replace(/[^a-zA-Z0-9_]/g,"$")).charCodeAt(0);return t>=48&&t<=57?`_${e}`:e})(c);((e,t,r)=>{n.hasOwnProperty(e)?((void 0===r||void 0!==n[e].overloadTable&&void 0!==n[e].overloadTable[r])&&Be(`Cannot register public name '${e}' twice`),Qe(n,e,e),n.hasOwnProperty(r)&&Be(`Cannot register multiple overloads of a function with the same number of arguments (${r})!`),n[e].overloadTable[r]=t):(n[e]=t,void 0!==r&&(n[e].numArguments=r))})(p,(function(){ct(`Cannot construct ${c} due to unbound types`,[i])})),Pe([e,t,r],i?[i]:[],(function(t){var r,s;t=t[0],s=i?(r=t.registeredClass).instancePrototype:Ze.prototype;var o=Je(c,(function(){if(Object.getPrototypeOf(this)!==l)throw new Ee("Use 'new' to construct "+c);if(void 0===h.constructor_body)throw new Ee(c+" has no accessible constructor");var e=h.constructor_body[arguments.length];if(void 0===e)throw new Ee(`Tried to invoke ctor of ${c} with invalid number of parameters (${arguments.length}) - expected (${Object.keys(h.constructor_body).toString()}) parameters instead!`);return e.apply(this,arguments)})),l=Object.create(s,{constructor:{value:o}});o.prototype=l;var h=new et(c,o,l,f,r,a,d,u);h.baseClass&&(void 0===h.baseClass.__derivedClasses&&(h.baseClass.__derivedClasses=[]),h.baseClass.__derivedClasses.push(h));var m=new at(c,h,!0,!1,!1),_=new at(c+"*",h,!1,!1,!1),y=new at(c+" const*",h,!1,!0,!1);return Ne[e]={pointerType:_,constPointerType:y},((e,t,r)=>{n.hasOwnProperty(e)||De("Replacing nonexistant public symbol"),void 0!==n[e].overloadTable&&void 0!==r?n[e].overloadTable[r]=t:(n[e]=t,n[e].argCount=r)})(p,o),[m,_,y]}))},t:(e,t,r,i,n,s)=>{var a=ht(t,r);n=lt(i,n),Pe([],[e],(function(e){var r=`constructor ${(e=e[0]).name}`;if(void 0===e.registeredClass.constructor_body&&(e.registeredClass.constructor_body=[]),void 0!==e.registeredClass.constructor_body[t-1])throw new Ee(`Cannot register multiple constructors with identical number of parameters (${t-1}) for class '${e.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`);return e.registeredClass.constructor_body[t-1]=()=>{ct(`Cannot construct ${e.name} due to unbound types`,a)},Pe([],a,(i=>(i.splice(1,0,null),e.registeredClass.constructor_body[t-1]=mt(r,i,null,n,s),[]))),[]}))},i:(e,t,r,i,n,s,a,o,d)=>{var l=ht(r,i);t=(e=>{const t=(e=e.trim()).indexOf("(");return-1!==t?e.substr(0,t):e})(t=Ae(t)),s=lt(n,s),Pe([],[e],(function(e){var i=`${(e=e[0]).name}.${t}`;function n(){ct(`Cannot call ${i} due to unbound types`,l)}t.startsWith("@@")&&(t=Symbol[t.substring(2)]),o&&e.registeredClass.pureVirtualFunctions.push(t);var u=e.registeredClass.instancePrototype,c=u[t];return void 0===c||void 0===c.overloadTable&&c.className!==e.name&&c.argCount===r-2?(n.argCount=r-2,n.className=e.name,u[t]=n):(Qe(u,t,i),u[t].overloadTable[r-2]=n),Pe([],l,(function(n){var o=mt(i,n,e,s,a,d);return void 0===u[t].overloadTable?(o.argCount=r-2,u[t]=o):u[t].overloadTable[r-2]=o,[]})),[]}))},I:(e,t)=>{Fe(e,{name:t=Ae(t),fromWireType:e=>{var t=bt.toValue(e);return gt(e),t},toWireType:(e,t)=>bt.toHandle(t),argPackAdvance:8,readValueFromPointer:wt,destructorFunction:null})},o:(e,t,r)=>{Fe(e,{name:t=Ae(t),fromWireType:e=>e,toWireType:(e,t)=>t,argPackAdvance:8,readValueFromPointer:Et(t,r),destructorFunction:null})},c:(e,t,r,i,n)=>{t=Ae(t);var s=e=>e;if(0===i){var a=32-8*r;s=e=>e<>>a}var o=t.includes("unsigned");Fe(e,{name:t,fromWireType:s,toWireType:o?function(e,t){return this.name,t>>>0}:function(e,t){return this.name,t},argPackAdvance:8,readValueFromPointer:Ut(t,r,0!==i),destructorFunction:null})},b:(e,t,r)=>{var i=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][t];function n(e){var t=P[e>>2],r=P[e+4>>2];return new i(T.buffer,r,t)}Fe(e,{name:r=Ae(r),fromWireType:n,argPackAdvance:8,readValueFromPointer:n},{ignoreDuplicateRegistrations:!0})},p:(e,t)=>{var r="std::string"===(t=Ae(t));Fe(e,{name:t,fromWireType(e){var t,i=P[e>>2],n=e+4;if(r)for(var s=n,a=0;a<=i;++a){var o=n+a;if(a==i||0==k[o]){var d=oe(s,o-s);void 0===t?t=d:(t+=String.fromCharCode(0),t+=d),s=o+1}}else{var l=new Array(i);for(a=0;a{for(var t=0,r=0;r=55296&&i<=57343?(t+=4,++r):t+=3}return t})(t):t.length;var s=Zt(4+i+1),a=s+4;if(P[s>>2]=i,r&&n)((e,t,r,i)=>{if(!(i>0))return 0;for(var n=r+i-1,s=0;s=55296&&a<=57343&&(a=65536+((1023&a)<<10)|1023&e.charCodeAt(++s)),a<=127){if(r>=n)break;t[r++]=a}else if(a<=2047){if(r+1>=n)break;t[r++]=192|a>>6,t[r++]=128|63&a}else if(a<=65535){if(r+2>=n)break;t[r++]=224|a>>12,t[r++]=128|a>>6&63,t[r++]=128|63&a}else{if(r+3>=n)break;t[r++]=240|a>>18,t[r++]=128|a>>12&63,t[r++]=128|a>>6&63,t[r++]=128|63&a}}t[r]=0})(t,k,a,i+1);else if(n)for(var o=0;o255&&(Xt(a),Be("String has UTF-16 code units that do not fit in 8 bits")),k[a+o]=d}else for(o=0;o{var i,n,s,a,o;r=Ae(r),2===t?(i=At,n=Tt,a=kt,s=()=>B,o=1):4===t&&(i=Ct,n=Bt,a=Dt,s=()=>P,o=2),Fe(e,{name:r,fromWireType:e=>{for(var r,n=P[e>>2],a=s(),d=e+4,l=0;l<=n;++l){var u=e+4+l*t;if(l==n||0==a[u>>o]){var c=i(d,u-d);void 0===r?r=c:(r+=String.fromCharCode(0),r+=c),d=u+t}}return Xt(e),r},toWireType:(e,i)=>{"string"!=typeof i&&Be(`Cannot pass non-string to C++ string type ${r}`);var s=a(i),d=Zt(4+s+t);return P[d>>2]=s>>o,n(i,d+4,s+t),null!==e&&e.push(Xt,d),d},argPackAdvance:8,readValueFromPointer:wt,destructorFunction(e){Xt(e)}})},K:(e,t)=>{Fe(e,{isVoid:!0,name:t=Ae(t),argPackAdvance:0,fromWireType:()=>{},toWireType:(e,t)=>{}})},x:(e,t,r)=>{if(e==t)setTimeout((()=>It()));else if(f)postMessage({targetThread:e,cmd:"checkMailbox"});else{var i=he.pthreads[e];if(!i)return;i.postMessage({cmd:"checkMailbox"})}},E:(e,t,r,i)=>{Rt.length=r;for(var n=i>>3,s=0;s{h&&he.pthreads[e].ref()},h:(e,t,r,i,n)=>(e=Ot[e])(t=bt.toValue(t),t[r=zt(r)],i,n),d:gt,g:(e,t,r)=>{var i=((e,t)=>{for(var r=new Array(e),i=0;i>2],"parameter "+i);return r})(e,t),n=i.shift();e--;var s="return function (obj, func, destructorsRef, args) {\n",a=0,o=[];0===r&&o.push("obj");for(var d=["retType"],l=[n],u=0;ue.name)).join(", ")}) => ${n.name}>`;return c=Je(p,f),h=Ot.length,Ot.push(c),h},L:e=>{e>4&&(yt.get(e).refcount+=1)},q:e=>bt.toHandle(zt(e)),H:()=>bt.toHandle({}),B:e=>bt.toHandle(oe(e)),k:e=>{var t=bt.toValue(e);ft(t),gt(e)},r:(e,t,r)=>{e=bt.toValue(e),t=bt.toValue(t),r=bt.toValue(r),e[t]=r},M:(e,t)=>{var r=(e=Nt(e,"_emval_take_value")).readValueFromPointer(t);return bt.toHandle(r)},l:()=>{Y("")},n:()=>{},F:()=>{throw ie+=1,"unwind"},f:Lt,w:e=>{k.length,Y("OOM")},z:ue,y:jt,a:S||n.wasmMemory},Kt=function(){var e,t,r,s,a={a:qt};function o(e,t){var r;return Kt=e.exports,ve(Kt.R),me=Kt.V,r=Kt.N,O.unshift(r),E=t,j(),Kt}if(W(),n.instantiateWasm)try{return n.instantiateWasm(a,o)}catch(e){x(`Module.instantiateWasm callback failed with error: ${e}`),i(e)}return(e=w,t=q,r=a,s=function(e){o(e.instance,e.module)},e||"function"!=typeof WebAssembly.instantiateStreaming||K(t)||X(t)||h||"function"!=typeof fetch?J(t,r,s):fetch(t,{credentials:"same-origin"}).then((e=>WebAssembly.instantiateStreaming(e,r).then(s,(function(e){return x(`wasm streaming compile failed: ${e}`),x("falling back to ArrayBuffer instantiation"),J(t,r,s)}))))).catch(i),{}}(),Xt=e=>(Xt=Kt.O)(e),Zt=e=>(Zt=Kt.P)(e),Jt=n._pthread_self=()=>(Jt=n._pthread_self=Kt.Q)();n.__emscripten_tls_init=()=>(n.__emscripten_tls_init=Kt.R)();var Qt=e=>(Qt=Kt.S)(e);n.__embind_initialize_bindings=()=>(n.__embind_initialize_bindings=Kt.T)();var er=n.__emscripten_thread_init=(e,t,r,i,s,a)=>(er=n.__emscripten_thread_init=Kt.U)(e,t,r,i,s,a);n.__emscripten_thread_crashed=()=>(n.__emscripten_thread_crashed=Kt.W)();var tr,rr=(e,t,r,i)=>(rr=Kt.X)(e,t,r,i),ir=e=>(ir=Kt.Y)(e),nr=n.__emscripten_thread_exit=e=>(nr=n.__emscripten_thread_exit=Kt.Z)(e),sr=()=>(sr=Kt._)(),ar=(e,t)=>(ar=Kt.$)(e,t),or=()=>(or=Kt.aa)(),dr=e=>(dr=Kt.ba)(e),lr=e=>(lr=Kt.ca)(e),ur=e=>(ur=Kt.da)(e);function cr(){if(!(H>0)){if(f)return r(n),$(),void startWorker(n);!function(){if(n.preRun)for("function"==typeof n.preRun&&(n.preRun=[n.preRun]);n.preRun.length;)G(n.preRun.shift());fe(z)}(),H>0||(n.setStatus?(n.setStatus("Running..."),setTimeout((function(){setTimeout((function(){n.setStatus("")}),1),e()}),1)):e())}function e(){tr||(tr=!0,n.calledRun=!0,R||($(),r(n),n.onRuntimeInitialized&&n.onRuntimeInitialized(),function(){if(!f){if(n.postRun)for("function"==typeof n.postRun&&(n.postRun=[n.postRun]);n.postRun.length;)e=n.postRun.shift(),N.unshift(e);var e;fe(N)}}()))}}if(n.dynCall_jiji=(e,t,r,i,s)=>(n.dynCall_jiji=Kt.ea)(e,t,r,i,s),n.___start_em_js=143500,n.___stop_em_js=143557,n.wasmMemory=S,n.keepRuntimeAlive=ne,n.ExitStatus=Q,n.PThread=he,V=function e(){tr||cr(),tr||(V=e)},n.preInit)for("function"==typeof n.preInit&&(n.preInit=[n.preInit]);n.preInit.length>0;)n.preInit.pop()();return cr(),t.ready}),r=(()=>{var e="undefined"==typeof document&&"undefined"==typeof location?new(require("url").URL)("file:"+__filename).href:"undefined"==typeof document?location.href:document.currentScript&&document.currentScript.src||new URL("decoder-pro-simd-mt.js",document.baseURI).href;return function(t){var r,i;(t=void 0!==(t=t||{})?t:{}).ready=new Promise((function(e,t){r=e,i=t})),(t=void 0!==t?t:{}).locateFile=function(e){return"decoder-pro-audio.wasm"==e&&"undefined"!=typeof EASYPLAYER_PRO_AUDIO_WASM_URL&&""!=EASYPLAYER_PRO_AUDIO_WASM_URL?EASYPLAYER_PRO_AUDIO_WASM_URL:e};var n,s,a,o,d,l,u=Object.assign({},t),c="./this.program",h="object"==typeof window,f="function"==typeof importScripts,p="object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node,m="";p?(m=f?require("path").dirname(m)+"/":__dirname+"/",l=()=>{d||(o=require("fs"),d=require("path"))},n=function(e,t){return l(),e=d.normalize(e),o.readFileSync(e,t?void 0:"utf8")},a=e=>{var t=n(e,!0);return t.buffer||(t=new Uint8Array(t)),t},s=(e,t,r)=>{l(),e=d.normalize(e),o.readFile(e,(function(e,i){e?r(e):t(i.buffer)}))},process.argv.length>1&&(c=process.argv[1].replace(/\\/g,"/")),process.argv.slice(2),process.on("uncaughtException",(function(e){if(!(e instanceof ee))throw e})),process.on("unhandledRejection",(function(e){throw e})),t.inspect=function(){return"[Emscripten Module object]"}):(h||f)&&(f?m=self.location.href:"undefined"!=typeof document&&document.currentScript&&(m=document.currentScript.src),e&&(m=e),m=0!==m.indexOf("blob:")?m.substr(0,m.replace(/[?#].*/,"").lastIndexOf("/")+1):"",n=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.send(null),t.responseText},f&&(a=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.responseType="arraybuffer",t.send(null),new Uint8Array(t.response)}),s=(e,t,r)=>{var i=new XMLHttpRequest;i.open("GET",e,!0),i.responseType="arraybuffer",i.onload=()=>{200==i.status||0==i.status&&i.response?t(i.response):r()},i.onerror=r,i.send(null)});var _=t.print||console.log.bind(console),y=t.printErr||console.warn.bind(console);Object.assign(t,u),u=null,t.arguments&&t.arguments,t.thisProgram&&(c=t.thisProgram),t.quit&&t.quit;var g,v,b=4;t.wasmBinary&&(g=t.wasmBinary),t.noExitRuntime,"object"!=typeof WebAssembly&&W("no native wasm support detected");var w=!1;function S(e,t){e||W(t)}var E,U,x,A,T,k,C,B,D,P,F="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0;function I(e,t,r){for(var i=t+r,n=t;e[n]&&!(n>=i);)++n;if(n-t>16&&e.buffer&&F)return F.decode(e.subarray(t,n));for(var s="";t>10,56320|1023&l)}}else s+=String.fromCharCode((31&a)<<6|o)}else s+=String.fromCharCode(a)}return s}function L(e,t){return e?I(x,e,t):""}function R(e,t,r,i){if(!(i>0))return 0;for(var n=r,s=r+i-1,a=0;a=55296&&o<=57343)o=65536+((1023&o)<<10)|1023&e.charCodeAt(++a);if(o<=127){if(r>=s)break;t[r++]=o}else if(o<=2047){if(r+1>=s)break;t[r++]=192|o>>6,t[r++]=128|63&o}else if(o<=65535){if(r+2>=s)break;t[r++]=224|o>>12,t[r++]=128|o>>6&63,t[r++]=128|63&o}else{if(r+3>=s)break;t[r++]=240|o>>18,t[r++]=128|o>>12&63,t[r++]=128|o>>6&63,t[r++]=128|63&o}}return t[r]=0,r-n}function M(e){for(var t=0,r=0;r=55296&&i<=57343?(t+=4,++r):t+=3}return t}t.INITIAL_MEMORY;var z=[],O=[],N=[];var $=0,G=null;function H(e){$++,t.monitorRunDependencies&&t.monitorRunDependencies($)}function V(e){if($--,t.monitorRunDependencies&&t.monitorRunDependencies($),0==$&&G){var r=G;G=null,r()}}function W(e){t.onAbort&&t.onAbort(e),y(e="Aborted("+e+")"),w=!0,e+=". Build with -sASSERTIONS for more info.";var r=new WebAssembly.RuntimeError(e);throw i(r),r}var j,Y,q,K,X="data:application/octet-stream;base64,";function Z(e){return e.startsWith(X)}function J(e){return e.startsWith("file://")}function Q(e){try{if(e==j&&g)return new Uint8Array(g);if(a)return a(e);throw"both async and sync fetching of the wasm failed"}catch(e){W(e)}}function ee(e){this.name="ExitStatus",this.message="Program terminated with exit("+e+")",this.status=e}function te(e){for(;e.length>0;)e.shift()(t)}function re(e){this.excPtr=e,this.ptr=e-24,this.set_type=function(e){C[this.ptr+4>>2]=e},this.get_type=function(){return C[this.ptr+4>>2]},this.set_destructor=function(e){C[this.ptr+8>>2]=e},this.get_destructor=function(){return C[this.ptr+8>>2]},this.set_refcount=function(e){k[this.ptr>>2]=e},this.set_caught=function(e){e=e?1:0,U[this.ptr+12|0]=e},this.get_caught=function(){return 0!=U[this.ptr+12|0]},this.set_rethrown=function(e){e=e?1:0,U[this.ptr+13|0]=e},this.get_rethrown=function(){return 0!=U[this.ptr+13|0]},this.init=function(e,t){this.set_adjusted_ptr(0),this.set_type(e),this.set_destructor(t),this.set_refcount(0),this.set_caught(!1),this.set_rethrown(!1)},this.add_ref=function(){var e=k[this.ptr>>2];k[this.ptr>>2]=e+1},this.release_ref=function(){var e=k[this.ptr>>2];return k[this.ptr>>2]=e-1,1===e},this.set_adjusted_ptr=function(e){C[this.ptr+16>>2]=e},this.get_adjusted_ptr=function(){return C[this.ptr+16>>2]},this.get_exception_ptr=function(){if(Xt(this.get_type()))return C[this.excPtr>>2];var e=this.get_adjusted_ptr();return 0!==e?e:this.excPtr}}t.locateFile?Z(j="decoder-pro-audio.wasm")||(Y=j,j=t.locateFile?t.locateFile(Y,m):m+Y):j=new URL("decoder-pro-audio.wasm","undefined"==typeof document&&"undefined"==typeof location?new(require("url").URL)("file:"+__filename).href:"undefined"==typeof document?location.href:document.currentScript&&document.currentScript.src||new URL("decoder-pro-simd-mt.js",document.baseURI).href).toString();var ie={isAbs:e=>"/"===e.charAt(0),splitPath:e=>/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(e).slice(1),normalizeArray:(e,t)=>{for(var r=0,i=e.length-1;i>=0;i--){var n=e[i];"."===n?e.splice(i,1):".."===n?(e.splice(i,1),r++):r&&(e.splice(i,1),r--)}if(t)for(;r;r--)e.unshift("..");return e},normalize:e=>{var t=ie.isAbs(e),r="/"===e.substr(-1);return(e=ie.normalizeArray(e.split("/").filter((e=>!!e)),!t).join("/"))||t||(e="."),e&&r&&(e+="/"),(t?"/":"")+e},dirname:e=>{var t=ie.splitPath(e),r=t[0],i=t[1];return r||i?(i&&(i=i.substr(0,i.length-1)),r+i):"."},basename:e=>{if("/"===e)return"/";var t=(e=(e=ie.normalize(e)).replace(/\/$/,"")).lastIndexOf("/");return-1===t?e:e.substr(t+1)},join:function(){var e=Array.prototype.slice.call(arguments,0);return ie.normalize(e.join("/"))},join2:(e,t)=>ie.normalize(e+"/"+t)};var ne={resolve:function(){for(var e="",t=!1,r=arguments.length-1;r>=-1&&!t;r--){var i=r>=0?arguments[r]:le.cwd();if("string"!=typeof i)throw new TypeError("Arguments to path.resolve must be strings");if(!i)return"";e=i+"/"+e,t=ie.isAbs(i)}return(t?"/":"")+(e=ie.normalizeArray(e.split("/").filter((e=>!!e)),!t).join("/"))||"."},relative:(e,t)=>{function r(e){for(var t=0;t=0&&""===e[r];r--);return t>r?[]:e.slice(t,r-t+1)}e=ne.resolve(e).substr(1),t=ne.resolve(t).substr(1);for(var i=r(e.split("/")),n=r(t.split("/")),s=Math.min(i.length,n.length),a=s,o=0;o0?r:M(e)+1,n=new Array(i),s=R(e,n,0,n.length);return t&&(n.length=s),n}var ae={ttys:[],init:function(){},shutdown:function(){},register:function(e,t){ae.ttys[e]={input:[],output:[],ops:t},le.registerDevice(e,ae.stream_ops)},stream_ops:{open:function(e){var t=ae.ttys[e.node.rdev];if(!t)throw new le.ErrnoError(43);e.tty=t,e.seekable=!1},close:function(e){e.tty.ops.flush(e.tty)},flush:function(e){e.tty.ops.flush(e.tty)},read:function(e,t,r,i,n){if(!e.tty||!e.tty.ops.get_char)throw new le.ErrnoError(60);for(var s=0,a=0;a0?r.slice(0,i).toString("utf-8"):null}else"undefined"!=typeof window&&"function"==typeof window.prompt?null!==(t=window.prompt("Input: "))&&(t+="\n"):"function"==typeof readline&&null!==(t=readline())&&(t+="\n");if(!t)return null;e.input=se(t,!0)}return e.input.shift()},put_char:function(e,t){null===t||10===t?(_(I(e.output,0)),e.output=[]):0!=t&&e.output.push(t)},flush:function(e){e.output&&e.output.length>0&&(_(I(e.output,0)),e.output=[])}},default_tty1_ops:{put_char:function(e,t){null===t||10===t?(y(I(e.output,0)),e.output=[]):0!=t&&e.output.push(t)},flush:function(e){e.output&&e.output.length>0&&(y(I(e.output,0)),e.output=[])}}};function oe(e){e=function(e,t){return Math.ceil(e/t)*t}(e,65536);var t=Kt(65536,e);return t?(function(e,t){x.fill(0,e,e+t)}(t,e),t):0}var de={ops_table:null,mount:function(e){return de.createNode(null,"/",16895,0)},createNode:function(e,t,r,i){if(le.isBlkdev(r)||le.isFIFO(r))throw new le.ErrnoError(63);de.ops_table||(de.ops_table={dir:{node:{getattr:de.node_ops.getattr,setattr:de.node_ops.setattr,lookup:de.node_ops.lookup,mknod:de.node_ops.mknod,rename:de.node_ops.rename,unlink:de.node_ops.unlink,rmdir:de.node_ops.rmdir,readdir:de.node_ops.readdir,symlink:de.node_ops.symlink},stream:{llseek:de.stream_ops.llseek}},file:{node:{getattr:de.node_ops.getattr,setattr:de.node_ops.setattr},stream:{llseek:de.stream_ops.llseek,read:de.stream_ops.read,write:de.stream_ops.write,allocate:de.stream_ops.allocate,mmap:de.stream_ops.mmap,msync:de.stream_ops.msync}},link:{node:{getattr:de.node_ops.getattr,setattr:de.node_ops.setattr,readlink:de.node_ops.readlink},stream:{}},chrdev:{node:{getattr:de.node_ops.getattr,setattr:de.node_ops.setattr},stream:le.chrdev_stream_ops}});var n=le.createNode(e,t,r,i);return le.isDir(n.mode)?(n.node_ops=de.ops_table.dir.node,n.stream_ops=de.ops_table.dir.stream,n.contents={}):le.isFile(n.mode)?(n.node_ops=de.ops_table.file.node,n.stream_ops=de.ops_table.file.stream,n.usedBytes=0,n.contents=null):le.isLink(n.mode)?(n.node_ops=de.ops_table.link.node,n.stream_ops=de.ops_table.link.stream):le.isChrdev(n.mode)&&(n.node_ops=de.ops_table.chrdev.node,n.stream_ops=de.ops_table.chrdev.stream),n.timestamp=Date.now(),e&&(e.contents[t]=n,e.timestamp=n.timestamp),n},getFileDataAsTypedArray:function(e){return e.contents?e.contents.subarray?e.contents.subarray(0,e.usedBytes):new Uint8Array(e.contents):new Uint8Array(0)},expandFileStorage:function(e,t){var r=e.contents?e.contents.length:0;if(!(r>=t)){t=Math.max(t,r*(r<1048576?2:1.125)>>>0),0!=r&&(t=Math.max(t,256));var i=e.contents;e.contents=new Uint8Array(t),e.usedBytes>0&&e.contents.set(i.subarray(0,e.usedBytes),0)}},resizeFileStorage:function(e,t){if(e.usedBytes!=t)if(0==t)e.contents=null,e.usedBytes=0;else{var r=e.contents;e.contents=new Uint8Array(t),r&&e.contents.set(r.subarray(0,Math.min(t,e.usedBytes))),e.usedBytes=t}},node_ops:{getattr:function(e){var t={};return t.dev=le.isChrdev(e.mode)?e.id:1,t.ino=e.id,t.mode=e.mode,t.nlink=1,t.uid=0,t.gid=0,t.rdev=e.rdev,le.isDir(e.mode)?t.size=4096:le.isFile(e.mode)?t.size=e.usedBytes:le.isLink(e.mode)?t.size=e.link.length:t.size=0,t.atime=new Date(e.timestamp),t.mtime=new Date(e.timestamp),t.ctime=new Date(e.timestamp),t.blksize=4096,t.blocks=Math.ceil(t.size/t.blksize),t},setattr:function(e,t){void 0!==t.mode&&(e.mode=t.mode),void 0!==t.timestamp&&(e.timestamp=t.timestamp),void 0!==t.size&&de.resizeFileStorage(e,t.size)},lookup:function(e,t){throw le.genericErrors[44]},mknod:function(e,t,r,i){return de.createNode(e,t,r,i)},rename:function(e,t,r){if(le.isDir(e.mode)){var i;try{i=le.lookupNode(t,r)}catch(e){}if(i)for(var n in i.contents)throw new le.ErrnoError(55)}delete e.parent.contents[e.name],e.parent.timestamp=Date.now(),e.name=r,t.contents[r]=e,t.timestamp=e.parent.timestamp,e.parent=t},unlink:function(e,t){delete e.contents[t],e.timestamp=Date.now()},rmdir:function(e,t){var r=le.lookupNode(e,t);for(var i in r.contents)throw new le.ErrnoError(55);delete e.contents[t],e.timestamp=Date.now()},readdir:function(e){var t=[".",".."];for(var r in e.contents)e.contents.hasOwnProperty(r)&&t.push(r);return t},symlink:function(e,t,r){var i=de.createNode(e,t,41471,0);return i.link=r,i},readlink:function(e){if(!le.isLink(e.mode))throw new le.ErrnoError(28);return e.link}},stream_ops:{read:function(e,t,r,i,n){var s=e.node.contents;if(n>=e.node.usedBytes)return 0;var a=Math.min(e.node.usedBytes-n,i);if(a>8&&s.subarray)t.set(s.subarray(n,n+a),r);else for(var o=0;o0||r+t{if(!(e=ne.resolve(le.cwd(),e)))return{path:"",node:null};if((t=Object.assign({follow_mount:!0,recurse_count:0},t)).recurse_count>8)throw new le.ErrnoError(32);for(var r=ie.normalizeArray(e.split("/").filter((e=>!!e)),!1),i=le.root,n="/",s=0;s40)throw new le.ErrnoError(32)}}return{path:n,node:i}},getPath:e=>{for(var t;;){if(le.isRoot(e)){var r=e.mount.mountpoint;return t?"/"!==r[r.length-1]?r+"/"+t:r+t:r}t=t?e.name+"/"+t:e.name,e=e.parent}},hashName:(e,t)=>{for(var r=0,i=0;i>>0)%le.nameTable.length},hashAddNode:e=>{var t=le.hashName(e.parent.id,e.name);e.name_next=le.nameTable[t],le.nameTable[t]=e},hashRemoveNode:e=>{var t=le.hashName(e.parent.id,e.name);if(le.nameTable[t]===e)le.nameTable[t]=e.name_next;else for(var r=le.nameTable[t];r;){if(r.name_next===e){r.name_next=e.name_next;break}r=r.name_next}},lookupNode:(e,t)=>{var r=le.mayLookup(e);if(r)throw new le.ErrnoError(r,e);for(var i=le.hashName(e.id,t),n=le.nameTable[i];n;n=n.name_next){var s=n.name;if(n.parent.id===e.id&&s===t)return n}return le.lookup(e,t)},createNode:(e,t,r,i)=>{var n=new le.FSNode(e,t,r,i);return le.hashAddNode(n),n},destroyNode:e=>{le.hashRemoveNode(e)},isRoot:e=>e===e.parent,isMountpoint:e=>!!e.mounted,isFile:e=>32768==(61440&e),isDir:e=>16384==(61440&e),isLink:e=>40960==(61440&e),isChrdev:e=>8192==(61440&e),isBlkdev:e=>24576==(61440&e),isFIFO:e=>4096==(61440&e),isSocket:e=>!(49152&~e),flagModes:{r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090},modeStringToFlags:e=>{var t=le.flagModes[e];if(void 0===t)throw new Error("Unknown file open mode: "+e);return t},flagsToPermissionString:e=>{var t=["r","w","rw"][3&e];return 512&e&&(t+="w"),t},nodePermissions:(e,t)=>le.ignorePermissions||(!t.includes("r")||292&e.mode)&&(!t.includes("w")||146&e.mode)&&(!t.includes("x")||73&e.mode)?0:2,mayLookup:e=>{var t=le.nodePermissions(e,"x");return t||(e.node_ops.lookup?0:2)},mayCreate:(e,t)=>{try{le.lookupNode(e,t);return 20}catch(e){}return le.nodePermissions(e,"wx")},mayDelete:(e,t,r)=>{var i;try{i=le.lookupNode(e,t)}catch(e){return e.errno}var n=le.nodePermissions(e,"wx");if(n)return n;if(r){if(!le.isDir(i.mode))return 54;if(le.isRoot(i)||le.getPath(i)===le.cwd())return 10}else if(le.isDir(i.mode))return 31;return 0},mayOpen:(e,t)=>e?le.isLink(e.mode)?32:le.isDir(e.mode)&&("r"!==le.flagsToPermissionString(t)||512&t)?31:le.nodePermissions(e,le.flagsToPermissionString(t)):44,MAX_OPEN_FDS:4096,nextfd:(e=0,t=le.MAX_OPEN_FDS)=>{for(var r=e;r<=t;r++)if(!le.streams[r])return r;throw new le.ErrnoError(33)},getStream:e=>le.streams[e],createStream:(e,t,r)=>{le.FSStream||(le.FSStream=function(){this.shared={}},le.FSStream.prototype={},Object.defineProperties(le.FSStream.prototype,{object:{get:function(){return this.node},set:function(e){this.node=e}},isRead:{get:function(){return 1!=(2097155&this.flags)}},isWrite:{get:function(){return!!(2097155&this.flags)}},isAppend:{get:function(){return 1024&this.flags}},flags:{get:function(){return this.shared.flags},set:function(e){this.shared.flags=e}},position:{get:function(){return this.shared.position},set:function(e){this.shared.position=e}}})),e=Object.assign(new le.FSStream,e);var i=le.nextfd(t,r);return e.fd=i,le.streams[i]=e,e},closeStream:e=>{le.streams[e]=null},chrdev_stream_ops:{open:e=>{var t=le.getDevice(e.node.rdev);e.stream_ops=t.stream_ops,e.stream_ops.open&&e.stream_ops.open(e)},llseek:()=>{throw new le.ErrnoError(70)}},major:e=>e>>8,minor:e=>255&e,makedev:(e,t)=>e<<8|t,registerDevice:(e,t)=>{le.devices[e]={stream_ops:t}},getDevice:e=>le.devices[e],getMounts:e=>{for(var t=[],r=[e];r.length;){var i=r.pop();t.push(i),r.push.apply(r,i.mounts)}return t},syncfs:(e,t)=>{"function"==typeof e&&(t=e,e=!1),le.syncFSRequests++,le.syncFSRequests>1&&y("warning: "+le.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work");var r=le.getMounts(le.root.mount),i=0;function n(e){return le.syncFSRequests--,t(e)}function s(e){if(e)return s.errored?void 0:(s.errored=!0,n(e));++i>=r.length&&n(null)}r.forEach((t=>{if(!t.type.syncfs)return s(null);t.type.syncfs(t,e,s)}))},mount:(e,t,r)=>{var i,n="/"===r,s=!r;if(n&&le.root)throw new le.ErrnoError(10);if(!n&&!s){var a=le.lookupPath(r,{follow_mount:!1});if(r=a.path,i=a.node,le.isMountpoint(i))throw new le.ErrnoError(10);if(!le.isDir(i.mode))throw new le.ErrnoError(54)}var o={type:e,opts:t,mountpoint:r,mounts:[]},d=e.mount(o);return d.mount=o,o.root=d,n?le.root=d:i&&(i.mounted=o,i.mount&&i.mount.mounts.push(o)),d},unmount:e=>{var t=le.lookupPath(e,{follow_mount:!1});if(!le.isMountpoint(t.node))throw new le.ErrnoError(28);var r=t.node,i=r.mounted,n=le.getMounts(i);Object.keys(le.nameTable).forEach((e=>{for(var t=le.nameTable[e];t;){var r=t.name_next;n.includes(t.mount)&&le.destroyNode(t),t=r}})),r.mounted=null;var s=r.mount.mounts.indexOf(i);r.mount.mounts.splice(s,1)},lookup:(e,t)=>e.node_ops.lookup(e,t),mknod:(e,t,r)=>{var i=le.lookupPath(e,{parent:!0}).node,n=ie.basename(e);if(!n||"."===n||".."===n)throw new le.ErrnoError(28);var s=le.mayCreate(i,n);if(s)throw new le.ErrnoError(s);if(!i.node_ops.mknod)throw new le.ErrnoError(63);return i.node_ops.mknod(i,n,t,r)},create:(e,t)=>(t=void 0!==t?t:438,t&=4095,t|=32768,le.mknod(e,t,0)),mkdir:(e,t)=>(t=void 0!==t?t:511,t&=1023,t|=16384,le.mknod(e,t,0)),mkdirTree:(e,t)=>{for(var r=e.split("/"),i="",n=0;n(void 0===r&&(r=t,t=438),t|=8192,le.mknod(e,t,r)),symlink:(e,t)=>{if(!ne.resolve(e))throw new le.ErrnoError(44);var r=le.lookupPath(t,{parent:!0}).node;if(!r)throw new le.ErrnoError(44);var i=ie.basename(t),n=le.mayCreate(r,i);if(n)throw new le.ErrnoError(n);if(!r.node_ops.symlink)throw new le.ErrnoError(63);return r.node_ops.symlink(r,i,e)},rename:(e,t)=>{var r,i,n=ie.dirname(e),s=ie.dirname(t),a=ie.basename(e),o=ie.basename(t);if(r=le.lookupPath(e,{parent:!0}).node,i=le.lookupPath(t,{parent:!0}).node,!r||!i)throw new le.ErrnoError(44);if(r.mount!==i.mount)throw new le.ErrnoError(75);var d,l=le.lookupNode(r,a),u=ne.relative(e,s);if("."!==u.charAt(0))throw new le.ErrnoError(28);if("."!==(u=ne.relative(t,n)).charAt(0))throw new le.ErrnoError(55);try{d=le.lookupNode(i,o)}catch(e){}if(l!==d){var c=le.isDir(l.mode),h=le.mayDelete(r,a,c);if(h)throw new le.ErrnoError(h);if(h=d?le.mayDelete(i,o,c):le.mayCreate(i,o))throw new le.ErrnoError(h);if(!r.node_ops.rename)throw new le.ErrnoError(63);if(le.isMountpoint(l)||d&&le.isMountpoint(d))throw new le.ErrnoError(10);if(i!==r&&(h=le.nodePermissions(r,"w")))throw new le.ErrnoError(h);le.hashRemoveNode(l);try{r.node_ops.rename(l,i,o)}catch(e){throw e}finally{le.hashAddNode(l)}}},rmdir:e=>{var t=le.lookupPath(e,{parent:!0}).node,r=ie.basename(e),i=le.lookupNode(t,r),n=le.mayDelete(t,r,!0);if(n)throw new le.ErrnoError(n);if(!t.node_ops.rmdir)throw new le.ErrnoError(63);if(le.isMountpoint(i))throw new le.ErrnoError(10);t.node_ops.rmdir(t,r),le.destroyNode(i)},readdir:e=>{var t=le.lookupPath(e,{follow:!0}).node;if(!t.node_ops.readdir)throw new le.ErrnoError(54);return t.node_ops.readdir(t)},unlink:e=>{var t=le.lookupPath(e,{parent:!0}).node;if(!t)throw new le.ErrnoError(44);var r=ie.basename(e),i=le.lookupNode(t,r),n=le.mayDelete(t,r,!1);if(n)throw new le.ErrnoError(n);if(!t.node_ops.unlink)throw new le.ErrnoError(63);if(le.isMountpoint(i))throw new le.ErrnoError(10);t.node_ops.unlink(t,r),le.destroyNode(i)},readlink:e=>{var t=le.lookupPath(e).node;if(!t)throw new le.ErrnoError(44);if(!t.node_ops.readlink)throw new le.ErrnoError(28);return ne.resolve(le.getPath(t.parent),t.node_ops.readlink(t))},stat:(e,t)=>{var r=le.lookupPath(e,{follow:!t}).node;if(!r)throw new le.ErrnoError(44);if(!r.node_ops.getattr)throw new le.ErrnoError(63);return r.node_ops.getattr(r)},lstat:e=>le.stat(e,!0),chmod:(e,t,r)=>{var i;"string"==typeof e?i=le.lookupPath(e,{follow:!r}).node:i=e;if(!i.node_ops.setattr)throw new le.ErrnoError(63);i.node_ops.setattr(i,{mode:4095&t|-4096&i.mode,timestamp:Date.now()})},lchmod:(e,t)=>{le.chmod(e,t,!0)},fchmod:(e,t)=>{var r=le.getStream(e);if(!r)throw new le.ErrnoError(8);le.chmod(r.node,t)},chown:(e,t,r,i)=>{var n;"string"==typeof e?n=le.lookupPath(e,{follow:!i}).node:n=e;if(!n.node_ops.setattr)throw new le.ErrnoError(63);n.node_ops.setattr(n,{timestamp:Date.now()})},lchown:(e,t,r)=>{le.chown(e,t,r,!0)},fchown:(e,t,r)=>{var i=le.getStream(e);if(!i)throw new le.ErrnoError(8);le.chown(i.node,t,r)},truncate:(e,t)=>{if(t<0)throw new le.ErrnoError(28);var r;"string"==typeof e?r=le.lookupPath(e,{follow:!0}).node:r=e;if(!r.node_ops.setattr)throw new le.ErrnoError(63);if(le.isDir(r.mode))throw new le.ErrnoError(31);if(!le.isFile(r.mode))throw new le.ErrnoError(28);var i=le.nodePermissions(r,"w");if(i)throw new le.ErrnoError(i);r.node_ops.setattr(r,{size:t,timestamp:Date.now()})},ftruncate:(e,t)=>{var r=le.getStream(e);if(!r)throw new le.ErrnoError(8);if(!(2097155&r.flags))throw new le.ErrnoError(28);le.truncate(r.node,t)},utime:(e,t,r)=>{var i=le.lookupPath(e,{follow:!0}).node;i.node_ops.setattr(i,{timestamp:Math.max(t,r)})},open:(e,r,i)=>{if(""===e)throw new le.ErrnoError(44);var n;if(i=void 0===i?438:i,i=64&(r="string"==typeof r?le.modeStringToFlags(r):r)?4095&i|32768:0,"object"==typeof e)n=e;else{e=ie.normalize(e);try{n=le.lookupPath(e,{follow:!(131072&r)}).node}catch(e){}}var s=!1;if(64&r)if(n){if(128&r)throw new le.ErrnoError(20)}else n=le.mknod(e,i,0),s=!0;if(!n)throw new le.ErrnoError(44);if(le.isChrdev(n.mode)&&(r&=-513),65536&r&&!le.isDir(n.mode))throw new le.ErrnoError(54);if(!s){var a=le.mayOpen(n,r);if(a)throw new le.ErrnoError(a)}512&r&&!s&&le.truncate(n,0),r&=-131713;var o=le.createStream({node:n,path:le.getPath(n),flags:r,seekable:!0,position:0,stream_ops:n.stream_ops,ungotten:[],error:!1});return o.stream_ops.open&&o.stream_ops.open(o),!t.logReadFiles||1&r||(le.readFiles||(le.readFiles={}),e in le.readFiles||(le.readFiles[e]=1)),o},close:e=>{if(le.isClosed(e))throw new le.ErrnoError(8);e.getdents&&(e.getdents=null);try{e.stream_ops.close&&e.stream_ops.close(e)}catch(e){throw e}finally{le.closeStream(e.fd)}e.fd=null},isClosed:e=>null===e.fd,llseek:(e,t,r)=>{if(le.isClosed(e))throw new le.ErrnoError(8);if(!e.seekable||!e.stream_ops.llseek)throw new le.ErrnoError(70);if(0!=r&&1!=r&&2!=r)throw new le.ErrnoError(28);return e.position=e.stream_ops.llseek(e,t,r),e.ungotten=[],e.position},read:(e,t,r,i,n)=>{if(i<0||n<0)throw new le.ErrnoError(28);if(le.isClosed(e))throw new le.ErrnoError(8);if(1==(2097155&e.flags))throw new le.ErrnoError(8);if(le.isDir(e.node.mode))throw new le.ErrnoError(31);if(!e.stream_ops.read)throw new le.ErrnoError(28);var s=void 0!==n;if(s){if(!e.seekable)throw new le.ErrnoError(70)}else n=e.position;var a=e.stream_ops.read(e,t,r,i,n);return s||(e.position+=a),a},write:(e,t,r,i,n,s)=>{if(i<0||n<0)throw new le.ErrnoError(28);if(le.isClosed(e))throw new le.ErrnoError(8);if(!(2097155&e.flags))throw new le.ErrnoError(8);if(le.isDir(e.node.mode))throw new le.ErrnoError(31);if(!e.stream_ops.write)throw new le.ErrnoError(28);e.seekable&&1024&e.flags&&le.llseek(e,0,2);var a=void 0!==n;if(a){if(!e.seekable)throw new le.ErrnoError(70)}else n=e.position;var o=e.stream_ops.write(e,t,r,i,n,s);return a||(e.position+=o),o},allocate:(e,t,r)=>{if(le.isClosed(e))throw new le.ErrnoError(8);if(t<0||r<=0)throw new le.ErrnoError(28);if(!(2097155&e.flags))throw new le.ErrnoError(8);if(!le.isFile(e.node.mode)&&!le.isDir(e.node.mode))throw new le.ErrnoError(43);if(!e.stream_ops.allocate)throw new le.ErrnoError(138);e.stream_ops.allocate(e,t,r)},mmap:(e,t,r,i,n)=>{if(2&i&&!(2&n)&&2!=(2097155&e.flags))throw new le.ErrnoError(2);if(1==(2097155&e.flags))throw new le.ErrnoError(2);if(!e.stream_ops.mmap)throw new le.ErrnoError(43);return e.stream_ops.mmap(e,t,r,i,n)},msync:(e,t,r,i,n)=>e&&e.stream_ops.msync?e.stream_ops.msync(e,t,r,i,n):0,munmap:e=>0,ioctl:(e,t,r)=>{if(!e.stream_ops.ioctl)throw new le.ErrnoError(59);return e.stream_ops.ioctl(e,t,r)},readFile:(e,t={})=>{if(t.flags=t.flags||0,t.encoding=t.encoding||"binary","utf8"!==t.encoding&&"binary"!==t.encoding)throw new Error('Invalid encoding type "'+t.encoding+'"');var r,i=le.open(e,t.flags),n=le.stat(e).size,s=new Uint8Array(n);return le.read(i,s,0,n,0),"utf8"===t.encoding?r=I(s,0):"binary"===t.encoding&&(r=s),le.close(i),r},writeFile:(e,t,r={})=>{r.flags=r.flags||577;var i=le.open(e,r.flags,r.mode);if("string"==typeof t){var n=new Uint8Array(M(t)+1),s=R(t,n,0,n.length);le.write(i,n,0,s,void 0,r.canOwn)}else{if(!ArrayBuffer.isView(t))throw new Error("Unsupported data type");le.write(i,t,0,t.byteLength,void 0,r.canOwn)}le.close(i)},cwd:()=>le.currentPath,chdir:e=>{var t=le.lookupPath(e,{follow:!0});if(null===t.node)throw new le.ErrnoError(44);if(!le.isDir(t.node.mode))throw new le.ErrnoError(54);var r=le.nodePermissions(t.node,"x");if(r)throw new le.ErrnoError(r);le.currentPath=t.path},createDefaultDirectories:()=>{le.mkdir("/tmp"),le.mkdir("/home"),le.mkdir("/home/web_user")},createDefaultDevices:()=>{le.mkdir("/dev"),le.registerDevice(le.makedev(1,3),{read:()=>0,write:(e,t,r,i,n)=>i}),le.mkdev("/dev/null",le.makedev(1,3)),ae.register(le.makedev(5,0),ae.default_tty_ops),ae.register(le.makedev(6,0),ae.default_tty1_ops),le.mkdev("/dev/tty",le.makedev(5,0)),le.mkdev("/dev/tty1",le.makedev(6,0));var e=function(){if("object"==typeof crypto&&"function"==typeof crypto.getRandomValues){var e=new Uint8Array(1);return()=>(crypto.getRandomValues(e),e[0])}if(p)try{var t=require("crypto");return()=>t.randomBytes(1)[0]}catch(e){}return()=>W("randomDevice")}();le.createDevice("/dev","random",e),le.createDevice("/dev","urandom",e),le.mkdir("/dev/shm"),le.mkdir("/dev/shm/tmp")},createSpecialDirectories:()=>{le.mkdir("/proc");var e=le.mkdir("/proc/self");le.mkdir("/proc/self/fd"),le.mount({mount:()=>{var t=le.createNode(e,"fd",16895,73);return t.node_ops={lookup:(e,t)=>{var r=+t,i=le.getStream(r);if(!i)throw new le.ErrnoError(8);var n={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>i.path}};return n.parent=n,n}},t}},{},"/proc/self/fd")},createStandardStreams:()=>{t.stdin?le.createDevice("/dev","stdin",t.stdin):le.symlink("/dev/tty","/dev/stdin"),t.stdout?le.createDevice("/dev","stdout",null,t.stdout):le.symlink("/dev/tty","/dev/stdout"),t.stderr?le.createDevice("/dev","stderr",null,t.stderr):le.symlink("/dev/tty1","/dev/stderr"),le.open("/dev/stdin",0),le.open("/dev/stdout",1),le.open("/dev/stderr",1)},ensureErrnoError:()=>{le.ErrnoError||(le.ErrnoError=function(e,t){this.node=t,this.setErrno=function(e){this.errno=e},this.setErrno(e),this.message="FS error"},le.ErrnoError.prototype=new Error,le.ErrnoError.prototype.constructor=le.ErrnoError,[44].forEach((e=>{le.genericErrors[e]=new le.ErrnoError(e),le.genericErrors[e].stack=""})))},staticInit:()=>{le.ensureErrnoError(),le.nameTable=new Array(4096),le.mount(de,{},"/"),le.createDefaultDirectories(),le.createDefaultDevices(),le.createSpecialDirectories(),le.filesystems={MEMFS:de}},init:(e,r,i)=>{le.init.initialized=!0,le.ensureErrnoError(),t.stdin=e||t.stdin,t.stdout=r||t.stdout,t.stderr=i||t.stderr,le.createStandardStreams()},quit:()=>{le.init.initialized=!1;for(var e=0;e{var r=0;return e&&(r|=365),t&&(r|=146),r},findObject:(e,t)=>{var r=le.analyzePath(e,t);return r.exists?r.object:null},analyzePath:(e,t)=>{try{e=(i=le.lookupPath(e,{follow:!t})).path}catch(e){}var r={isRoot:!1,exists:!1,error:0,name:null,path:null,object:null,parentExists:!1,parentPath:null,parentObject:null};try{var i=le.lookupPath(e,{parent:!0});r.parentExists=!0,r.parentPath=i.path,r.parentObject=i.node,r.name=ie.basename(e),i=le.lookupPath(e,{follow:!t}),r.exists=!0,r.path=i.path,r.object=i.node,r.name=i.node.name,r.isRoot="/"===i.path}catch(e){r.error=e.errno}return r},createPath:(e,t,r,i)=>{e="string"==typeof e?e:le.getPath(e);for(var n=t.split("/").reverse();n.length;){var s=n.pop();if(s){var a=ie.join2(e,s);try{le.mkdir(a)}catch(e){}e=a}}return a},createFile:(e,t,r,i,n)=>{var s=ie.join2("string"==typeof e?e:le.getPath(e),t),a=le.getMode(i,n);return le.create(s,a)},createDataFile:(e,t,r,i,n,s)=>{var a=t;e&&(e="string"==typeof e?e:le.getPath(e),a=t?ie.join2(e,t):e);var o=le.getMode(i,n),d=le.create(a,o);if(r){if("string"==typeof r){for(var l=new Array(r.length),u=0,c=r.length;u{var n=ie.join2("string"==typeof e?e:le.getPath(e),t),s=le.getMode(!!r,!!i);le.createDevice.major||(le.createDevice.major=64);var a=le.makedev(le.createDevice.major++,0);return le.registerDevice(a,{open:e=>{e.seekable=!1},close:e=>{i&&i.buffer&&i.buffer.length&&i(10)},read:(e,t,i,n,s)=>{for(var a=0,o=0;o{for(var a=0;a{if(e.isDevice||e.isFolder||e.link||e.contents)return!0;if("undefined"!=typeof XMLHttpRequest)throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.");if(!n)throw new Error("Cannot load without read() or XMLHttpRequest.");try{e.contents=se(n(e.url),!0),e.usedBytes=e.contents.length}catch(e){throw new le.ErrnoError(29)}},createLazyFile:(e,t,r,i,n)=>{function s(){this.lengthKnown=!1,this.chunks=[]}if(s.prototype.get=function(e){if(!(e>this.length-1||e<0)){var t=e%this.chunkSize,r=e/this.chunkSize|0;return this.getter(r)[t]}},s.prototype.setDataGetter=function(e){this.getter=e},s.prototype.cacheLength=function(){var e=new XMLHttpRequest;if(e.open("HEAD",r,!1),e.send(null),!(e.status>=200&&e.status<300||304===e.status))throw new Error("Couldn't load "+r+". Status: "+e.status);var t,i=Number(e.getResponseHeader("Content-length")),n=(t=e.getResponseHeader("Accept-Ranges"))&&"bytes"===t,s=(t=e.getResponseHeader("Content-Encoding"))&&"gzip"===t,a=1048576;n||(a=i);var o=this;o.setDataGetter((e=>{var t=e*a,n=(e+1)*a-1;if(n=Math.min(n,i-1),void 0===o.chunks[e]&&(o.chunks[e]=((e,t)=>{if(e>t)throw new Error("invalid range ("+e+", "+t+") or no bytes requested!");if(t>i-1)throw new Error("only "+i+" bytes available! programmer error!");var n=new XMLHttpRequest;if(n.open("GET",r,!1),i!==a&&n.setRequestHeader("Range","bytes="+e+"-"+t),n.responseType="arraybuffer",n.overrideMimeType&&n.overrideMimeType("text/plain; charset=x-user-defined"),n.send(null),!(n.status>=200&&n.status<300||304===n.status))throw new Error("Couldn't load "+r+". Status: "+n.status);return void 0!==n.response?new Uint8Array(n.response||[]):se(n.responseText||"",!0)})(t,n)),void 0===o.chunks[e])throw new Error("doXHR failed!");return o.chunks[e]})),!s&&i||(a=i=1,i=this.getter(0).length,a=i,_("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=i,this._chunkSize=a,this.lengthKnown=!0},"undefined"!=typeof XMLHttpRequest){if(!f)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var a=new s;Object.defineProperties(a,{length:{get:function(){return this.lengthKnown||this.cacheLength(),this._length}},chunkSize:{get:function(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}});var o={isDevice:!1,contents:a}}else o={isDevice:!1,url:r};var d=le.createFile(e,t,o,i,n);o.contents?d.contents=o.contents:o.url&&(d.contents=null,d.url=o.url),Object.defineProperties(d,{usedBytes:{get:function(){return this.contents.length}}});var l={};function u(e,t,r,i,n){var s=e.node.contents;if(n>=s.length)return 0;var a=Math.min(s.length-n,i);if(s.slice)for(var o=0;o{var t=d.stream_ops[e];l[e]=function(){return le.forceLoadFile(d),t.apply(null,arguments)}})),l.read=(e,t,r,i,n)=>(le.forceLoadFile(d),u(e,t,r,i,n)),l.mmap=(e,t,r,i,n)=>{le.forceLoadFile(d);var s=oe(t);if(!s)throw new le.ErrnoError(48);return u(e,U,s,t,r),{ptr:s,allocated:!0}},d.stream_ops=l,d},createPreloadedFile:(e,t,r,i,n,a,o,d,l,u)=>{var c=t?ne.resolve(ie.join2(e,t)):e;function h(r){function s(r){u&&u(),d||le.createDataFile(e,t,r,i,n,l),a&&a(),V()}Browser.handledByPreloadPlugin(r,c,s,(()=>{o&&o(),V()}))||s(r)}H(),"string"==typeof r?function(e,t,r,i){var n=i?"":"al "+e;s(e,(r=>{S(r,'Loading data file "'+e+'" failed (no arrayBuffer).'),t(new Uint8Array(r)),n&&V()}),(t=>{if(!r)throw'Loading data file "'+e+'" failed.';r()})),n&&H()}(r,(e=>h(e)),o):h(r)},indexedDB:()=>window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB,DB_NAME:()=>"EM_FS_"+window.location.pathname,DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:(e,t,r)=>{t=t||(()=>{}),r=r||(()=>{});var i=le.indexedDB();try{var n=i.open(le.DB_NAME(),le.DB_VERSION)}catch(e){return r(e)}n.onupgradeneeded=()=>{_("creating db"),n.result.createObjectStore(le.DB_STORE_NAME)},n.onsuccess=()=>{var i=n.result.transaction([le.DB_STORE_NAME],"readwrite"),s=i.objectStore(le.DB_STORE_NAME),a=0,o=0,d=e.length;function l(){0==o?t():r()}e.forEach((e=>{var t=s.put(le.analyzePath(e).object.contents,e);t.onsuccess=()=>{++a+o==d&&l()},t.onerror=()=>{o++,a+o==d&&l()}})),i.onerror=r},n.onerror=r},loadFilesFromDB:(e,t,r)=>{t=t||(()=>{}),r=r||(()=>{});var i=le.indexedDB();try{var n=i.open(le.DB_NAME(),le.DB_VERSION)}catch(e){return r(e)}n.onupgradeneeded=r,n.onsuccess=()=>{var i=n.result;try{var s=i.transaction([le.DB_STORE_NAME],"readonly")}catch(e){return void r(e)}var a=s.objectStore(le.DB_STORE_NAME),o=0,d=0,l=e.length;function u(){0==d?t():r()}e.forEach((e=>{var t=a.get(e);t.onsuccess=()=>{le.analyzePath(e).exists&&le.unlink(e),le.createDataFile(ie.dirname(e),ie.basename(e),t.result,!0,!0,!0),++o+d==l&&u()},t.onerror=()=>{d++,o+d==l&&u()}})),s.onerror=r},n.onerror=r}},ue={DEFAULT_POLLMASK:5,calculateAt:function(e,t,r){if(ie.isAbs(t))return t;var i;if(-100===e)i=le.cwd();else{var n=le.getStream(e);if(!n)throw new le.ErrnoError(8);i=n.path}if(0==t.length){if(!r)throw new le.ErrnoError(44);return i}return ie.join2(i,t)},doStat:function(e,t,r){try{var i=e(t)}catch(e){if(e&&e.node&&ie.normalize(t)!==ie.normalize(le.getPath(e.node)))return-54;throw e}return k[r>>2]=i.dev,k[r+4>>2]=0,k[r+8>>2]=i.ino,k[r+12>>2]=i.mode,k[r+16>>2]=i.nlink,k[r+20>>2]=i.uid,k[r+24>>2]=i.gid,k[r+28>>2]=i.rdev,k[r+32>>2]=0,K=[i.size>>>0,(q=i.size,+Math.abs(q)>=1?q>0?(0|Math.min(+Math.floor(q/4294967296),4294967295))>>>0:~~+Math.ceil((q-+(~~q>>>0))/4294967296)>>>0:0)],k[r+40>>2]=K[0],k[r+44>>2]=K[1],k[r+48>>2]=4096,k[r+52>>2]=i.blocks,K=[Math.floor(i.atime.getTime()/1e3)>>>0,(q=Math.floor(i.atime.getTime()/1e3),+Math.abs(q)>=1?q>0?(0|Math.min(+Math.floor(q/4294967296),4294967295))>>>0:~~+Math.ceil((q-+(~~q>>>0))/4294967296)>>>0:0)],k[r+56>>2]=K[0],k[r+60>>2]=K[1],k[r+64>>2]=0,K=[Math.floor(i.mtime.getTime()/1e3)>>>0,(q=Math.floor(i.mtime.getTime()/1e3),+Math.abs(q)>=1?q>0?(0|Math.min(+Math.floor(q/4294967296),4294967295))>>>0:~~+Math.ceil((q-+(~~q>>>0))/4294967296)>>>0:0)],k[r+72>>2]=K[0],k[r+76>>2]=K[1],k[r+80>>2]=0,K=[Math.floor(i.ctime.getTime()/1e3)>>>0,(q=Math.floor(i.ctime.getTime()/1e3),+Math.abs(q)>=1?q>0?(0|Math.min(+Math.floor(q/4294967296),4294967295))>>>0:~~+Math.ceil((q-+(~~q>>>0))/4294967296)>>>0:0)],k[r+88>>2]=K[0],k[r+92>>2]=K[1],k[r+96>>2]=0,K=[i.ino>>>0,(q=i.ino,+Math.abs(q)>=1?q>0?(0|Math.min(+Math.floor(q/4294967296),4294967295))>>>0:~~+Math.ceil((q-+(~~q>>>0))/4294967296)>>>0:0)],k[r+104>>2]=K[0],k[r+108>>2]=K[1],0},doMsync:function(e,t,r,i,n){var s=x.slice(e,e+r);le.msync(t,s,n,r,i)},varargs:void 0,get:function(){return ue.varargs+=4,k[ue.varargs-4>>2]},getStr:function(e){return L(e)},getStreamFromFD:function(e){var t=le.getStream(e);if(!t)throw new le.ErrnoError(8);return t}};function ce(e){switch(e){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+e)}}var he=void 0;function fe(e){for(var t="",r=e;x[r];)t+=he[x[r++]];return t}var pe={},me={},_e={},ye=48,ge=57;function ve(e){if(void 0===e)return"_unknown";var t=(e=e.replace(/[^a-zA-Z0-9_]/g,"$")).charCodeAt(0);return t>=ye&&t<=ge?"_"+e:e}function be(e,t){return e=ve(e),new Function("body","return function "+e+'() {\n "use strict"; return body.apply(this, arguments);\n};\n')(t)}function we(e,t){var r=be(t,(function(e){this.name=t,this.message=e;var r=new Error(e).stack;void 0!==r&&(this.stack=this.toString()+"\n"+r.replace(/^Error(:[^\n]*)?\n/,""))}));return r.prototype=Object.create(e.prototype),r.prototype.constructor=r,r.prototype.toString=function(){return void 0===this.message?this.name:this.name+": "+this.message},r}var Se=void 0;function Ee(e){throw new Se(e)}var Ue=void 0;function xe(e){throw new Ue(e)}function Ae(e,t,r){function i(t){var i=r(t);i.length!==e.length&&xe("Mismatched type converter count");for(var n=0;n{me.hasOwnProperty(e)?n[t]=me[e]:(s.push(e),pe.hasOwnProperty(e)||(pe[e]=[]),pe[e].push((()=>{n[t]=me[e],++a===s.length&&i(n)})))})),0===s.length&&i(n)}function Te(e,t,r={}){if(!("argPackAdvance"in t))throw new TypeError("registerType registeredInstance requires argPackAdvance");var i=t.name;if(e||Ee('type "'+i+'" must have a positive integer typeid pointer'),me.hasOwnProperty(e)){if(r.ignoreDuplicateRegistrations)return;Ee("Cannot register type '"+i+"' twice")}if(me[e]=t,delete _e[e],pe.hasOwnProperty(e)){var n=pe[e];delete pe[e],n.forEach((e=>e()))}}function ke(e){if(!(this instanceof Xe))return!1;if(!(e instanceof Xe))return!1;for(var t=this.$$.ptrType.registeredClass,r=this.$$.ptr,i=e.$$.ptrType.registeredClass,n=e.$$.ptr;t.baseClass;)r=t.upcast(r),t=t.baseClass;for(;i.baseClass;)n=i.upcast(n),i=i.baseClass;return t===i&&r===n}function Ce(e){Ee(e.$$.ptrType.registeredClass.name+" instance already deleted")}var Be=!1;function De(e){}function Pe(e){e.count.value-=1,0===e.count.value&&function(e){e.smartPtr?e.smartPtrType.rawDestructor(e.smartPtr):e.ptrType.registeredClass.rawDestructor(e.ptr)}(e)}function Fe(e,t,r){if(t===r)return e;if(void 0===r.baseClass)return null;var i=Fe(e,t,r.baseClass);return null===i?null:r.downcast(i)}var Ie={};function Le(){return Object.keys($e).length}function Re(){var e=[];for(var t in $e)$e.hasOwnProperty(t)&&e.push($e[t]);return e}var Me=[];function ze(){for(;Me.length;){var e=Me.pop();e.$$.deleteScheduled=!1,e.delete()}}var Oe=void 0;function Ne(e){Oe=e,Me.length&&Oe&&Oe(ze)}var $e={};function Ge(e,t){return t=function(e,t){for(void 0===t&&Ee("ptr should not be undefined");e.baseClass;)t=e.upcast(t),e=e.baseClass;return t}(e,t),$e[t]}function He(e,t){return t.ptrType&&t.ptr||xe("makeClassHandle requires ptr and ptrType"),!!t.smartPtrType!==!!t.smartPtr&&xe("Both smartPtrType and smartPtr must be specified"),t.count={value:1},We(Object.create(e,{$$:{value:t}}))}function Ve(e){var t=this.getPointee(e);if(!t)return this.destructor(e),null;var r=Ge(this.registeredClass,t);if(void 0!==r){if(0===r.$$.count.value)return r.$$.ptr=t,r.$$.smartPtr=e,r.clone();var i=r.clone();return this.destructor(e),i}function n(){return this.isSmartPointer?He(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:t,smartPtrType:this,smartPtr:e}):He(this.registeredClass.instancePrototype,{ptrType:this,ptr:e})}var s,a=this.registeredClass.getActualType(t),o=Ie[a];if(!o)return n.call(this);s=this.isConst?o.constPointerType:o.pointerType;var d=Fe(t,this.registeredClass,s.registeredClass);return null===d?n.call(this):this.isSmartPointer?He(s.registeredClass.instancePrototype,{ptrType:s,ptr:d,smartPtrType:this,smartPtr:e}):He(s.registeredClass.instancePrototype,{ptrType:s,ptr:d})}function We(e){return"undefined"==typeof FinalizationRegistry?(We=e=>e,e):(Be=new FinalizationRegistry((e=>{Pe(e.$$)})),We=e=>{var t=e.$$;if(!!t.smartPtr){var r={$$:t};Be.register(e,r,e)}return e},De=e=>Be.unregister(e),We(e))}function je(){if(this.$$.ptr||Ce(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var e,t=We(Object.create(Object.getPrototypeOf(this),{$$:{value:(e=this.$$,{count:e.count,deleteScheduled:e.deleteScheduled,preservePointerOnDelete:e.preservePointerOnDelete,ptr:e.ptr,ptrType:e.ptrType,smartPtr:e.smartPtr,smartPtrType:e.smartPtrType})}}));return t.$$.count.value+=1,t.$$.deleteScheduled=!1,t}function Ye(){this.$$.ptr||Ce(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&Ee("Object already scheduled for deletion"),De(this),Pe(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)}function qe(){return!this.$$.ptr}function Ke(){return this.$$.ptr||Ce(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&Ee("Object already scheduled for deletion"),Me.push(this),1===Me.length&&Oe&&Oe(ze),this.$$.deleteScheduled=!0,this}function Xe(){}function Ze(e,t,r){if(void 0===e[t].overloadTable){var i=e[t];e[t]=function(){return e[t].overloadTable.hasOwnProperty(arguments.length)||Ee("Function '"+r+"' called with an invalid number of arguments ("+arguments.length+") - expects one of ("+e[t].overloadTable+")!"),e[t].overloadTable[arguments.length].apply(this,arguments)},e[t].overloadTable=[],e[t].overloadTable[i.argCount]=i}}function Je(e,t,r,i,n,s,a,o){this.name=e,this.constructor=t,this.instancePrototype=r,this.rawDestructor=i,this.baseClass=n,this.getActualType=s,this.upcast=a,this.downcast=o,this.pureVirtualFunctions=[]}function Qe(e,t,r){for(;t!==r;)t.upcast||Ee("Expected null or instance of "+r.name+", got an instance of "+t.name),e=t.upcast(e),t=t.baseClass;return e}function et(e,t){if(null===t)return this.isReference&&Ee("null is not a valid "+this.name),0;t.$$||Ee('Cannot pass "'+xt(t)+'" as a '+this.name),t.$$.ptr||Ee("Cannot pass deleted object as a pointer of type "+this.name);var r=t.$$.ptrType.registeredClass;return Qe(t.$$.ptr,r,this.registeredClass)}function tt(e,t){var r;if(null===t)return this.isReference&&Ee("null is not a valid "+this.name),this.isSmartPointer?(r=this.rawConstructor(),null!==e&&e.push(this.rawDestructor,r),r):0;t.$$||Ee('Cannot pass "'+xt(t)+'" as a '+this.name),t.$$.ptr||Ee("Cannot pass deleted object as a pointer of type "+this.name),!this.isConst&&t.$$.ptrType.isConst&&Ee("Cannot convert argument of type "+(t.$$.smartPtrType?t.$$.smartPtrType.name:t.$$.ptrType.name)+" to parameter type "+this.name);var i=t.$$.ptrType.registeredClass;if(r=Qe(t.$$.ptr,i,this.registeredClass),this.isSmartPointer)switch(void 0===t.$$.smartPtr&&Ee("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:t.$$.smartPtrType===this?r=t.$$.smartPtr:Ee("Cannot convert argument of type "+(t.$$.smartPtrType?t.$$.smartPtrType.name:t.$$.ptrType.name)+" to parameter type "+this.name);break;case 1:r=t.$$.smartPtr;break;case 2:if(t.$$.smartPtrType===this)r=t.$$.smartPtr;else{var n=t.clone();r=this.rawShare(r,Ut.toHandle((function(){n.delete()}))),null!==e&&e.push(this.rawDestructor,r)}break;default:Ee("Unsupporting sharing policy")}return r}function rt(e,t){if(null===t)return this.isReference&&Ee("null is not a valid "+this.name),0;t.$$||Ee('Cannot pass "'+xt(t)+'" as a '+this.name),t.$$.ptr||Ee("Cannot pass deleted object as a pointer of type "+this.name),t.$$.ptrType.isConst&&Ee("Cannot convert argument of type "+t.$$.ptrType.name+" to parameter type "+this.name);var r=t.$$.ptrType.registeredClass;return Qe(t.$$.ptr,r,this.registeredClass)}function it(e){return this.fromWireType(k[e>>2])}function nt(e){return this.rawGetPointee&&(e=this.rawGetPointee(e)),e}function st(e){this.rawDestructor&&this.rawDestructor(e)}function at(e){null!==e&&e.delete()}function ot(e,t,r,i,n,s,a,o,d,l,u){this.name=e,this.registeredClass=t,this.isReference=r,this.isConst=i,this.isSmartPointer=n,this.pointeeType=s,this.sharingPolicy=a,this.rawGetPointee=o,this.rawConstructor=d,this.rawShare=l,this.rawDestructor=u,n||void 0!==t.baseClass?this.toWireType=tt:i?(this.toWireType=et,this.destructorFunction=null):(this.toWireType=rt,this.destructorFunction=null)}var dt=[];function lt(e){var t=dt[e];return t||(e>=dt.length&&(dt.length=e+1),dt[e]=t=P.get(e)),t}function ut(e,r,i){return e.includes("j")?function(e,r,i){var n=t["dynCall_"+e];return i&&i.length?n.apply(null,[r].concat(i)):n.call(null,r)}(e,r,i):lt(r).apply(null,i)}function ct(e,t){var r,i,n,s=(e=fe(e)).includes("j")?(r=e,i=t,n=[],function(){return n.length=0,Object.assign(n,arguments),ut(r,i,n)}):lt(t);return"function"!=typeof s&&Ee("unknown function pointer with signature "+e+": "+t),s}var ht=void 0;function ft(e){var t=jt(e),r=fe(t);return Vt(t),r}function pt(e,t){var r=[],i={};throw t.forEach((function e(t){i[t]||me[t]||(_e[t]?_e[t].forEach(e):(r.push(t),i[t]=!0))})),new ht(e+": "+r.map(ft).join([", "]))}function mt(e,t){for(var r=[],i=0;i>2]);return r}function _t(e){for(;e.length;){var t=e.pop();e.pop()(t)}}function yt(e,t){if(!(e instanceof Function))throw new TypeError("new_ called with constructor type "+typeof e+" which is not a function");var r=be(e.name||"unknownFunctionName",(function(){}));r.prototype=e.prototype;var i=new r,n=e.apply(i,t);return n instanceof Object?n:i}function gt(e,t,r,i,n){var s=t.length;s<2&&Ee("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var a=null!==t[1]&&null!==r,o=!1,d=1;d0?", ":"")+c),h+=(l?"var rv = ":"")+"invoker(fn"+(c.length>0?", ":"")+c+");\n",o)h+="runDestructors(destructors);\n";else for(d=a?1:2;d4&&0==--bt[e].refcount&&(bt[e]=void 0,vt.push(e))}function St(){for(var e=0,t=5;t(e||Ee("Cannot use deleted val. handle = "+e),bt[e].value),toHandle:e=>{switch(e){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:var t=vt.length?vt.pop():bt.length;return bt[t]={refcount:1,value:e},t}}};function xt(e){if(null===e)return"null";var t=typeof e;return"object"===t||"array"===t||"function"===t?e.toString():""+e}function At(e,t){switch(t){case 2:return function(e){return this.fromWireType(B[e>>2])};case 3:return function(e){return this.fromWireType(D[e>>3])};default:throw new TypeError("Unknown float type: "+e)}}function Tt(e,t,r){switch(t){case 0:return r?function(e){return U[e]}:function(e){return x[e]};case 1:return r?function(e){return A[e>>1]}:function(e){return T[e>>1]};case 2:return r?function(e){return k[e>>2]}:function(e){return C[e>>2]};default:throw new TypeError("Unknown integer type: "+e)}}var kt="undefined"!=typeof TextDecoder?new TextDecoder("utf-16le"):void 0;function Ct(e,t){for(var r=e,i=r>>1,n=i+t/2;!(i>=n)&&T[i];)++i;if((r=i<<1)-e>32&&kt)return kt.decode(x.subarray(e,r));for(var s="",a=0;!(a>=t/2);++a){var o=A[e+2*a>>1];if(0==o)break;s+=String.fromCharCode(o)}return s}function Bt(e,t,r){if(void 0===r&&(r=2147483647),r<2)return 0;for(var i=t,n=(r-=2)<2*e.length?r/2:e.length,s=0;s>1]=a,t+=2}return A[t>>1]=0,t-i}function Dt(e){return 2*e.length}function Pt(e,t){for(var r=0,i="";!(r>=t/4);){var n=k[e+4*r>>2];if(0==n)break;if(++r,n>=65536){var s=n-65536;i+=String.fromCharCode(55296|s>>10,56320|1023&s)}else i+=String.fromCharCode(n)}return i}function Ft(e,t,r){if(void 0===r&&(r=2147483647),r<4)return 0;for(var i=t,n=i+r-4,s=0;s=55296&&a<=57343)a=65536+((1023&a)<<10)|1023&e.charCodeAt(++s);if(k[t>>2]=a,(t+=4)+4>n)break}return k[t>>2]=0,t-i}function It(e){for(var t=0,r=0;r=55296&&i<=57343&&++r,t+=4}return t}var Lt={};var Rt=[];var Mt=[];var zt={};function Ot(){if(!Ot.strings){var e={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:("object"==typeof navigator&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:c||"./this.program"};for(var t in zt)void 0===zt[t]?delete e[t]:e[t]=zt[t];var r=[];for(var t in e)r.push(t+"="+e[t]);Ot.strings=r}return Ot.strings}var Nt=function(e,t,r,i){e||(e=this),this.parent=e,this.mount=e.mount,this.mounted=null,this.id=le.nextInode++,this.name=t,this.mode=r,this.node_ops={},this.stream_ops={},this.rdev=i},$t=365,Gt=146;Object.defineProperties(Nt.prototype,{read:{get:function(){return(this.mode&$t)===$t},set:function(e){e?this.mode|=$t:this.mode&=-366}},write:{get:function(){return(this.mode&Gt)===Gt},set:function(e){e?this.mode|=Gt:this.mode&=-147}},isFolder:{get:function(){return le.isDir(this.mode)}},isDevice:{get:function(){return le.isChrdev(this.mode)}}}),le.FSNode=Nt,le.staticInit(),function(){for(var e=new Array(256),t=0;t<256;++t)e[t]=String.fromCharCode(t);he=e}(),Se=t.BindingError=we(Error,"BindingError"),Ue=t.InternalError=we(Error,"InternalError"),Xe.prototype.isAliasOf=ke,Xe.prototype.clone=je,Xe.prototype.delete=Ye,Xe.prototype.isDeleted=qe,Xe.prototype.deleteLater=Ke,t.getInheritedInstanceCount=Le,t.getLiveInheritedInstances=Re,t.flushPendingDeletes=ze,t.setDelayFunction=Ne,ot.prototype.getPointee=nt,ot.prototype.destructor=st,ot.prototype.argPackAdvance=8,ot.prototype.readValueFromPointer=it,ot.prototype.deleteObject=at,ot.prototype.fromWireType=Ve,ht=t.UnboundTypeError=we(Error,"UnboundTypeError"),t.count_emval_handles=St,t.get_first_emval=Et;var Ht={q:function(e){return qt(e+24)+24},p:function(e,t,r){throw new re(e).init(t,r),e},C:function(e,t,r){ue.varargs=r;try{var i=ue.getStreamFromFD(e);switch(t){case 0:return(n=ue.get())<0?-28:le.createStream(i,n).fd;case 1:case 2:case 6:case 7:return 0;case 3:return i.flags;case 4:var n=ue.get();return i.flags|=n,0;case 5:n=ue.get();return A[n+0>>1]=2,0;case 16:case 8:default:return-28;case 9:return s=28,k[Wt()>>2]=s,-1}}catch(e){if(void 0===le||!(e instanceof le.ErrnoError))throw e;return-e.errno}var s},w:function(e,t,r,i){ue.varargs=i;try{t=ue.getStr(t),t=ue.calculateAt(e,t);var n=i?ue.get():0;return le.open(t,r,n).fd}catch(e){if(void 0===le||!(e instanceof le.ErrnoError))throw e;return-e.errno}},u:function(e,t,r,i,n){},E:function(e,t,r,i,n){var s=ce(r);Te(e,{name:t=fe(t),fromWireType:function(e){return!!e},toWireType:function(e,t){return t?i:n},argPackAdvance:8,readValueFromPointer:function(e){var i;if(1===r)i=U;else if(2===r)i=A;else{if(4!==r)throw new TypeError("Unknown boolean type size: "+t);i=k}return this.fromWireType(i[e>>s])},destructorFunction:null})},t:function(e,r,i,n,s,a,o,d,l,u,c,h,f){c=fe(c),a=ct(s,a),d&&(d=ct(o,d)),u&&(u=ct(l,u)),f=ct(h,f);var p=ve(c);!function(e,r,i){t.hasOwnProperty(e)?((void 0===i||void 0!==t[e].overloadTable&&void 0!==t[e].overloadTable[i])&&Ee("Cannot register public name '"+e+"' twice"),Ze(t,e,e),t.hasOwnProperty(i)&&Ee("Cannot register multiple overloads of a function with the same number of arguments ("+i+")!"),t[e].overloadTable[i]=r):(t[e]=r,void 0!==i&&(t[e].numArguments=i))}(p,(function(){pt("Cannot construct "+c+" due to unbound types",[n])})),Ae([e,r,i],n?[n]:[],(function(r){var i,s;r=r[0],s=n?(i=r.registeredClass).instancePrototype:Xe.prototype;var o=be(p,(function(){if(Object.getPrototypeOf(this)!==l)throw new Se("Use 'new' to construct "+c);if(void 0===h.constructor_body)throw new Se(c+" has no accessible constructor");var e=h.constructor_body[arguments.length];if(void 0===e)throw new Se("Tried to invoke ctor of "+c+" with invalid number of parameters ("+arguments.length+") - expected ("+Object.keys(h.constructor_body).toString()+") parameters instead!");return e.apply(this,arguments)})),l=Object.create(s,{constructor:{value:o}});o.prototype=l;var h=new Je(c,o,l,f,i,a,d,u),m=new ot(c,h,!0,!1,!1),_=new ot(c+"*",h,!1,!1,!1),y=new ot(c+" const*",h,!1,!0,!1);return Ie[e]={pointerType:_,constPointerType:y},function(e,r,i){t.hasOwnProperty(e)||xe("Replacing nonexistant public symbol"),void 0!==t[e].overloadTable&&void 0!==i?t[e].overloadTable[i]=r:(t[e]=r,t[e].argCount=i)}(p,o),[m,_,y]}))},r:function(e,t,r,i,n,s){S(t>0);var a=mt(t,r);n=ct(i,n),Ae([],[e],(function(e){var r="constructor "+(e=e[0]).name;if(void 0===e.registeredClass.constructor_body&&(e.registeredClass.constructor_body=[]),void 0!==e.registeredClass.constructor_body[t-1])throw new Se("Cannot register multiple constructors with identical number of parameters ("+(t-1)+") for class '"+e.name+"'! Overload resolution is currently only performed using the parameter count, not actual type info!");return e.registeredClass.constructor_body[t-1]=()=>{pt("Cannot construct "+e.name+" due to unbound types",a)},Ae([],a,(function(i){return i.splice(1,0,null),e.registeredClass.constructor_body[t-1]=gt(r,i,null,n,s),[]})),[]}))},d:function(e,t,r,i,n,s,a,o){var d=mt(r,i);t=fe(t),s=ct(n,s),Ae([],[e],(function(e){var i=(e=e[0]).name+"."+t;function n(){pt("Cannot call "+i+" due to unbound types",d)}t.startsWith("@@")&&(t=Symbol[t.substring(2)]),o&&e.registeredClass.pureVirtualFunctions.push(t);var l=e.registeredClass.instancePrototype,u=l[t];return void 0===u||void 0===u.overloadTable&&u.className!==e.name&&u.argCount===r-2?(n.argCount=r-2,n.className=e.name,l[t]=n):(Ze(l,t,i),l[t].overloadTable[r-2]=n),Ae([],d,(function(n){var o=gt(i,n,e,s,a);return void 0===l[t].overloadTable?(o.argCount=r-2,l[t]=o):l[t].overloadTable[r-2]=o,[]})),[]}))},D:function(e,t){Te(e,{name:t=fe(t),fromWireType:function(e){var t=Ut.toValue(e);return wt(e),t},toWireType:function(e,t){return Ut.toHandle(t)},argPackAdvance:8,readValueFromPointer:it,destructorFunction:null})},n:function(e,t,r){var i=ce(r);Te(e,{name:t=fe(t),fromWireType:function(e){return e},toWireType:function(e,t){return t},argPackAdvance:8,readValueFromPointer:At(t,i),destructorFunction:null})},c:function(e,t,r,i,n){t=fe(t);var s=ce(r),a=e=>e;if(0===i){var o=32-8*r;a=e=>e<>>o}var d=t.includes("unsigned");Te(e,{name:t,fromWireType:a,toWireType:d?function(e,t){return this.name,t>>>0}:function(e,t){return this.name,t},argPackAdvance:8,readValueFromPointer:Tt(t,s,0!==i),destructorFunction:null})},b:function(e,t,r){var i=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][t];function n(e){var t=C,r=t[e>>=2],n=t[e+1];return new i(E,n,r)}Te(e,{name:r=fe(r),fromWireType:n,argPackAdvance:8,readValueFromPointer:n},{ignoreDuplicateRegistrations:!0})},m:function(e,t){var r="std::string"===(t=fe(t));Te(e,{name:t,fromWireType:function(e){var t,i=C[e>>2],n=e+4;if(r)for(var s=n,a=0;a<=i;++a){var o=n+a;if(a==i||0==x[o]){var d=L(s,o-s);void 0===t?t=d:(t+=String.fromCharCode(0),t+=d),s=o+1}}else{var l=new Array(i);for(a=0;a>2]=i,r&&n)R(t,x,a,i+1);else if(n)for(var o=0;o255&&(Vt(a),Ee("String has UTF-16 code units that do not fit in 8 bits")),x[a+o]=d}else for(o=0;oT,o=1):4===t&&(i=Pt,n=Ft,a=It,s=()=>C,o=2),Te(e,{name:r,fromWireType:function(e){for(var r,n=C[e>>2],a=s(),d=e+4,l=0;l<=n;++l){var u=e+4+l*t;if(l==n||0==a[u>>o]){var c=i(d,u-d);void 0===r?r=c:(r+=String.fromCharCode(0),r+=c),d=u+t}}return Vt(e),r},toWireType:function(e,i){"string"!=typeof i&&Ee("Cannot pass non-string to C++ string type "+r);var s=a(i),d=qt(4+s+t);return C[d>>2]=s>>o,n(i,d+4,s+t),null!==e&&e.push(Vt,d),d},argPackAdvance:8,readValueFromPointer:it,destructorFunction:function(e){Vt(e)}})},o:function(e,t){Te(e,{isVoid:!0,name:t=fe(t),argPackAdvance:0,fromWireType:function(){},toWireType:function(e,t){}})},f:function(){return Date.now()},g:function(e,t,r,i){var n,s;(e=Rt[e])(t=Ut.toValue(t),r=void 0===(s=Lt[n=r])?fe(n):s,null,i)},j:wt,i:function(e,t){var r=function(e,t){for(var r,i,n,s=new Array(e),a=0;a>2],i="parameter "+a,n=void 0,void 0===(n=me[r])&&Ee(i+" has unknown type "+ft(r)),n);return s}(e,t),i=r[0],n=i.name+"_$"+r.slice(1).map((function(e){return e.name})).join("_")+"$",s=Mt[n];if(void 0!==s)return s;for(var a=["retType"],o=[i],d="",l=0;l>2]=s,function(e,t,r){for(var i=0;i>2]=r.length;var i=0;return r.forEach((function(e){i+=e.length+1})),C[t>>2]=i,0},l:function(e){try{var t=ue.getStreamFromFD(e);return le.close(t),0}catch(e){if(void 0===le||!(e instanceof le.ErrnoError))throw e;return e.errno}},x:function(e,t){try{var r=ue.getStreamFromFD(e),i=r.tty?2:le.isDir(r.mode)?3:le.isLink(r.mode)?7:4;return U[t|0]=i,0}catch(e){if(void 0===le||!(e instanceof le.ErrnoError))throw e;return e.errno}},B:function(e,t,r,i){try{var n=function(e,t,r,i){for(var n=0,s=0;s>2],o=C[t+4>>2];t+=8;var d=le.read(e,U,a,o,i);if(d<0)return-1;if(n+=d,d>2]=n,0}catch(e){if(void 0===le||!(e instanceof le.ErrnoError))throw e;return e.errno}},s:function(e,t,r,i,n){try{var s=(d=r)+2097152>>>0<4194305-!!(o=t)?(o>>>0)+4294967296*d:NaN;if(isNaN(s))return 61;var a=ue.getStreamFromFD(e);return le.llseek(a,s,i),K=[a.position>>>0,(q=a.position,+Math.abs(q)>=1?q>0?(0|Math.min(+Math.floor(q/4294967296),4294967295))>>>0:~~+Math.ceil((q-+(~~q>>>0))/4294967296)>>>0:0)],k[n>>2]=K[0],k[n+4>>2]=K[1],a.getdents&&0===s&&0===i&&(a.getdents=null),0}catch(e){if(void 0===le||!(e instanceof le.ErrnoError))throw e;return e.errno}var o,d},k:function(e,t,r,i){try{var n=function(e,t,r,i){for(var n=0,s=0;s>2],o=C[t+4>>2];t+=8;var d=le.write(e,U,a,o,i);if(d<0)return-1;n+=d}return n}(ue.getStreamFromFD(e),t,r);return C[i>>2]=n,0}catch(e){if(void 0===le||!(e instanceof le.ErrnoError))throw e;return e.errno}},e:function(e){}};!function(){var e={a:Ht};function r(e,r){var i,n,s=e.exports;t.asm=s,v=t.asm.F,i=v.buffer,E=i,t.HEAP8=U=new Int8Array(i),t.HEAP16=A=new Int16Array(i),t.HEAP32=k=new Int32Array(i),t.HEAPU8=x=new Uint8Array(i),t.HEAPU16=T=new Uint16Array(i),t.HEAPU32=C=new Uint32Array(i),t.HEAPF32=B=new Float32Array(i),t.HEAPF64=D=new Float64Array(i),P=t.asm.I,n=t.asm.G,O.unshift(n),V()}function n(e){r(e.instance)}function a(t){return function(){if(!g&&(h||f)){if("function"==typeof fetch&&!J(j))return fetch(j,{credentials:"same-origin"}).then((function(e){if(!e.ok)throw"failed to load wasm binary file at '"+j+"'";return e.arrayBuffer()})).catch((function(){return Q(j)}));if(s)return new Promise((function(e,t){s(j,(function(t){e(new Uint8Array(t))}),t)}))}return Promise.resolve().then((function(){return Q(j)}))}().then((function(t){return WebAssembly.instantiate(t,e)})).then((function(e){return e})).then(t,(function(e){y("failed to asynchronously prepare wasm: "+e),W(e)}))}if(H(),t.instantiateWasm)try{return t.instantiateWasm(e,r)}catch(e){return y("Module.instantiateWasm callback failed with error: "+e),!1}(g||"function"!=typeof WebAssembly.instantiateStreaming||Z(j)||J(j)||p||"function"!=typeof fetch?a(n):fetch(j,{credentials:"same-origin"}).then((function(t){return WebAssembly.instantiateStreaming(t,e).then(n,(function(e){return y("wasm streaming compile failed: "+e),y("falling back to ArrayBuffer instantiation"),a(n)}))}))).catch(i)}(),t.___wasm_call_ctors=function(){return(t.___wasm_call_ctors=t.asm.G).apply(null,arguments)};var Vt=t._free=function(){return(Vt=t._free=t.asm.H).apply(null,arguments)},Wt=t.___errno_location=function(){return(Wt=t.___errno_location=t.asm.J).apply(null,arguments)},jt=t.___getTypeName=function(){return(jt=t.___getTypeName=t.asm.K).apply(null,arguments)};t.___embind_register_native_and_builtin_types=function(){return(t.___embind_register_native_and_builtin_types=t.asm.L).apply(null,arguments)};var Yt,qt=t._malloc=function(){return(qt=t._malloc=t.asm.M).apply(null,arguments)},Kt=t._emscripten_builtin_memalign=function(){return(Kt=t._emscripten_builtin_memalign=t.asm.N).apply(null,arguments)},Xt=t.___cxa_is_pointer_type=function(){return(Xt=t.___cxa_is_pointer_type=t.asm.O).apply(null,arguments)};function Zt(e){function i(){Yt||(Yt=!0,t.calledRun=!0,w||(t.noFSInit||le.init.initialized||le.init(),le.ignorePermissions=!1,te(O),r(t),t.onRuntimeInitialized&&t.onRuntimeInitialized(),function(){if(t.postRun)for("function"==typeof t.postRun&&(t.postRun=[t.postRun]);t.postRun.length;)e=t.postRun.shift(),N.unshift(e);var e;te(N)}()))}$>0||(!function(){if(t.preRun)for("function"==typeof t.preRun&&(t.preRun=[t.preRun]);t.preRun.length;)e=t.preRun.shift(),z.unshift(e);var e;te(z)}(),$>0||(t.setStatus?(t.setStatus("Running..."),setTimeout((function(){setTimeout((function(){t.setStatus("")}),1),i()}),1)):i()))}if(t.dynCall_viiijj=function(){return(t.dynCall_viiijj=t.asm.P).apply(null,arguments)},t.dynCall_jij=function(){return(t.dynCall_jij=t.asm.Q).apply(null,arguments)},t.dynCall_jii=function(){return(t.dynCall_jii=t.asm.R).apply(null,arguments)},t.dynCall_jiji=function(){return(t.dynCall_jiji=t.asm.S).apply(null,arguments)},G=function e(){Yt||Zt(),Yt||(G=e)},t.preInit)for("function"==typeof t.preInit&&(t.preInit=[t.preInit]);t.preInit.length>0;)t.preInit.pop()();return Zt(),t.ready}})(),i=1e-6,n="undefined"!=typeof Float32Array?Float32Array:Array;function s(){var e=new n(16);return n!=Float32Array&&(e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=0,e[12]=0,e[13]=0,e[14]=0),e[0]=1,e[5]=1,e[10]=1,e[15]=1,e}function a(e){return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}Math.hypot||(Math.hypot=function(){for(var e=0,t=arguments.length;t--;)e+=arguments[t]*arguments[t];return Math.sqrt(e)});var o,d=function(e,t,r,i,n,s,a){var o=1/(t-r),d=1/(i-n),l=1/(s-a);return e[0]=-2*o,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=-2*d,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=2*l,e[11]=0,e[12]=(t+r)*o,e[13]=(n+i)*d,e[14]=(a+s)*l,e[15]=1,e};function l(e,t,r){var i=new n(3);return i[0]=e,i[1]=t,i[2]=r,i}o=new n(3),n!=Float32Array&&(o[0]=0,o[1]=0,o[2]=0);var u=(e,t)=>{t&&e.pixelStorei(e.UNPACK_ALIGNMENT,1);const r=function(){const t=m(e.VERTEX_SHADER,"\n attribute vec4 aVertexPosition;\n attribute vec2 aTexturePosition;\n uniform mat4 uModelMatrix;\n uniform mat4 uViewMatrix;\n uniform mat4 uProjectionMatrix;\n varying lowp vec2 vTexturePosition;\n void main(void) {\n gl_Position = uProjectionMatrix * uViewMatrix * uModelMatrix * aVertexPosition;\n vTexturePosition = aTexturePosition;\n }\n "),r=m(e.FRAGMENT_SHADER,"\n precision highp float;\n varying highp vec2 vTexturePosition;\n uniform int isyuv;\n uniform sampler2D rgbaTexture;\n uniform sampler2D yTexture;\n uniform sampler2D uTexture;\n uniform sampler2D vTexture;\n\n const mat4 YUV2RGB = mat4( 1.1643828125, 0, 1.59602734375, -.87078515625,\n 1.1643828125, -.39176171875, -.81296875, .52959375,\n 1.1643828125, 2.017234375, 0, -1.081390625,\n 0, 0, 0, 1);\n\n\n void main(void) {\n\n if (isyuv>0) {\n\n highp float y = texture2D(yTexture, vTexturePosition).r;\n highp float u = texture2D(uTexture, vTexturePosition).r;\n highp float v = texture2D(vTexture, vTexturePosition).r;\n gl_FragColor = vec4(y, u, v, 1) * YUV2RGB;\n\n } else {\n gl_FragColor = texture2D(rgbaTexture, vTexturePosition);\n }\n }\n "),i=e.createProgram();if(e.attachShader(i,t),e.attachShader(i,r),e.linkProgram(i),!e.getProgramParameter(i,e.LINK_STATUS))return console.log("Unable to initialize the shader program: "+e.getProgramInfoLog(i)),null;return i}();let n={program:r,attribLocations:{vertexPosition:e.getAttribLocation(r,"aVertexPosition"),texturePosition:e.getAttribLocation(r,"aTexturePosition")},uniformLocations:{projectionMatrix:e.getUniformLocation(r,"uProjectionMatrix"),modelMatrix:e.getUniformLocation(r,"uModelMatrix"),viewMatrix:e.getUniformLocation(r,"uViewMatrix"),rgbatexture:e.getUniformLocation(r,"rgbaTexture"),ytexture:e.getUniformLocation(r,"yTexture"),utexture:e.getUniformLocation(r,"uTexture"),vtexture:e.getUniformLocation(r,"vTexture"),isyuv:e.getUniformLocation(r,"isyuv")}},o=function(){const t=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,t);e.bufferData(e.ARRAY_BUFFER,new Float32Array([-1,-1,-1,1,-1,-1,1,1,-1,-1,1,-1]),e.STATIC_DRAW);var r=[];r=r.concat([0,1],[1,1],[1,0],[0,0]);const i=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,i),e.bufferData(e.ARRAY_BUFFER,new Float32Array(r),e.STATIC_DRAW);const n=e.createBuffer();e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,n);return e.bufferData(e.ELEMENT_ARRAY_BUFFER,new Uint16Array([0,1,2,0,2,3]),e.STATIC_DRAW),{position:t,texPosition:i,indices:n}}(),u=p(),c=p(),h=p(),f=p();function p(){let t=e.createTexture();return e.bindTexture(e.TEXTURE_2D,t),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),t}function m(t,r){const i=e.createShader(t);return e.shaderSource(i,r),e.compileShader(i),e.getShaderParameter(i,e.COMPILE_STATUS)?i:(console.log("An error occurred compiling the shaders: "+e.getShaderInfoLog(i)),e.deleteShader(i),null)}function _(t,r){e.viewport(0,0,t,r),e.clearColor(0,0,0,0),e.clearDepth(1),e.enable(e.DEPTH_TEST),e.depthFunc(e.LEQUAL),e.clear(e.COLOR_BUFFER_BIT|e.DEPTH_BUFFER_BIT);const u=s();d(u,-1,1,-1,1,.1,100);const p=s();a(p);const m=s();!function(e,t,r,n){var s,o,d,l,u,c,h,f,p,m,_=t[0],y=t[1],g=t[2],v=n[0],b=n[1],w=n[2],S=r[0],E=r[1],U=r[2];Math.abs(_-S)>1,(1&t)<<7|r<<3])}function je(e){return Ye(e)&&e[1]===Pe.sequenceHeader}function Ye(e){return e[0]>>4===xe.AAC}Ve((function(e){!function(){var t="undefined"!=typeof window&&void 0!==window.document?window.document:{},r=e.exports,i=function(){for(var e,r=[["requestFullscreen","exitFullscreen","fullscreenElement","fullscreenEnabled","fullscreenchange","fullscreenerror"],["webkitRequestFullscreen","webkitExitFullscreen","webkitFullscreenElement","webkitFullscreenEnabled","webkitfullscreenchange","webkitfullscreenerror"],["webkitRequestFullScreen","webkitCancelFullScreen","webkitCurrentFullScreenElement","webkitCancelFullScreen","webkitfullscreenchange","webkitfullscreenerror"],["mozRequestFullScreen","mozCancelFullScreen","mozFullScreenElement","mozFullScreenEnabled","mozfullscreenchange","mozfullscreenerror"],["msRequestFullscreen","msExitFullscreen","msFullscreenElement","msFullscreenEnabled","MSFullscreenChange","MSFullscreenError"]],i=0,n=r.length,s={};i{if(n=i,"[object Number]"!==Object.prototype.toString.call(n))return;var n;t+=i;const s=Qe(),a=s-r;a>=1e3&&(e(t/a*1e3),r=s,t=0)}}function tt(){const e=window.navigator.userAgent;return!e.match(/Chrome/gi)&&!!e.match(/Safari/gi)}function rt(e){return null==e}function it(e){e.close()}function nt(e,t){t&&(e=e.filter((e=>e.type&&e.type===t)));let r=e[0],i=null,n=1;if(e.length>0){let t=e[1];t&&t.ts-r.ts>1e5&&(r=t,n=2)}if(r)for(let s=n;s=1e3){e[s-1].ts-r.ts<1e3&&(i=s+1)}}}return i}function st(){return function(e){let t="";if("object"==typeof e)try{t=JSON.stringify(e),t=JSON.parse(t)}catch(r){t=e}else t=e;return t}(w)}function at(e){return e[0]>>4===Fe.keyFrame&&e[1]===Pe.sequenceHeader}function ot(e){return!0===e||"true"===e}function dt(e){return!0!==e&&"true"!==e}(()=>{try{if("object"==typeof WebAssembly&&"function"==typeof WebAssembly.instantiate){const e=new WebAssembly.Module(Uint8Array.of(0,97,115,109,1,0,0,0));if(e instanceof WebAssembly.Module)return new WebAssembly.Instance(e)instanceof WebAssembly.Instance}}catch(e){}})();var lt=function(e,t,r,i){return new(r||(r=Promise))((function(n,s){function a(e){try{d(i.next(e))}catch(e){s(e)}}function o(e){try{d(i.throw(e))}catch(e){s(e)}}function d(e){var t;e.done?n(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(a,o)}d((i=i.apply(e,t||[])).next())}))};const ut=Symbol(32),ct=Symbol(16),ht=Symbol(8);class ft{constructor(e){this.g=e,this.consumed=0,e&&(this.need=e.next().value)}setG(e){this.g=e,this.demand(e.next().value,!0)}consume(){this.buffer&&this.consumed&&(this.buffer.copyWithin(0,this.consumed),this.buffer=this.buffer.subarray(0,this.buffer.length-this.consumed),this.consumed=0)}demand(e,t){return t&&this.consume(),this.need=e,this.flush()}read(e){return lt(this,void 0,void 0,(function*(){return this.lastReadPromise&&(yield this.lastReadPromise),this.lastReadPromise=new Promise(((t,r)=>{var i;this.reject=r,this.resolve=e=>{delete this.lastReadPromise,delete this.resolve,delete this.need,t(e)};this.demand(e,!0)||null===(i=this.pull)||void 0===i||i.call(this,e)}))}))}readU32(){return this.read(ut)}readU16(){return this.read(ct)}readU8(){return this.read(ht)}close(){var e;this.g&&this.g.return(),this.buffer&&this.buffer.subarray(0,0),null===(e=this.reject)||void 0===e||e.call(this,new Error("EOF")),delete this.lastReadPromise}flush(){if(!this.buffer||!this.need)return;let e=null;const t=this.buffer.subarray(this.consumed);let r=0;const i=e=>t.length<(r=e);if("number"==typeof this.need){if(i(this.need))return;e=t.subarray(0,r)}else if(this.need===ut){if(i(4))return;e=t[0]<<24|t[1]<<16|t[2]<<8|t[3]}else if(this.need===ct){if(i(2))return;e=t[0]<<8|t[1]}else if(this.need===ht){if(i(1))return;e=t[0]}else if("buffer"in this.need){if("byteOffset"in this.need){if(i(this.need.byteLength-this.need.byteOffset))return;new Uint8Array(this.need.buffer,this.need.byteOffset).set(t.subarray(0,r)),e=this.need}else if(this.g)return void this.g.throw(new Error("Unsupported type"))}else{if(i(this.need.byteLength))return;new Uint8Array(this.need).set(t.subarray(0,r)),e=this.need}return this.consumed+=r,this.g?this.demand(this.g.next(e).value,!0):this.resolve&&this.resolve(e),e}write(e){if(e instanceof Uint8Array?this.malloc(e.length).set(e):"buffer"in e?this.malloc(e.byteLength).set(new Uint8Array(e.buffer,e.byteOffset,e.byteLength)):this.malloc(e.byteLength).set(new Uint8Array(e)),!this.g&&!this.resolve)return new Promise((e=>this.pull=e));this.flush()}writeU32(e){this.malloc(4).set([e>>24&255,e>>16&255,e>>8&255,255&e]),this.flush()}writeU16(e){this.malloc(2).set([e>>8&255,255&e]),this.flush()}writeU8(e){this.malloc(1)[0]=e,this.flush()}malloc(e){if(this.buffer){const t=this.buffer.length,r=t+e;if(r<=this.buffer.buffer.byteLength-this.buffer.byteOffset)this.buffer=new Uint8Array(this.buffer.buffer,this.buffer.byteOffset,r);else{const e=new Uint8Array(r);e.set(this.buffer),this.buffer=e}return this.buffer.subarray(t,r)}return this.buffer=new Uint8Array(e),this.buffer}}ft.U32=ut,ft.U16=ct,ft.U8=ht;class pt{constructor(e){this.log=(t,...r)=>{if(e._opt.debug&&e._opt.debugLevel==g){const i=e._opt.debugUuid?`[${e._opt.debugUuid}]`:"";console.log(`EasyPro${i}[✅✅✅][${t}]`,...r)}},this.warn=(t,...r)=>{if(e._opt.debug&&(e._opt.debugLevel==g||e._opt.debugLevel==v)){const i=e._opt.debugUuid?`[${e._opt.debugUuid}]`:"";console.log(`EasyPro${i}[❗❗❗][${t}]`,...r)}},this.error=(t,...r)=>{const i=e._opt.debugUuid?`[${e._opt.debugUuid}]`:"";console.error(`EasyPro${i}[❌❌❌][${t}]`,...r)}}}class mt{constructor(e){this._buffer=e,this._buffer_index=0,this._total_bytes=e.byteLength,this._total_bits=8*e.byteLength,this._current_word=0,this._current_word_bits_left=0}destroy(){this._buffer=null}_fillCurrentWord(){let e=this._total_bytes-this._buffer_index;if(e<=0)return void console.error("ExpGolomb: _fillCurrentWord() but no bytes available",this._total_bytes,this._buffer_index);let t=Math.min(4,e),r=new Uint8Array(4);r.set(this._buffer.subarray(this._buffer_index,this._buffer_index+t)),this._current_word=new DataView(r.buffer).getUint32(0,!1),this._buffer_index+=t,this._current_word_bits_left=8*t}readBits(e){if(e>32&&console.error("ExpGolomb: readBits() bits exceeded max 32bits!"),e<=this._current_word_bits_left){let t=this._current_word>>>32-e;return this._current_word<<=e,this._current_word_bits_left-=e,t}let t=this._current_word_bits_left?this._current_word:0;t>>>=32-this._current_word_bits_left;let r=e-this._current_word_bits_left;this._fillCurrentWord();let i=Math.min(r,this._current_word_bits_left),n=this._current_word>>>32-i;return this._current_word<<=i,this._current_word_bits_left-=i,t=t<>>e)return this._current_word<<=e,this._current_word_bits_left-=e,e;return this._fillCurrentWord(),e+this._skipLeadingZero()}readUEG(){let e=this._skipLeadingZero();return this.readBits(e+1)-1}readSEG(){let e=this.readUEG();return 1&e?e+1>>>1:-1*(e>>>1)}}class _t{static _ebsp2rbsp(e){let t=e,r=t.byteLength,i=new Uint8Array(r),n=0;for(let e=0;e=2&&3===t[e]&&0===t[e-1]&&0===t[e-2]||(i[n]=t[e],n++);return new Uint8Array(i.buffer,0,n)}static parseSPS(e){let t=_t._ebsp2rbsp(e),r=new mt(t);r.readByte();let i=r.readByte();r.readByte();let n=r.readByte();r.readUEG();let s=_t.getProfileString(i),a=_t.getLevelString(n),o=1,d=420,l=[0,420,422,444],u=8;if((100===i||110===i||122===i||244===i||44===i||83===i||86===i||118===i||128===i||138===i||144===i)&&(o=r.readUEG(),3===o&&r.readBits(1),o<=3&&(d=l[o]),u=r.readUEG()+8,r.readUEG(),r.readBits(1),r.readBool())){let e=3!==o?8:12;for(let t=0;t0&&e<16?(b=[1,12,10,16,40,24,20,32,80,18,15,64,160,4,3,2][e-1],w=[1,11,11,11,33,11,11,11,33,11,11,33,99,3,2,1][e-1]):255===e&&(b=r.readByte()<<8|r.readByte(),w=r.readByte()<<8|r.readByte())}if(r.readBool()&&r.readBool(),r.readBool()&&(r.readBits(4),r.readBool()&&r.readBits(24)),r.readBool()&&(r.readUEG(),r.readUEG()),r.readBool()){let e=r.readBits(32),t=r.readBits(32);E=r.readBool(),U=t,x=2*e,S=U/x}}let A=1;1===b&&1===w||(A=b/w);let T=0,k=0;if(0===o)T=1,k=2-m;else{T=3===o?1:2,k=(1===o?2:1)*(2-m)}let C=16*(f+1),B=16*(p+1)*(2-m);C-=(_+y)*T,B-=(g+v)*k;let D=Math.ceil(C*A);return r.destroy(),r=null,{profile_string:s,level_string:a,bit_depth:u,ref_frames:h,chroma_format:d,chroma_format_string:_t.getChromaFormatString(d),frame_rate:{fixed:E,fps:S,fps_den:x,fps_num:U},sar_ratio:{width:b,height:w},codec_size:{width:C,height:B},present_size:{width:D,height:B}}}static parseSPS$2(e){let t=e.subarray(1,4),r="avc1.";for(let e=0;e<3;e++){let i=t[e].toString(16);i.length<2&&(i="0"+i),r+=i}let i=_t._ebsp2rbsp(e),n=new mt(i);n.readByte();let s=n.readByte();n.readByte();let a=n.readByte();n.readUEG();let o=_t.getProfileString(s),d=_t.getLevelString(a),l=1,u=420,c=[0,420,422,444],h=8,f=8;if((100===s||110===s||122===s||244===s||44===s||83===s||86===s||118===s||128===s||138===s||144===s)&&(l=n.readUEG(),3===l&&n.readBits(1),l<=3&&(u=c[l]),h=n.readUEG()+8,f=n.readUEG()+8,n.readBits(1),n.readBool())){let e=3!==l?8:12;for(let t=0;t0&&e<16?(E=[1,12,10,16,40,24,20,32,80,18,15,64,160,4,3,2][e-1],U=[1,11,11,11,33,11,11,11,33,11,11,33,99,3,2,1][e-1]):255===e&&(E=n.readByte()<<8|n.readByte(),U=n.readByte()<<8|n.readByte())}if(n.readBool()&&n.readBool(),n.readBool()&&(n.readBits(4),n.readBool()&&n.readBits(24)),n.readBool()&&(n.readUEG(),n.readUEG()),n.readBool()){let e=n.readBits(32),t=n.readBits(32);A=n.readBool(),T=t,k=2*e,x=T/k}}let C=1;1===E&&1===U||(C=E/U);let B=0,D=0;if(0===l)B=1,D=2-g;else{B=3===l?1:2,D=(1===l?2:1)*(2-g)}let P=16*(_+1),F=16*(y+1)*(2-g);P-=(v+b)*B,F-=(w+S)*D;let I=Math.ceil(P*C);return n.destroy(),n=null,{codec_mimetype:r,profile_idc:s,level_idc:a,profile_string:o,level_string:d,chroma_format_idc:l,bit_depth:h,bit_depth_luma:h,bit_depth_chroma:f,ref_frames:m,chroma_format:u,chroma_format_string:_t.getChromaFormatString(u),frame_rate:{fixed:A,fps:x,fps_den:k,fps_num:T},sar_ratio:{width:E,height:U},codec_size:{width:P,height:F},present_size:{width:I,height:F}}}static _skipScalingList(e,t){let r=8,i=8,n=0;for(let s=0;s=this.buflen)return this.iserro=!0,0;this.iserro=!1,r=this.bufoff+e>8?8-this.bufoff:e,t<<=r,t+=this.buffer[this.bufpos]>>8-this.bufoff-r&255>>8-r,this.bufoff+=r,e-=r,8==this.bufoff&&(this.bufpos++,this.bufoff=0)}return t}look(e){let t=this.bufpos,r=this.bufoff,i=this.read(e);return this.bufpos=t,this.bufoff=r,i}read_golomb(){let e;for(e=0;0===this.read(1)&&!this.iserro;e++);return(1<>>24&255,e>>>16&255,e>>>8&255,255&e]),i=new Uint8Array(e+4);i.set(r,0),i.set(t.sps,4),t.sps=i}if(t.pps){const e=t.pps.byteLength,r=new Uint8Array([e>>>24&255,e>>>16&255,e>>>8&255,255&e]),i=new Uint8Array(e+4);i.set(r,0),i.set(t.pps,4),t.pps=i}return t}function vt({sps:e,pps:t}){const r=[23,0,0,0,0,1,66,0,30,255];r[0]=23,r[6]=e[1],r[7]=e[2],r[8]=e[3],r[10]=225,r[11]=e.byteLength>>8&255,r[12]=255&e.byteLength,r.push(...e,1,t.byteLength>>8&255,255&t.byteLength,...t);return new Uint8Array(r)}function bt(e,t){let r=[];r[0]=t?23:39,r[1]=1,r[2]=0,r[3]=0,r[4]=0;const i=new Uint8Array(r.length+e.byteLength);return i.set(r,0),i.set(e,r.length),i}function wt(e){return 31&e[0]}function St(e){return e===Ae.kSliceSEI}function Et(e){return!function(e){return e===Ae.sps||e===Ae.pps}(e)&&!St(e)}function Ut(e){return e===Ae.iFrame}const xt=e=>{let t=e,r=t.byteLength,i=new Uint8Array(r),n=0;for(let e=0;e=2&&3===t[e]&&0===t[e-1]&&0===t[e-2]||(i[n]=t[e],n++);return new Uint8Array(i.buffer,0,n)},At=e=>{switch(e){case 0:return"4:0:0";case 1:return"4:2:0";case 2:return"4:2:2";case 3:return"4:4:4";default:return"Unknown"}},Tt=e=>{let t=xt(e),r=new mt(t);r.readByte(),r.readByte();let i=0,n=0,s=0,a=0;r.readBits(4);let o=r.readBits(3);r.readBool();let d=r.readBits(2),l=r.readBool(),u=r.readBits(5),c=r.readByte(),h=r.readByte(),f=r.readByte(),p=r.readByte(),m=r.readByte(),_=r.readByte(),y=r.readByte(),g=r.readByte(),v=r.readByte(),b=r.readByte(),w=r.readByte(),S=[],E=[];for(let e=0;e0)for(let e=o;e<8;e++)r.readBits(2);for(let e=0;e1&&r.readSEG();for(let e=0;e0&&e<16?(I=[1,12,10,16,40,24,20,32,80,18,15,64,160,4,3,2][e-1],L=[1,11,11,11,33,11,11,11,33,11,11,33,99,3,2,1][e-1]):255===e&&(I=r.readBits(16),L=r.readBits(16))}if(r.readBool()&&r.readBool(),r.readBool()){r.readBits(3),r.readBool(),r.readBool()&&(r.readByte(),r.readByte(),r.readByte())}if(r.readBool()&&(r.readUEG(),r.readUEG()),r.readBool(),r.readBool(),r.readBool(),P=r.readBool(),P&&(i+=r.readUEG(),n+=r.readUEG(),s+=r.readUEG(),a+=r.readUEG()),r.readBool()){if(M=r.readBits(32),z=r.readBits(32),r.readBool()){if(r.readUEG(),r.readBool()){let e=!1,t=!1,i=!1;e=r.readBool(),t=r.readBool(),(e||t)&&(i=r.readBool(),i&&(r.readByte(),r.readBits(5),r.readBool(),r.readBits(5)),r.readBits(4),r.readBits(4),i&&r.readBits(4),r.readBits(5),r.readBits(5),r.readBits(5));for(let n=0;n<=o;n++){let n=r.readBool();R=n;let s=!1,a=1;n||(s=r.readBool());let o=!1;if(s?r.readSEG():o=r.readBool(),o||(cpbcnt=r.readUEG()+1),e)for(let e=0;e{let t=xt(e),r=new mt(t);return r.readByte(),r.readByte(),r.readBits(4),r.readBits(2),r.readBits(6),{num_temporal_layers:r.readBits(3)+1,temporal_id_nested:r.readBool()}},Ct=e=>{let t=xt(e),r=new mt(t);r.readByte(),r.readByte(),r.readUEG(),r.readUEG(),r.readBool(),r.readBool(),r.readBits(3),r.readBool(),r.readBool(),r.readUEG(),r.readUEG(),r.readSEG(),r.readBool(),r.readBool(),r.readBool()&&r.readUEG(),r.readSEG(),r.readSEG(),r.readBool(),r.readBool(),r.readBool(),r.readBool();let i=r.readBool(),n=r.readBool(),s=1;return n&&i?s=0:n?s=3:i&&(s=2),{parallelismType:s}};function Bt(e,t=0){return(e[t]<<24>>>0)+(e[t+1]<<16)+(e[t+2]<<8)+(e[t+3]||0)}function Dt(e,t=4){if(e.length<4)return;const r=e.length,i=[];let n,s=0;for(;s+t>>=8),s+=t,n){if(s+n>r)break;i.push(e.subarray(s,s+n)),s+=n}return i}function Pt(e){const t=e.byteLength,r=new Uint8Array(4);r[0]=t>>>24&255,r[1]=t>>>16&255,r[2]=t>>>8&255,r[3]=255&t;const i=new Uint8Array(t+4);return i.set(r,0),i.set(e,4),i}function Ft(e,t){let r=null;return t?e.length>=28&&(r=1+(3&e[26])):e.length>=12&&(r=1+(3&e[9])),r}function It(e,t){let r={},i=e.length,n=[],s=new yt(e);s.read(1),s.read(6),s.read(6),s.read(3);for(let e=2;e0)for(let t=r;t<8;t++)e.read(2);i.sub_layer_profile_space=[],i.sub_layer_tier_flag=[],i.sub_layer_profile_idc=[],i.sub_layer_profile_compatibility_flag=[],i.sub_layer_progressive_source_flag=[],i.sub_layer_interlaced_source_flag=[],i.sub_layer_non_packed_constraint_flag=[],i.sub_layer_frame_only_constraint_flag=[],i.sub_layer_level_idc=[];for(let t=0;t>8,d[14]=255&i.min_spatial_segmentation_idc,d[15]=252|3&i.parallelismType,d[16]=252|3&i.chroma_format_idc,d[17]=248|7&i.bit_depth_luma_minus8,d[18]=248|7&i.bit_depth_chroma_minus8,d[19]=0,d[20]=0,d[21]=(3&i.constant_frame_rate)<<6|(7&i.num_temporal_layers)<<3|(i.temporal_id_nested?1:0)<<2|3,d[22]=3,d[23]=128|Te.vps,d[24]=0,d[25]=1,d[26]=(65280&e.byteLength)>>8,d[27]=255&e.byteLength,d.set(e,28),d[23+(5+e.byteLength)+0]=128|Te.sps,d[23+(5+e.byteLength)+1]=0,d[23+(5+e.byteLength)+2]=1,d[23+(5+e.byteLength)+3]=(65280&r.byteLength)>>8,d[23+(5+e.byteLength)+4]=255&r.byteLength,d.set(r,23+(5+e.byteLength)+5),d[23+(5+e.byteLength+5+r.byteLength)+0]=128|Te.pps,d[23+(5+e.byteLength+5+r.byteLength)+1]=0,d[23+(5+e.byteLength+5+r.byteLength)+2]=1,d[23+(5+e.byteLength+5+r.byteLength)+3]=(65280&t.byteLength)>>8,d[23+(5+e.byteLength+5+r.byteLength)+4]=255&t.byteLength,d.set(t,23+(5+e.byteLength+5+r.byteLength)+5);const l=[28,0,0,0,0],u=new Uint8Array(l.length+d.byteLength);return u.set(l,0),u.set(d,l.length),u}function Rt(e,t){let r=[];r[0]=t?28:44,r[1]=1,r[2]=0,r[3]=0,r[4]=0;const i=new Uint8Array(r.length+e.byteLength);return i.set(r,0),i.set(e,r.length),i}function Mt(e){return(126&e[0])>>1}function zt(e){return!function(e){return e>=32&&e<=40}(e)}function Ot(e){return e>=16&&e<=21}function Nt(e){return parseInt(e)===e}function $t(e){if(!Nt(e.length))return!1;for(var t=0;t255)return!1;return!0}function Gt(e,t){if(e.buffer&&"Uint8Array"===e.name)return t&&(e=e.slice?e.slice():Array.prototype.slice.call(e)),e;if(Array.isArray(e)){if(!$t(e))throw new Error("Array contains invalid value: "+e);return new Uint8Array(e)}if(Nt(e.length)&&$t(e))return new Uint8Array(e);throw new Error("unsupported array-like object")}function Ht(e){return new Uint8Array(e)}function Vt(e,t,r,i,n){null==i&&null==n||(e=e.slice?e.slice(i,n):Array.prototype.slice.call(e,i,n)),t.set(e,r)}var Wt,jt={toBytes:function(e){var t=[],r=0;for(e=encodeURI(e);r191&&i<224?(t.push(String.fromCharCode((31&i)<<6|63&e[r+1])),r+=2):(t.push(String.fromCharCode((15&i)<<12|(63&e[r+1])<<6|63&e[r+2])),r+=3)}return t.join("")}},Yt=(Wt="0123456789abcdef",{toBytes:function(e){for(var t=[],r=0;r>4]+Wt[15&i])}return t.join("")}}),qt={16:10,24:12,32:14},Kt=[1,2,4,8,16,32,64,128,27,54,108,216,171,77,154,47,94,188,99,198,151,53,106,212,179,125,250,239,197,145],Xt=[99,124,119,123,242,107,111,197,48,1,103,43,254,215,171,118,202,130,201,125,250,89,71,240,173,212,162,175,156,164,114,192,183,253,147,38,54,63,247,204,52,165,229,241,113,216,49,21,4,199,35,195,24,150,5,154,7,18,128,226,235,39,178,117,9,131,44,26,27,110,90,160,82,59,214,179,41,227,47,132,83,209,0,237,32,252,177,91,106,203,190,57,74,76,88,207,208,239,170,251,67,77,51,133,69,249,2,127,80,60,159,168,81,163,64,143,146,157,56,245,188,182,218,33,16,255,243,210,205,12,19,236,95,151,68,23,196,167,126,61,100,93,25,115,96,129,79,220,34,42,144,136,70,238,184,20,222,94,11,219,224,50,58,10,73,6,36,92,194,211,172,98,145,149,228,121,231,200,55,109,141,213,78,169,108,86,244,234,101,122,174,8,186,120,37,46,28,166,180,198,232,221,116,31,75,189,139,138,112,62,181,102,72,3,246,14,97,53,87,185,134,193,29,158,225,248,152,17,105,217,142,148,155,30,135,233,206,85,40,223,140,161,137,13,191,230,66,104,65,153,45,15,176,84,187,22],Zt=[82,9,106,213,48,54,165,56,191,64,163,158,129,243,215,251,124,227,57,130,155,47,255,135,52,142,67,68,196,222,233,203,84,123,148,50,166,194,35,61,238,76,149,11,66,250,195,78,8,46,161,102,40,217,36,178,118,91,162,73,109,139,209,37,114,248,246,100,134,104,152,22,212,164,92,204,93,101,182,146,108,112,72,80,253,237,185,218,94,21,70,87,167,141,157,132,144,216,171,0,140,188,211,10,247,228,88,5,184,179,69,6,208,44,30,143,202,63,15,2,193,175,189,3,1,19,138,107,58,145,17,65,79,103,220,234,151,242,207,206,240,180,230,115,150,172,116,34,231,173,53,133,226,249,55,232,28,117,223,110,71,241,26,113,29,41,197,137,111,183,98,14,170,24,190,27,252,86,62,75,198,210,121,32,154,219,192,254,120,205,90,244,31,221,168,51,136,7,199,49,177,18,16,89,39,128,236,95,96,81,127,169,25,181,74,13,45,229,122,159,147,201,156,239,160,224,59,77,174,42,245,176,200,235,187,60,131,83,153,97,23,43,4,126,186,119,214,38,225,105,20,99,85,33,12,125],Jt=[3328402341,4168907908,4000806809,4135287693,4294111757,3597364157,3731845041,2445657428,1613770832,33620227,3462883241,1445669757,3892248089,3050821474,1303096294,3967186586,2412431941,528646813,2311702848,4202528135,4026202645,2992200171,2387036105,4226871307,1101901292,3017069671,1604494077,1169141738,597466303,1403299063,3832705686,2613100635,1974974402,3791519004,1033081774,1277568618,1815492186,2118074177,4126668546,2211236943,1748251740,1369810420,3521504564,4193382664,3799085459,2883115123,1647391059,706024767,134480908,2512897874,1176707941,2646852446,806885416,932615841,168101135,798661301,235341577,605164086,461406363,3756188221,3454790438,1311188841,2142417613,3933566367,302582043,495158174,1479289972,874125870,907746093,3698224818,3025820398,1537253627,2756858614,1983593293,3084310113,2108928974,1378429307,3722699582,1580150641,327451799,2790478837,3117535592,0,3253595436,1075847264,3825007647,2041688520,3059440621,3563743934,2378943302,1740553945,1916352843,2487896798,2555137236,2958579944,2244988746,3151024235,3320835882,1336584933,3992714006,2252555205,2588757463,1714631509,293963156,2319795663,3925473552,67240454,4269768577,2689618160,2017213508,631218106,1269344483,2723238387,1571005438,2151694528,93294474,1066570413,563977660,1882732616,4059428100,1673313503,2008463041,2950355573,1109467491,537923632,3858759450,4260623118,3218264685,2177748300,403442708,638784309,3287084079,3193921505,899127202,2286175436,773265209,2479146071,1437050866,4236148354,2050833735,3362022572,3126681063,840505643,3866325909,3227541664,427917720,2655997905,2749160575,1143087718,1412049534,999329963,193497219,2353415882,3354324521,1807268051,672404540,2816401017,3160301282,369822493,2916866934,3688947771,1681011286,1949973070,336202270,2454276571,201721354,1210328172,3093060836,2680341085,3184776046,1135389935,3294782118,965841320,831886756,3554993207,4068047243,3588745010,2345191491,1849112409,3664604599,26054028,2983581028,2622377682,1235855840,3630984372,2891339514,4092916743,3488279077,3395642799,4101667470,1202630377,268961816,1874508501,4034427016,1243948399,1546530418,941366308,1470539505,1941222599,2546386513,3421038627,2715671932,3899946140,1042226977,2521517021,1639824860,227249030,260737669,3765465232,2084453954,1907733956,3429263018,2420656344,100860677,4160157185,470683154,3261161891,1781871967,2924959737,1773779408,394692241,2579611992,974986535,664706745,3655459128,3958962195,731420851,571543859,3530123707,2849626480,126783113,865375399,765172662,1008606754,361203602,3387549984,2278477385,2857719295,1344809080,2782912378,59542671,1503764984,160008576,437062935,1707065306,3622233649,2218934982,3496503480,2185314755,697932208,1512910199,504303377,2075177163,2824099068,1841019862,739644986],Qt=[2781242211,2230877308,2582542199,2381740923,234877682,3184946027,2984144751,1418839493,1348481072,50462977,2848876391,2102799147,434634494,1656084439,3863849899,2599188086,1167051466,2636087938,1082771913,2281340285,368048890,3954334041,3381544775,201060592,3963727277,1739838676,4250903202,3930435503,3206782108,4149453988,2531553906,1536934080,3262494647,484572669,2923271059,1783375398,1517041206,1098792767,49674231,1334037708,1550332980,4098991525,886171109,150598129,2481090929,1940642008,1398944049,1059722517,201851908,1385547719,1699095331,1587397571,674240536,2704774806,252314885,3039795866,151914247,908333586,2602270848,1038082786,651029483,1766729511,3447698098,2682942837,454166793,2652734339,1951935532,775166490,758520603,3000790638,4004797018,4217086112,4137964114,1299594043,1639438038,3464344499,2068982057,1054729187,1901997871,2534638724,4121318227,1757008337,0,750906861,1614815264,535035132,3363418545,3988151131,3201591914,1183697867,3647454910,1265776953,3734260298,3566750796,3903871064,1250283471,1807470800,717615087,3847203498,384695291,3313910595,3617213773,1432761139,2484176261,3481945413,283769337,100925954,2180939647,4037038160,1148730428,3123027871,3813386408,4087501137,4267549603,3229630528,2315620239,2906624658,3156319645,1215313976,82966005,3747855548,3245848246,1974459098,1665278241,807407632,451280895,251524083,1841287890,1283575245,337120268,891687699,801369324,3787349855,2721421207,3431482436,959321879,1469301956,4065699751,2197585534,1199193405,2898814052,3887750493,724703513,2514908019,2696962144,2551808385,3516813135,2141445340,1715741218,2119445034,2872807568,2198571144,3398190662,700968686,3547052216,1009259540,2041044702,3803995742,487983883,1991105499,1004265696,1449407026,1316239930,504629770,3683797321,168560134,1816667172,3837287516,1570751170,1857934291,4014189740,2797888098,2822345105,2754712981,936633572,2347923833,852879335,1133234376,1500395319,3084545389,2348912013,1689376213,3533459022,3762923945,3034082412,4205598294,133428468,634383082,2949277029,2398386810,3913789102,403703816,3580869306,2297460856,1867130149,1918643758,607656988,4049053350,3346248884,1368901318,600565992,2090982877,2632479860,557719327,3717614411,3697393085,2249034635,2232388234,2430627952,1115438654,3295786421,2865522278,3633334344,84280067,33027830,303828494,2747425121,1600795957,4188952407,3496589753,2434238086,1486471617,658119965,3106381470,953803233,334231800,3005978776,857870609,3151128937,1890179545,2298973838,2805175444,3056442267,574365214,2450884487,550103529,1233637070,4289353045,2018519080,2057691103,2399374476,4166623649,2148108681,387583245,3664101311,836232934,3330556482,3100665960,3280093505,2955516313,2002398509,287182607,3413881008,4238890068,3597515707,975967766],er=[1671808611,2089089148,2006576759,2072901243,4061003762,1807603307,1873927791,3310653893,810573872,16974337,1739181671,729634347,4263110654,3613570519,2883997099,1989864566,3393556426,2191335298,3376449993,2106063485,4195741690,1508618841,1204391495,4027317232,2917941677,3563566036,2734514082,2951366063,2629772188,2767672228,1922491506,3227229120,3082974647,4246528509,2477669779,644500518,911895606,1061256767,4144166391,3427763148,878471220,2784252325,3845444069,4043897329,1905517169,3631459288,827548209,356461077,67897348,3344078279,593839651,3277757891,405286936,2527147926,84871685,2595565466,118033927,305538066,2157648768,3795705826,3945188843,661212711,2999812018,1973414517,152769033,2208177539,745822252,439235610,455947803,1857215598,1525593178,2700827552,1391895634,994932283,3596728278,3016654259,695947817,3812548067,795958831,2224493444,1408607827,3513301457,0,3979133421,543178784,4229948412,2982705585,1542305371,1790891114,3410398667,3201918910,961245753,1256100938,1289001036,1491644504,3477767631,3496721360,4012557807,2867154858,4212583931,1137018435,1305975373,861234739,2241073541,1171229253,4178635257,33948674,2139225727,1357946960,1011120188,2679776671,2833468328,1374921297,2751356323,1086357568,2408187279,2460827538,2646352285,944271416,4110742005,3168756668,3066132406,3665145818,560153121,271589392,4279952895,4077846003,3530407890,3444343245,202643468,322250259,3962553324,1608629855,2543990167,1154254916,389623319,3294073796,2817676711,2122513534,1028094525,1689045092,1575467613,422261273,1939203699,1621147744,2174228865,1339137615,3699352540,577127458,712922154,2427141008,2290289544,1187679302,3995715566,3100863416,339486740,3732514782,1591917662,186455563,3681988059,3762019296,844522546,978220090,169743370,1239126601,101321734,611076132,1558493276,3260915650,3547250131,2901361580,1655096418,2443721105,2510565781,3828863972,2039214713,3878868455,3359869896,928607799,1840765549,2374762893,3580146133,1322425422,2850048425,1823791212,1459268694,4094161908,3928346602,1706019429,2056189050,2934523822,135794696,3134549946,2022240376,628050469,779246638,472135708,2800834470,3032970164,3327236038,3894660072,3715932637,1956440180,522272287,1272813131,3185336765,2340818315,2323976074,1888542832,1044544574,3049550261,1722469478,1222152264,50660867,4127324150,236067854,1638122081,895445557,1475980887,3117443513,2257655686,3243809217,489110045,2662934430,3778599393,4162055160,2561878936,288563729,1773916777,3648039385,2391345038,2493985684,2612407707,505560094,2274497927,3911240169,3460925390,1442818645,678973480,3749357023,2358182796,2717407649,2306869641,219617805,3218761151,3862026214,1120306242,1756942440,1103331905,2578459033,762796589,252780047,2966125488,1425844308,3151392187,372911126],tr=[1667474886,2088535288,2004326894,2071694838,4075949567,1802223062,1869591006,3318043793,808472672,16843522,1734846926,724270422,4278065639,3621216949,2880169549,1987484396,3402253711,2189597983,3385409673,2105378810,4210693615,1499065266,1195886990,4042263547,2913856577,3570689971,2728590687,2947541573,2627518243,2762274643,1920112356,3233831835,3082273397,4261223649,2475929149,640051788,909531756,1061110142,4160160501,3435941763,875846760,2779116625,3857003729,4059105529,1903268834,3638064043,825316194,353713962,67374088,3351728789,589522246,3284360861,404236336,2526454071,84217610,2593830191,117901582,303183396,2155911963,3806477791,3958056653,656894286,2998062463,1970642922,151591698,2206440989,741110872,437923380,454765878,1852748508,1515908788,2694904667,1381168804,993742198,3604373943,3014905469,690584402,3823320797,791638366,2223281939,1398011302,3520161977,0,3991743681,538992704,4244381667,2981218425,1532751286,1785380564,3419096717,3200178535,960056178,1246420628,1280103576,1482221744,3486468741,3503319995,4025428677,2863326543,4227536621,1128514950,1296947098,859002214,2240123921,1162203018,4193849577,33687044,2139062782,1347481760,1010582648,2678045221,2829640523,1364325282,2745433693,1077985408,2408548869,2459086143,2644360225,943212656,4126475505,3166494563,3065430391,3671750063,555836226,269496352,4294908645,4092792573,3537006015,3452783745,202118168,320025894,3974901699,1600119230,2543297077,1145359496,387397934,3301201811,2812801621,2122220284,1027426170,1684319432,1566435258,421079858,1936954854,1616945344,2172753945,1330631070,3705438115,572679748,707427924,2425400123,2290647819,1179044492,4008585671,3099120491,336870440,3739122087,1583276732,185277718,3688593069,3772791771,842159716,976899700,168435220,1229577106,101059084,606366792,1549591736,3267517855,3553849021,2897014595,1650632388,2442242105,2509612081,3840161747,2038008818,3890688725,3368567691,926374254,1835907034,2374863873,3587531953,1313788572,2846482505,1819063512,1448540844,4109633523,3941213647,1701162954,2054852340,2930698567,134748176,3132806511,2021165296,623210314,774795868,471606328,2795958615,3031746419,3334885783,3907527627,3722280097,1953799400,522133822,1263263126,3183336545,2341176845,2324333839,1886425312,1044267644,3048588401,1718004428,1212733584,50529542,4143317495,235803164,1633788866,892690282,1465383342,3115962473,2256965911,3250673817,488449850,2661202215,3789633753,4177007595,2560144171,286339874,1768537042,3654906025,2391705863,2492770099,2610673197,505291324,2273808917,3924369609,3469625735,1431699370,673740880,3755965093,2358021891,2711746649,2307489801,218961690,3217021541,3873845719,1111672452,1751693520,1094828930,2576986153,757954394,252645662,2964376443,1414855848,3149649517,370555436],rr=[1374988112,2118214995,437757123,975658646,1001089995,530400753,2902087851,1273168787,540080725,2910219766,2295101073,4110568485,1340463100,3307916247,641025152,3043140495,3736164937,632953703,1172967064,1576976609,3274667266,2169303058,2370213795,1809054150,59727847,361929877,3211623147,2505202138,3569255213,1484005843,1239443753,2395588676,1975683434,4102977912,2572697195,666464733,3202437046,4035489047,3374361702,2110667444,1675577880,3843699074,2538681184,1649639237,2976151520,3144396420,4269907996,4178062228,1883793496,2403728665,2497604743,1383856311,2876494627,1917518562,3810496343,1716890410,3001755655,800440835,2261089178,3543599269,807962610,599762354,33778362,3977675356,2328828971,2809771154,4077384432,1315562145,1708848333,101039829,3509871135,3299278474,875451293,2733856160,92987698,2767645557,193195065,1080094634,1584504582,3178106961,1042385657,2531067453,3711829422,1306967366,2438237621,1908694277,67556463,1615861247,429456164,3602770327,2302690252,1742315127,2968011453,126454664,3877198648,2043211483,2709260871,2084704233,4169408201,0,159417987,841739592,504459436,1817866830,4245618683,260388950,1034867998,908933415,168810852,1750902305,2606453969,607530554,202008497,2472011535,3035535058,463180190,2160117071,1641816226,1517767529,470948374,3801332234,3231722213,1008918595,303765277,235474187,4069246893,766945465,337553864,1475418501,2943682380,4003061179,2743034109,4144047775,1551037884,1147550661,1543208500,2336434550,3408119516,3069049960,3102011747,3610369226,1113818384,328671808,2227573024,2236228733,3535486456,2935566865,3341394285,496906059,3702665459,226906860,2009195472,733156972,2842737049,294930682,1206477858,2835123396,2700099354,1451044056,573804783,2269728455,3644379585,2362090238,2564033334,2801107407,2776292904,3669462566,1068351396,742039012,1350078989,1784663195,1417561698,4136440770,2430122216,775550814,2193862645,2673705150,1775276924,1876241833,3475313331,3366754619,270040487,3902563182,3678124923,3441850377,1851332852,3969562369,2203032232,3868552805,2868897406,566021896,4011190502,3135740889,1248802510,3936291284,699432150,832877231,708780849,3332740144,899835584,1951317047,4236429990,3767586992,866637845,4043610186,1106041591,2144161806,395441711,1984812685,1139781709,3433712980,3835036895,2664543715,1282050075,3240894392,1181045119,2640243204,25965917,4203181171,4211818798,3009879386,2463879762,3910161971,1842759443,2597806476,933301370,1509430414,3943906441,3467192302,3076639029,3776767469,2051518780,2631065433,1441952575,404016761,1942435775,1408749034,1610459739,3745345300,2017778566,3400528769,3110650942,941896748,3265478751,371049330,3168937228,675039627,4279080257,967311729,135050206,3635733660,1683407248,2076935265,3576870512,1215061108,3501741890],ir=[1347548327,1400783205,3273267108,2520393566,3409685355,4045380933,2880240216,2471224067,1428173050,4138563181,2441661558,636813900,4233094615,3620022987,2149987652,2411029155,1239331162,1730525723,2554718734,3781033664,46346101,310463728,2743944855,3328955385,3875770207,2501218972,3955191162,3667219033,768917123,3545789473,692707433,1150208456,1786102409,2029293177,1805211710,3710368113,3065962831,401639597,1724457132,3028143674,409198410,2196052529,1620529459,1164071807,3769721975,2226875310,486441376,2499348523,1483753576,428819965,2274680428,3075636216,598438867,3799141122,1474502543,711349675,129166120,53458370,2592523643,2782082824,4063242375,2988687269,3120694122,1559041666,730517276,2460449204,4042459122,2706270690,3446004468,3573941694,533804130,2328143614,2637442643,2695033685,839224033,1973745387,957055980,2856345839,106852767,1371368976,4181598602,1033297158,2933734917,1179510461,3046200461,91341917,1862534868,4284502037,605657339,2547432937,3431546947,2003294622,3182487618,2282195339,954669403,3682191598,1201765386,3917234703,3388507166,0,2198438022,1211247597,2887651696,1315723890,4227665663,1443857720,507358933,657861945,1678381017,560487590,3516619604,975451694,2970356327,261314535,3535072918,2652609425,1333838021,2724322336,1767536459,370938394,182621114,3854606378,1128014560,487725847,185469197,2918353863,3106780840,3356761769,2237133081,1286567175,3152976349,4255350624,2683765030,3160175349,3309594171,878443390,1988838185,3704300486,1756818940,1673061617,3403100636,272786309,1075025698,545572369,2105887268,4174560061,296679730,1841768865,1260232239,4091327024,3960309330,3497509347,1814803222,2578018489,4195456072,575138148,3299409036,446754879,3629546796,4011996048,3347532110,3252238545,4270639778,915985419,3483825537,681933534,651868046,2755636671,3828103837,223377554,2607439820,1649704518,3270937875,3901806776,1580087799,4118987695,3198115200,2087309459,2842678573,3016697106,1003007129,2802849917,1860738147,2077965243,164439672,4100872472,32283319,2827177882,1709610350,2125135846,136428751,3874428392,3652904859,3460984630,3572145929,3593056380,2939266226,824852259,818324884,3224740454,930369212,2801566410,2967507152,355706840,1257309336,4148292826,243256656,790073846,2373340630,1296297904,1422699085,3756299780,3818836405,457992840,3099667487,2135319889,77422314,1560382517,1945798516,788204353,1521706781,1385356242,870912086,325965383,2358957921,2050466060,2388260884,2313884476,4006521127,901210569,3990953189,1014646705,1503449823,1062597235,2031621326,3212035895,3931371469,1533017514,350174575,2256028891,2177544179,1052338372,741876788,1606591296,1914052035,213705253,2334669897,1107234197,1899603969,3725069491,2631447780,2422494913,1635502980,1893020342,1950903388,1120974935],nr=[2807058932,1699970625,2764249623,1586903591,1808481195,1173430173,1487645946,59984867,4199882800,1844882806,1989249228,1277555970,3623636965,3419915562,1149249077,2744104290,1514790577,459744698,244860394,3235995134,1963115311,4027744588,2544078150,4190530515,1608975247,2627016082,2062270317,1507497298,2200818878,567498868,1764313568,3359936201,2305455554,2037970062,1047239e3,1910319033,1337376481,2904027272,2892417312,984907214,1243112415,830661914,861968209,2135253587,2011214180,2927934315,2686254721,731183368,1750626376,4246310725,1820824798,4172763771,3542330227,48394827,2404901663,2871682645,671593195,3254988725,2073724613,145085239,2280796200,2779915199,1790575107,2187128086,472615631,3029510009,4075877127,3802222185,4107101658,3201631749,1646252340,4270507174,1402811438,1436590835,3778151818,3950355702,3963161475,4020912224,2667994737,273792366,2331590177,104699613,95345982,3175501286,2377486676,1560637892,3564045318,369057872,4213447064,3919042237,1137477952,2658625497,1119727848,2340947849,1530455833,4007360968,172466556,266959938,516552836,0,2256734592,3980931627,1890328081,1917742170,4294704398,945164165,3575528878,958871085,3647212047,2787207260,1423022939,775562294,1739656202,3876557655,2530391278,2443058075,3310321856,547512796,1265195639,437656594,3121275539,719700128,3762502690,387781147,218828297,3350065803,2830708150,2848461854,428169201,122466165,3720081049,1627235199,648017665,4122762354,1002783846,2117360635,695634755,3336358691,4234721005,4049844452,3704280881,2232435299,574624663,287343814,612205898,1039717051,840019705,2708326185,793451934,821288114,1391201670,3822090177,376187827,3113855344,1224348052,1679968233,2361698556,1058709744,752375421,2431590963,1321699145,3519142200,2734591178,188127444,2177869557,3727205754,2384911031,3215212461,2648976442,2450346104,3432737375,1180849278,331544205,3102249176,4150144569,2952102595,2159976285,2474404304,766078933,313773861,2570832044,2108100632,1668212892,3145456443,2013908262,418672217,3070356634,2594734927,1852171925,3867060991,3473416636,3907448597,2614737639,919489135,164948639,2094410160,2997825956,590424639,2486224549,1723872674,3157750862,3399941250,3501252752,3625268135,2555048196,3673637356,1343127501,4130281361,3599595085,2957853679,1297403050,81781910,3051593425,2283490410,532201772,1367295589,3926170974,895287692,1953757831,1093597963,492483431,3528626907,1446242576,1192455638,1636604631,209336225,344873464,1015671571,669961897,3375740769,3857572124,2973530695,3747192018,1933530610,3464042516,935293895,3454686199,2858115069,1863638845,3683022916,4085369519,3292445032,875313188,1080017571,3279033885,621591778,1233856572,2504130317,24197544,3017672716,3835484340,3247465558,2220981195,3060847922,1551124588,1463996600],sr=[4104605777,1097159550,396673818,660510266,2875968315,2638606623,4200115116,3808662347,821712160,1986918061,3430322568,38544885,3856137295,718002117,893681702,1654886325,2975484382,3122358053,3926825029,4274053469,796197571,1290801793,1184342925,3556361835,2405426947,2459735317,1836772287,1381620373,3196267988,1948373848,3764988233,3385345166,3263785589,2390325492,1480485785,3111247143,3780097726,2293045232,548169417,3459953789,3746175075,439452389,1362321559,1400849762,1685577905,1806599355,2174754046,137073913,1214797936,1174215055,3731654548,2079897426,1943217067,1258480242,529487843,1437280870,3945269170,3049390895,3313212038,923313619,679998e3,3215307299,57326082,377642221,3474729866,2041877159,133361907,1776460110,3673476453,96392454,878845905,2801699524,777231668,4082475170,2330014213,4142626212,2213296395,1626319424,1906247262,1846563261,562755902,3708173718,1040559837,3871163981,1418573201,3294430577,114585348,1343618912,2566595609,3186202582,1078185097,3651041127,3896688048,2307622919,425408743,3371096953,2081048481,1108339068,2216610296,0,2156299017,736970802,292596766,1517440620,251657213,2235061775,2933202493,758720310,265905162,1554391400,1532285339,908999204,174567692,1474760595,4002861748,2610011675,3234156416,3693126241,2001430874,303699484,2478443234,2687165888,585122620,454499602,151849742,2345119218,3064510765,514443284,4044981591,1963412655,2581445614,2137062819,19308535,1928707164,1715193156,4219352155,1126790795,600235211,3992742070,3841024952,836553431,1669664834,2535604243,3323011204,1243905413,3141400786,4180808110,698445255,2653899549,2989552604,2253581325,3252932727,3004591147,1891211689,2487810577,3915653703,4237083816,4030667424,2100090966,865136418,1229899655,953270745,3399679628,3557504664,4118925222,2061379749,3079546586,2915017791,983426092,2022837584,1607244650,2118541908,2366882550,3635996816,972512814,3283088770,1568718495,3499326569,3576539503,621982671,2895723464,410887952,2623762152,1002142683,645401037,1494807662,2595684844,1335535747,2507040230,4293295786,3167684641,367585007,3885750714,1865862730,2668221674,2960971305,2763173681,1059270954,2777952454,2724642869,1320957812,2194319100,2429595872,2815956275,77089521,3973773121,3444575871,2448830231,1305906550,4021308739,2857194700,2516901860,3518358430,1787304780,740276417,1699839814,1592394909,2352307457,2272556026,188821243,1729977011,3687994002,274084841,3594982253,3613494426,2701949495,4162096729,322734571,2837966542,1640576439,484830689,1202797690,3537852828,4067639125,349075736,3342319475,4157467219,4255800159,1030690015,1155237496,2951971274,1757691577,607398968,2738905026,499347990,3794078908,1011452712,227885567,2818666809,213114376,3034881240,1455525988,3414450555,850817237,1817998408,3092726480],ar=[0,235474187,470948374,303765277,941896748,908933415,607530554,708780849,1883793496,2118214995,1817866830,1649639237,1215061108,1181045119,1417561698,1517767529,3767586992,4003061179,4236429990,4069246893,3635733660,3602770327,3299278474,3400528769,2430122216,2664543715,2362090238,2193862645,2835123396,2801107407,3035535058,3135740889,3678124923,3576870512,3341394285,3374361702,3810496343,3977675356,4279080257,4043610186,2876494627,2776292904,3076639029,3110650942,2472011535,2640243204,2403728665,2169303058,1001089995,899835584,666464733,699432150,59727847,226906860,530400753,294930682,1273168787,1172967064,1475418501,1509430414,1942435775,2110667444,1876241833,1641816226,2910219766,2743034109,2976151520,3211623147,2505202138,2606453969,2302690252,2269728455,3711829422,3543599269,3240894392,3475313331,3843699074,3943906441,4178062228,4144047775,1306967366,1139781709,1374988112,1610459739,1975683434,2076935265,1775276924,1742315127,1034867998,866637845,566021896,800440835,92987698,193195065,429456164,395441711,1984812685,2017778566,1784663195,1683407248,1315562145,1080094634,1383856311,1551037884,101039829,135050206,437757123,337553864,1042385657,807962610,573804783,742039012,2531067453,2564033334,2328828971,2227573024,2935566865,2700099354,3001755655,3168937228,3868552805,3902563182,4203181171,4102977912,3736164937,3501741890,3265478751,3433712980,1106041591,1340463100,1576976609,1408749034,2043211483,2009195472,1708848333,1809054150,832877231,1068351396,766945465,599762354,159417987,126454664,361929877,463180190,2709260871,2943682380,3178106961,3009879386,2572697195,2538681184,2236228733,2336434550,3509871135,3745345300,3441850377,3274667266,3910161971,3877198648,4110568485,4211818798,2597806476,2497604743,2261089178,2295101073,2733856160,2902087851,3202437046,2968011453,3936291284,3835036895,4136440770,4169408201,3535486456,3702665459,3467192302,3231722213,2051518780,1951317047,1716890410,1750902305,1113818384,1282050075,1584504582,1350078989,168810852,67556463,371049330,404016761,841739592,1008918595,775550814,540080725,3969562369,3801332234,4035489047,4269907996,3569255213,3669462566,3366754619,3332740144,2631065433,2463879762,2160117071,2395588676,2767645557,2868897406,3102011747,3069049960,202008497,33778362,270040487,504459436,875451293,975658646,675039627,641025152,2084704233,1917518562,1615861247,1851332852,1147550661,1248802510,1484005843,1451044056,933301370,967311729,733156972,632953703,260388950,25965917,328671808,496906059,1206477858,1239443753,1543208500,1441952575,2144161806,1908694277,1675577880,1842759443,3610369226,3644379585,3408119516,3307916247,4011190502,3776767469,4077384432,4245618683,2809771154,2842737049,3144396420,3043140495,2673705150,2438237621,2203032232,2370213795],or=[0,185469197,370938394,487725847,741876788,657861945,975451694,824852259,1483753576,1400783205,1315723890,1164071807,1950903388,2135319889,1649704518,1767536459,2967507152,3152976349,2801566410,2918353863,2631447780,2547432937,2328143614,2177544179,3901806776,3818836405,4270639778,4118987695,3299409036,3483825537,3535072918,3652904859,2077965243,1893020342,1841768865,1724457132,1474502543,1559041666,1107234197,1257309336,598438867,681933534,901210569,1052338372,261314535,77422314,428819965,310463728,3409685355,3224740454,3710368113,3593056380,3875770207,3960309330,4045380933,4195456072,2471224067,2554718734,2237133081,2388260884,3212035895,3028143674,2842678573,2724322336,4138563181,4255350624,3769721975,3955191162,3667219033,3516619604,3431546947,3347532110,2933734917,2782082824,3099667487,3016697106,2196052529,2313884476,2499348523,2683765030,1179510461,1296297904,1347548327,1533017514,1786102409,1635502980,2087309459,2003294622,507358933,355706840,136428751,53458370,839224033,957055980,605657339,790073846,2373340630,2256028891,2607439820,2422494913,2706270690,2856345839,3075636216,3160175349,3573941694,3725069491,3273267108,3356761769,4181598602,4063242375,4011996048,3828103837,1033297158,915985419,730517276,545572369,296679730,446754879,129166120,213705253,1709610350,1860738147,1945798516,2029293177,1239331162,1120974935,1606591296,1422699085,4148292826,4233094615,3781033664,3931371469,3682191598,3497509347,3446004468,3328955385,2939266226,2755636671,3106780840,2988687269,2198438022,2282195339,2501218972,2652609425,1201765386,1286567175,1371368976,1521706781,1805211710,1620529459,2105887268,1988838185,533804130,350174575,164439672,46346101,870912086,954669403,636813900,788204353,2358957921,2274680428,2592523643,2441661558,2695033685,2880240216,3065962831,3182487618,3572145929,3756299780,3270937875,3388507166,4174560061,4091327024,4006521127,3854606378,1014646705,930369212,711349675,560487590,272786309,457992840,106852767,223377554,1678381017,1862534868,1914052035,2031621326,1211247597,1128014560,1580087799,1428173050,32283319,182621114,401639597,486441376,768917123,651868046,1003007129,818324884,1503449823,1385356242,1333838021,1150208456,1973745387,2125135846,1673061617,1756818940,2970356327,3120694122,2802849917,2887651696,2637442643,2520393566,2334669897,2149987652,3917234703,3799141122,4284502037,4100872472,3309594171,3460984630,3545789473,3629546796,2050466060,1899603969,1814803222,1730525723,1443857720,1560382517,1075025698,1260232239,575138148,692707433,878443390,1062597235,243256656,91341917,409198410,325965383,3403100636,3252238545,3704300486,3620022987,3874428392,3990953189,4042459122,4227665663,2460449204,2578018489,2226875310,2411029155,3198115200,3046200461,2827177882,2743944855],dr=[0,218828297,437656594,387781147,875313188,958871085,775562294,590424639,1750626376,1699970625,1917742170,2135253587,1551124588,1367295589,1180849278,1265195639,3501252752,3720081049,3399941250,3350065803,3835484340,3919042237,4270507174,4085369519,3102249176,3051593425,2734591178,2952102595,2361698556,2177869557,2530391278,2614737639,3145456443,3060847922,2708326185,2892417312,2404901663,2187128086,2504130317,2555048196,3542330227,3727205754,3375740769,3292445032,3876557655,3926170974,4246310725,4027744588,1808481195,1723872674,1910319033,2094410160,1608975247,1391201670,1173430173,1224348052,59984867,244860394,428169201,344873464,935293895,984907214,766078933,547512796,1844882806,1627235199,2011214180,2062270317,1507497298,1423022939,1137477952,1321699145,95345982,145085239,532201772,313773861,830661914,1015671571,731183368,648017665,3175501286,2957853679,2807058932,2858115069,2305455554,2220981195,2474404304,2658625497,3575528878,3625268135,3473416636,3254988725,3778151818,3963161475,4213447064,4130281361,3599595085,3683022916,3432737375,3247465558,3802222185,4020912224,4172763771,4122762354,3201631749,3017672716,2764249623,2848461854,2331590177,2280796200,2431590963,2648976442,104699613,188127444,472615631,287343814,840019705,1058709744,671593195,621591778,1852171925,1668212892,1953757831,2037970062,1514790577,1463996600,1080017571,1297403050,3673637356,3623636965,3235995134,3454686199,4007360968,3822090177,4107101658,4190530515,2997825956,3215212461,2830708150,2779915199,2256734592,2340947849,2627016082,2443058075,172466556,122466165,273792366,492483431,1047239e3,861968209,612205898,695634755,1646252340,1863638845,2013908262,1963115311,1446242576,1530455833,1277555970,1093597963,1636604631,1820824798,2073724613,1989249228,1436590835,1487645946,1337376481,1119727848,164948639,81781910,331544205,516552836,1039717051,821288114,669961897,719700128,2973530695,3157750862,2871682645,2787207260,2232435299,2283490410,2667994737,2450346104,3647212047,3564045318,3279033885,3464042516,3980931627,3762502690,4150144569,4199882800,3070356634,3121275539,2904027272,2686254721,2200818878,2384911031,2570832044,2486224549,3747192018,3528626907,3310321856,3359936201,3950355702,3867060991,4049844452,4234721005,1739656202,1790575107,2108100632,1890328081,1402811438,1586903591,1233856572,1149249077,266959938,48394827,369057872,418672217,1002783846,919489135,567498868,752375421,209336225,24197544,376187827,459744698,945164165,895287692,574624663,793451934,1679968233,1764313568,2117360635,1933530610,1343127501,1560637892,1243112415,1192455638,3704280881,3519142200,3336358691,3419915562,3907448597,3857572124,4075877127,4294704398,3029510009,3113855344,2927934315,2744104290,2159976285,2377486676,2594734927,2544078150],lr=[0,151849742,303699484,454499602,607398968,758720310,908999204,1059270954,1214797936,1097159550,1517440620,1400849762,1817998408,1699839814,2118541908,2001430874,2429595872,2581445614,2194319100,2345119218,3034881240,3186202582,2801699524,2951971274,3635996816,3518358430,3399679628,3283088770,4237083816,4118925222,4002861748,3885750714,1002142683,850817237,698445255,548169417,529487843,377642221,227885567,77089521,1943217067,2061379749,1640576439,1757691577,1474760595,1592394909,1174215055,1290801793,2875968315,2724642869,3111247143,2960971305,2405426947,2253581325,2638606623,2487810577,3808662347,3926825029,4044981591,4162096729,3342319475,3459953789,3576539503,3693126241,1986918061,2137062819,1685577905,1836772287,1381620373,1532285339,1078185097,1229899655,1040559837,923313619,740276417,621982671,439452389,322734571,137073913,19308535,3871163981,4021308739,4104605777,4255800159,3263785589,3414450555,3499326569,3651041127,2933202493,2815956275,3167684641,3049390895,2330014213,2213296395,2566595609,2448830231,1305906550,1155237496,1607244650,1455525988,1776460110,1626319424,2079897426,1928707164,96392454,213114376,396673818,514443284,562755902,679998e3,865136418,983426092,3708173718,3557504664,3474729866,3323011204,4180808110,4030667424,3945269170,3794078908,2507040230,2623762152,2272556026,2390325492,2975484382,3092726480,2738905026,2857194700,3973773121,3856137295,4274053469,4157467219,3371096953,3252932727,3673476453,3556361835,2763173681,2915017791,3064510765,3215307299,2156299017,2307622919,2459735317,2610011675,2081048481,1963412655,1846563261,1729977011,1480485785,1362321559,1243905413,1126790795,878845905,1030690015,645401037,796197571,274084841,425408743,38544885,188821243,3613494426,3731654548,3313212038,3430322568,4082475170,4200115116,3780097726,3896688048,2668221674,2516901860,2366882550,2216610296,3141400786,2989552604,2837966542,2687165888,1202797690,1320957812,1437280870,1554391400,1669664834,1787304780,1906247262,2022837584,265905162,114585348,499347990,349075736,736970802,585122620,972512814,821712160,2595684844,2478443234,2293045232,2174754046,3196267988,3079546586,2895723464,2777952454,3537852828,3687994002,3234156416,3385345166,4142626212,4293295786,3841024952,3992742070,174567692,57326082,410887952,292596766,777231668,660510266,1011452712,893681702,1108339068,1258480242,1343618912,1494807662,1715193156,1865862730,1948373848,2100090966,2701949495,2818666809,3004591147,3122358053,2235061775,2352307457,2535604243,2653899549,3915653703,3764988233,4219352155,4067639125,3444575871,3294430577,3746175075,3594982253,836553431,953270745,600235211,718002117,367585007,484830689,133361907,251657213,2041877159,1891211689,1806599355,1654886325,1568718495,1418573201,1335535747,1184342925];function ur(e){for(var t=[],r=0;r>2,this._Ke[r][t%4]=s[t],this._Kd[e-r][t%4]=s[t];for(var a,o=0,d=n;d>16&255]<<24^Xt[a>>8&255]<<16^Xt[255&a]<<8^Xt[a>>24&255]^Kt[o]<<24,o+=1,8!=n)for(t=1;t>8&255]<<8^Xt[a>>16&255]<<16^Xt[a>>24&255]<<24;for(t=n/2+1;t>2,u=d%4,this._Ke[l][u]=s[t],this._Kd[e-l][u]=s[t++],d++}for(var l=1;l>24&255]^or[a>>16&255]^dr[a>>8&255]^lr[255&a]},cr.prototype.encrypt=function(e){if(16!=e.length)throw new Error("invalid plaintext size (must be 16 bytes)");for(var t=this._Ke.length-1,r=[0,0,0,0],i=ur(e),n=0;n<4;n++)i[n]^=this._Ke[0][n];for(var s=1;s>24&255]^Qt[i[(n+1)%4]>>16&255]^er[i[(n+2)%4]>>8&255]^tr[255&i[(n+3)%4]]^this._Ke[s][n];i=r.slice()}var a,o=Ht(16);for(n=0;n<4;n++)a=this._Ke[t][n],o[4*n]=255&(Xt[i[n]>>24&255]^a>>24),o[4*n+1]=255&(Xt[i[(n+1)%4]>>16&255]^a>>16),o[4*n+2]=255&(Xt[i[(n+2)%4]>>8&255]^a>>8),o[4*n+3]=255&(Xt[255&i[(n+3)%4]]^a);return o},cr.prototype.decrypt=function(e){if(16!=e.length)throw new Error("invalid ciphertext size (must be 16 bytes)");for(var t=this._Kd.length-1,r=[0,0,0,0],i=ur(e),n=0;n<4;n++)i[n]^=this._Kd[0][n];for(var s=1;s>24&255]^ir[i[(n+3)%4]>>16&255]^nr[i[(n+2)%4]>>8&255]^sr[255&i[(n+1)%4]]^this._Kd[s][n];i=r.slice()}var a,o=Ht(16);for(n=0;n<4;n++)a=this._Kd[t][n],o[4*n]=255&(Zt[i[n]>>24&255]^a>>24),o[4*n+1]=255&(Zt[i[(n+3)%4]>>16&255]^a>>16),o[4*n+2]=255&(Zt[i[(n+2)%4]>>8&255]^a>>8),o[4*n+3]=255&(Zt[255&i[(n+1)%4]]^a);return o};var hr=function(e){if(!(this instanceof hr))throw Error("AES must be instanitated with `new`");this.description="Electronic Code Block",this.name="ecb",this._aes=new cr(e)};hr.prototype.encrypt=function(e){if((e=Gt(e)).length%16!=0)throw new Error("invalid plaintext size (must be multiple of 16 bytes)");for(var t=Ht(e.length),r=Ht(16),i=0;iNumber.MAX_SAFE_INTEGER)throw new Error("integer value out of safe range");for(var t=15;t>=0;--t)this._counter[t]=e%256,e=parseInt(e/256)},_r.prototype.setBytes=function(e){if(16!=(e=Gt(e,!0)).length)throw new Error("invalid counter bytes size (must be 16 bytes)");this._counter=e},_r.prototype.increment=function(){for(var e=15;e>=0;e--){if(255!==this._counter[e]){this._counter[e]++;break}this._counter[e]=0}};var yr=function(e,t){if(!(this instanceof yr))throw Error("AES must be instanitated with `new`");this.description="Counter",this.name="ctr",t instanceof _r||(t=new _r(t)),this._counter=t,this._remainingCounter=null,this._remainingCounterIndex=16,this._aes=new cr(e)};yr.prototype.encrypt=function(e){for(var t=Gt(e,!0),r=0;r16)throw new Error("PKCS#7 padding byte out of range");for(var r=e.length-t,i=0;i=i&&console.debug("["+s.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)},log:function(e,t){this.debug(e.msg)},info:function(e,t){2>=i&&console.info("["+s.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)},warn:function(e,t){3>=i&&console.warn("["+s.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)},error:function(e,t){4>=i&&console.error("["+s.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)}},n);s.getDurationString=function(e,t){var r;function i(e,t){for(var r=(""+e).split(".");r[0].length0){for(var r="",i=0;i0&&(r+=","),r+="["+s.getDurationString(e.start(i))+","+s.getDurationString(e.end(i))+"]";return r}return"(empty)"},t.Log=s;var a=function(e){if(!(e instanceof ArrayBuffer))throw"Needs an array buffer";this.buffer=e,this.dataview=new DataView(e),this.position=0};a.prototype.getPosition=function(){return this.position},a.prototype.getEndPosition=function(){return this.buffer.byteLength},a.prototype.getLength=function(){return this.buffer.byteLength},a.prototype.seek=function(e){var t=Math.max(0,Math.min(this.buffer.byteLength,e));return this.position=isNaN(t)||!isFinite(t)?0:t,!0},a.prototype.isEos=function(){return this.getPosition()>=this.getEndPosition()},a.prototype.readAnyInt=function(e,t){var r=0;if(this.position+e<=this.buffer.byteLength){switch(e){case 1:r=t?this.dataview.getInt8(this.position):this.dataview.getUint8(this.position);break;case 2:r=t?this.dataview.getInt16(this.position):this.dataview.getUint16(this.position);break;case 3:if(t)throw"No method for reading signed 24 bits values";r=this.dataview.getUint8(this.position)<<16,r|=this.dataview.getUint8(this.position+1)<<8,r|=this.dataview.getUint8(this.position+2);break;case 4:r=t?this.dataview.getInt32(this.position):this.dataview.getUint32(this.position);break;case 8:if(t)throw"No method for reading signed 64 bits values";r=this.dataview.getUint32(this.position)<<32,r|=this.dataview.getUint32(this.position+4);break;default:throw"readInt method not implemented for size: "+e}return this.position+=e,r}throw"Not enough bytes in buffer"},a.prototype.readUint8=function(){return this.readAnyInt(1,!1)},a.prototype.readUint16=function(){return this.readAnyInt(2,!1)},a.prototype.readUint24=function(){return this.readAnyInt(3,!1)},a.prototype.readUint32=function(){return this.readAnyInt(4,!1)},a.prototype.readUint64=function(){return this.readAnyInt(8,!1)},a.prototype.readString=function(e){if(this.position+e<=this.buffer.byteLength){for(var t="",r=0;rthis._byteLength&&(this._byteLength=t);else{for(r<1&&(r=1);t>r;)r*=2;var i=new ArrayBuffer(r),n=new Uint8Array(this._buffer);new Uint8Array(i,0,n.length).set(n),this.buffer=i,this._byteLength=t}}},o.prototype._trimAlloc=function(){if(this._byteLength!=this._buffer.byteLength){var e=new ArrayBuffer(this._byteLength),t=new Uint8Array(e),r=new Uint8Array(this._buffer,0,t.length);t.set(r),this.buffer=e}},o.BIG_ENDIAN=!1,o.LITTLE_ENDIAN=!0,o.prototype._byteLength=0,Object.defineProperty(o.prototype,"byteLength",{get:function(){return this._byteLength-this._byteOffset}}),Object.defineProperty(o.prototype,"buffer",{get:function(){return this._trimAlloc(),this._buffer},set:function(e){this._buffer=e,this._dataView=new DataView(this._buffer,this._byteOffset),this._byteLength=this._buffer.byteLength}}),Object.defineProperty(o.prototype,"byteOffset",{get:function(){return this._byteOffset},set:function(e){this._byteOffset=e,this._dataView=new DataView(this._buffer,this._byteOffset),this._byteLength=this._buffer.byteLength}}),Object.defineProperty(o.prototype,"dataView",{get:function(){return this._dataView},set:function(e){this._byteOffset=e.byteOffset,this._buffer=e.buffer,this._dataView=new DataView(this._buffer,this._byteOffset),this._byteLength=this._byteOffset+e.byteLength}}),o.prototype.seek=function(e){var t=Math.max(0,Math.min(this.byteLength,e));this.position=isNaN(t)||!isFinite(t)?0:t},o.prototype.isEof=function(){return this.position>=this._byteLength},o.prototype.mapUint8Array=function(e){this._realloc(1*e);var t=new Uint8Array(this._buffer,this.byteOffset+this.position,e);return this.position+=1*e,t},o.prototype.readInt32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var r=new Int32Array(e);return o.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),o.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},o.prototype.readInt16Array=function(e,t){e=null==e?this.byteLength-this.position/2:e;var r=new Int16Array(e);return o.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),o.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},o.prototype.readInt8Array=function(e){e=null==e?this.byteLength-this.position:e;var t=new Int8Array(e);return o.memcpy(t.buffer,0,this.buffer,this.byteOffset+this.position,e*t.BYTES_PER_ELEMENT),this.position+=t.byteLength,t},o.prototype.readUint32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var r=new Uint32Array(e);return o.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),o.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},o.prototype.readUint16Array=function(e,t){e=null==e?this.byteLength-this.position/2:e;var r=new Uint16Array(e);return o.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),o.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},o.prototype.readUint8Array=function(e){e=null==e?this.byteLength-this.position:e;var t=new Uint8Array(e);return o.memcpy(t.buffer,0,this.buffer,this.byteOffset+this.position,e*t.BYTES_PER_ELEMENT),this.position+=t.byteLength,t},o.prototype.readFloat64Array=function(e,t){e=null==e?this.byteLength-this.position/8:e;var r=new Float64Array(e);return o.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),o.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},o.prototype.readFloat32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var r=new Float32Array(e);return o.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),o.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},o.prototype.readInt32=function(e){var t=this._dataView.getInt32(this.position,null==e?this.endianness:e);return this.position+=4,t},o.prototype.readInt16=function(e){var t=this._dataView.getInt16(this.position,null==e?this.endianness:e);return this.position+=2,t},o.prototype.readInt8=function(){var e=this._dataView.getInt8(this.position);return this.position+=1,e},o.prototype.readUint32=function(e){var t=this._dataView.getUint32(this.position,null==e?this.endianness:e);return this.position+=4,t},o.prototype.readUint16=function(e){var t=this._dataView.getUint16(this.position,null==e?this.endianness:e);return this.position+=2,t},o.prototype.readUint8=function(){var e=this._dataView.getUint8(this.position);return this.position+=1,e},o.prototype.readFloat32=function(e){var t=this._dataView.getFloat32(this.position,null==e?this.endianness:e);return this.position+=4,t},o.prototype.readFloat64=function(e){var t=this._dataView.getFloat64(this.position,null==e?this.endianness:e);return this.position+=8,t},o.endianness=new Int8Array(new Int16Array([1]).buffer)[0]>0,o.memcpy=function(e,t,r,i,n){var s=new Uint8Array(e,t,n),a=new Uint8Array(r,i,n);s.set(a)},o.arrayToNative=function(e,t){return t==this.endianness?e:this.flipArrayEndianness(e)},o.nativeToEndian=function(e,t){return this.endianness==t?e:this.flipArrayEndianness(e)},o.flipArrayEndianness=function(e){for(var t=new Uint8Array(e.buffer,e.byteOffset,e.byteLength),r=0;rn;i--,n++){var s=t[n];t[n]=t[i],t[i]=s}return e},o.prototype.failurePosition=0,String.fromCharCodeUint8=function(e){for(var t=[],r=0;r>16),this.writeUint8((65280&e)>>8),this.writeUint8(255&e)},o.prototype.adjustUint32=function(e,t){var r=this.position;this.seek(e),this.writeUint32(t),this.seek(r)},o.prototype.mapInt32Array=function(e,t){this._realloc(4*e);var r=new Int32Array(this._buffer,this.byteOffset+this.position,e);return o.arrayToNative(r,null==t?this.endianness:t),this.position+=4*e,r},o.prototype.mapInt16Array=function(e,t){this._realloc(2*e);var r=new Int16Array(this._buffer,this.byteOffset+this.position,e);return o.arrayToNative(r,null==t?this.endianness:t),this.position+=2*e,r},o.prototype.mapInt8Array=function(e){this._realloc(1*e);var t=new Int8Array(this._buffer,this.byteOffset+this.position,e);return this.position+=1*e,t},o.prototype.mapUint32Array=function(e,t){this._realloc(4*e);var r=new Uint32Array(this._buffer,this.byteOffset+this.position,e);return o.arrayToNative(r,null==t?this.endianness:t),this.position+=4*e,r},o.prototype.mapUint16Array=function(e,t){this._realloc(2*e);var r=new Uint16Array(this._buffer,this.byteOffset+this.position,e);return o.arrayToNative(r,null==t?this.endianness:t),this.position+=2*e,r},o.prototype.mapFloat64Array=function(e,t){this._realloc(8*e);var r=new Float64Array(this._buffer,this.byteOffset+this.position,e);return o.arrayToNative(r,null==t?this.endianness:t),this.position+=8*e,r},o.prototype.mapFloat32Array=function(e,t){this._realloc(4*e);var r=new Float32Array(this._buffer,this.byteOffset+this.position,e);return o.arrayToNative(r,null==t?this.endianness:t),this.position+=4*e,r};var l=function(e){this.buffers=[],this.bufferIndex=-1,e&&(this.insertBuffer(e),this.bufferIndex=0)};(l.prototype=new o(new ArrayBuffer,0,o.BIG_ENDIAN)).initialized=function(){var e;return this.bufferIndex>-1||(this.buffers.length>0?0===(e=this.buffers[0]).fileStart?(this.buffer=e,this.bufferIndex=0,s.debug("MultiBufferStream","Stream ready for parsing"),!0):(s.warn("MultiBufferStream","The first buffer should have a fileStart of 0"),this.logBufferLevel(),!1):(s.warn("MultiBufferStream","No buffer to start parsing from"),this.logBufferLevel(),!1))},ArrayBuffer.concat=function(e,t){s.debug("ArrayBuffer","Trying to create a new buffer of size: "+(e.byteLength+t.byteLength));var r=new Uint8Array(e.byteLength+t.byteLength);return r.set(new Uint8Array(e),0),r.set(new Uint8Array(t),e.byteLength),r.buffer},l.prototype.reduceBuffer=function(e,t,r){var i;return(i=new Uint8Array(r)).set(new Uint8Array(e,t,r)),i.buffer.fileStart=e.fileStart+t,i.buffer.usedBytes=0,i.buffer},l.prototype.insertBuffer=function(e){for(var t=!0,r=0;ri.byteLength){this.buffers.splice(r,1),r--;continue}s.warn("MultiBufferStream","Buffer (fileStart: "+e.fileStart+" - Length: "+e.byteLength+") already appended, ignoring")}else e.fileStart+e.byteLength<=i.fileStart||(e=this.reduceBuffer(e,0,i.fileStart-e.fileStart)),s.debug("MultiBufferStream","Appending new buffer (fileStart: "+e.fileStart+" - Length: "+e.byteLength+")"),this.buffers.splice(r,0,e),0===r&&(this.buffer=e);t=!1;break}if(e.fileStart0)){t=!1;break}e=this.reduceBuffer(e,n,a)}}t&&(s.debug("MultiBufferStream","Appending new buffer (fileStart: "+e.fileStart+" - Length: "+e.byteLength+")"),this.buffers.push(e),0===r&&(this.buffer=e))},l.prototype.logBufferLevel=function(e){var t,r,i,n,a,o=[],d="";for(i=0,n=0,t=0;t0&&(d+=a.end-1+"]");var l=e?s.info:s.debug;0===this.buffers.length?l("MultiBufferStream","No more buffer in memory"):l("MultiBufferStream",this.buffers.length+" stored buffer(s) ("+i+"/"+n+" bytes), continuous ranges: "+d)},l.prototype.cleanBuffers=function(){var e,t;for(e=0;e"+this.buffer.byteLength+")"),!0}return!1}return!1},l.prototype.findPosition=function(e,t,r){var i,n=null,a=-1;for(i=!0===e?0:this.bufferIndex;i=t?(s.debug("MultiBufferStream","Found position in existing buffer #"+a),a):-1},l.prototype.findEndContiguousBuf=function(e){var t,r,i,n=void 0!==e?e:this.bufferIndex;if(r=this.buffers[n],this.buffers.length>n+1)for(t=n+1;t>3;return 31===i&&r.data.length>=2&&(i=32+((7&r.data[0])<<3)+((224&r.data[1])>>5)),i}return null},r.DecoderConfigDescriptor=function(e){r.Descriptor.call(this,4,e)},r.DecoderConfigDescriptor.prototype=new r.Descriptor,r.DecoderConfigDescriptor.prototype.parse=function(e){this.oti=e.readUint8(),this.streamType=e.readUint8(),this.bufferSize=e.readUint24(),this.maxBitrate=e.readUint32(),this.avgBitrate=e.readUint32(),this.size-=13,this.parseRemainingDescriptors(e)},r.DecoderSpecificInfo=function(e){r.Descriptor.call(this,5,e)},r.DecoderSpecificInfo.prototype=new r.Descriptor,r.SLConfigDescriptor=function(e){r.Descriptor.call(this,6,e)},r.SLConfigDescriptor.prototype=new r.Descriptor,this};t.MPEG4DescriptorParser=u;var c={ERR_INVALID_DATA:-1,ERR_NOT_ENOUGH_DATA:0,OK:1,BASIC_BOXES:["mdat","idat","free","skip","meco","strk"],FULL_BOXES:["hmhd","nmhd","iods","xml ","bxml","ipro","mere"],CONTAINER_BOXES:[["moov",["trak","pssh"]],["trak"],["edts"],["mdia"],["minf"],["dinf"],["stbl",["sgpd","sbgp"]],["mvex",["trex"]],["moof",["traf"]],["traf",["trun","sgpd","sbgp"]],["vttc"],["tref"],["iref"],["mfra",["tfra"]],["meco"],["hnti"],["hinf"],["strk"],["strd"],["sinf"],["rinf"],["schi"],["trgr"],["udta",["kind"]],["iprp",["ipma"]],["ipco"]],boxCodes:[],fullBoxCodes:[],containerBoxCodes:[],sampleEntryCodes:{},sampleGroupEntryCodes:[],trackGroupTypes:[],UUIDBoxes:{},UUIDs:[],initialize:function(){c.FullBox.prototype=new c.Box,c.ContainerBox.prototype=new c.Box,c.SampleEntry.prototype=new c.Box,c.TrackGroupTypeBox.prototype=new c.FullBox,c.BASIC_BOXES.forEach((function(e){c.createBoxCtor(e)})),c.FULL_BOXES.forEach((function(e){c.createFullBoxCtor(e)})),c.CONTAINER_BOXES.forEach((function(e){c.createContainerBoxCtor(e[0],null,e[1])}))},Box:function(e,t,r){this.type=e,this.size=t,this.uuid=r},FullBox:function(e,t,r){c.Box.call(this,e,t,r),this.flags=0,this.version=0},ContainerBox:function(e,t,r){c.Box.call(this,e,t,r),this.boxes=[]},SampleEntry:function(e,t,r,i){c.ContainerBox.call(this,e,t),this.hdr_size=r,this.start=i},SampleGroupEntry:function(e){this.grouping_type=e},TrackGroupTypeBox:function(e,t){c.FullBox.call(this,e,t)},createBoxCtor:function(e,t){c.boxCodes.push(e),c[e+"Box"]=function(t){c.Box.call(this,e,t)},c[e+"Box"].prototype=new c.Box,t&&(c[e+"Box"].prototype.parse=t)},createFullBoxCtor:function(e,t){c[e+"Box"]=function(t){c.FullBox.call(this,e,t)},c[e+"Box"].prototype=new c.FullBox,c[e+"Box"].prototype.parse=function(e){this.parseFullHeader(e),t&&t.call(this,e)}},addSubBoxArrays:function(e){if(e){this.subBoxNames=e;for(var t=e.length,r=0;rr?(s.error("BoxParser","Box of type '"+u+"' has a size "+l+" greater than its container size "+r),{code:c.ERR_NOT_ENOUGH_DATA,type:u,size:l,hdr_size:d,start:o}):0!==l&&o+l>e.getEndPosition()?(e.seek(o),s.info("BoxParser","Not enough data in stream to parse the entire '"+u+"' box"),{code:c.ERR_NOT_ENOUGH_DATA,type:u,size:l,hdr_size:d,start:o}):t?{code:c.OK,type:u,size:l,hdr_size:d,start:o}:(c[u+"Box"]?i=new c[u+"Box"](l):"uuid"!==u?(s.warn("BoxParser","Unknown box type: '"+u+"'"),(i=new c.Box(u,l)).has_unparsed_data=!0):c.UUIDBoxes[a]?i=new c.UUIDBoxes[a](l):(s.warn("BoxParser","Unknown uuid type: '"+a+"'"),(i=new c.Box(u,l)).uuid=a,i.has_unparsed_data=!0),i.hdr_size=d,i.start=o,i.write===c.Box.prototype.write&&"mdat"!==i.type&&(s.info("BoxParser","'"+h+"' box writing not yet implemented, keeping unparsed data in memory for later write"),i.parseDataAndRewind(e)),i.parse(e),(n=e.getPosition()-(i.start+i.size))<0?(s.warn("BoxParser","Parsing of box '"+h+"' did not read the entire indicated box data size (missing "+-n+" bytes), seeking forward"),e.seek(i.start+i.size)):n>0&&(s.error("BoxParser","Parsing of box '"+h+"' read "+n+" more bytes than the indicated box data size, seeking backwards"),0!==i.size&&e.seek(i.start+i.size)),{code:c.OK,box:i,size:i.size})},c.Box.prototype.parse=function(e){"mdat"!=this.type?this.data=e.readUint8Array(this.size-this.hdr_size):0===this.size?e.seek(e.getEndPosition()):e.seek(this.start+this.size)},c.Box.prototype.parseDataAndRewind=function(e){this.data=e.readUint8Array(this.size-this.hdr_size),e.position-=this.size-this.hdr_size},c.FullBox.prototype.parseDataAndRewind=function(e){this.parseFullHeader(e),this.data=e.readUint8Array(this.size-this.hdr_size),this.hdr_size-=4,e.position-=this.size-this.hdr_size},c.FullBox.prototype.parseFullHeader=function(e){this.version=e.readUint8(),this.flags=e.readUint24(),this.hdr_size+=4},c.FullBox.prototype.parse=function(e){this.parseFullHeader(e),this.data=e.readUint8Array(this.size-this.hdr_size)},c.ContainerBox.prototype.parse=function(e){for(var t,r;e.getPosition()>10&31,t[1]=this.language>>5&31,t[2]=31&this.language,this.languageString=String.fromCharCode(t[0]+96,t[1]+96,t[2]+96)},c.SAMPLE_ENTRY_TYPE_VISUAL="Visual",c.SAMPLE_ENTRY_TYPE_AUDIO="Audio",c.SAMPLE_ENTRY_TYPE_HINT="Hint",c.SAMPLE_ENTRY_TYPE_METADATA="Metadata",c.SAMPLE_ENTRY_TYPE_SUBTITLE="Subtitle",c.SAMPLE_ENTRY_TYPE_SYSTEM="System",c.SAMPLE_ENTRY_TYPE_TEXT="Text",c.SampleEntry.prototype.parseHeader=function(e){e.readUint8Array(6),this.data_reference_index=e.readUint16(),this.hdr_size+=8},c.SampleEntry.prototype.parse=function(e){this.parseHeader(e),this.data=e.readUint8Array(this.size-this.hdr_size)},c.SampleEntry.prototype.parseDataAndRewind=function(e){this.parseHeader(e),this.data=e.readUint8Array(this.size-this.hdr_size),this.hdr_size-=8,e.position-=this.size-this.hdr_size},c.SampleEntry.prototype.parseFooter=function(e){c.ContainerBox.prototype.parse.call(this,e)},c.createMediaSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_HINT),c.createMediaSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_METADATA),c.createMediaSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_SUBTITLE),c.createMediaSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_SYSTEM),c.createMediaSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_TEXT),c.createMediaSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_VISUAL,(function(e){var t;this.parseHeader(e),e.readUint16(),e.readUint16(),e.readUint32Array(3),this.width=e.readUint16(),this.height=e.readUint16(),this.horizresolution=e.readUint32(),this.vertresolution=e.readUint32(),e.readUint32(),this.frame_count=e.readUint16(),t=Math.min(31,e.readUint8()),this.compressorname=e.readString(t),t<31&&e.readString(31-t),this.depth=e.readUint16(),e.readUint16(),this.parseFooter(e)})),c.createMediaSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_AUDIO,(function(e){this.parseHeader(e),e.readUint32Array(2),this.channel_count=e.readUint16(),this.samplesize=e.readUint16(),e.readUint16(),e.readUint16(),this.samplerate=e.readUint32()/65536,this.parseFooter(e)})),c.createSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_VISUAL,"avc1"),c.createSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_VISUAL,"avc2"),c.createSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_VISUAL,"avc3"),c.createSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_VISUAL,"avc4"),c.createSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_VISUAL,"av01"),c.createSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_VISUAL,"hvc1"),c.createSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_VISUAL,"hev1"),c.createSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_VISUAL,"vvc1"),c.createSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_VISUAL,"vvi1"),c.createSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_VISUAL,"vvs1"),c.createSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_VISUAL,"vvcN"),c.createSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_VISUAL,"vp08"),c.createSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_VISUAL,"vp09"),c.createSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_AUDIO,"mp4a"),c.createSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_AUDIO,"ac-3"),c.createSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_AUDIO,"ec-3"),c.createSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_AUDIO,"Opus"),c.createEncryptedSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_VISUAL,"encv"),c.createEncryptedSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_AUDIO,"enca"),c.createEncryptedSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_SUBTITLE,"encu"),c.createEncryptedSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_SYSTEM,"encs"),c.createEncryptedSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_TEXT,"enct"),c.createEncryptedSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_METADATA,"encm"),c.createBoxCtor("a1lx",(function(e){var t=16*(1+(1&(1&e.readUint8())));this.layer_size=[];for(var r=0;r<3;r++)this.layer_size[r]=16==t?e.readUint16():e.readUint32()})),c.createBoxCtor("a1op",(function(e){this.op_index=e.readUint8()})),c.createFullBoxCtor("auxC",(function(e){this.aux_type=e.readCString();var t=this.size-this.hdr_size-(this.aux_type.length+1);this.aux_subtype=e.readUint8Array(t)})),c.createBoxCtor("av1C",(function(e){var t=e.readUint8();if(t>>7&!1)s.error("av1C marker problem");else if(this.version=127&t,1===this.version)if(t=e.readUint8(),this.seq_profile=t>>5&7,this.seq_level_idx_0=31&t,t=e.readUint8(),this.seq_tier_0=t>>7&1,this.high_bitdepth=t>>6&1,this.twelve_bit=t>>5&1,this.monochrome=t>>4&1,this.chroma_subsampling_x=t>>3&1,this.chroma_subsampling_y=t>>2&1,this.chroma_sample_position=3&t,t=e.readUint8(),this.reserved_1=t>>5&7,0===this.reserved_1){if(this.initial_presentation_delay_present=t>>4&1,1===this.initial_presentation_delay_present)this.initial_presentation_delay_minus_one=15&t;else if(this.reserved_2=15&t,0!==this.reserved_2)return void s.error("av1C reserved_2 parsing problem");var r=this.size-this.hdr_size-4;this.configOBUs=e.readUint8Array(r)}else s.error("av1C reserved_1 parsing problem");else s.error("av1C version "+this.version+" not supported")})),c.createBoxCtor("avcC",(function(e){var t,r;for(this.configurationVersion=e.readUint8(),this.AVCProfileIndication=e.readUint8(),this.profile_compatibility=e.readUint8(),this.AVCLevelIndication=e.readUint8(),this.lengthSizeMinusOne=3&e.readUint8(),this.nb_SPS_nalus=31&e.readUint8(),r=this.size-this.hdr_size-6,this.SPS=[],t=0;t0&&(this.ext=e.readUint8Array(r))})),c.createBoxCtor("btrt",(function(e){this.bufferSizeDB=e.readUint32(),this.maxBitrate=e.readUint32(),this.avgBitrate=e.readUint32()})),c.createBoxCtor("clap",(function(e){this.cleanApertureWidthN=e.readUint32(),this.cleanApertureWidthD=e.readUint32(),this.cleanApertureHeightN=e.readUint32(),this.cleanApertureHeightD=e.readUint32(),this.horizOffN=e.readUint32(),this.horizOffD=e.readUint32(),this.vertOffN=e.readUint32(),this.vertOffD=e.readUint32()})),c.createBoxCtor("clli",(function(e){this.max_content_light_level=e.readUint16(),this.max_pic_average_light_level=e.readUint16()})),c.createFullBoxCtor("co64",(function(e){var t,r;if(t=e.readUint32(),this.chunk_offsets=[],0===this.version)for(r=0;r>7}else("rICC"===this.colour_type||"prof"===this.colour_type)&&(this.ICC_profile=e.readUint8Array(this.size-4))})),c.createFullBoxCtor("cprt",(function(e){this.parseLanguage(e),this.notice=e.readCString()})),c.createFullBoxCtor("cslg",(function(e){0===this.version&&(this.compositionToDTSShift=e.readInt32(),this.leastDecodeToDisplayDelta=e.readInt32(),this.greatestDecodeToDisplayDelta=e.readInt32(),this.compositionStartTime=e.readInt32(),this.compositionEndTime=e.readInt32())})),c.createFullBoxCtor("ctts",(function(e){var t,r;if(t=e.readUint32(),this.sample_counts=[],this.sample_offsets=[],0===this.version)for(r=0;r>6,this.bsid=t>>1&31,this.bsmod=(1&t)<<2|r>>6&3,this.acmod=r>>3&7,this.lfeon=r>>2&1,this.bit_rate_code=3&r|i>>5&7})),c.createBoxCtor("dec3",(function(e){var t=e.readUint16();this.data_rate=t>>3,this.num_ind_sub=7&t,this.ind_subs=[];for(var r=0;r>6,i.bsid=n>>1&31,i.bsmod=(1&n)<<4|s>>4&15,i.acmod=s>>1&7,i.lfeon=1&s,i.num_dep_sub=a>>1&15,i.num_dep_sub>0&&(i.chan_loc=(1&a)<<8|e.readUint8())}})),c.createFullBoxCtor("dfLa",(function(e){var t=[],r=["STREAMINFO","PADDING","APPLICATION","SEEKTABLE","VORBIS_COMMENT","CUESHEET","PICTURE","RESERVED"];for(this.parseFullHeader(e);;){var i=e.readUint8(),n=Math.min(127&i,r.length-1);if(n?e.readUint8Array(e.readUint24()):(e.readUint8Array(13),this.samplerate=e.readUint32()>>12,e.readUint8Array(20)),t.push(r[n]),128&i)break}this.numMetadataBlocks=t.length+" ("+t.join(", ")+")"})),c.createBoxCtor("dimm",(function(e){this.bytessent=e.readUint64()})),c.createBoxCtor("dmax",(function(e){this.time=e.readUint32()})),c.createBoxCtor("dmed",(function(e){this.bytessent=e.readUint64()})),c.createBoxCtor("dOps",(function(e){if(this.Version=e.readUint8(),this.OutputChannelCount=e.readUint8(),this.PreSkip=e.readUint16(),this.InputSampleRate=e.readUint32(),this.OutputGain=e.readInt16(),this.ChannelMappingFamily=e.readUint8(),0!==this.ChannelMappingFamily){this.StreamCount=e.readUint8(),this.CoupledCount=e.readUint8(),this.ChannelMapping=[];for(var t=0;t=4;)this.compatible_brands[r]=e.readString(4),t-=4,r++})),c.createFullBoxCtor("hdlr",(function(e){0===this.version&&(e.readUint32(),this.handler=e.readString(4),e.readUint32Array(3),this.name=e.readString(this.size-this.hdr_size-20),"\0"===this.name[this.name.length-1]&&(this.name=this.name.slice(0,-1)))})),c.createBoxCtor("hvcC",(function(e){var t,r,i,n;this.configurationVersion=e.readUint8(),n=e.readUint8(),this.general_profile_space=n>>6,this.general_tier_flag=(32&n)>>5,this.general_profile_idc=31&n,this.general_profile_compatibility=e.readUint32(),this.general_constraint_indicator=e.readUint8Array(6),this.general_level_idc=e.readUint8(),this.min_spatial_segmentation_idc=4095&e.readUint16(),this.parallelismType=3&e.readUint8(),this.chroma_format_idc=3&e.readUint8(),this.bit_depth_luma_minus8=7&e.readUint8(),this.bit_depth_chroma_minus8=7&e.readUint8(),this.avgFrameRate=e.readUint16(),n=e.readUint8(),this.constantFrameRate=n>>6,this.numTemporalLayers=(13&n)>>3,this.temporalIdNested=(4&n)>>2,this.lengthSizeMinusOne=3&n,this.nalu_arrays=[];var s=e.readUint8();for(t=0;t>7,a.nalu_type=63&n;var o=e.readUint16();for(r=0;r>4&15,this.length_size=15&t,t=e.readUint8(),this.base_offset_size=t>>4&15,1===this.version||2===this.version?this.index_size=15&t:this.index_size=0,this.items=[];var r=0;if(this.version<2)r=e.readUint16();else{if(2!==this.version)throw"version of iloc box not supported";r=e.readUint32()}for(var i=0;i>7,this.axis=1&t})),c.createFullBoxCtor("infe",(function(e){if(0!==this.version&&1!==this.version||(this.item_ID=e.readUint16(),this.item_protection_index=e.readUint16(),this.item_name=e.readCString(),this.content_type=e.readCString(),this.content_encoding=e.readCString()),1===this.version)return this.extension_type=e.readString(4),s.warn("BoxParser","Cannot parse extension type"),void e.seek(this.start+this.size);this.version>=2&&(2===this.version?this.item_ID=e.readUint16():3===this.version&&(this.item_ID=e.readUint32()),this.item_protection_index=e.readUint16(),this.item_type=e.readString(4),this.item_name=e.readCString(),"mime"===this.item_type?(this.content_type=e.readCString(),this.content_encoding=e.readCString()):"uri "===this.item_type&&(this.item_uri_type=e.readCString()))})),c.createFullBoxCtor("ipma",(function(e){var t,r;for(entry_count=e.readUint32(),this.associations=[],t=0;t>7==1,1&this.flags?a.property_index=(127&s)<<8|e.readUint8():a.property_index=127&s}}})),c.createFullBoxCtor("iref",(function(e){var t,r;for(this.references=[];e.getPosition()>7,i.assignment_type=127&n,i.assignment_type){case 0:i.grouping_type=e.readString(4);break;case 1:i.grouping_type=e.readString(4),i.grouping_type_parameter=e.readUint32();break;case 2:case 3:break;case 4:i.sub_track_id=e.readUint32();break;default:s.warn("BoxParser","Unknown leva assignement type")}}})),c.createBoxCtor("lsel",(function(e){this.layer_id=e.readUint16()})),c.createBoxCtor("maxr",(function(e){this.period=e.readUint32(),this.bytes=e.readUint32()})),c.createBoxCtor("mdcv",(function(e){this.display_primaries=[],this.display_primaries[0]={},this.display_primaries[0].x=e.readUint16(),this.display_primaries[0].y=e.readUint16(),this.display_primaries[1]={},this.display_primaries[1].x=e.readUint16(),this.display_primaries[1].y=e.readUint16(),this.display_primaries[2]={},this.display_primaries[2].x=e.readUint16(),this.display_primaries[2].y=e.readUint16(),this.white_point={},this.white_point.x=e.readUint16(),this.white_point.y=e.readUint16(),this.max_display_mastering_luminance=e.readUint32(),this.min_display_mastering_luminance=e.readUint32()})),c.createFullBoxCtor("mdhd",(function(e){1==this.version?(this.creation_time=e.readUint64(),this.modification_time=e.readUint64(),this.timescale=e.readUint32(),this.duration=e.readUint64()):(this.creation_time=e.readUint32(),this.modification_time=e.readUint32(),this.timescale=e.readUint32(),this.duration=e.readUint32()),this.parseLanguage(e),e.readUint16()})),c.createFullBoxCtor("mehd",(function(e){1&this.flags&&(s.warn("BoxParser","mehd box incorrectly uses flags set to 1, converting version to 1"),this.version=1),1==this.version?this.fragment_duration=e.readUint64():this.fragment_duration=e.readUint32()})),c.createFullBoxCtor("meta",(function(e){this.boxes=[],c.ContainerBox.prototype.parse.call(this,e)})),c.createFullBoxCtor("mfhd",(function(e){this.sequence_number=e.readUint32()})),c.createFullBoxCtor("mfro",(function(e){this._size=e.readUint32()})),c.createFullBoxCtor("mvhd",(function(e){1==this.version?(this.creation_time=e.readUint64(),this.modification_time=e.readUint64(),this.timescale=e.readUint32(),this.duration=e.readUint64()):(this.creation_time=e.readUint32(),this.modification_time=e.readUint32(),this.timescale=e.readUint32(),this.duration=e.readUint32()),this.rate=e.readUint32(),this.volume=e.readUint16()>>8,e.readUint16(),e.readUint32Array(2),this.matrix=e.readUint32Array(9),e.readUint32Array(6),this.next_track_id=e.readUint32()})),c.createBoxCtor("npck",(function(e){this.packetssent=e.readUint32()})),c.createBoxCtor("nump",(function(e){this.packetssent=e.readUint64()})),c.createFullBoxCtor("padb",(function(e){var t=e.readUint32();this.padbits=[];for(var r=0;r0){var t=e.readUint32();this.kid=[];for(var r=0;r0&&(this.data=e.readUint8Array(i))})),c.createFullBoxCtor("clef",(function(e){this.width=e.readUint32(),this.height=e.readUint32()})),c.createFullBoxCtor("enof",(function(e){this.width=e.readUint32(),this.height=e.readUint32()})),c.createFullBoxCtor("prof",(function(e){this.width=e.readUint32(),this.height=e.readUint32()})),c.createContainerBoxCtor("tapt",null,["clef","prof","enof"]),c.createBoxCtor("rtp ",(function(e){this.descriptionformat=e.readString(4),this.sdptext=e.readString(this.size-this.hdr_size-4)})),c.createFullBoxCtor("saio",(function(e){1&this.flags&&(this.aux_info_type=e.readUint32(),this.aux_info_type_parameter=e.readUint32());var t=e.readUint32();this.offset=[];for(var r=0;r>7,this.avgRateFlag=t>>6&1,this.durationFlag&&(this.duration=e.readUint32()),this.avgRateFlag&&(this.accurateStatisticsFlag=e.readUint8(),this.avgBitRate=e.readUint16(),this.avgFrameRate=e.readUint16()),this.dependency=[];for(var r=e.readUint8(),i=0;i>7,this.num_leading_samples=127&t})),c.createSampleGroupCtor("rash",(function(e){if(this.operation_point_count=e.readUint16(),this.description_length!==2+(1===this.operation_point_count?2:6*this.operation_point_count)+9)s.warn("BoxParser","Mismatch in "+this.grouping_type+" sample group length"),this.data=e.readUint8Array(this.description_length-2);else{if(1===this.operation_point_count)this.target_rate_share=e.readUint16();else{this.target_rate_share=[],this.available_bitrate=[];for(var t=0;t>4,this.skip_byte_block=15&t,this.isProtected=e.readUint8(),this.Per_Sample_IV_Size=e.readUint8(),this.KID=c.parseHex16(e),this.constant_IV_size=0,this.constant_IV=0,1===this.isProtected&&0===this.Per_Sample_IV_Size&&(this.constant_IV_size=e.readUint8(),this.constant_IV=e.readUint8Array(this.constant_IV_size))})),c.createSampleGroupCtor("stsa",(function(e){s.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),c.createSampleGroupCtor("sync",(function(e){var t=e.readUint8();this.NAL_unit_type=63&t})),c.createSampleGroupCtor("tele",(function(e){var t=e.readUint8();this.level_independently_decodable=t>>7})),c.createSampleGroupCtor("tsas",(function(e){s.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),c.createSampleGroupCtor("tscl",(function(e){s.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),c.createSampleGroupCtor("vipr",(function(e){s.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),c.createFullBoxCtor("sbgp",(function(e){this.grouping_type=e.readString(4),1===this.version?this.grouping_type_parameter=e.readUint32():this.grouping_type_parameter=0,this.entries=[];for(var t=e.readUint32(),r=0;r>6,this.sample_depends_on[i]=t>>4&3,this.sample_is_depended_on[i]=t>>2&3,this.sample_has_redundancy[i]=3&t})),c.createFullBoxCtor("senc"),c.createFullBoxCtor("sgpd",(function(e){this.grouping_type=e.readString(4),s.debug("BoxParser","Found Sample Groups of type "+this.grouping_type),1===this.version?this.default_length=e.readUint32():this.default_length=0,this.version>=2&&(this.default_group_description_index=e.readUint32()),this.entries=[];for(var t=e.readUint32(),r=0;r>31&1,i.referenced_size=2147483647&n,i.subsegment_duration=e.readUint32(),n=e.readUint32(),i.starts_with_SAP=n>>31&1,i.SAP_type=n>>28&7,i.SAP_delta_time=268435455&n}})),c.SingleItemTypeReferenceBox=function(e,t,r,i){c.Box.call(this,e,t),this.hdr_size=r,this.start=i},c.SingleItemTypeReferenceBox.prototype=new c.Box,c.SingleItemTypeReferenceBox.prototype.parse=function(e){this.from_item_ID=e.readUint16();var t=e.readUint16();this.references=[];for(var r=0;r>4&15,this.sample_sizes[t+1]=15&i}else if(8===this.field_size)for(t=0;t0)for(r=0;r>4&15,this.default_skip_byte_block=15&t}this.default_isProtected=e.readUint8(),this.default_Per_Sample_IV_Size=e.readUint8(),this.default_KID=c.parseHex16(e),1===this.default_isProtected&&0===this.default_Per_Sample_IV_Size&&(this.default_constant_IV_size=e.readUint8(),this.default_constant_IV=e.readUint8Array(this.default_constant_IV_size))})),c.createFullBoxCtor("tfdt",(function(e){1==this.version?this.baseMediaDecodeTime=e.readUint64():this.baseMediaDecodeTime=e.readUint32()})),c.createFullBoxCtor("tfhd",(function(e){var t=0;this.track_id=e.readUint32(),this.size-this.hdr_size>t&&this.flags&c.TFHD_FLAG_BASE_DATA_OFFSET?(this.base_data_offset=e.readUint64(),t+=8):this.base_data_offset=0,this.size-this.hdr_size>t&&this.flags&c.TFHD_FLAG_SAMPLE_DESC?(this.default_sample_description_index=e.readUint32(),t+=4):this.default_sample_description_index=0,this.size-this.hdr_size>t&&this.flags&c.TFHD_FLAG_SAMPLE_DUR?(this.default_sample_duration=e.readUint32(),t+=4):this.default_sample_duration=0,this.size-this.hdr_size>t&&this.flags&c.TFHD_FLAG_SAMPLE_SIZE?(this.default_sample_size=e.readUint32(),t+=4):this.default_sample_size=0,this.size-this.hdr_size>t&&this.flags&c.TFHD_FLAG_SAMPLE_FLAGS?(this.default_sample_flags=e.readUint32(),t+=4):this.default_sample_flags=0})),c.createFullBoxCtor("tfra",(function(e){this.track_ID=e.readUint32(),e.readUint24();var t=e.readUint8();this.length_size_of_traf_num=t>>4&3,this.length_size_of_trun_num=t>>2&3,this.length_size_of_sample_num=3&t,this.entries=[];for(var r=e.readUint32(),i=0;i>8,e.readUint16(),this.matrix=e.readInt32Array(9),this.width=e.readUint32(),this.height=e.readUint32()})),c.createBoxCtor("tmax",(function(e){this.time=e.readUint32()})),c.createBoxCtor("tmin",(function(e){this.time=e.readUint32()})),c.createBoxCtor("totl",(function(e){this.bytessent=e.readUint32()})),c.createBoxCtor("tpay",(function(e){this.bytessent=e.readUint32()})),c.createBoxCtor("tpyl",(function(e){this.bytessent=e.readUint64()})),c.TrackGroupTypeBox.prototype.parse=function(e){this.parseFullHeader(e),this.track_group_id=e.readUint32()},c.createTrackGroupCtor("msrc"),c.TrackReferenceTypeBox=function(e,t,r,i){c.Box.call(this,e,t),this.hdr_size=r,this.start=i},c.TrackReferenceTypeBox.prototype=new c.Box,c.TrackReferenceTypeBox.prototype.parse=function(e){this.track_ids=e.readUint32Array((this.size-this.hdr_size)/4)},c.trefBox.prototype.parse=function(e){for(var t,r;e.getPosition()t&&this.flags&c.TRUN_FLAGS_DATA_OFFSET?(this.data_offset=e.readInt32(),t+=4):this.data_offset=0,this.size-this.hdr_size>t&&this.flags&c.TRUN_FLAGS_FIRST_FLAG?(this.first_sample_flags=e.readUint32(),t+=4):this.first_sample_flags=0,this.sample_duration=[],this.sample_size=[],this.sample_flags=[],this.sample_composition_time_offset=[],this.size-this.hdr_size>t)for(var r=0;r0&&(this.location=e.readCString())})),c.createUUIDBox("a5d40b30e81411ddba2f0800200c9a66",!0,!1,(function(e){this.LiveServerManifest=e.readString(this.size-this.hdr_size).replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")})),c.createUUIDBox("d08a4f1810f34a82b6c832d8aba183d3",!0,!1,(function(e){this.system_id=c.parseHex16(e);var t=e.readUint32();t>0&&(this.data=e.readUint8Array(t))})),c.createUUIDBox("a2394f525a9b4f14a2446c427c648df4",!0,!1),c.createUUIDBox("8974dbce7be74c5184f97148f9882554",!0,!1,(function(e){this.default_AlgorithmID=e.readUint24(),this.default_IV_size=e.readUint8(),this.default_KID=c.parseHex16(e)})),c.createUUIDBox("d4807ef2ca3946958e5426cb9e46a79f",!0,!1,(function(e){this.fragment_count=e.readUint8(),this.entries=[];for(var t=0;t>4,this.chromaSubsampling=t>>1&7,this.videoFullRangeFlag=1&t,this.colourPrimaries=e.readUint8(),this.transferCharacteristics=e.readUint8(),this.matrixCoefficients=e.readUint8(),this.codecIntializationDataSize=e.readUint16(),this.codecIntializationData=e.readUint8Array(this.codecIntializationDataSize)):(this.profile=e.readUint8(),this.level=e.readUint8(),t=e.readUint8(),this.bitDepth=t>>4&15,this.colorSpace=15&t,t=e.readUint8(),this.chromaSubsampling=t>>4&15,this.transferFunction=t>>1&7,this.videoFullRangeFlag=1&t,this.codecIntializationDataSize=e.readUint16(),this.codecIntializationData=e.readUint8Array(this.codecIntializationDataSize))})),c.createBoxCtor("vttC",(function(e){this.text=e.readString(this.size-this.hdr_size)})),c.createFullBoxCtor("vvcC",(function(e){var t,r,i={held_bits:void 0,num_held_bits:0,stream_read_1_bytes:function(e){this.held_bits=e.readUint8(),this.num_held_bits=8},stream_read_2_bytes:function(e){this.held_bits=e.readUint16(),this.num_held_bits=16},extract_bits:function(e){var t=this.held_bits>>this.num_held_bits-e&(1<=0;--r){var a=i.extract_bits(1);this.ptl_sublayer_present_mask|=a<1;++r)i.extract_bits(1);for(r=this.num_sublayers-2;r>=0;--r)this.ptl_sublayer_present_mask&1<>=1;t+=c.decimalToHex(i,0),t+=".",0===this.hvcC.general_tier_flag?t+="L":t+="H",t+=this.hvcC.general_level_idc;var n=!1,s="";for(e=5;e>=0;e--)(this.hvcC.general_constraint_indicator[e]||n)&&(s="."+c.decimalToHex(this.hvcC.general_constraint_indicator[e],0)+s,n=!0);t+=s}return t},c.vvc1SampleEntry.prototype.getCodec=c.vvi1SampleEntry.prototype.getCodec=function(){var e,t=c.SampleEntry.prototype.getCodec.call(this);if(this.vvcC){t+="."+this.vvcC.general_profile_idc,this.vvcC.general_tier_flag?t+=".H":t+=".L",t+=this.vvcC.general_level_idc;var r="";if(this.vvcC.general_constraint_info){var i,n=[],s=0;for(s|=this.vvcC.ptl_frame_only_constraint<<7,s|=this.vvcC.ptl_multilayer_enabled<<6,e=0;e>2&63,n.push(s),s&&(i=e),s=this.vvcC.general_constraint_info[e]>>2&3;if(void 0===i)r=".CA";else{r=".C";var a="ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",o=0,d=0;for(e=0;e<=i;++e)for(o=o<<8|n[e],d+=8;d>=5;){r+=a[o>>d-5&31],o&=(1<<(d-=5))-1}d&&(r+=a[31&(o<<=5-d)])}}t+=r}return t},c.mp4aSampleEntry.prototype.getCodec=function(){var e=c.SampleEntry.prototype.getCodec.call(this);if(this.esds&&this.esds.esd){var t=this.esds.esd.getOTI(),r=this.esds.esd.getAudioConfig();return e+"."+c.decimalToHex(t)+(r?"."+r:"")}return e},c.stxtSampleEntry.prototype.getCodec=function(){var e=c.SampleEntry.prototype.getCodec.call(this);return this.mime_format?e+"."+this.mime_format:e},c.vp08SampleEntry.prototype.getCodec=c.vp09SampleEntry.prototype.getCodec=function(){var e=c.SampleEntry.prototype.getCodec.call(this),t=this.vpcC.level;0==t&&(t="00");var r=this.vpcC.bitDepth;return 8==r&&(r="08"),e+".0"+this.vpcC.profile+"."+t+"."+r},c.av01SampleEntry.prototype.getCodec=function(){var e,t=c.SampleEntry.prototype.getCodec.call(this),r=this.av1C.seq_level_idx_0;return r<10&&(r="0"+r),2===this.av1C.seq_profile&&1===this.av1C.high_bitdepth?e=1===this.av1C.twelve_bit?"12":"10":this.av1C.seq_profile<=2&&(e=1===this.av1C.high_bitdepth?"10":"08"),t+"."+this.av1C.seq_profile+"."+r+(this.av1C.seq_tier_0?"H":"M")+"."+e},c.Box.prototype.writeHeader=function(e,t){this.size+=8,this.size>d&&(this.size+=8),"uuid"===this.type&&(this.size+=16),s.debug("BoxWriter","Writing box "+this.type+" of size: "+this.size+" at position "+e.getPosition()+(t||"")),this.size>d?e.writeUint32(1):(this.sizePosition=e.getPosition(),e.writeUint32(this.size)),e.writeString(this.type,null,4),"uuid"===this.type&&e.writeUint8Array(this.uuid),this.size>d&&e.writeUint64(this.size)},c.FullBox.prototype.writeHeader=function(e){this.size+=4,c.Box.prototype.writeHeader.call(this,e," v="+this.version+" f="+this.flags),e.writeUint8(this.version),e.writeUint24(this.flags)},c.Box.prototype.write=function(e){"mdat"===this.type?this.data&&(this.size=this.data.length,this.writeHeader(e),e.writeUint8Array(this.data)):(this.size=this.data?this.data.length:0,this.writeHeader(e),this.data&&e.writeUint8Array(this.data))},c.ContainerBox.prototype.write=function(e){this.size=0,this.writeHeader(e);for(var t=0;t=2&&e.writeUint32(this.default_sample_description_index),e.writeUint32(this.entries.length),t=0;t0)for(t=0;t+1t?1:0,this.flags=0,this.size=4,1===this.version&&(this.size+=4),this.writeHeader(e),1===this.version?e.writeUint64(this.baseMediaDecodeTime):e.writeUint32(this.baseMediaDecodeTime)},c.tfhdBox.prototype.write=function(e){this.version=0,this.size=4,this.flags&c.TFHD_FLAG_BASE_DATA_OFFSET&&(this.size+=8),this.flags&c.TFHD_FLAG_SAMPLE_DESC&&(this.size+=4),this.flags&c.TFHD_FLAG_SAMPLE_DUR&&(this.size+=4),this.flags&c.TFHD_FLAG_SAMPLE_SIZE&&(this.size+=4),this.flags&c.TFHD_FLAG_SAMPLE_FLAGS&&(this.size+=4),this.writeHeader(e),e.writeUint32(this.track_id),this.flags&c.TFHD_FLAG_BASE_DATA_OFFSET&&e.writeUint64(this.base_data_offset),this.flags&c.TFHD_FLAG_SAMPLE_DESC&&e.writeUint32(this.default_sample_description_index),this.flags&c.TFHD_FLAG_SAMPLE_DUR&&e.writeUint32(this.default_sample_duration),this.flags&c.TFHD_FLAG_SAMPLE_SIZE&&e.writeUint32(this.default_sample_size),this.flags&c.TFHD_FLAG_SAMPLE_FLAGS&&e.writeUint32(this.default_sample_flags)},c.tkhdBox.prototype.write=function(e){this.version=0,this.size=80,this.writeHeader(e),e.writeUint32(this.creation_time),e.writeUint32(this.modification_time),e.writeUint32(this.track_id),e.writeUint32(0),e.writeUint32(this.duration),e.writeUint32(0),e.writeUint32(0),e.writeInt16(this.layer),e.writeInt16(this.alternate_group),e.writeInt16(this.volume<<8),e.writeUint16(0),e.writeInt32Array(this.matrix),e.writeUint32(this.width),e.writeUint32(this.height)},c.trexBox.prototype.write=function(e){this.version=0,this.flags=0,this.size=20,this.writeHeader(e),e.writeUint32(this.track_id),e.writeUint32(this.default_sample_description_index),e.writeUint32(this.default_sample_duration),e.writeUint32(this.default_sample_size),e.writeUint32(this.default_sample_flags)},c.trunBox.prototype.write=function(e){this.version=0,this.size=4,this.flags&c.TRUN_FLAGS_DATA_OFFSET&&(this.size+=4),this.flags&c.TRUN_FLAGS_FIRST_FLAG&&(this.size+=4),this.flags&c.TRUN_FLAGS_DURATION&&(this.size+=4*this.sample_duration.length),this.flags&c.TRUN_FLAGS_SIZE&&(this.size+=4*this.sample_size.length),this.flags&c.TRUN_FLAGS_FLAGS&&(this.size+=4*this.sample_flags.length),this.flags&c.TRUN_FLAGS_CTS_OFFSET&&(this.size+=4*this.sample_composition_time_offset.length),this.writeHeader(e),e.writeUint32(this.sample_count),this.flags&c.TRUN_FLAGS_DATA_OFFSET&&(this.data_offset_position=e.getPosition(),e.writeInt32(this.data_offset)),this.flags&c.TRUN_FLAGS_FIRST_FLAG&&e.writeUint32(this.first_sample_flags);for(var t=0;t-1||e[r]instanceof c.Box||t[r]instanceof c.Box||void 0===e[r]||void 0===t[r]||"function"==typeof e[r]||"function"==typeof t[r]||e.subBoxNames&&e.subBoxNames.indexOf(r.slice(0,4))>-1||t.subBoxNames&&t.subBoxNames.indexOf(r.slice(0,4))>-1||"data"===r||"start"===r||"size"===r||"creation_time"===r||"modification_time"===r||c.DIFF_PRIMITIVE_ARRAY_PROP_NAMES.indexOf(r)>-1||e[r]===t[r]))return!1;return!0},c.boxEqual=function(e,t){if(!c.boxEqualFields(e,t))return!1;for(var r=0;r1)for(t=1;t-1&&this.fragmentedTracks.splice(t,1)},p.prototype.setExtractionOptions=function(e,t,r){var i=this.getTrackById(e);if(i){var n={};this.extractedTracks.push(n),n.id=e,n.user=t,n.trak=i,i.nextSample=0,n.nb_samples=1e3,n.samples=[],r&&r.nbSamples&&(n.nb_samples=r.nbSamples)}},p.prototype.unsetExtractionOptions=function(e){for(var t=-1,r=0;r-1&&this.extractedTracks.splice(t,1)},p.prototype.parse=function(){var e,t;if(!this.restoreParsePosition||this.restoreParsePosition())for(;;){if(this.hasIncompleteMdat&&this.hasIncompleteMdat()){if(this.processIncompleteMdat())continue;return}if(this.saveParsePosition&&this.saveParsePosition(),(e=c.parseOneBox(this.stream,false)).code===c.ERR_NOT_ENOUGH_DATA){if(this.processIncompleteBox){if(this.processIncompleteBox(e))continue;return}return}var r;switch(r="uuid"!==(t=e.box).type?t.type:t.uuid,this.boxes.push(t),r){case"mdat":this.mdats.push(t);break;case"moof":this.moofs.push(t);break;case"moov":this.moovStartFound=!0,0===this.mdats.length&&(this.isProgressive=!0);default:void 0!==this[r]&&s.warn("ISOFile","Duplicate Box of type: "+r+", overriding previous occurrence"),this[r]=t}this.updateUsedBytes&&this.updateUsedBytes(t,e)}},p.prototype.checkBuffer=function(e){if(null==e)throw"Buffer must be defined and non empty";if(void 0===e.fileStart)throw"Buffer must have a fileStart property";return 0===e.byteLength?(s.warn("ISOFile","Ignoring empty buffer (fileStart: "+e.fileStart+")"),this.stream.logBufferLevel(),!1):(s.info("ISOFile","Processing buffer (fileStart: "+e.fileStart+")"),e.usedBytes=0,this.stream.insertBuffer(e),this.stream.logBufferLevel(),!!this.stream.initialized()||(s.warn("ISOFile","Not ready to start parsing"),!1))},p.prototype.appendBuffer=function(e,t){var r;if(this.checkBuffer(e))return this.parse(),this.moovStartFound&&!this.moovStartSent&&(this.moovStartSent=!0,this.onMoovStart&&this.onMoovStart()),this.moov?(this.sampleListBuilt||(this.buildSampleLists(),this.sampleListBuilt=!0),this.updateSampleLists(),this.onReady&&!this.readySent&&(this.readySent=!0,this.onReady(this.getInfo())),this.processSamples(t),this.nextSeekPosition?(r=this.nextSeekPosition,this.nextSeekPosition=void 0):r=this.nextParsePosition,this.stream.getEndFilePositionAfter&&(r=this.stream.getEndFilePositionAfter(r))):r=this.nextParsePosition?this.nextParsePosition:0,this.sidx&&this.onSidx&&!this.sidxSent&&(this.onSidx(this.sidx),this.sidxSent=!0),this.meta&&(this.flattenItemInfo&&!this.itemListBuilt&&(this.flattenItemInfo(),this.itemListBuilt=!0),this.processItems&&this.processItems(this.onItem)),this.stream.cleanBuffers&&(s.info("ISOFile","Done processing buffer (fileStart: "+e.fileStart+") - next buffer to fetch should have a fileStart position of "+r),this.stream.logBufferLevel(),this.stream.cleanBuffers(),this.stream.logBufferLevel(!0),s.info("ISOFile","Sample data size in memory: "+this.getAllocatedSampleDataSize())),r},p.prototype.getInfo=function(){var e,t,r,i,n,s,a={},o=new Date("1904-01-01T00:00:00Z").getTime();if(this.moov)for(a.hasMoov=!0,a.duration=this.moov.mvhd.duration,a.timescale=this.moov.mvhd.timescale,a.isFragmented=null!=this.moov.mvex,a.isFragmented&&this.moov.mvex.mehd&&(a.fragment_duration=this.moov.mvex.mehd.fragment_duration),a.isProgressive=this.isProgressive,a.hasIOD=null!=this.moov.iods,a.brands=[],a.brands.push(this.ftyp.major_brand),a.brands=a.brands.concat(this.ftyp.compatible_brands),a.created=new Date(o+1e3*this.moov.mvhd.creation_time),a.modified=new Date(o+1e3*this.moov.mvhd.modification_time),a.tracks=[],a.audioTracks=[],a.videoTracks=[],a.subtitleTracks=[],a.metadataTracks=[],a.hintTracks=[],a.otherTracks=[],e=0;e0?a.mime+='video/mp4; codecs="':a.audioTracks&&a.audioTracks.length>0?a.mime+='audio/mp4; codecs="':a.mime+='application/mp4; codecs="',e=0;e=r.samples.length)&&(s.info("ISOFile","Sending fragmented data on track #"+i.id+" for samples ["+Math.max(0,r.nextSample-i.nb_samples)+","+(r.nextSample-1)+"]"),s.info("ISOFile","Sample data size in memory: "+this.getAllocatedSampleDataSize()),this.onSegment&&this.onSegment(i.id,i.user,i.segmentStream.buffer,r.nextSample,e||r.nextSample>=r.samples.length),i.segmentStream=null,i!==this.fragmentedTracks[t]))break}}if(null!==this.onSamples)for(t=0;t=r.samples.length)&&(s.debug("ISOFile","Sending samples on track #"+a.id+" for sample "+r.nextSample),this.onSamples&&this.onSamples(a.id,a.user,a.samples),a.samples=[],a!==this.extractedTracks[t]))break}}}},p.prototype.getBox=function(e){var t=this.getBoxes(e,!0);return t.length?t[0]:null},p.prototype.getBoxes=function(e,t){var r=[];return p._sweep.call(this,e,r,t),r},p._sweep=function(e,t,r){for(var i in this.type&&this.type==e&&t.push(this),this.boxes){if(t.length&&r)return;p._sweep.call(this.boxes[i],e,t,r)}},p.prototype.getTrackSamplesInfo=function(e){var t=this.getTrackById(e);return t?t.samples:void 0},p.prototype.getTrackSample=function(e,t){var r=this.getTrackById(e);return this.getSample(r,t)},p.prototype.releaseUsedSamples=function(e,t){var r=0,i=this.getTrackById(e);i.lastValidSample||(i.lastValidSample=0);for(var n=i.lastValidSample;ne*n.timescale){l=i-1;break}t&&n.is_sync&&(d=i)}for(t&&(l=d),e=r.samples[l].cts,r.nextSample=l;r.samples[l].alreadyRead===r.samples[l].size&&r.samples[l+1];)l++;return a=r.samples[l].offset+r.samples[l].alreadyRead,s.info("ISOFile","Seeking to "+(t?"RAP":"")+" sample #"+r.nextSample+" on track "+r.tkhd.track_id+", time "+s.getDurationString(e,o)+" and offset: "+a),{offset:a,time:e/o}},p.prototype.seek=function(e,t){var r,i,n,a=this.moov,o={offset:1/0,time:1/0};if(this.moov){for(n=0;n-1){o=d;break}switch(o){case"Visual":if(n.add("vmhd").set("graphicsmode",0).set("opcolor",[0,0,0]),s.set("width",t.width).set("height",t.height).set("horizresolution",72<<16).set("vertresolution",72<<16).set("frame_count",1).set("compressorname",t.type+" Compressor").set("depth",24),t.avcDecoderConfigRecord){var h=new c.avcCBox,f=new a(t.avcDecoderConfigRecord);h.parse(f),s.addBox(h)}break;case"Audio":n.add("smhd").set("balance",t.balance||0),s.set("channel_count",t.channel_count||2).set("samplesize",t.samplesize||16).set("samplerate",t.samplerate||65536);break;case"Hint":n.add("hmhd");break;case"Subtitle":if(n.add("sthd"),"stpp"===t.type)s.set("namespace",t.namespace||"nonamespace").set("schema_location",t.schema_location||"").set("auxiliary_mime_types",t.auxiliary_mime_types||"");break;default:n.add("nmhd")}t.description&&s.addBox(t.description),t.description_boxes&&t.description_boxes.forEach((function(e){s.addBox(e)})),n.add("dinf").add("dref").addEntry((new c["url Box"]).set("flags",1));var p=n.add("stbl");return p.add("stsd").addEntry(s),p.add("stts").set("sample_counts",[]).set("sample_deltas",[]),p.add("stsc").set("first_chunk",[]).set("samples_per_chunk",[]).set("sample_description_index",[]),p.add("stco").set("chunk_offsets",[]),p.add("stsz").set("sample_sizes",[]),this.moov.mvex.add("trex").set("track_id",t.id).set("default_sample_description_index",t.default_sample_description_index||1).set("default_sample_duration",t.default_sample_duration||0).set("default_sample_size",t.default_sample_size||0).set("default_sample_flags",t.default_sample_flags||0),this.buildTrakSampleLists(r),t.id}},c.Box.prototype.computeSize=function(e){var t=e||new o;t.endianness=o.BIG_ENDIAN,this.write(t)},p.prototype.addSample=function(e,t,r){var i=r||{},n={},s=this.getTrackById(e);if(null!==s){n.number=s.samples.length,n.track_id=s.tkhd.track_id,n.timescale=s.mdia.mdhd.timescale,n.description_index=i.sample_description_index?i.sample_description_index-1:0,n.description=s.mdia.minf.stbl.stsd.entries[n.description_index],n.data=t,n.size=t.byteLength,n.alreadyRead=n.size,n.duration=i.duration||1,n.cts=i.cts||0,n.dts=i.dts||0,n.is_sync=i.is_sync||!1,n.is_leading=i.is_leading||0,n.depends_on=i.depends_on||0,n.is_depended_on=i.is_depended_on||0,n.has_redundancy=i.has_redundancy||0,n.degradation_priority=i.degradation_priority||0,n.offset=0,n.subsamples=i.subsamples,s.samples.push(n),s.samples_size+=n.size,s.samples_duration+=n.duration,s.first_dts||(s.first_dts=i.dts),this.processSamples();var a=this.createSingleSampleMoof(n);return this.addBox(a),a.computeSize(),a.trafs[0].truns[0].data_offset=a.size+8,this.add("mdat").data=new Uint8Array(t),n}},p.prototype.createSingleSampleMoof=function(e){var t=0;t=e.is_sync?1<<25:65536;var r=new c.moofBox;r.add("mfhd").set("sequence_number",this.nextMoofNumber),this.nextMoofNumber++;var i=r.add("traf"),n=this.getTrackById(e.track_id);return i.add("tfhd").set("track_id",e.track_id).set("flags",c.TFHD_FLAG_DEFAULT_BASE_IS_MOOF),i.add("tfdt").set("baseMediaDecodeTime",e.dts-(n.first_dts||0)),i.add("trun").set("flags",c.TRUN_FLAGS_DATA_OFFSET|c.TRUN_FLAGS_DURATION|c.TRUN_FLAGS_SIZE|c.TRUN_FLAGS_FLAGS|c.TRUN_FLAGS_CTS_OFFSET).set("data_offset",0).set("first_sample_flags",0).set("sample_count",1).set("sample_duration",[e.duration]).set("sample_size",[e.size]).set("sample_flags",[t]).set("sample_composition_time_offset",[e.cts-e.dts]),r},p.prototype.lastMoofIndex=0,p.prototype.samplesDataSize=0,p.prototype.resetTables=function(){var e,t,r,i,n,s;for(this.initial_duration=this.moov.mvhd.duration,this.moov.mvhd.duration=0,e=0;e=2&&(d=n[a].grouping_type+"/0",(o=new l(n[a].grouping_type,0)).is_fragment=!0,t.sample_groups_info[d]||(t.sample_groups_info[d]=o))}else for(a=0;a=2&&(d=i[a].grouping_type+"/0",o=new l(i[a].grouping_type,0),e.sample_groups_info[d]||(e.sample_groups_info[d]=o))},p.setSampleGroupProperties=function(e,t,r,i){var n,s;for(n in t.sample_groups=[],i){var a;if(t.sample_groups[n]={},t.sample_groups[n].grouping_type=i[n].grouping_type,t.sample_groups[n].grouping_type_parameter=i[n].grouping_type_parameter,r>=i[n].last_sample_in_run&&(i[n].last_sample_in_run<0&&(i[n].last_sample_in_run=0),i[n].entry_index++,i[n].entry_index<=i[n].sbgp.entries.length-1&&(i[n].last_sample_in_run+=i[n].sbgp.entries[i[n].entry_index].sample_count)),i[n].entry_index<=i[n].sbgp.entries.length-1?t.sample_groups[n].group_description_index=i[n].sbgp.entries[i[n].entry_index].group_description_index:t.sample_groups[n].group_description_index=-1,0!==t.sample_groups[n].group_description_index)a=i[n].fragment_description?i[n].fragment_description:i[n].description,t.sample_groups[n].group_description_index>0?(s=t.sample_groups[n].group_description_index>65535?(t.sample_groups[n].group_description_index>>16)-1:t.sample_groups[n].group_description_index-1,a&&s>=0&&(t.sample_groups[n].description=a.entries[s])):a&&a.version>=2&&a.default_group_description_index>0&&(t.sample_groups[n].description=a.entries[a.default_group_description_index-1])}},p.process_sdtp=function(e,t,r){t&&(e?(t.is_leading=e.is_leading[r],t.depends_on=e.sample_depends_on[r],t.is_depended_on=e.sample_is_depended_on[r],t.has_redundancy=e.sample_has_redundancy[r]):(t.is_leading=0,t.depends_on=0,t.is_depended_on=0,t.has_redundancy=0))},p.prototype.buildSampleLists=function(){var e,t;for(e=0;ev&&(b++,v<0&&(v=0),v+=s.sample_counts[b]),t>0?(e.samples[t-1].duration=s.sample_deltas[b],e.samples_duration+=e.samples[t-1].duration,A.dts=e.samples[t-1].dts+e.samples[t-1].duration):A.dts=0,a?(t>=w&&(S++,w<0&&(w=0),w+=a.sample_counts[S]),A.cts=e.samples[t].dts+a.sample_offsets[S]):A.cts=A.dts,o?(t==o.sample_numbers[E]-1?(A.is_sync=!0,E++):(A.is_sync=!1,A.degradation_priority=0),l&&l.entries[U].sample_delta+x==t+1&&(A.subsamples=l.entries[U].subsamples,x+=l.entries[U].sample_delta,U++)):A.is_sync=!0,p.process_sdtp(e.mdia.minf.stbl.sdtp,A,A.number),A.degradation_priority=h?h.priority[t]:0,l&&l.entries[U].sample_delta+x==t&&(A.subsamples=l.entries[U].subsamples,x+=l.entries[U].sample_delta),(u.length>0||c.length>0)&&p.setSampleGroupProperties(e,A,t,e.sample_groups_info)}t>0&&(e.samples[t-1].duration=Math.max(e.mdia.mdhd.duration-e.samples[t-1].dts,0),e.samples_duration+=e.samples[t-1].duration)}},p.prototype.updateSampleLists=function(){var e,t,r,i,n,s,a,o,d,l,u,h,f,m,_;if(void 0!==this.moov)for(;this.lastMoofIndex0&&p.initSampleGroups(h,u,u.sbgps,h.mdia.minf.stbl.sgpds,u.sgpds),t=0;t0?m.dts=h.samples[h.samples.length-2].dts+h.samples[h.samples.length-2].duration:(u.tfdt?m.dts=u.tfdt.baseMediaDecodeTime:m.dts=0,h.first_traf_merged=!0),m.cts=m.dts,y.flags&c.TRUN_FLAGS_CTS_OFFSET&&(m.cts=m.dts+y.sample_composition_time_offset[r]),_=a,y.flags&c.TRUN_FLAGS_FLAGS?_=y.sample_flags[r]:0===r&&y.flags&c.TRUN_FLAGS_FIRST_FLAG&&(_=y.first_sample_flags),m.is_sync=!(_>>16&1),m.is_leading=_>>26&3,m.depends_on=_>>24&3,m.is_depended_on=_>>22&3,m.has_redundancy=_>>20&3,m.degradation_priority=65535&_;var g=!!(u.tfhd.flags&c.TFHD_FLAG_BASE_DATA_OFFSET),v=!!(u.tfhd.flags&c.TFHD_FLAG_DEFAULT_BASE_IS_MOOF),b=!!(y.flags&c.TRUN_FLAGS_DATA_OFFSET),w=0;w=g?u.tfhd.base_data_offset:v||0===t?l.start:o,m.offset=0===t&&0===r?b?w+y.data_offset:w:o,o=m.offset+m.size,(u.sbgps.length>0||u.sgpds.length>0||h.mdia.minf.stbl.sbgps.length>0||h.mdia.minf.stbl.sgpds.length>0)&&p.setSampleGroupProperties(h,m,m.number_in_traf,u.sample_groups_info)}}if(u.subs){h.has_fragment_subsamples=!0;var S=u.first_sample_index;for(t=0;t-1))return null;var a=(r=this.stream.buffers[n]).byteLength-(i.offset+i.alreadyRead-r.fileStart);if(i.size-i.alreadyRead<=a)return s.debug("ISOFile","Getting sample #"+t+" data (alreadyRead: "+i.alreadyRead+" offset: "+(i.offset+i.alreadyRead-r.fileStart)+" read size: "+(i.size-i.alreadyRead)+" full size: "+i.size+")"),o.memcpy(i.data.buffer,i.alreadyRead,r,i.offset+i.alreadyRead-r.fileStart,i.size-i.alreadyRead),r.usedBytes+=i.size-i.alreadyRead,this.stream.logBufferLevel(),i.alreadyRead=i.size,i;if(0===a)return null;s.debug("ISOFile","Getting sample #"+t+" partial data (alreadyRead: "+i.alreadyRead+" offset: "+(i.offset+i.alreadyRead-r.fileStart)+" read size: "+a+" full size: "+i.size+")"),o.memcpy(i.data.buffer,i.alreadyRead,r,i.offset+i.alreadyRead-r.fileStart,a),i.alreadyRead+=a,r.usedBytes+=a,this.stream.logBufferLevel()}},p.prototype.releaseSample=function(e,t){var r=e.samples[t];return r.data?(this.samplesDataSize-=r.size,r.data=null,r.alreadyRead=0,r.size):0},p.prototype.getAllocatedSampleDataSize=function(){return this.samplesDataSize},p.prototype.getCodecs=function(){var e,t="";for(e=0;e0&&(t+=","),t+=this.moov.traks[e].mdia.minf.stbl.stsd.entries[0].getCodec()}return t},p.prototype.getTrexById=function(e){var t;if(!this.moov||!this.moov.mvex)return null;for(t=0;t0&&(r.protection=n.ipro.protections[n.iinf.item_infos[e].protection_index-1]),n.iinf.item_infos[e].item_type?r.type=n.iinf.item_infos[e].item_type:r.type="mime",r.content_type=n.iinf.item_infos[e].content_type,r.content_encoding=n.iinf.item_infos[e].content_encoding;if(n.iloc)for(e=0;e0&&c.property_index-1-1))return null;var d=(t=this.stream.buffers[a]).byteLength-(n.offset+n.alreadyRead-t.fileStart);if(!(n.length-n.alreadyRead<=d))return s.debug("ISOFile","Getting item #"+e+" extent #"+i+" partial data (alreadyRead: "+n.alreadyRead+" offset: "+(n.offset+n.alreadyRead-t.fileStart)+" read size: "+d+" full extent size: "+n.length+" full item size: "+r.size+")"),o.memcpy(r.data.buffer,r.alreadyRead,t,n.offset+n.alreadyRead-t.fileStart,d),n.alreadyRead+=d,r.alreadyRead+=d,t.usedBytes+=d,this.stream.logBufferLevel(),null;s.debug("ISOFile","Getting item #"+e+" extent #"+i+" data (alreadyRead: "+n.alreadyRead+" offset: "+(n.offset+n.alreadyRead-t.fileStart)+" read size: "+(n.length-n.alreadyRead)+" full extent size: "+n.length+" full item size: "+r.size+")"),o.memcpy(r.data.buffer,r.alreadyRead,t,n.offset+n.alreadyRead-t.fileStart,n.length-n.alreadyRead),t.usedBytes+=n.length-n.alreadyRead,this.stream.logBufferLevel(),r.alreadyRead+=n.length-n.alreadyRead,n.alreadyRead=n.length}}return r.alreadyRead===r.size?r:null},p.prototype.releaseItem=function(e){var t=this.items[e];if(t.data){this.itemsDataSize-=t.size,t.data=null,t.alreadyRead=0;for(var r=0;r0?this.moov.traks[e].samples[0].duration:0),t.push(i)}return t},c.Box.prototype.printHeader=function(e){this.size+=8,this.size>d&&(this.size+=8),"uuid"===this.type&&(this.size+=16),e.log(e.indent+"size:"+this.size),e.log(e.indent+"type:"+this.type)},c.FullBox.prototype.printHeader=function(e){this.size+=4,c.Box.prototype.printHeader.call(this,e),e.log(e.indent+"version:"+this.version),e.log(e.indent+"flags:"+this.flags)},c.Box.prototype.print=function(e){this.printHeader(e)},c.ContainerBox.prototype.print=function(e){this.printHeader(e);for(var t=0;t>8)),e.log(e.indent+"matrix: "+this.matrix.join(", ")),e.log(e.indent+"next_track_id: "+this.next_track_id)},c.tkhdBox.prototype.print=function(e){c.FullBox.prototype.printHeader.call(this,e),e.log(e.indent+"creation_time: "+this.creation_time),e.log(e.indent+"modification_time: "+this.modification_time),e.log(e.indent+"track_id: "+this.track_id),e.log(e.indent+"duration: "+this.duration),e.log(e.indent+"volume: "+(this.volume>>8)),e.log(e.indent+"matrix: "+this.matrix.join(", ")),e.log(e.indent+"layer: "+this.layer),e.log(e.indent+"alternate_group: "+this.alternate_group),e.log(e.indent+"width: "+this.width),e.log(e.indent+"height: "+this.height)};var m={createFile:function(e,t){var r=void 0===e||e,i=new p(t);return i.discardMdatData=!r,i}};t.createFile=m.createFile}));function br(e){return e.reduce(((e,t)=>256*e+t))}function wr(e){const t=[101,103,119,99],r=e.length-28,i=e.slice(r,r+t.length);return t.every(((e,t)=>e===i[t]))}vr.Log,vr.MP4BoxStream,vr.DataStream,vr.MultiBufferStream,vr.MPEG4DescriptorParser,vr.BoxParser,vr.XMLSubtitlein4Parser,vr.Textin4Parser,vr.ISOFile,vr.createFile;class Sr{constructor(){this.s=null,this.a=null,this.l=0,this.c=0,this.u=1/0,this.A=!1,this.d=!1,this.r=4194304,this.n=new Uint8Array([30,158,90,33,244,57,83,165,2,70,35,87,215,231,226,108]),this.t=this.n.slice().reverse()}destroy(){this.s=null,this.a=null,this.l=0,this.c=0,this.u=1/0,this.A=!1,this.d=!1,this.r=4194304,this.n=null,this.t=null}transport(e){if(!this.s&&this.l>50)return e;if(this.l++,this.d)return e;const t=new Uint8Array(e);if(this.A){if(!(this.c~e))}(e.slice(r+32,r+32+t))]}return null}(t,this.t);if(!r)return e;const i=function(e){try{if("object"!=typeof WebAssembly||"function"!=typeof WebAssembly.instantiate)throw null;{const e=new WebAssembly.Module(Uint8Array.of(0,97,115,109,1,0,0,0));if(!(e instanceof WebAssembly.Module&&new WebAssembly.Instance(e)instanceof WebAssembly.Instance))throw null}}catch(e){return new Error("video_error_4")}let t;try{t={env:{__handle_stack_overflow:()=>e(new Error("video_error_1")),memory:new WebAssembly.Memory({initial:256,maximum:256})}}}catch(e){return new Error("video_error_5")}return t}(e);if(i instanceof Error)return console.error(i.message),this.d=!0,e;this.A=!0,this.u=r[1],wr(t)&&this.c++,WebAssembly.instantiate(r[2],i).then((e=>{if("function"!=typeof(t=e.instance.exports).parse||"object"!=typeof t.memory)return this.d=!0,void console.error("video_error_3");var t;this.s=e.instance.exports,this.a=new Uint8Array(this.s.memory.buffer)})).catch((e=>{this.d=!0,console.error("video_error_6")}))}return e}}const Er=0,Ur=32,xr=16,Ar=[214,144,233,254,204,225,61,183,22,182,20,194,40,251,44,5,43,103,154,118,42,190,4,195,170,68,19,38,73,134,6,153,156,66,80,244,145,239,152,122,51,84,11,67,237,207,172,98,228,179,28,169,201,8,232,149,128,223,148,250,117,143,63,166,71,7,167,252,243,115,23,186,131,89,60,25,230,133,79,168,104,107,129,178,113,100,218,139,248,235,15,75,112,86,157,53,30,36,14,94,99,88,209,162,37,34,124,59,1,33,120,135,212,0,70,87,159,211,39,82,76,54,2,231,160,196,200,158,234,191,138,210,64,199,56,181,163,247,242,206,249,97,21,161,224,174,93,164,155,52,26,85,173,147,50,48,245,140,177,227,29,246,226,46,130,102,202,96,192,41,35,171,13,83,78,111,213,219,55,69,222,253,142,47,3,255,106,114,109,108,91,81,141,27,175,146,187,221,188,127,17,217,92,65,31,16,90,216,10,193,49,136,165,205,123,189,45,116,208,18,184,229,180,176,137,105,151,74,12,150,119,126,101,185,241,9,197,110,198,132,24,240,125,236,58,220,77,32,121,238,95,62,215,203,57,72],Tr=[462357,472066609,943670861,1415275113,1886879365,2358483617,2830087869,3301692121,3773296373,4228057617,404694573,876298825,1347903077,1819507329,2291111581,2762715833,3234320085,3705924337,4177462797,337322537,808926789,1280531041,1752135293,2223739545,2695343797,3166948049,3638552301,4110090761,269950501,741554753,1213159005,1684763257];function kr(e){const t=[];for(let r=0,i=e.length;r>>32-r}function Br(e){return(255&Ar[e>>>24&255])<<24|(255&Ar[e>>>16&255])<<16|(255&Ar[e>>>8&255])<<8|255&Ar[255&e]}function Dr(e){return e^Cr(e,2)^Cr(e,10)^Cr(e,18)^Cr(e,24)}function Pr(e){return e^Cr(e,13)^Cr(e,23)}function Fr(e,t,r){const i=new Array(4),n=new Array(4);for(let t=0;t<4;t++)n[0]=255&e[4*t],n[1]=255&e[4*t+1],n[2]=255&e[4*t+2],n[3]=255&e[4*t+3],i[t]=n[0]<<24|n[1]<<16|n[2]<<8|n[3];for(let e,t=0;t<32;t+=4)e=i[1]^i[2]^i[3]^r[t+0],i[0]^=Dr(Br(e)),e=i[2]^i[3]^i[0]^r[t+1],i[1]^=Dr(Br(e)),e=i[3]^i[0]^i[1]^r[t+2],i[2]^=Dr(Br(e)),e=i[0]^i[1]^i[2]^r[t+3],i[3]^=Dr(Br(e));for(let e=0;e<16;e+=4)t[e]=i[3-e/4]>>>24&255,t[e+1]=i[3-e/4]>>>16&255,t[e+2]=i[3-e/4]>>>8&255,t[e+3]=255&i[3-e/4]}function Ir(e,t,r,{padding:i="pkcs#7",mode:n,iv:s=[],output:a="string"}={}){if("cbc"===n&&("string"==typeof s&&(s=kr(s)),16!==s.length))throw new Error("iv is invalid");if("string"==typeof t&&(t=kr(t)),16!==t.length)throw new Error("key is invalid");if(e="string"==typeof e?r!==Er?function(e){const t=[];for(let r=0,i=e.length;r>>6),t.push(128|63&i);else if(i<=55295||i>=57344&&i<=65535)t.push(224|i>>>12),t.push(128|i>>>6&63),t.push(128|63&i);else{if(!(i>=65536&&i<=1114111))throw t.push(i),new Error("input is not supported");r++,t.push(240|i>>>18&28),t.push(128|i>>>12&63),t.push(128|i>>>6&63),t.push(128|63&i)}}return t}(e):kr(e):[...e],("pkcs#5"===i||"pkcs#7"===i)&&r!==Er){const t=xr-e.length%xr;for(let r=0;r=xr;){const t=e.slice(c,c+16),i=new Array(16);if("cbc"===n)for(let e=0;e1===(e=e.toString(16)).length?"0"+e:e)).join(""):function(e){const t=[];for(let r=0,i=e.length;r=240&&e[r]<=247?(t.push(String.fromCodePoint(((7&e[r])<<18)+((63&e[r+1])<<12)+((63&e[r+2])<<6)+(63&e[r+3]))),r+=3):e[r]>=224&&e[r]<=239?(t.push(String.fromCodePoint(((15&e[r])<<12)+((63&e[r+1])<<6)+(63&e[r+2]))),r+=2):e[r]>=192&&e[r]<=223?(t.push(String.fromCodePoint(((31&e[r])<<6)+(63&e[r+1]))),r++):t.push(String.fromCodePoint(e[r]));return t.join("")}(d):d}class Lr{on(e,t,r){const i=this.e||(this.e={});return(i[e]||(i[e]=[])).push({fn:t,ctx:r}),this}once(e,t,r){const i=this;function n(...s){i.off(e,n),t.apply(r,s)}return n._=t,this.on(e,n,r)}emit(e,...t){const r=((this.e||(this.e={}))[e]||[]).slice();for(let e=0;e{delete r[e]})),void delete this.e;const i=r[e],n=[];if(i&&t)for(let e=0,r=i.length;e=2&&!this.isDestroyed;)if(255==this.tempBuffer[this.parsedOffset]){if(!(!1&this.tempBuffer[this.parsedOffset+1])){this.versionLayer=this.tempBuffer[this.parsedOffset+1],this.state=Rr.findFirstStartCode,this.fisrtStartCodeOffset=this.parsedOffset,this.parsedOffset+=2,e=!0;break}this.parsedOffset++}else this.parsedOffset++;if(e)continue;break}if(this.state==Rr.findFirstStartCode){let e=!1;for(;this.tempBuffer.length-this.parsedOffset>=2&&!this.isDestroyed;)if(255==this.tempBuffer[this.parsedOffset]){if(this.tempBuffer[this.parsedOffset+1]==this.versionLayer){this.state=Rr.findSecondStartCode,this.secondStartCodeOffset=this.parsedOffset,this.parsedOffset+=2,e=!0;break}this.parsedOffset++}else this.parsedOffset++;if(e)continue;break}if(this.state==Rr.findSecondStartCode){let e=this.tempBuffer.slice(this.fisrtStartCodeOffset,this.secondStartCodeOffset);this.emit("data",e,t),this.tempBuffer=this.tempBuffer.slice(this.secondStartCodeOffset),this.fisrtStartCodeOffset=0,this.parsedOffset=2,this.state=Rr.findFirstStartCode}}}}function zr(e,t,r){for(let i=2;ie+t.byteLength),0));let r=0;return e.forEach((e=>{t.set(e,r),r+=e.byteLength})),t}class Nr{static init(){Nr.types={avc1:[],avcC:[],hvc1:[],hvcC:[],av01:[],av1C:[],btrt:[],dinf:[],dref:[],esds:[],ftyp:[],hdlr:[],mdat:[],mdhd:[],mdia:[],mfhd:[],minf:[],moof:[],moov:[],mp4a:[],mvex:[],mvhd:[],sdtp:[],stbl:[],stco:[],stsc:[],stsd:[],stsz:[],stts:[],tfdt:[],tfhd:[],traf:[],trak:[],trun:[],trex:[],tkhd:[],vmhd:[],smhd:[],".mp3":[],Opus:[],dOps:[],"ac-3":[],dac3:[],"ec-3":[],dec3:[]};for(let e in Nr.types)Nr.types.hasOwnProperty(e)&&(Nr.types[e]=[e.charCodeAt(0),e.charCodeAt(1),e.charCodeAt(2),e.charCodeAt(3)]);let e=Nr.constants={};e.FTYP=new Uint8Array([105,115,111,109,0,0,0,1,105,115,111,109,97,118,99,49]),e.STSD_PREFIX=new Uint8Array([0,0,0,0,0,0,0,1]),e.STTS=new Uint8Array([0,0,0,0,0,0,0,0]),e.STSC=e.STCO=e.STTS,e.STSZ=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0]),e.HDLR_VIDEO=new Uint8Array([0,0,0,0,0,0,0,0,118,105,100,101,0,0,0,0,0,0,0,0,0,0,0,0,86,105,100,101,111,72,97,110,100,108,101,114,0]),e.HDLR_AUDIO=new Uint8Array([0,0,0,0,0,0,0,0,115,111,117,110,0,0,0,0,0,0,0,0,0,0,0,0,83,111,117,110,100,72,97,110,100,108,101,114,0]),e.DREF=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,12,117,114,108,32,0,0,0,1]),e.SMHD=new Uint8Array([0,0,0,0,0,0,0,0]),e.VMHD=new Uint8Array([0,0,0,1,0,0,0,0,0,0,0,0])}static box(e){let t=8,r=null,i=Array.prototype.slice.call(arguments,1),n=i.length;for(let e=0;e>>24&255,r[1]=t>>>16&255,r[2]=t>>>8&255,r[3]=255&t,r.set(e,4);let s=8;for(let e=0;e>>24&255,e>>>16&255,e>>>8&255,255&e,t>>>24&255,t>>>16&255,t>>>8&255,255&t,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255]))}static trak(e){return Nr.box(Nr.types.trak,Nr.tkhd(e),Nr.mdia(e))}static tkhd(e){let t=e.id,r=e.duration,i=e.presentWidth,n=e.presentHeight;return Nr.box(Nr.types.tkhd,new Uint8Array([0,0,0,7,0,0,0,0,0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t,0,0,0,0,r>>>24&255,r>>>16&255,r>>>8&255,255&r,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,i>>>8&255,255&i,0,0,n>>>8&255,255&n,0,0]))}static mdia(e){return Nr.box(Nr.types.mdia,Nr.mdhd(e),Nr.hdlr(e),Nr.minf(e))}static mdhd(e){let t=e.timescale,r=e.duration;return Nr.box(Nr.types.mdhd,new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t,r>>>24&255,r>>>16&255,r>>>8&255,255&r,85,196,0,0]))}static hdlr(e){let t=null;return t="audio"===e.type?Nr.constants.HDLR_AUDIO:Nr.constants.HDLR_VIDEO,Nr.box(Nr.types.hdlr,t)}static minf(e){let t=null;return t="audio"===e.type?Nr.box(Nr.types.smhd,Nr.constants.SMHD):Nr.box(Nr.types.vmhd,Nr.constants.VMHD),Nr.box(Nr.types.minf,t,Nr.dinf(),Nr.stbl(e))}static dinf(){return Nr.box(Nr.types.dinf,Nr.box(Nr.types.dref,Nr.constants.DREF))}static stbl(e){return Nr.box(Nr.types.stbl,Nr.stsd(e),Nr.box(Nr.types.stts,Nr.constants.STTS),Nr.box(Nr.types.stsc,Nr.constants.STSC),Nr.box(Nr.types.stsz,Nr.constants.STSZ),Nr.box(Nr.types.stco,Nr.constants.STCO))}static stsd(e){return"audio"===e.type?"mp3"===e.audioType?Nr.box(Nr.types.stsd,Nr.constants.STSD_PREFIX,Nr.mp3(e)):Nr.box(Nr.types.stsd,Nr.constants.STSD_PREFIX,Nr.mp4a(e)):"avc"===e.videoType?Nr.box(Nr.types.stsd,Nr.constants.STSD_PREFIX,Nr.avc1(e)):Nr.box(Nr.types.stsd,Nr.constants.STSD_PREFIX,Nr.hvc1(e))}static mp3(e){let t=e.channelCount,r=e.audioSampleRate,i=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,t,0,16,0,0,0,0,r>>>8&255,255&r,0,0]);return Nr.box(Nr.types[".mp3"],i)}static mp4a(e){let t=e.channelCount,r=e.audioSampleRate,i=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,t,0,16,0,0,0,0,r>>>8&255,255&r,0,0]);return Nr.box(Nr.types.mp4a,i,Nr.esds(e))}static esds(e){let t=e.config||[],r=t.length,i=new Uint8Array([0,0,0,0,3,23+r,0,1,0,4,15+r,64,21,0,0,0,0,0,0,0,0,0,0,0,5].concat([r]).concat(t).concat([6,1,2]));return Nr.box(Nr.types.esds,i)}static avc1(e){let t=e.avcc;const r=e.codecWidth,i=e.codecHeight;let n=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,r>>>8&255,255&r,i>>>8&255,255&i,0,72,0,0,0,72,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,255,255]);return Nr.box(Nr.types.avc1,n,Nr.box(Nr.types.avcC,t))}static hvc1(e){let t=e.avcc;const r=e.codecWidth,i=e.codecHeight;let n=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,r>>>8&255,255&r,i>>>8&255,255&i,0,72,0,0,0,72,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,255,255]);return Nr.box(Nr.types.hvc1,n,Nr.box(Nr.types.hvcC,t))}static mvex(e){return Nr.box(Nr.types.mvex,Nr.trex(e))}static trex(e){let t=e.id,r=new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1]);return Nr.box(Nr.types.trex,r)}static moof(e,t){return Nr.box(Nr.types.moof,Nr.mfhd(e.sequenceNumber),Nr.traf(e,t))}static mfhd(e){let t=new Uint8Array([0,0,0,0,e>>>24&255,e>>>16&255,e>>>8&255,255&e]);return Nr.box(Nr.types.mfhd,t)}static traf(e,t){let r=e.id,i=Nr.box(Nr.types.tfhd,new Uint8Array([0,0,0,0,r>>>24&255,r>>>16&255,r>>>8&255,255&r])),n=Nr.box(Nr.types.tfdt,new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t])),s=Nr.sdtp(e),a=Nr.trun(e,s.byteLength+16+16+8+16+8+8);return Nr.box(Nr.types.traf,i,n,a,s)}static sdtp(e){let t=new Uint8Array(5),r=e.flags;return t[4]=r.isLeading<<6|r.dependsOn<<4|r.isDependedOn<<2|r.hasRedundancy,Nr.box(Nr.types.sdtp,t)}static trun(e,t){let r=new Uint8Array(28);t+=36,r.set([0,0,15,1,0,0,0,1,t>>>24&255,t>>>16&255,t>>>8&255,255&t],0);let i=e.duration,n=e.size,s=e.flags,a=e.cts;return r.set([i>>>24&255,i>>>16&255,i>>>8&255,255&i,n>>>24&255,n>>>16&255,n>>>8&255,255&n,s.isLeading<<2|s.dependsOn,s.isDependedOn<<6|s.hasRedundancy<<4|s.isNonSync,0,0,a>>>24&255,a>>>16&255,a>>>8&255,255&a],12),Nr.box(Nr.types.trun,r)}static mdat(e){return Nr.box(Nr.types.mdat,e)}}function $r(e={},t={},r=!1){let i=[],n=[],s={},a=new AbortController,o=null,d=null,l=null,g=null,v=null,w=null,Pe=!1,Fe=!1,Ve=!!ot(r),Qe=!1,lt=null,ut=null,ct=null,ht=[],mt=null,yt=null,xt=0,At=0,Tt=null,kt=null,Ct=0,Bt=0,Nt=!1,$t=!1,Gt=!1,Ht=null,Vt=null,Wt=null,jt=!1,Yt=()=>{const e=st();return{debug:e.debug,debugLevel:e.debugLevel,debugUuid:e.debugUuid,useOffscreen:e.useOffscreen,useWCS:e.useWCS,useMSE:e.useMSE,videoBuffer:e.videoBuffer,videoBufferDelay:e.videoBufferDelay,openWebglAlignment:e.openWebglAlignment,playType:e.playType,hasAudio:e.hasAudio,hasVideo:e.hasVideo,playbackRate:1,playbackForwardMaxRateDecodeIFrame:e.playbackForwardMaxRateDecodeIFrame,playbackIsCacheBeforeDecodeForFpsRender:e.playbackConfig.isCacheBeforeDecodeForFpsRender,sampleRate:0,networkDelay:e.networkDelay,visibility:!0,useSIMD:e.useSIMD,isRecording:!1,recordType:e.recordType,isNakedFlow:e.isNakedFlow,checkFirstIFrame:e.checkFirstIFrame,audioBufferSize:1024,isM7sCrypto:e.isM7sCrypto,m7sCryptoAudio:e.m7sCryptoAudio,cryptoKey:e.cryptoKey,cryptoIV:e.cryptoIV,isSm4Crypto:e.isSm4Crypto,sm4CryptoKey:e.sm4CryptoKey,isXorCrypto:e.isXorCrypto,isHls265:!1,isFlv:e.isFlv,isFmp4:e.isFmp4,isMpeg4:e.isMpeg4,isTs:e.isTs,isFmp4Private:e.isFmp4Private,isEmitSEI:e.isEmitSEI,isRecordTypeFlv:!1,isWasmMp4:!1,isChrome:!1,isDropSameTimestampGop:e.isDropSameTimestampGop,mseDecodeAudio:e.mseDecodeAudio,nakedFlowH265DemuxUseNew:e.nakedFlowH265DemuxUseNew,mseDecoderUseWorker:e.mseDecoderUseWorker,mseAutoCleanupSourceBuffer:e.mseAutoCleanupSourceBuffer,mseAutoCleanupMaxBackwardDuration:e.mseAutoCleanupMaxBackwardDuration,mseAutoCleanupMinBackwardDuration:e.mseAutoCleanupMinBackwardDuration,mseCorrectTimeDuration:e.mseCorrectTimeDuration}};"VideoEncoder"in self&&(s={hasInit:!1,isEmitInfo:!1,offscreenCanvas:null,offscreenCanvasCtx:null,decoder:new VideoDecoder({output:function(e){if(s.isEmitInfo||(Qt.debug.log("worker","Webcodecs Video Decoder initSize"),postMessage({cmd:E,w:e.codedWidth,h:e.codedHeight}),s.isEmitInfo=!0,s.offscreenCanvas=new OffscreenCanvas(e.codedWidth,e.codedHeight),s.offscreenCanvasCtx=s.offscreenCanvas.getContext("2d")),"function"==typeof e.createImageBitmap)e.createImageBitmap().then((t=>{s.offscreenCanvasCtx.drawImage(t,0,0,e.codedWidth,e.codedHeight);let r=s.offscreenCanvas.transferToImageBitmap();postMessage({cmd:U,buffer:r,delay:Qt.delay,ts:0},[r]),it(e)}));else{s.offscreenCanvasCtx.drawImage(e,0,0,e.codedWidth,e.codedHeight);let t=s.offscreenCanvas.transferToImageBitmap();postMessage({cmd:U,buffer:t,delay:Qt.delay,ts:0},[t]),it(e)}},error:function(e){Qt.debug.error("worker","VideoDecoder error",e)}}),decode:function(e,t,r){const i=e[0]>>4==1;if(s.hasInit){const r=new EncodedVideoChunk({data:e.slice(5),timestamp:t,type:i?ke:Ce});s.decoder.decode(r)}else if(i&&0===e[1]){const t=15&e[0];postMessage({cmd:B,code:t});const r=new Uint8Array(e);postMessage({cmd:D,buffer:r,codecId:t},[r.buffer]);const i=function(e){let t=e.subarray(1,4),r="avc1.";for(let e=0;e<3;e++){let i=t[e].toString(16);i.length<2&&(i="0"+i),r+=i}return{codec:r,description:e}}(e.slice(5));s.decoder.configure(i),s.hasInit=!0}},reset(){s.hasInit=!1,s.isEmitInfo=!1,s.offscreenCanvas=null,s.offscreenCanvasCtx=null}});let qt=function(){if(jt=!0,Qt.fetchStatus!==Re||dt(Qt._opt.isChrome)){if(a)try{a.abort(),a=null}catch(e){Qt.debug.log("worker","abort catch",e)}}else a=null,Qt.debug.log("worker",`abort() and not abortController.abort() _status is ${Qt.fetchStatus} and _isChrome is ${Qt._opt.isChrome}`)},Kt={init(){Kt.lastBuf=null,Kt.vps=null,Kt.sps=null,Kt.pps=null,Kt.streamType=null,Kt.localDts=0,Kt.isSendSeqHeader=!1},destroy(){Kt.lastBuf=null,Kt.vps=null,Kt.sps=null,Kt.pps=null,Kt.streamType=null,Kt.localDts=0,Kt.isSendSeqHeader=!1},dispatch(e){const t=new Uint8Array(e);Kt.extractNALu$2(t)},getNaluDts(){let e=Kt.localDts;return Kt.localDts=Kt.localDts+40,e},getNaluAudioDts(){const e=Qt._opt.sampleRate,t=Qt._opt.audioBufferSize;return Kt.localDts+parseInt(t/e*1e3)},extractNALu(e){let t,r,i=0,n=e.byteLength,s=0,a=[];for(;i1)for(let e=0;e>1,r!==Te.vps&&r!==Te.sps&&r!==Te.pps||(t=Ue.h265)),t}(e),Ht=Kt.streamType===Ue.h265),Kt.streamType===Ue.h264){const t=Kt.handleAddNaluStartCode(e),r=Kt.extractNALu(t);if(0===r.length)return void Qt.debug.warn("worker","handleVideoNalu","h264 naluList.length === 0");const i=[];if(r.forEach((e=>{const t=wt(e);t===Ae.pps||t===Ae.sps?Kt.handleVideoH264Nalu(e):Et(t)&&i.push(e)})),1===i.length)Kt.handleVideoH264Nalu(i[0]);else{const e=function(e){if(0===e.length)return!1;const t=wt(e[0]);for(let r=1;r{Kt.handleVideoH264Nalu(e)}))}}else if(Kt.streamType===Ue.h265)if(Qt._opt.nakedFlowH265DemuxUseNew){const t=Kt.handleAddNaluStartCode(e),r=Kt.extractNALu(t);if(0===r.length)return void Qt.debug.warn("worker","handleVideoNalu","h265 naluList.length === 0");const i=[];if(r.forEach((e=>{const t=Mt(e);t===Te.pps||t===Te.sps||t===Te.vps?Kt.handleVideoH265Nalu(e):zt(t)&&i.push(e)})),1===i.length)Kt.handleVideoH265Nalu(i[0]);else{const e=function(e){if(0===e.length)return!1;const t=Mt(e[0]);for(let r=1;r{Kt.handleVideoH265Nalu(e)}))}}else{Mt(e)===Te.pps?Kt.extractH265PPS(e):Kt.handleVideoH265Nalu(e)}},extractH264PPS(e){const t=Kt.handleAddNaluStartCode(e);Kt.extractNALu(t).forEach((e=>{St(wt(e))?Kt.extractH264SEI(e):Kt.handleVideoH264Nalu(e)}))},extractH265PPS(e){const t=Kt.handleAddNaluStartCode(e);Kt.extractNALu(t).forEach((e=>{const t=Mt(e);t===Te.sei?Kt.extractH265SEI(e):Kt.handleVideoH265Nalu(e)}))},extractH264SEI(e){const t=Kt.handleAddNaluStartCode(e);Kt.extractNALu(t).forEach((e=>{Kt.handleVideoH264Nalu(e)}))},extractH265SEI(e){const t=Kt.handleAddNaluStartCode(e);Kt.extractNALu(t).forEach((e=>{Kt.handleVideoH265Nalu(e)}))},handleAddNaluStartCode(e){const t=[0,0,0,1],r=new Uint8Array(e.length+t.length);return r.set(t),r.set(e,t.length),r},handleVideoH264Nalu(e){const t=wt(e);switch(t){case Ae.sps:Kt.sps=e;break;case Ae.pps:Kt.pps=e}if(Kt.isSendSeqHeader){if(Kt.sps&&Kt.pps){const e=vt({sps:Kt.sps,pps:Kt.pps}),t=Kt.getNaluDts();Qt.decode(e,{type:Z,ts:t,isIFrame:!0,cts:0}),Kt.sps=null,Kt.pps=null}if(Et(t)){const r=Ut(t),i=Kt.getNaluDts(),n=function(e,t){let r=[];r[0]=t?23:39,r[1]=1,r[2]=0,r[3]=0,r[4]=0,r[5]=e.byteLength>>24&255,r[6]=e.byteLength>>16&255,r[7]=e.byteLength>>8&255,r[8]=255&e.byteLength;const i=new Uint8Array(r.length+e.byteLength);return i.set(r,0),i.set(e,r.length),i}(e,r);Kt.doDecode(n,{type:Z,ts:i,isIFrame:r,cts:0})}else Qt.debug.warn("work",`handleVideoH264Nalu Avc Seq Head is ${t}`)}else if(Kt.sps&&Kt.pps){Kt.isSendSeqHeader=!0;const e=vt({sps:Kt.sps,pps:Kt.pps});Qt.decode(e,{type:Z,ts:0,isIFrame:!0,cts:0}),Kt.sps=null,Kt.pps=null}},handleVideoH264NaluList(e,t,r){if(Kt.isSendSeqHeader){const i=Kt.getNaluDts(),n=bt(e.reduce(((e,t)=>{const r=Pt(e),i=Pt(t),n=new Uint8Array(r.byteLength+i.byteLength);return n.set(r,0),n.set(i,r.byteLength),n})),t);Kt.doDecode(n,{type:Z,ts:i,isIFrame:t,cts:0}),Qt.debug.log("worker",`handleVideoH264NaluList list size is ${e.length} package length is ${n.byteLength} isIFrame is ${t},nalu type is ${r}, dts is ${i}`)}else Qt.debug.warn("worker","handleVideoH264NaluList isSendSeqHeader is false")},handleVideoH265Nalu(e){const t=Mt(e);switch(t){case Te.vps:Kt.vps=e;break;case Te.sps:Kt.sps=e;break;case Te.pps:Kt.pps=e}if(Kt.isSendSeqHeader){if(Kt.vps&&Kt.sps&&Kt.pps){const e=Lt({vps:Kt.vps,sps:Kt.sps,pps:Kt.pps}),t=Kt.getNaluDts();Qt.decode(e,{type:Z,ts:t,isIFrame:!0,cts:0}),Kt.vps=null,Kt.sps=null,Kt.pps=null}if(zt(t)){const r=Ot(t),i=Kt.getNaluDts(),n=function(e,t){let r=[];r[0]=t?28:44,r[1]=1,r[2]=0,r[3]=0,r[4]=0,r[5]=e.byteLength>>24&255,r[6]=e.byteLength>>16&255,r[7]=e.byteLength>>8&255,r[8]=255&e.byteLength;const i=new Uint8Array(r.length+e.byteLength);return i.set(r,0),i.set(e,r.length),i}(e,r);Kt.doDecode(n,{type:Z,ts:i,isIFrame:r,cts:0})}else Qt.debug.warn("work",`handleVideoH265Nalu HevcSeqHead is ${t}`)}else if(Kt.vps&&Kt.sps&&Kt.pps){Kt.isSendSeqHeader=!0;const e=Lt({vps:Kt.vps,sps:Kt.sps,pps:Kt.pps});Qt.decode(e,{type:Z,ts:0,isIFrame:!0,cts:0}),Kt.vps=null,Kt.sps=null,Kt.pps=null}},handleVideoH265NaluList(e,t,r){if(Kt.isSendSeqHeader){const i=Kt.getNaluDts(),n=Rt(e.reduce(((e,t)=>{const r=Pt(e),i=Pt(t),n=new Uint8Array(r.byteLength+i.byteLength);return n.set(r,0),n.set(i,r.byteLength),n})),t);Kt.doDecode(n,{type:Z,ts:i,isIFrame:t,cts:0}),Qt.debug.log("worker",`handleVideoH265NaluList list size is ${e.length} package length is ${n.byteLength} isIFrame is ${t},nalu type is ${r}, dts is ${i}`)}else Qt.debug.warn("worker","handleVideoH265NaluList isSendSeqHeader is false")},doDecode(e,t){Qt.calcNetworkDelay(t.ts),t.isIFrame&&Qt.calcIframeIntervalTimestamp(t.ts),postMessage({cmd:L,type:fe,value:e.byteLength}),postMessage({cmd:L,type:pe,value:t.ts}),Qt.decode(e,t)}},Xt={LOG_NAME:"worker fmp4Demuxer",mp4Box:vr.createFile(),offset:0,videoTrackId:null,audioTrackId:null,isHevc:!1,listenMp4Box(){Xt.mp4Box.onReady=Xt.onReady,Xt.mp4Box.onError=Xt.onError,Xt.mp4Box.onSamples=Xt.onSamples},initTransportDescarmber(){Xt.transportDescarmber=new Sr},_getSeqHeader(e){const t=Xt.mp4Box.getTrackById(e.id);for(const e of t.mdia.minf.stbl.stsd.entries)if(e.avcC||e.hvcC){const t=new vr.DataStream(void 0,0,vr.DataStream.BIG_ENDIAN);let r=[];e.avcC?(e.avcC.write(t),r=[23,0,0,0,0]):(Xt.isHevc=!0,Ht=!0,e.hvcC.write(t),r=[28,0,0,0,0]);const i=new Uint8Array(t.buffer,8),n=new Uint8Array(r.length+i.length);return n.set(r,0),n.set(i,r.length),n}return null},onReady(e){Qt.debug.log(Xt.LOG_NAME,"onReady()",e);const t=e.videoTracks[0],r=e.audioTracks[0];if(t){Xt.videoTrackId=t.id;const e=Xt._getSeqHeader(t);e&&(Qt.debug.log(Xt.LOG_NAME,"seqHeader"),Qt.decodeVideo(e,0,!0,0)),Xt.mp4Box.setExtractionOptions(t.id)}if(r&&Qt._opt.hasAudio){Xt.audioTrackId=r.id;const e=r.audio||{},t=Ke.indexOf(e.sample_rate),i=r.codec.replace("mp4a.40.","");Xt.mp4Box.setExtractionOptions(r.id);const n=We({profile:parseInt(i,10),sampleRate:t,channel:e.channel_count});Qt.debug.log(Xt.LOG_NAME,"aacADTSHeader"),Qt.decodeAudio(n,0)}Xt.mp4Box.start()},onError(e){Qt.debug.error(Xt.LOG_NAME,"mp4Box onError",e)},onSamples(e,t,r){if(e===Xt.videoTrackId)for(const e of r){const t=e.data,r=e.is_sync,i=1e3*e.cts/e.timescale;e.duration,e.timescale,r&&Qt.calcIframeIntervalTimestamp(i);let n=null;n=Xt.isHevc?Rt(t,r):bt(t,r),postMessage({cmd:L,type:fe,value:n.byteLength}),postMessage({cmd:L,type:pe,value:i}),Qt.decode(n,{type:Z,ts:i,isIFrame:r,cts:0})}else if(e===Xt.audioTrackId){if(Qt._opt.hasAudio)for(const e of r){const t=e.data,r=1e3*e.cts/e.timescale;e.duration,e.timescale;const i=new Uint8Array(t.byteLength+2);i.set([175,1],0),i.set(t,2),postMessage({cmd:L,type:he,value:i.byteLength}),Qt.decode(i,{type:X,ts:r,isIFrame:!1,cts:0})}}else Qt.debug.warn(Xt.LOG_NAME,"onSamples() trackId error",e)},dispatch(e){let t=e;"string"!=typeof e?"object"==typeof e?(Xt.transportDescarmber&&(t=Xt.transportDescarmber.transport(t)),t.buffer.fileStart=Xt.offset,Xt.offset+=t.byteLength,Xt.mp4Box.appendBuffer(t.buffer)):Qt.debug.warn(Xt.LOG_NAME,"dispatch()","data is not object",e):Qt.debug.warn(Xt.LOG_NAME,"dispatch()","data is string",e)},destroy(){Xt.mp4Box&&(Xt.mp4Box.flush(),Xt.mp4Box=null),Xt.transportDescarmber&&(Xt.transportDescarmber.destroy(),Xt.transportDescarmber=null),Xt.offset=0,Xt.videoTrackId=null,Xt.audioTrackId=null,Xt.isHevc=!1}},Zt={LOG_NAME:"worker mpeg4Demuxer",lastBuffer:new Uint8Array(0),parsedOffset:0,firstStartCodeOffset:0,secondStartCodeOffset:0,state:"init",hasInitVideoCodec:!1,localDts:0,dispatch(e){const t=new Uint8Array(e);Zt.extractNALu(t)},destroy(){Zt.lastBuffer=new Uint8Array(0),Zt.parsedOffset=0,Zt.firstStartCodeOffset=0,Zt.secondStartCodeOffset=0,Zt.state="init",Zt.hasInitVideoCodec=!1,Zt.localDts=0},extractNALu(e){if(!e||e.byteLength<1)return void Qt.debug.warn(Zt.LOG_NAME,"extractNALu() buffer error",e);const t=new Uint8Array(Zt.lastBuffer.length+e.length);for(t.set(Zt.lastBuffer,0),t.set(new Uint8Array(e),Zt.lastBuffer.length),Zt.lastBuffer=t;;){if("init"===Zt.state){let e=!1;for(;Zt.lastBuffer.length-Zt.parsedOffset>=4;)if(0===Zt.lastBuffer[Zt.parsedOffset])if(0===Zt.lastBuffer[Zt.parsedOffset+1])if(1===Zt.lastBuffer[Zt.parsedOffset+2]){if(182===Zt.lastBuffer[Zt.parsedOffset+3]){Zt.state="findFirstStartCode",Zt.firstStartCodeOffset=Zt.parsedOffset,Zt.parsedOffset+=4,e=!0;break}Zt.parsedOffset++}else Zt.parsedOffset++;else Zt.parsedOffset++;else Zt.parsedOffset++;if(e)continue;break}if("findFirstStartCode"===Zt.state){let e=!1;for(;Zt.lastBuffer.length-Zt.parsedOffset>=4;)if(0===Zt.lastBuffer[Zt.parsedOffset])if(0===Zt.lastBuffer[Zt.parsedOffset+1])if(1===Zt.lastBuffer[Zt.parsedOffset+2]){if(182===Zt.lastBuffer[Zt.parsedOffset+3]){Zt.state="findSecondStartCode",Zt.secondStartCodeOffset=Zt.parsedOffset,Zt.parsedOffset+=4,e=!0;break}Zt.parsedOffset++}else Zt.parsedOffset++;else Zt.parsedOffset++;else Zt.parsedOffset++;if(e)continue;break}if("findSecondStartCode"===Zt.state){if(!(Zt.lastBuffer.length-Zt.parsedOffset>0))break;{let e,t,r=192&Zt.lastBuffer[Zt.parsedOffset];e=0==r?Zt.secondStartCodeOffset-14:Zt.secondStartCodeOffset;let i=0==(192&Zt.lastBuffer[Zt.firstStartCodeOffset+4]);if(i){if(Zt.firstStartCodeOffset-14<0)return void Qt.debug.warn(Zt.LOG_NAME,"firstStartCodeOffset -14 is",Zt.firstStartCodeOffset-14);Zt.hasInitVideoCodec||(Zt.hasInitVideoCodec=!0,Qt.debug.log(Zt.LOG_NAME,"setCodec"),tr.setCodec(Ee,"")),t=Zt.lastBuffer.subarray(Zt.firstStartCodeOffset-14,e)}else t=Zt.lastBuffer.subarray(Zt.firstStartCodeOffset,e);let n=Zt.getNaluDts();Zt.hasInitVideoCodec?(postMessage({cmd:L,type:fe,value:t.byteLength}),postMessage({cmd:L,type:pe,value:n}),tr.decode(t,i?1:0,n)):Qt.debug.warn(Zt.LOG_NAME,"has not init video codec"),Zt.lastBuffer=Zt.lastBuffer.subarray(e),Zt.firstStartCodeOffset=0==r?14:0,Zt.parsedOffset=Zt.firstStartCodeOffset+4,Zt.state="findFirstStartCode"}}}},getNaluDts(){let e=Zt.localDts;return Zt.localDts=Zt.localDts+40,e}},Jt={isFirstDispatch:!0,_pmtId:-1,_remainingPacketData:null,_videoPesData:[],_audioPesData:[],_gopId:0,_videoPid:-1,_audioPid:-1,_codecType:we,_audioCodecType:xe.AAC,_vps:null,_sps:null,_pps:null,TAG_NAME:"worker TsDemuxer",videoTrack:{samples:[]},audioTrack:{samples:[]},_baseDts:-1,_audioNextPts:void 0,_videoNextDts:void 0,_audioTimestampBreak:!1,_videoTimestampBreak:!1,_lastAudioExceptionGapDot:0,_lastAudioExceptionOverlapDot:0,_lastAudioExceptionLargeGapDot:0,_isSendAACSeqHeader:!1,init(){},dispatch(e){const t=new Uint8Array(e);Jt.demuxAndFix(t,Jt.isFirstDispatch,!0,0),Jt.isFirstDispatch&&(Jt.isFirstDispatch=!1)},_probe:e=>!!e.length&&(71===e[0]&&71===e[188]&&71===e[376]),_parsePES(e){const t=e[8];if(null==t||e.lengthe.length-6)return;let i,n;const s=e[7];return 192&s&&(i=536870912*(14&e[9])+4194304*(255&e[10])+16384*(254&e[11])+128*(255&e[12])+(254&e[13])/2,64&s?(n=536870912*(14&e[14])+4194304*(255&e[15])+16384*(254&e[16])+128*(255&e[17])+(254&e[18])/2,i-n>54e5&&(i=n)):n=i),{data:e.subarray(9+t),pts:i,dts:n,originalPts:i,originalDts:n}},demuxAndFix(e,t,r,i){Jt._demux(e,t,r),Jt._fix(i,t,r)},_initVideoTrack:()=>({samples:[]}),_initAudioTrack:()=>({samples:[]}),_demux(e,t=!1,r=!0){t&&(Jt._pmtId=-1,Jt.videoTrack=Jt._initVideoTrack(),Jt.audioTrack=Jt._initAudioTrack()),!r||t?(Jt._remainingPacketData=null,Jt._videoPesData=[],Jt._audioPesData=[]):(Jt.videoTrack.samples=[],Jt.audioTrack.samples=[],Jt._remainingPacketData&&(e=Or(Jt._remainingPacketData,e),Jt._remainingPacketData=null));let i=e.length;const n=i%188;n&&(Jt._remainingPacketData=e.subarray(i-n),i-=n);for(let t=0;t>4>1){if(n=t+5+e[t+4],n===t+188)continue}else n=t+4;switch(i){case 0:r&&(n+=e[n]+1),Jt._pmtId=(31&e[n+10])<<8|e[n+11];break;case Jt._pmtId:{r&&(n+=e[n]+1);const t=n+3+((15&e[n+1])<<8|e[n+2])-4;for(n+=12+((15&e[n+10])<<8|e[n+11]);n=t)return[];const n=[];for(;i=r)return;const n=i,s=[],a=(60&e[i+2])>>>2,o=qe[a];if(!o)throw new Error(`Invalid sampling index: ${a}`);const d=1+((192&e[i+2])>>>6),l=(1&e[i+2])<<2|(192&e[i+3])>>>6;let u,c,h=0;const f=Ze(o);for(;i+7>5,r-i=r?void 0:e.subarray(i),frames:s,samplingFrequencyIndex:a,sampleRate:o,objectType:d,channelCount:l,originCodec:`mp4a.40.${d}`}}(e.data,e.originalPts);if(t){if(Jt.audioTrack.codec=t.codec,Jt.audioTrack.sampleRate=t.sampleRate,Jt.audioTrack.channelCount=t.channelCount,!Jt._isSendAACSeqHeader){const e=We({profile:t.objectType,sampleRate:t.samplingFrequencyIndex,channel:t.channelCount});Jt._isSendAACSeqHeader=!0,Qt.debug.log(Jt.TAG_NAME,"aac seq header",`profile: ${t.objectType}, sampleRate:${t.sampleRate},sampleRateIndex: ${t.samplingFrequencyIndex}, channel: ${t.channelCount}`),Qt.decodeAudio(e,0)}if(Jt._isSendAACSeqHeader){const e=[];t.frames.forEach((t=>{const r=t.pts,i=new Uint8Array(t.data.length+2);i.set([175,1],0),i.set(t.data,2);const n={type:X,pts:r,dts:r,payload:i};e.push(n)})),Jt.audioTrack.samples=Jt.audioTrack.samples.concat(e)}else Qt.debug.warn(Jt.TAG_NAME,"aac seq header not send")}else Qt.debug.warn(Jt.TAG_NAME,"aac parseADTS error")}Jt._audioPesData=[]}}else Qt.debug.warn(Jt.TAG_NAME,"Cannot parse audio pes",Jt._audioPesData)},_fix(e=0,t=!1,r=!0){e=Math.round(9e4*e);const i=Jt.videoTrack,n=Jt.audioTrack,s=i.samples,a=n.samples;if(!s.length&&!a.length)return;const o=s[0],d=a[0];let l=0;if(s.length&&a.length&&(l=o.dts-d.pts),Jt._baseDtsInited||Jt._calculateBaseDts(),t&&(Jt._calculateBaseDts(),Jt._baseDts-=e),!r){Jt._videoNextDts=l>0?e+l:e,Jt._audioNextPts=l>0?e:e-l;const t=o?o.dts-Jt._baseDts-Jt._videoNextDts:0,r=d?d.pts-Jt._baseDts-Jt._audioNextPts:0;Math.abs(t||r)>MAX_VIDEO_FRAME_DURATION&&(Jt._calculateBaseDts(Jt.audioTrack,Jt.videoTrack),Jt._baseDts-=e)}Jt._resetBaseDtsWhenStreamBreaked(),Jt._fixAudio(n),Jt._fixVideo(i);let u=i.samples.concat(n.samples);u=u.map((e=>(e.dts=Math.round(e.dts/90),e.pts=Math.round(e.pts/90),e.cts=e.pts-e.dts,e))).sort(((e,t)=>e.dts-t.dts)),u.forEach((e=>{const t=new Uint8Array(e.payload);delete e.payload,e.type===Z?Jt._doDecodeVideo({...e,payload:t}):e.type===X&&Jt._doDecodeAudio({...e,payload:t})}))},_calculateBaseDts(){const e=Jt.audioTrack,t=Jt.videoTrack,r=e.samples,i=t.samples;if(!r.length&&!i.length)return!1;let n=1/0,s=1/0;r.length&&(e.baseDts=n=r[0].pts),i.length&&(t.baseDts=s=i[0].dts),Jt._baseDts=Math.min(n,s);const a=s-n;return Number.isFinite(a)&&Math.abs(a)>45e3&&Qt.debug.warn(Jt.TAG_NAME,`large av first frame gap,\n video pts: ${s},\n audio pts: ${n},\n base dts: ${Jt._baseDts},\n detect is: ${a}`),Jt._baseDtsInited=!0,!0},_resetBaseDtsWhenStreamBreaked(){if(Jt._baseDtsInited&&Jt._videoTimestampBreak&&Jt._audioTimestampBreak){if(!Jt._calculateBaseDts(Jt.audioTrack,Jt.videoTrack))return;Jt._baseDts-=Math.min(Jt._audioNextPts,Jt._videoNextDts),Jt._audioLastSample=null,Jt._videoLastSample=null,Jt._videoTimestampBreak=!1,Jt._audioTimestampBreak=!1}},_createVideoSample(e,t,r){if(!e.length)return;const i=Jt._codecType===Se,n={isIFrame:!1,type:Z,isHevc:i,vps:null,sps:null,pps:null,pts:t,dts:r,payload:null};e.forEach((e=>{const t=i?e[0]>>>1&63:31&e[0];switch(t){case 5:case 16:case 17:case 18:case 19:case 20:case 21:case 22:case 23:if(!i&&5!==t||i&&5===t)break;n.isIFrame=!0,Jt._gopId++;break;case 6:case 39:case 40:if(!i&&6!==t||i&&6===t)break;return void function(e,t){const r=e.length;let i=t?2:1,n=0,s=0,a="";for(;255===e[i];)n+=255,i++;for(n+=e[i++];255===e[i];)s+=255,i++;if(s+=e[i++],5===n&&r>i+16)for(let t=0;t<16;t++)a+=e[i].toString(16),i++;e.subarray(i)}(function(e){const t=e.byteLength,r=[];let i=1;for(;i>>8,s[7]=255&a;let o=8;s.set(e,8),o+=a,s[o]=1;let d=t.byteLength;s[o+1]=d>>>8,s[o+2]=255&d,s.set(t,o+3),o+=3+d,i&&(s[o]=252|n.chroma_format_idc,s[o+1]=248|n.bit_depth_luma-8,s[o+2]=248|n.bit_depth_chroma-8,s[o+3]=0,o+=4);const l=[23,0,0,0,0],u=new Uint8Array(l.length+s.byteLength);return u.set(l,0),u.set(s,l.length),u}({sps:n.sps,pps:n.pps})),s&&(Qt.debug.log(Jt.TAG_NAME,"_createVideoSample","seqHeader"),Qt.decodeVideo(s,Z,Math.round(n.pts/90),!0,0)),n.isIFrame&&Qt.calcIframeIntervalTimestamp(Math.round(n.dts/90)),Jt.videoTrack.samples=Jt.videoTrack.samples.concat(n)},_fixAudio(e){const t=e.samples;t.length&&(t.forEach((e=>{e.pts-=Jt._baseDts,e.dts=e.pts})),Jt._doFixAudioInternal(e,t,9e4))},_fixVideo(e){const t=e.samples;if(!t.length)return;if(t.forEach((e=>{e.dts-=Jt._baseDts,e.pts-=Jt._baseDts})),void 0===Jt._videoNextDts){const e=t[0];Jt._videoNextDts=e.dts}const r=t.length;let i=0;const n=t[0],s=t[1],a=Jt._videoNextDts-n.dts;let o;Math.abs(a)>45e3&&(n.dts+=a,n.pts+=a,Qt.debug.warn(Jt.TAG_NAME,`large video gap between chunk,\n next dts is ${Jt._videoNextDts},\n first dts is ${n.dts},\n next dts is ${s.dts},\n duration is ${a}`),s&&Math.abs(s.dts-n.dts)>9e4&&(Jt._videoTimestampBreak=!0,t.forEach(((e,t)=>{0!==t&&(e.dts+=a,e.pts+=a)}))));const d=e.samples[0],l=e.samples[r-1];o=1===r?9e3:Math.floor((l.dts-d.dts)/(r-1));for(let n=0;n9e4||i<0){Jt._videoTimestampBreak=!0,i=Jt._audioTimestampBreak?o:Math.max(i,2700);const r=Jt._audioNextPts||0;a&&a.dts>r&&(i=o),Qt.debug.warn(Jt.TAG_NAME,`large video gap between frames,\n time is ${s/e.timescale},\n dts is ${s},\n origin dts is ${t[n].originalDts},\n next dts is ${Jt._videoNextDts},\n sample Duration is ${i} ,\n ref Sample DurationInt is ${o}`)}t[n].duration=i,Jt._videoNextDts+=i}},_doFixAudioInternal(e,t,r){e.sampleDuration||(e.sampleDuration=Ze(e.timescale,r));const i=e.sampleDuration;if(void 0===Jt._audioNextPts){const e=t[0];Jt._audioNextPts=e.pts}for(let r=0;r=3*i&&a<=Ge&&!tt()){Xe(e.codec,e.channelCount)||t[0].data.subarray();const o=Math.floor(a/i);Math.abs(s.pts-Jt._lastAudioExceptionGapDot)>AUDIO_EXCETION_LOG_EMIT_DURATION&&(Jt._lastAudioExceptionGapDot=s.pts),Qt.debug.warn(Jt.TAG_NAME,`audio gap detected,\n pts is ${t.pts},\n originPts is ${t.originalPts},\n count is ${o},\n nextPts is ${n},\n ref sample duration is ${i}`);for(let e=0;e=-9e4?(Math.abs(s.pts-Jt._lastAudioExceptionOverlapDot)>He&&(Jt._lastAudioExceptionOverlapDot=s.pts,Qt.debug.warn(Jt.TAG_NAME,`audio overlap detected,\n pts is ${s.pts},\n originPts is ${s.originalPts},\n nextPts is ${n},\n ref sample duration is ${i}`)),t.splice(r,1),r--):(Math.abs(a)>=Ge&&(Jt._audioTimestampBreak=!0,Math.abs(s.pts-Jt._lastAudioExceptionLargeGapDot)>He&&(Jt._lastAudioExceptionLargeGapDot=s.pts,Qt.debug.warn(Jt.TAG_NAME,`large audio gap detected,\n time is ${s.pts/1e3}\n pts is ${s.pts},\n originPts is ${s.originalPts},\n nextPts is ${n},\n sample duration is ${a}\n ref sample duration is ${i}`))),s.dts=s.pts=n,Jt._audioNextPts+=i)}},_doDecodeVideo(e){const t=new Uint8Array(e.payload);let r=null;r=e.isHevc?Rt(t,e.isIFrame):bt(t,e.isIFrame),postMessage({cmd:L,type:fe,value:r.byteLength}),postMessage({cmd:L,type:pe,value:e.dts});const i=e.pts-e.dts;let n=Qt.cryptoPayload(r,e.isIFrame);Qt.decode(n,{type:Z,ts:e.dts,isIFrame:e.isIFrame,cts:i})},_doDecodeAudio(){const e=new Uint8Array(sample.payload);postMessage({cmd:L,type:he,value:e.byteLength});let t=e;ot(Qt._opt.m7sCryptoAudio)&&(t=Qt.cryptoPayloadAudio(e)),Qt.decode(t,{type:X,ts:sample.dts,isIFrame:!1,cts:0})},destroy(){Jt.videoTrack=null,Jt.audioTrack=null,Jt.tempSampleListInfo={},Jt._baseDts=-1,Jt._baseDtsInited=!1,Jt._basefps=50,Jt._hasCalcFps=!1,Jt._audioNextPts=void 0,Jt._videoNextDts=void 0,Jt._audioTimestampBreak=!1,Jt._videoTimestampBreak=!1,Jt._lastAudioExceptionGapDot=0,Jt._lastAudioExceptionOverlapDot=0,Jt._lastAudioExceptionLargeGapDot=0,Jt._isForHls=!0,Jt._isSendAACSeqHeader=!1,Qt.debug.log(Jt.TAG_NAME,"destroy")}},Qt={isPlayer:!0,isPlayback:!1,dropping:!1,isPushDropping:!1,isWorkerFetch:!1,isDestroyed:!1,fetchStatus:Le,_opt:Yt(),mp3Demuxer:null,delay:-1,pushLatestDelay:-1,firstTimestamp:null,startTimestamp:null,preDelayTimestamp:null,stopId:null,streamFps:null,streamAudioFps:null,streamVideoFps:null,writableStream:null,networkDelay:0,webglObj:null,startStreamRateAndStatsInterval:function(){Qt.stopStreamRateAndStatsInterval(),l=setInterval((()=>{d&&d(0);const e=JSON.stringify({demuxBufferDelay:Qt.getVideoBufferLength(),audioDemuxBufferDelay:Qt.getAudioBufferLength(),flvBufferByteLength:Qt.getFlvBufferLength(),netBuf:Qt.networkDelay||0,pushLatestDelay:Qt.pushLatestDelay||0,latestDelay:Qt.delay,isStreamTsMoreThanLocal:Qe});postMessage({cmd:L,type:_e,value:e})}),1e3)},stopStreamRateAndStatsInterval:function(){l&&(clearInterval(l),l=null)},useOffscreen:function(){return Qt._opt.useOffscreen&&"undefined"!=typeof OffscreenCanvas},getDelay:function(e,t){if(!e||Qt._opt.hasVideo&&!Ve)return-1;if(t===X)return Qt.delay;if(Qt.preDelayTimestamp&&Qt.preDelayTimestamp>e)return Qt.preDelayTimestamp-e>1e3&&Qt.debug.warn("worker",`getDelay() and preDelayTimestamp is ${Qt.preDelayTimestamp} > timestamp is ${e} more than ${Qt.preDelayTimestamp-e}ms and return ${Qt.delay}`),Qt.preDelayTimestamp=e,Qt.delay;if(Qt.firstTimestamp){if(e){const t=Date.now()-Qt.startTimestamp,r=e-Qt.firstTimestamp;t>=r?(Qe=!1,Qt.delay=t-r):(Qe=!0,Qt.delay=r-t)}}else Qt.firstTimestamp=e,Qt.startTimestamp=Date.now(),Qt.delay=-1;return Qt.preDelayTimestamp=e,Qt.delay},getDelayNotUpdateDelay:function(e,t){if(!e||Qt._opt.hasVideo&&!Ve)return-1;if(t===X)return Qt.pushLatestDelay;if(Qt.preDelayTimestamp&&Qt.preDelayTimestamp-e>1e3)return Qt.debug.warn("worker",`getDelayNotUpdateDelay() and preDelayTimestamp is ${Qt.preDelayTimestamp} > timestamp is ${e} more than ${Qt.preDelayTimestamp-e}ms and return -1`),-1;if(Qt.firstTimestamp){let t=-1;if(e){const r=Date.now()-Qt.startTimestamp,i=e-Qt.firstTimestamp;r>=i?(Qe=!1,t=r-i):(Qe=!0,t=i-r)}return t}return-1},resetDelay:function(){Qt.firstTimestamp=null,Qt.startTimestamp=null,Qt.delay=-1,Qt.dropping=!1},resetAllDelay:function(){Qt.resetDelay(),Qt.preDelayTimestamp=null},doDecode:function(e){Qt._opt.isEmitSEI&&e.type===Z&&Qt.isWorkerFetch&&Qt.findSei(e.payload,e.ts),Qt._opt.useWCS&&Qt.useOffscreen()&&e.type===Z&&s.decode?s.decode(e.payload,e.ts,e.cts):e.decoder.decode(e.payload,e.ts,e.isIFrame,e.cts)},decodeNext(e){if(0===i.length)return;const t=e.ts,n=i[0],s=e.type===Z&&at(e.payload);if(dt(r))s&&(Qt.debug.log("worker",`decode data type is ${e.type} and\n ts is ${t} next data type is ${n.type} ts is ${n.ts}\n isVideoSqeHeader is ${s}`),i.shift(),Qt.doDecode(n));else{const r=n.ts-t,a=n.type===X&&e.type===Z;(r<=20||a||s)&&(Qt.debug.log("worker",`decode data type is ${e.type} and\n ts is ${t} next data type is ${n.type} ts is ${n.ts}\n diff is ${r} and isVideoAndNextAudio is ${a} and isVideoSqeHeader is ${s}`),i.shift(),Qt.doDecode(n))}},init:function(){Qt.debug.log("worker","init and opt is",JSON.stringify(Qt._opt));const e=Qt._opt.playType===m,t=Qt._opt.playType===_;if(Kt.init(),Qt.isPlayer=e,Qt.isPlayback=t,Qt.isPlaybackCacheBeforeDecodeForFpsRender())Qt.debug.log("worker","playback and playbackIsCacheBeforeDecodeForFpsRender is true");else{Qt.debug.log("worker","setInterval()");const t=Qt._opt.videoBuffer+Qt._opt.videoBufferDelay,r=()=>{let r=null;if(i.length){if(Qt.isPushDropping)return void Qt.debug.warn("worker",`loop() isPushDropping is true and bufferList length is ${i.length}`);if(Qt.dropping){for(r=i.shift(),Qt.debug.warn("worker",`loop() dropBuffer is dropping and isIFrame ${r.isIFrame} and delay is ${Qt.delay} and bufferlist is ${i.length}`);!r.isIFrame&&i.length;)r=i.shift();const e=Qt.getDelayNotUpdateDelay(r.ts,r.type);r.isIFrame&&e<=Qt.getNotDroppingDelayTs()&&(Qt.debug.log("worker","loop() is dropping = false, is iFrame"),Qt.dropping=!1,Qt.doDecode(r),Qt.decodeNext(r))}else if(Qt.isPlayback||Qt.isPlayUseMSE()||0===Qt._opt.videoBuffer)for(;i.length;)r=i.shift(),Qt.doDecode(r);else if(r=i[0],-1===Qt.getDelay(r.ts,r.type))Qt.debug.log("worker","loop() common dumex delay is -1 ,data.ts is",r.ts),i.shift(),Qt.doDecode(r),Qt.decodeNext(r);else if(Qt.delay>t&&e)Qt.hasIframeInBufferList()?(Qt.debug.log("worker",`delay is ${Qt.delay} > maxDelay ${t}, set dropping is true`),Qt.resetAllDelay(),Qt.dropping=!0,postMessage({cmd:M})):(i.shift(),Qt.doDecode(r),Qt.decodeNext(r));else for(;i.length;){if(r=i[0],!(Qt.getDelay(r.ts,r.type)>Qt._opt.videoBuffer)){Qt.delay<0&&Qt.debug.warn("worker",`loop() do not decode and delay is ${Qt.delay}, bufferList is ${i.length}`);break}i.shift(),Qt.doDecode(r)}}else-1!==Qt.delay&&Qt.debug.log("worker","loop() bufferList is empty and reset delay"),Qt.resetAllDelay()};Qt.stopId=setInterval((()=>{let e=(new Date).getTime();lt||(lt=e);const t=e-lt;t>100&&Qt.debug.warn("worker",`loop demux diff time is ${t}`),r(),lt=(new Date).getTime()}),20)}dt(Qt._opt.checkFirstIFrame)&&(Ve=!0)},playbackCacheLoop:function(){Qt.stopId&&(clearInterval(Qt.stopId),Qt.stopId=null);const e=()=>{let e=null;i.length&&(e=i.shift(),Qt.doDecode(e))};e();const t=Math.ceil(1e3/(Qt.streamFps*Qt._opt.playbackRate));Qt.debug.log("worker",`playbackCacheLoop fragDuration is ${t}, streamFps is ${Qt.streamFps}, streamAudioFps is ${Qt.streamAudioFps} ,streamVideoFps is ${Qt.streamVideoFps} playbackRate is ${Qt._opt.playbackRate}`),Qt.stopId=setInterval(e,t)},close:function(){if(Qt.debug.log("worker","close"),Qt.isDestroyed=!0,qt(),!o||1!==o.readyState&&2!==o.readyState?o&&Qt.debug.log("worker",`close() and socket.readyState is ${o.readyState}`):(jt=!0,o.close(1e3,"Client disconnecting")),o=null,Qt.stopStreamRateAndStatsInterval(),Qt.stopId&&(clearInterval(Qt.stopId),Qt.stopId=null),Qt.mp3Demuxer&&(Qt.mp3Demuxer.destroy(),Qt.mp3Demuxer=null),Qt.writableStream&&dt(Qt.writableStream.locked)&&Qt.writableStream.close().catch((e=>{Qt.debug.log("worker","close() and writableStream.close() error",e)})),Qt.writableStream=null,er)try{er.clear&&er.clear(),er=null}catch(e){Qt.debug.warn("worker","close() and audioDecoder.clear error",e)}if(tr)try{tr.clear&&tr.clear(),tr=null}catch(e){Qt.debug.warn("worker","close() and videoDecoder.clear error",e)}d=null,lt=null,Qe=!1,s&&(s.reset&&s.reset(),s=null),Qt.firstTimestamp=null,Qt.startTimestamp=null,Qt.networkDelay=0,Qt.streamFps=null,Qt.streamAudioFps=null,Qt.streamVideoFps=null,Qt.delay=-1,Qt.pushLatestDelay=-1,Qt.preDelayTimestamp=null,Qt.dropping=!1,Qt.isPushDropping=!1,Qt.isPlayer=!0,Qt.isPlayback=!1,Qt.isWorkerFetch=!1,Qt._opt=Yt(),Qt.webglObj&&(Qt.webglObj.destroy(),Qt.offscreenCanvas.removeEventListener("webglcontextlost",Qt.onOffscreenCanvasWebglContextLost),Qt.offscreenCanvas.removeEventListener("webglcontextrestored",Qt.onOffscreenCanvasWebglContextRestored),Qt.offscreenCanvas=null,Qt.offscreenCanvasGL=null,Qt.offscreenCanvasCtx=null),i=[],n=[],g=null,v=null,w=null,Pe=!1,Fe=!1,Ve=!1,Nt=!1,$t=!1,Gt=!1,Ht=null,Vt=null,ht=[],xt=0,At=0,ut=null,ct=null,Tt=null,kt=null,Wt=null,Ct=0,Bt=0,mt=null,yt=null,Qt.fetchStatus=Le,Kt.destroy(),Xt.destroy(),Zt.destroy(),Jt.destroy(),postMessage({cmd:G})},pushBuffer:function(e,t){if(t.type===X&&je(e)){if(Qt.debug.log("worker",`pushBuffer audio ts is ${t.ts}, isAacCodecPacket is true`),Qt._opt.isRecordTypeFlv){const t=new Uint8Array(e);postMessage({cmd:j,buffer:t},[t.buffer])}Qt.decodeAudio(e,t.ts)}else if(t.type===Z&&t.isIFrame&&at(e)){if(Qt.debug.log("worker",`pushBuffer video ts is ${t.ts}, isVideoSequenceHeader is true`),Qt._opt.isRecordTypeFlv){const t=new Uint8Array(e);postMessage({cmd:Y,buffer:t},[t.buffer])}Qt.decodeVideo(e,t.ts,t.isIFrame,t.cts)}else{if(Qt._opt.isRecording)if(Qt._opt.isRecordTypeFlv){const r=new Uint8Array(e);postMessage({cmd:q,type:t.type,buffer:r,ts:t.ts},[r.buffer])}else if(Qt._opt.recordType===y)if(t.type===Z){const r=new Uint8Array(e).slice(5);postMessage({cmd:P,buffer:r,isIFrame:t.isIFrame,ts:t.ts,cts:t.cts},[r.buffer])}else if(t.type===X&&Qt._opt.isWasmMp4){const r=new Uint8Array(e),i=Ye(r)?r.slice(2):r.slice(1);postMessage({cmd:k,buffer:i,ts:t.ts},[i.buffer])}if(Qt.isPlayer&&Ct>0&&kt>0&&t.type===Z){const e=t.ts-kt,r=Ct+Ct/2;e>r&&Qt.debug.log("worker",`pushBuffer video\n ts is ${t.ts}, preTimestamp is ${kt},\n diff is ${e} and preTimestampDuration is ${Ct} and maxDiff is ${r}\n maybe trigger black screen or flower screen\n `)}if(Qt.isPlayer&&kt>0&&t.type===Z&&t.tsb&&(Qt.debug.warn("worker",`pushBuffer,\n preTimestamp is ${kt}, options.ts is ${t.ts},\n diff is ${kt-t.ts} more than 3600000,\n and resetAllDelay`),Qt.resetAllDelay(),kt=null,Ct=0),Qt.isPlayer&&kt>0&&t.ts<=kt&&t.type===Z&&(Qt.debug.warn("worker",`pushBuffer,\n options.ts is ${t.ts} less than (or equal) preTimestamp is ${kt} and\n payloadBufferSize is ${e.byteLength} and prevPayloadBufferSize is ${Bt}`),Qt._opt.isDropSameTimestampGop&&Ve)){const e=Qt.hasIframeInBufferList(),t=dt(Qt.isPushDropping);return Qt.debug.log("worker",`pushBuffer, isDropSameTimestampGop is true and\n hasIframe is ${e} and isNotPushDropping is ${t} and next dropBuffer`),void(e&&t?Qt.dropBuffer$2():(Qt.clearBuffer(!0),ot(Qt._opt.checkFirstIFrame)&&ot(r)&&postMessage({cmd:K})))}if(Qt.isPlayer&&Ve){const e=Qt._opt.videoBuffer+Qt._opt.videoBufferDelay,r=Qt.getDelayNotUpdateDelay(t.ts,t.type);Qt.pushLatestDelay=r,r>e&&Qt.delay0&&Qt.hasIframeInBufferList()&&!1===Qt.isPushDropping&&(Qt.debug.log("worker",`pushBuffer(), pushLatestDelay is ${r} more than ${e} and decoder.delay is ${Qt.delay} and has iIframe and next decoder.dropBuffer$2()`),Qt.dropBuffer$2())}if(Qt.isPlayer&&t.type===Z&&(kt>0&&(Ct=t.ts-kt),Bt=e.byteLength,kt=t.ts),t.type===X?i.push({ts:t.ts,payload:e,decoder:{decode:Qt.decodeAudio},type:X,isIFrame:!1}):t.type===Z&&i.push({ts:t.ts,cts:t.cts,payload:e,decoder:{decode:Qt.decodeVideo},type:Z,isIFrame:t.isIFrame}),Qt.isPlaybackCacheBeforeDecodeForFpsRender()&&(rt(Qt.streamVideoFps)||rt(Qt.streamAudioFps))){let e=Qt.streamVideoFps,t=Qt.streamAudioFps;if(rt(Qt.streamVideoFps)&&(e=nt(i,Z),e&&(Qt.streamVideoFps=e,postMessage({cmd:z,value:Qt.streamVideoFps}),Qt.streamFps=t?e+t:e,dt(Qt._opt.hasAudio)&&(Qt.debug.log("worker","playbackCacheBeforeDecodeForFpsRender, _opt.hasAudio is false and set streamAudioFps is 0"),Qt.streamAudioFps=0),Qt.playbackCacheLoop())),rt(Qt.streamAudioFps)&&(t=nt(i,X),t&&(Qt.streamAudioFps=t,Qt.streamFps=e?e+t:t,Qt.playbackCacheLoop())),rt(Qt.streamVideoFps)&&rt(Qt.streamAudioFps)){const r=i.map((e=>({type:e.type,ts:e.ts})));Qt.debug.log("worker",`playbackCacheBeforeDecodeForFpsRender, calc streamAudioFps is ${t}, streamVideoFps is ${e}, bufferListLength is ${i.length}, and ts list is ${JSON.stringify(r)}`)}const r=Qt.getAudioBufferLength()>0,n=r?60:40;i.length>=n&&(Qt.debug.warn("worker",`playbackCacheBeforeDecodeForFpsRender, bufferListLength is ${i.length} more than ${n}, and hasAudio is ${r} an set streamFps is 25`),Qt.streamVideoFps=25,postMessage({cmd:z,value:Qt.streamVideoFps}),r?(Qt.streamAudioFps=25,Qt.streamFps=Qt.streamVideoFps+Qt.streamAudioFps):Qt.streamFps=Qt.streamVideoFps,Qt.playbackCacheLoop())}}},getVideoBufferLength(){let e=0;return i.forEach((t=>{t.type===Z&&(e+=1)})),e},hasIframeInBufferList:()=>i.some((e=>e.type===Z&&e.isIFrame)),isAllIframeInBufferList(){const e=Qt.getVideoBufferLength();let t=0;return i.forEach((e=>{e.type===Z&&e.isIFrame&&(t+=1)})),e===t},getNotDroppingDelayTs:()=>Qt._opt.videoBuffer+Qt._opt.videoBufferDelay/2,getAudioBufferLength(){let e=0;return i.forEach((t=>{t.type===X&&(e+=1)})),e},getFlvBufferLength(){let e=0;return g&&g.buffer&&(e=g.buffer.byteLength),Qt._opt.isNakedFlow&&Kt.lastBuf&&(e=Kt.lastBuf.byteLength),e},fetchStream:function(e,t){Qt.debug.log("worker","fetchStream, url is "+e,"options:",JSON.stringify(t)),Qt.isWorkerFetch=!0,t.isFlv?Qt._opt.isFlv=!0:t.isFmp4?Qt._opt.isFmp4=!0:t.isMpeg4?Qt._opt.isMpeg4=!0:t.isNakedFlow?Qt._opt.isNakedFlow=!0:t.isTs&&(Qt._opt.isTs=!0),d=et((e=>{postMessage({cmd:L,type:ce,value:e})})),Qt.startStreamRateAndStatsInterval(),t.isFmp4&&(Xt.listenMp4Box(),Qt._opt.isFmp4Private&&Xt.initTransportDescarmber()),t.protocol===h?(g=new ft(Qt.demuxFlv()),fetch(e,{signal:a.signal}).then((e=>{if(ot(jt))return Qt.debug.log("worker","request abort and run res.body.cancel()"),Qt.fetchStatus=Le,void e.body.cancel();if(!function(e){return e.ok&&e.status>=200&&e.status<=299}(e))return Qt.debug.warn("worker",`fetch response status is ${e.status} and ok is ${e.ok} and emit error and next abort()`),qt(),void postMessage({cmd:L,type:ve.fetchError,value:`fetch response status is ${e.status} and ok is ${e.ok}`});if(postMessage({cmd:L,type:me}),"undefined"!=typeof WritableStream)Qt.writableStream=new WritableStream({write:e=>a&&a.signal&&a.signal.aborted?(Qt.debug.log("worker","writableStream write() and abortController.signal.aborted is true so return"),void(Qt.fetchStatus=Me)):ot(jt)?(Qt.debug.log("worker","writableStream write() and requestAbort is true so return"),void(Qt.fetchStatus=Me)):(Qt.fetchStatus=Re,d(e.byteLength),void(t.isFlv?g.write(e):t.isFmp4?Qt.demuxFmp4(e):t.isMpeg4?Qt.demuxMpeg4(e):t.isTs&&Qt.demuxTs(e))),close:()=>{Qt.fetchStatus=Me,g=null,qt(),postMessage({cmd:L,type:ue,value:f,msg:"fetch done"})},abort:e=>{if(a&&a.signal&&a.signal.aborted)return Qt.debug.log("worker","writableStream abort() and abortController.signal.aborted is true so return"),void(Qt.fetchStatus=Me);g=null,e.name!==De&&(qt(),postMessage({cmd:L,type:ve.fetchError,value:e.toString()}))}}),e.body.pipeTo(Qt.writableStream);else{const r=e.body.getReader(),i=()=>{r.read().then((({done:e,value:r})=>e?(Qt.fetchStatus=Me,g=null,qt(),void postMessage({cmd:L,type:ue,value:f,msg:"fetch done"})):a&&a.signal&&a.signal.aborted?(Qt.debug.log("worker","fetchNext().then() and abortController.signal.aborted is true so return"),void(Qt.fetchStatus=Me)):ot(jt)?(Qt.debug.log("worker","fetchNext().then() and requestAbort is true so return"),void(Qt.fetchStatus=Me)):(Qt.fetchStatus=Re,d(r.byteLength),t.isFlv?g.write(r):t.isFmp4?Qt.demuxFmp4(r):t.isMpeg4&&Qt.demuxMpeg4(r),void i()))).catch((e=>{if(a&&a.signal&&a.signal.aborted)return Qt.debug.log("worker","fetchNext().catch() and abortController.signal.aborted is true so return"),void(Qt.fetchStatus=Me);g=null,e.name!==De&&(qt(),postMessage({cmd:L,type:ve.fetchError,value:e.toString()}))}))};i()}})).catch((e=>{a&&a.signal&&a.signal.aborted?Qt.debug.log("worker","fetch().catch() and abortController.signal.aborted is true so return"):e.name!==De&&(qt(),postMessage({cmd:L,type:ve.fetchError,value:e.toString()}),g=null)}))):t.protocol===c&&(t.isFlv&&(g=new ft(Qt.demuxFlv())),o=new WebSocket(e),o.binaryType="arraybuffer",o.onopen=()=>{Qt.debug.log("worker","fetchStream, WebsocketStream socket open"),postMessage({cmd:L,type:me}),postMessage({cmd:L,type:ge})},o.onclose=e=>{Qt.debug.log("worker",`fetchStream, WebsocketStream socket close and code is ${e.code}`),1006===e.code&&Qt.debug.error("worker",`fetchStream, WebsocketStream socket close abnormally and code is ${e.code}`),ot(jt)?Qt.debug.log("worker","fetchStream, WebsocketStream socket close and requestAbort is true so return"):(g=null,postMessage({cmd:L,type:ue,value:p,msg:e.code}))},o.onerror=e=>{Qt.debug.error("worker","fetchStream, WebsocketStream socket error",e),g=null,postMessage({cmd:L,type:ve.websocketError,value:e.isTrusted?"websocket user aborted":"websocket error"})},o.onmessage=e=>{d(e.data.byteLength),t.isFlv?g.write(e.data):t.isFmp4?Qt.demuxFmp4(e.data):t.isMpeg4?Qt.demuxMpeg4(e.data):Qt._opt.isNakedFlow?Qt.demuxNakedFlow(e.data):Qt.demuxM7s(e.data)})},demuxFlv:function*(){yield 9;const e=new ArrayBuffer(4),t=new Uint8Array(e),r=new Uint32Array(e);for(;;){t[3]=0;const e=yield 15,i=e[4];t[0]=e[7],t[1]=e[6],t[2]=e[5];const n=r[0];t[0]=e[10],t[1]=e[9],t[2]=e[8],t[3]=e[11];let s=r[0];const a=(yield n).slice();switch(i){case J:if(a.byteLength>0){let e=a;ot(Qt._opt.m7sCryptoAudio)&&(e=Qt.cryptoPayloadAudio(a)),Qt.decode(e,{type:X,ts:s})}else Qt.debug.warn("worker",`demuxFlv() type is audio and payload.byteLength is ${a.byteLength} and return`);break;case Q:if(a.byteLength>=6){const e=a[0];if(Qt._isEnhancedH265Header(e))Qt._decodeEnhancedH265Video(a,s);else{a[0];const e=a[0]>>4===Ie;if(e&&at(a)&&null===Ht){const e=15&a[0];Ht=e===Se,Vt=Ft(a,Ht),Qt.debug.log("worker",`demuxFlv() isVideoSequenceHeader is true and isHevc is ${Ht} and nalUnitSize is ${Vt}`)}e&&Qt.calcIframeIntervalTimestamp(s),Qt.isPlayer&&Qt.calcNetworkDelay(s),r[0]=a[4],r[1]=a[3],r[2]=a[2],r[3]=0;let t=r[0],i=Qt.cryptoPayload(a,e);Qt.decode(i,{type:Z,ts:s,isIFrame:e,cts:t})}}else Qt.debug.warn("worker",`demuxFlv() type is video and payload.byteLength is ${a.byteLength} and return`);break;case ee:postMessage({cmd:W,buffer:a},[a.buffer]);break;default:Qt.debug.log("worker",`demuxFlv() type is ${i}`)}}},decode:function(e,t){t.type===X?Qt._opt.hasAudio&&(postMessage({cmd:L,type:he,value:e.byteLength}),Qt.isPlayer?Qt.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts}):Qt.isPlayback&&(Qt.isPlaybackOnlyDecodeIFrame()||(Qt.isPlaybackCacheBeforeDecodeForFpsRender(),Qt.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts})))):t.type===Z&&Qt._opt.hasVideo&&(postMessage({cmd:L,type:fe,value:e.byteLength}),postMessage({cmd:L,type:pe,value:t.ts}),Qt.isPlayer?Qt.pushBuffer(e,{type:t.type,ts:t.ts,isIFrame:t.isIFrame,cts:t.cts}):Qt.isPlayback&&(Qt.isPlaybackOnlyDecodeIFrame()?t.isIFrame&&Qt.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts,isIFrame:t.isIFrame}):(Qt.isPlaybackCacheBeforeDecodeForFpsRender(),Qt.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts,isIFrame:t.isIFrame}))))},cryptoPayload:function(e,t){let r=e;return Qt._opt.isM7sCrypto?Qt._opt.cryptoIV&&Qt._opt.cryptoIV.byteLength>0&&Qt._opt.cryptoKey&&Qt._opt.cryptoKey.byteLength>0?r=function(e,t,r,i=!1){t=new Uint8Array(t),r=new Uint8Array(r);const n=e.byteLength;let s=5;for(;sn)break;let d=e[s+4],l=!1;if(i?(d=d>>>1&63,l=[0,1,2,3,4,5,6,7,8,9,16,17,18,19,20,21].includes(d)):(d&=31,l=1===d||5===d),l){const i=e.slice(s+4+2,s+4+o);let n=new gr.ModeOfOperation.ctr(t,new gr.Counter(r));const a=n.decrypt(i);n=null,e.set(a,s+4+2)}s=s+4+o}var a;return e}(e,Qt._opt.cryptoKey,Qt._opt.cryptoIV,Ht):Qt.debug.error("worker",`isM7sCrypto cryptoKey.length is ${Qt._opt.cryptoKey&&Qt._opt.cryptoKey.byteLength} or cryptoIV.length is ${Qt._opt.cryptoIV&&Qt._opt.cryptoIV.byteLength} null`):Qt._opt.isSm4Crypto?Qt._opt.sm4CryptoKey&&t?r=function(e,t,r=!1){const i=e.byteLength;let n=5;for(;ni)break;let o=e[n+4],d=!1;if(r?(o=o>>>1&63,d=[0,1,2,3,4,5,6,7,8,9,16,17,18,19,20,21].includes(o)):(o&=31,d=1===o||5===o),d){const r=Ir(e.slice(n+4+2,n+4+a),t,0,{padding:"none",output:"array"});e.set(r,n+4+2)}n=n+4+a}var s;return e}(e,Qt._opt.sm4CryptoKey):Qt._opt.sm4CryptoKey||Qt.debug.error("worker","isSm4Crypto opt.sm4CryptoKey is null"):Qt._opt.isXorCrypto&&(Qt._opt.cryptoIV&&Qt._opt.cryptoIV.byteLength>0&&Qt._opt.cryptoKey&&Qt._opt.cryptoKey.byteLength>0?r=function(e,t,r,i=!1){const n=e.byteLength;let s=5;for(;sn)break;let d=e[s+4],l=!1;if(i?(d=d>>>1&63,l=[0,1,2,3,4,5,6,7,8,9,16,17,18,19,20,21].includes(d)):(d&=31,l=1===d||5===d),l){const i=zr(e.slice(s+4,s+4+o),t,r);e.set(i,s+4)}s=s+4+o}var a;return e}(e,Qt._opt.cryptoKey,Qt._opt.cryptoIV,Ht):Qt.debug.error("worker",`isXorCrypto cryptoKey.length is ${Qt._opt.cryptoKey&&Qt._opt.cryptoKey.byteLength} or cryptoIV.length is ${Qt._opt.cryptoIV&&Qt._opt.cryptoIV.byteLength} null`)),r},cryptoPayloadAudio:function(e){let t=e;if(Qt._opt.isM7sCrypto)if(Qt._opt.cryptoIV&&Qt._opt.cryptoIV.byteLength>0&&Qt._opt.cryptoKey&&Qt._opt.cryptoKey.byteLength>0){e[0]>>4===xe.AAC&&(t=function(e,t,r){if(e.byteLength<=30)return e;const i=e.slice(32);let n=new gr.ModeOfOperation.ctr(t,new gr.Counter(r));const s=n.decrypt(i);return n=null,e.set(s,32),e}(e,Qt._opt.cryptoKey,Qt._opt.cryptoIV))}else Qt.debug.error("worker",`isM7sCrypto cryptoKey.length is ${Qt._opt.cryptoKey&&Qt._opt.cryptoKey.byteLength} or cryptoIV.length is ${Qt._opt.cryptoIV&&Qt._opt.cryptoIV.byteLength} null`);return t},setCodecAudio:function(e,t){const r=e[0]>>4,i=e[0]>>1&1;if(Wt=r===xe.AAC?i?16:8:0===i?8:16,er&&er.setCodec)if(je(e)||r===xe.ALAW||r===xe.MULAW||r===xe.MP3){Qt.debug.log("worker",`setCodecAudio: init audio codec, codeId is ${r}`);const i=r===xe.AAC?e.slice(2):new Uint8Array(0);er.setCodec(r,Qt._opt.sampleRate,i),r===xe.AAC&&postMessage({cmd:C,buffer:i},[i.buffer]),Fe=!0,r!==xe.AAC&&(r===xe.MP3?(Qt.mp3Demuxer||(Qt.mp3Demuxer=new Mr(Qt),Qt.mp3Demuxer.on("data",((e,t)=>{er.decode(e,t)}))),Qt.mp3Demuxer.dispatch(e.slice(1),t)):er.decode(e.slice(1),t))}else Qt.debug.warn("worker","setCodecAudio: hasInitAudioCodec is false, codecId is ",r);else Qt.debug.error("worker","setCodecAudio: audioDecoder or audioDecoder.setCodec is null")},decodeAudio:function(e,t){if(Qt.isDestroyed)Qt.debug.log("worker","decodeAudio, decoder is destroyed and return");else if(ot(r)&&ot(Qt._opt.mseDecodeAudio))postMessage({cmd:I,payload:e,ts:t,cts:t},[e.buffer]);else{const r=e[0]>>4;Fe?r===xe.MP3?Qt.mp3Demuxer.dispatch(e.slice(1),t):er.decode(r===xe.AAC?e.slice(2):e.slice(1),t):Qt.setCodecAudio(e,t)}},setCodecVideo:function(e){const t=15&e[0];if(tr&&tr.setCodec)if(at(e))if(t===we||t===Se){Qt.debug.log("worker",`setCodecVideo: init video codec , codecId is ${t}`);const r=e.slice(5);if(t===we&&Qt._opt.useSIMD){const e=gt(r);if(e.codecWidth>4080||e.codecHeight>4080)return postMessage({cmd:$}),void Qt.debug.warn("worker",`setCodecVideo: SIMD H264 decode video width is too large, width is ${e.codecWidth}, height is ${e.codecHeight}`)}const i=new Uint8Array(e);Pe=!0,tr.setCodec(t,r),postMessage({cmd:B,code:t}),postMessage({cmd:D,buffer:i,codecId:t},[i.buffer])}else Qt.debug.warn("worker",`setCodecVideo: hasInitVideoCodec is false, codecId is ${t} is not H264 or H265`);else Qt.debug.warn("worker",`decodeVideo: hasInitVideoCodec is false, codecId is ${t} and frameType is ${e[0]>>4} and packetType is ${e[1]}`);else Qt.debug.error("worker","setCodecVideo: videoDecoder or videoDecoder.setCodec is null")},decodeVideo:function(e,t,i,n=0){if(Qt.isDestroyed)Qt.debug.log("worker","decodeVideo, decoder is destroyed and return");else if(ot(r))postMessage({cmd:F,payload:e,isIFrame:i,ts:t,cts:n,delay:Qt.delay},[e.buffer]);else if(Pe)if(!Ve&&i&&(Ve=!0),Ve){if(i&&at(e)){const t=15&e[0];let r={};if(t===we){r=gt(e.slice(5))}else t===Se&&(r=function(e){let t={codecWidth:0,codecHeight:0,videoType:Be.h265,width:0,height:0,profile:0,level:0};e=e.slice(5);do{let r={};if(e.length<23){console.warn("parseHEVCDecoderConfigurationRecord$2",`arrayBuffer.length ${e.length} < 23`);break}if(r.configurationVersion=e[0],1!=r.configurationVersion)break;r.general_profile_space=e[1]>>6&3,r.general_tier_flag=e[1]>>5&1,r.general_profile_idc=31&e[1],r.general_profile_compatibility_flags=e[2]<<24|e[3]<<16|e[4]<<8|e[5],r.general_constraint_indicator_flags=e[6]<<24|e[7]<<16|e[8]<<8|e[9],r.general_constraint_indicator_flags=r.general_constraint_indicator_flags<<16|e[10]<<8|e[11],r.general_level_idc=e[12],r.min_spatial_segmentation_idc=(15&e[13])<<8|e[14],r.parallelismType=3&e[15],r.chromaFormat=3&e[16],r.bitDepthLumaMinus8=7&e[17],r.bitDepthChromaMinus8=7&e[18],r.avgFrameRate=e[19]<<8|e[20],r.constantFrameRate=e[21]>>6&3,r.numTemporalLayers=e[21]>>3&7,r.temporalIdNested=e[21]>>2&1,r.lengthSizeMinusOne=3&e[21];let i=e[22],n=e.slice(23);for(let e=0;e0){let e=i.findIndex((e=>ot(e.isIFrame)&&e.type===Z));if(Qt.isAllIframeInBufferList())for(let t=0;t=Qt.getNotDroppingDelayTs()){Qt.debug.log("worker",`dropBuffer$2() isAllIframeInBufferList() is true, and index is ${t} and tempDelay is ${n} and notDroppingDelayTs is ${Qt.getNotDroppingDelayTs()}`),e=t;break}}if(e>=0){Qt.isPushDropping=!0,postMessage({cmd:M});const t=i.length;i=i.slice(e);const r=i.shift();Qt.resetAllDelay(),Qt.getDelay(r.ts,r.type),Qt.doDecode(r),Qt.isPushDropping=!1,Qt.debug.log("worker",`dropBuffer$2() iFrameIndex is ${e},and old bufferList length is ${t} ,new bufferList is ${i.length} and new delay is ${Qt.delay} `)}else Qt.isPushDropping=!1}0===i.length&&(Qt.isPushDropping=!1)},demuxM7s:function(e){const t=new DataView(e),r=t.getUint32(1,!1),i=t.getUint8(0),n=new ArrayBuffer(4),s=new Uint32Array(n);switch(i){case X:Qt.decode(new Uint8Array(e,5),{type:X,ts:r});break;case Z:if(t.byteLength>=11){const i=new Uint8Array(e,5),n=i[0];if(Qt._isEnhancedH265Header(n))Qt._decodeEnhancedH265Video(i,r);else{const e=t.getUint8(5)>>4==1;if(e&&(Qt.calcIframeIntervalTimestamp(r),at(i)&&null===Ht)){const e=15&i[0];Ht=e===Se}Qt.isPlayer&&Qt.calcNetworkDelay(r),s[0]=i[4],s[1]=i[3],s[2]=i[2],s[3]=0;let n=s[0],a=Qt.cryptoPayload(i,e);Qt.decode(a,{type:Z,ts:r,isIFrame:e,cts:n})}}else Qt.debug.warn("worker",`demuxM7s() type is video and arrayBuffer length is ${e.byteLength} and return`)}},demuxNakedFlow:function(e){Kt.dispatch(e)},demuxFmp4:function(e){const t=new Uint8Array(e);Xt.dispatch(t)},demuxMpeg4:function(e){Zt.dispatch(e)},demuxTs:function(e){Jt.dispatch(e)},_decodeEnhancedH265Video:function(e,t){const r=e[0],i=48&r,n=15&r,s=e.slice(1,5),a=new ArrayBuffer(4),o=new Uint32Array(a),d="a"==String.fromCharCode(s[0]);if(Ht=dt(d),n===ze){if(i===$e){const r=e.slice(5);if(d);else{const i=new Uint8Array(5+r.length);i.set([28,0,0,0,0],0),i.set(r,5),Vt=Ft(e,Ht),Qt.debug.log("worker",`demuxFlv() isVideoSequenceHeader(enhancedH265) is true and isHevc is ${Ht} and nalUnitSize is ${Vt}`),Qt.decode(i,{type:Z,ts:t,isIFrame:!0,cts:0})}}}else if(n===Oe){let r=e,n=0;const s=i===$e;if(s&&Qt.calcIframeIntervalTimestamp(t),d);else{o[0]=e[4],o[1]=e[3],o[2]=e[2],o[3]=0,n=o[0];r=Rt(e.slice(8),s),r=Qt.cryptoPayload(r,s),Qt.decode(r,{type:Z,ts:t,isIFrame:s,cts:n})}}else if(n===Ne){const r=i===$e;r&&Qt.calcIframeIntervalTimestamp(t);let n=Rt(e.slice(5),r);n=Qt.cryptoPayload(n,r),Qt.decode(n,{type:Z,ts:t,isIFrame:r,cts:0})}},_isEnhancedH265Header:function(e){return!(128&~e)},findSei:function(e,t){let r=4;rt(Vt)||(r=Vt);Dt(e.slice(5),r).forEach((e=>{const r=Ht?e[0]>>>1&63:31&e[0];(Ht&&(r===Te.suffixSei||r===Te.prefixSei)||dt(Ht)&&r===Ae.kSliceSEI)&&postMessage({cmd:V,buffer:e,ts:t},[e.buffer])}))},flvHasUnitTypeIDR(e,t){const r=Dt(e.slice(5));let i=!1;return r.forEach((e=>{const r=t?e[0]>>>1&63:31&e[0];(t&&(r===Te.iFrame||r===Te.nLp)||dt(t)&&r===Ae.iFrame)&&(i=!0)})),i},calcNetworkDelay:function(e){if(!(Ve&&e>0))return;null===ut?(ut=e,ct=Je()):et?r-t:0;Qt.networkDelay=i,i>Qt._opt.networkDelay&&Qt._opt.playType===m&&(Qt.debug.warn("worker",`calcNetworkDelay now dts:${e}, start dts is ${ut} vs start is ${t},local diff is ${r} ,delay is ${i}`),postMessage({cmd:L,type:ye,value:i}))},calcIframeIntervalTimestamp:function(e){null===Tt?Tt=e:Tt=Qt._opt.playbackForwardMaxRateDecodeIFrame},isPlayUseMSE:function(){return Qt.isPlayer&&Qt._opt.useMSE&&ot(r)},isPlayUseMSEAndDecoderInWorker:function(){return Qt.isPlayUseMSE()&&Qt._opt.mseDecoderUseWorker},playbackUpdatePlaybackRate:function(){Qt.clearBuffer(!0)},onOffscreenCanvasWebglContextLost:function(e){Qt.debug.error("worker","handleOffscreenCanvasWebglContextLost and next try to create webgl"),e.preventDefault(),Nt=!0,Qt.webglObj.destroy(),Qt.webglObj=null,Qt.offscreenCanvasGL=null,setTimeout((()=>{Qt.offscreenCanvasGL=Qt.offscreenCanvas.getContext("webgl"),Qt.offscreenCanvasGL&&Qt.offscreenCanvasGL.getContextAttributes().stencil?(Qt.webglObj=u(Qt.offscreenCanvasGL,Qt._opt.openWebglAlignment),Nt=!1):Qt.debug.error("worker","handleOffscreenCanvasWebglContextLost, stencil is false")}),500)},onOffscreenCanvasWebglContextRestored:function(e){Qt.debug.log("worker","handleOffscreenCanvasWebglContextRestored"),e.preventDefault()},videoInfo:function(e,t,r){postMessage({cmd:B,code:e}),postMessage({cmd:E,w:t,h:r}),v=t,w=r,Qt.useOffscreen()&&(Qt.offscreenCanvas=new OffscreenCanvas(t,r),Qt.offscreenCanvasGL=Qt.offscreenCanvas.getContext("webgl"),Qt.webglObj=u(Qt.offscreenCanvasGL,Qt._opt.openWebglAlignment),Qt.offscreenCanvas.addEventListener("webglcontextlost",Qt.onOffscreenCanvasWebglContextLost,!1),Qt.offscreenCanvas.addEventListener("webglcontextrestored",Qt.onOffscreenCanvasWebglContextRestored,!1))},audioInfo:function(e,t,r){postMessage({cmd:T,code:e}),postMessage({cmd:A,sampleRate:t,channels:r,depth:Wt}),At=r},yuvData:function(t,r){if(Qt.isDestroyed)return void Qt.debug.log("worker","yuvData, decoder is destroyed and return");const i=v*w*3/2;let n=e.HEAPU8.subarray(t,t+i),s=new Uint8Array(n);if(mt=null,Qt.useOffscreen())try{if(Nt)return;Qt.webglObj.renderYUV(v,w,s);let e=Qt.offscreenCanvas.transferToImageBitmap();postMessage({cmd:U,buffer:e,delay:Qt.delay,ts:r},[e])}catch(e){Qt.debug.error("worker","yuvData, transferToImageBitmap error is",e)}else postMessage({cmd:U,output:s,delay:Qt.delay,ts:r},[s.buffer])},pcmData:function(e,r,i){if(Qt.isDestroyed)return void Qt.debug.log("worker","pcmData, decoder is destroyed and return");let s=r,a=[],o=0,d=Qt._opt.audioBufferSize;for(let r=0;r<2;r++){let i=t.HEAPU32[(e>>2)+r]>>2;a[r]=t.HEAPF32.subarray(i,i+s)}if(xt){if(!(s>=(r=d-xt)))return xt+=s,n[0]=Float32Array.of(...n[0],...a[0]),void(2==At&&(n[1]=Float32Array.of(...n[1],...a[1])));ht[0]=Float32Array.of(...n[0],...a[0].subarray(0,r)),2==At&&(ht[1]=Float32Array.of(...n[1],...a[1].subarray(0,r))),postMessage({cmd:x,buffer:ht,ts:i},ht.map((e=>e.buffer))),o=r,s-=r}for(xt=s;xt>=d;xt-=d)ht[0]=a[0].slice(o,o+=d),2==At&&(ht[1]=a[1].slice(o-d,o)),postMessage({cmd:x,buffer:ht,ts:i},ht.map((e=>e.buffer)));xt&&(n[0]=a[0].slice(o),2==At&&(n[1]=a[1].slice(o)))},errorInfo:function(e){null===mt&&(mt=Je());const t=Je(),r=(i=yt>0?2*yt:5e3,n=1e3,s=5e3,Math.max(Math.min(i,Math.max(n,s)),Math.min(n,s)));var i,n,s;const a=t-mt;a>r&&(Qt.debug.warn("worker",`errorInfo() emit simdDecodeError and\n iframeIntervalTimestamp is ${yt} and diff is ${a} and maxDiff is ${r}\n and replay`),Gt=!0,postMessage({cmd:N}))},sendWebsocketMessage:function(e){o?o.readyState===be?o.send(e):Qt.debug.error("worker","socket is not open"):Qt.debug.error("worker","socket is null")},timeEnd:function(){},postStreamToMain(e,t){postMessage({cmd:H,type:t,buffer:e},[e.buffer])}};Qt.debug=new pt(Qt);let er=null;t.AudioDecoder&&(er=new t.AudioDecoder(Qt));let tr=null;e.VideoDecoder&&(tr=new e.VideoDecoder(Qt)),postMessage({cmd:S}),self.onmessage=function(e){let t=e.data;switch(t.cmd){case te:try{Qt._opt=Object.assign(Qt._opt,JSON.parse(t.opt))}catch(e){}Qt.init();break;case re:Qt.pushBuffer(t.buffer,t.options);break;case ie:Qt.decodeAudio(t.buffer,t.ts);break;case ne:Qt.decodeVideo(t.buffer,t.ts,t.isIFrame);break;case oe:Qt.clearBuffer(t.needClear);break;case de:Qt.fetchStream(t.url,JSON.parse(t.opt));break;case se:Qt.close();break;case ae:Qt.debug.log("worker","updateConfig",t.key,t.value),Qt._opt[t.key]=t.value,"playbackRate"===t.key&&(Qt.playbackUpdatePlaybackRate(),Qt.isPlaybackCacheBeforeDecodeForFpsRender()&&Qt.playbackCacheLoop());break;case le:Qt.sendWebsocketMessage(t.message)}}}Nr.init(),Date.now||(Date.now=function(){return(new Date).getTime()});const Gr=[];Gr.push(r({printErr:function(e){console.warn("EasyPro[❌❌❌][worker]:",e)}}),t({printErr:function(e){console.warn("EasyPro[❌❌❌][worker]:",e)}})),Promise.all(Gr).then((e=>{const t=e[0];$r(e[1],t)}))})); diff --git a/html-demo/js/decoder-pro-simd.js b/html-demo/js/decoder-pro-simd.js new file mode 100644 index 0000000..3168bdd --- /dev/null +++ b/html-demo/js/decoder-pro-simd.js @@ -0,0 +1 @@ +!function(e){"function"==typeof define&&define.amd?define(e):e()}((function(){"use strict";var e,t=(e="undefined"==typeof document&&"undefined"==typeof location?new(require("url").URL)("file:"+__filename).href:"undefined"==typeof document?location.href:document.currentScript&&document.currentScript.src||new URL("decoder-pro-simd.js",document.baseURI).href,async function(t={}){var r,i,n;(n=t).ready=new Promise(((e,t)=>{r=e,i=t})),(n=void 0!==n?n:{}).locateFile=function(e){return"decoder-pro-simd.wasm"==e&&"undefined"!=typeof EASYPLAYER_PRO_SIMD_WASM_URL&&""!=EASYPLAYER_PRO_SIMD_WASM_URL?EASYPLAYER_PRO_SIMD_WASM_URL:e};var s,a,o,l=Object.assign({},n),d="object"==typeof window,u="function"==typeof importScripts,c="object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node,h="";if(c){const{createRequire:e}=await import("module");var f=e("undefined"==typeof document&&"undefined"==typeof location?new(require("url").URL)("file:"+__filename).href:"undefined"==typeof document?location.href:document.currentScript&&document.currentScript.src||new URL("decoder-pro-simd.js",document.baseURI).href),p=f("fs"),m=f("path");h=u?m.dirname(h)+"/":f("url").fileURLToPath(new URL("./","undefined"==typeof document&&"undefined"==typeof location?new(require("url").URL)("file:"+__filename).href:"undefined"==typeof document?location.href:document.currentScript&&document.currentScript.src||new URL("decoder-pro-simd.js",document.baseURI).href)),s=(e,t)=>(e=M(e)?new URL(e):m.normalize(e),p.readFileSync(e,t?void 0:"utf8")),o=e=>{var t=s(e,!0);return t.buffer||(t=new Uint8Array(t)),t},a=(e,t,r,i=!0)=>{e=M(e)?new URL(e):m.normalize(e),p.readFile(e,i?void 0:"utf8",((e,n)=>{e?r(e):t(i?n.buffer:n)}))},!n.thisProgram&&process.argv.length>1&&process.argv[1].replace(/\\/g,"/"),process.argv.slice(2),n.inspect=()=>"[Emscripten Module object]"}else(d||u)&&(u?h=self.location.href:"undefined"!=typeof document&&document.currentScript&&(h=document.currentScript.src),e&&(h=e),h=0!==h.indexOf("blob:")?h.substr(0,h.replace(/[?#].*/,"").lastIndexOf("/")+1):"",s=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.send(null),t.responseText},u&&(o=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.responseType="arraybuffer",t.send(null),new Uint8Array(t.response)}),a=(e,t,r)=>{var i=new XMLHttpRequest;i.open("GET",e,!0),i.responseType="arraybuffer",i.onload=()=>{200==i.status||0==i.status&&i.response?t(i.response):r()},i.onerror=r,i.send(null)});var _,y,g=n.print||console.log.bind(console),v=n.printErr||console.error.bind(console);Object.assign(n,l),l=null,n.arguments&&n.arguments,n.thisProgram&&n.thisProgram,n.quit&&n.quit,n.wasmBinary&&(_=n.wasmBinary),"object"!=typeof WebAssembly&&I("no native wasm support detected");var b,w,S,E,U,x,A,T,k=!1,C=[],B=[],D=[],P=0,F=null;function I(e){n.onAbort&&n.onAbort(e),v(e="Aborted("+e+")"),k=!0,e+=". Build with -sASSERTIONS for more info.";var t=new WebAssembly.RuntimeError(e);throw i(t),t}var L,R,z=e=>e.startsWith("data:application/octet-stream;base64,"),M=e=>e.startsWith("file://");function O(e){if(e==L&&_)return new Uint8Array(_);if(o)return o(e);throw"both async and sync fetching of the wasm failed"}function N(e,t,r){return function(e){if(!_&&(d||u)){if("function"==typeof fetch&&!M(e))return fetch(e,{credentials:"same-origin"}).then((t=>{if(!t.ok)throw"failed to load wasm binary file at '"+e+"'";return t.arrayBuffer()})).catch((()=>O(e)));if(a)return new Promise(((t,r)=>{a(e,(e=>t(new Uint8Array(e))),r)}))}return Promise.resolve().then((()=>O(e)))}(e).then((e=>WebAssembly.instantiate(e,t))).then((e=>e)).then(r,(e=>{v(`failed to asynchronously prepare wasm: ${e}`),I(e)}))}n.locateFile?z(L="decoder-pro-simd.wasm")||(R=L,L=n.locateFile?n.locateFile(R,h):h+R):L=new URL("decoder-pro-simd.wasm","undefined"==typeof document&&"undefined"==typeof location?new(require("url").URL)("file:"+__filename).href:"undefined"==typeof document?location.href:document.currentScript&&document.currentScript.src||new URL("decoder-pro-simd.js",document.baseURI).href).href;var $=e=>{for(;e.length>0;)e.shift()(n)};function G(e){this.excPtr=e,this.ptr=e-24,this.set_type=function(e){x[this.ptr+4>>2]=e},this.get_type=function(){return x[this.ptr+4>>2]},this.set_destructor=function(e){x[this.ptr+8>>2]=e},this.get_destructor=function(){return x[this.ptr+8>>2]},this.set_caught=function(e){e=e?1:0,b[this.ptr+12|0]=e},this.get_caught=function(){return 0!=b[this.ptr+12|0]},this.set_rethrown=function(e){e=e?1:0,b[this.ptr+13|0]=e},this.get_rethrown=function(){return 0!=b[this.ptr+13|0]},this.init=function(e,t){this.set_adjusted_ptr(0),this.set_type(e),this.set_destructor(t)},this.set_adjusted_ptr=function(e){x[this.ptr+16>>2]=e},this.get_adjusted_ptr=function(){return x[this.ptr+16>>2]},this.get_exception_ptr=function(){if(bt(this.get_type()))return x[this.excPtr>>2];var e=this.get_adjusted_ptr();return 0!==e?e:this.excPtr}}n.noExitRuntime;var H,V,W,j=e=>{for(var t="",r=e;w[r];)t+=H[w[r++]];return t},Y={},q={},K={},X=e=>{throw new V(e)},Z=e=>{throw new W(e)},J=(e,t,r)=>{function i(t){var i=r(t);i.length!==e.length&&Z("Mismatched type converter count");for(var n=0;n{q.hasOwnProperty(e)?n[t]=q[e]:(s.push(e),Y.hasOwnProperty(e)||(Y[e]=[]),Y[e].push((()=>{n[t]=q[e],++a===s.length&&i(n)})))})),0===s.length&&i(n)};function Q(e,t,r={}){if(!("argPackAdvance"in t))throw new TypeError("registerType registeredInstance requires argPackAdvance");return function(e,t,r={}){var i=t.name;if(e||X(`type "${i}" must have a positive integer typeid pointer`),q.hasOwnProperty(e)){if(r.ignoreDuplicateRegistrations)return;X(`Cannot register type '${i}' twice`)}if(q[e]=t,delete K[e],Y.hasOwnProperty(e)){var n=Y[e];delete Y[e],n.forEach((e=>e()))}}(e,t,r)}var ee,te=e=>{X(e.$$.ptrType.registeredClass.name+" instance already deleted")},re=!1,ie=e=>{},ne=e=>{e.count.value-=1,0===e.count.value&&(e=>{e.smartPtr?e.smartPtrType.rawDestructor(e.smartPtr):e.ptrType.registeredClass.rawDestructor(e.ptr)})(e)},se=(e,t,r)=>{if(t===r)return e;if(void 0===r.baseClass)return null;var i=se(e,t,r.baseClass);return null===i?null:r.downcast(i)},ae={},oe=()=>Object.keys(he).length,le=()=>{var e=[];for(var t in he)he.hasOwnProperty(t)&&e.push(he[t]);return e},de=[],ue=()=>{for(;de.length;){var e=de.pop();e.$$.deleteScheduled=!1,e.delete()}},ce=e=>{ee=e,de.length&&ee&&ee(ue)},he={},fe=(e,t)=>(t=((e,t)=>{for(void 0===t&&X("ptr should not be undefined");e.baseClass;)t=e.upcast(t),e=e.baseClass;return t})(e,t),he[t]),pe=(e,t)=>(t.ptrType&&t.ptr||Z("makeClassHandle requires ptr and ptrType"),!!t.smartPtrType!=!!t.smartPtr&&Z("Both smartPtrType and smartPtr must be specified"),t.count={value:1},_e(Object.create(e,{$$:{value:t}})));function me(e){var t=this.getPointee(e);if(!t)return this.destructor(e),null;var r=fe(this.registeredClass,t);if(void 0!==r){if(0===r.$$.count.value)return r.$$.ptr=t,r.$$.smartPtr=e,r.clone();var i=r.clone();return this.destructor(e),i}function n(){return this.isSmartPointer?pe(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:t,smartPtrType:this,smartPtr:e}):pe(this.registeredClass.instancePrototype,{ptrType:this,ptr:e})}var s,a=this.registeredClass.getActualType(t),o=ae[a];if(!o)return n.call(this);s=this.isConst?o.constPointerType:o.pointerType;var l=se(t,this.registeredClass,s.registeredClass);return null===l?n.call(this):this.isSmartPointer?pe(s.registeredClass.instancePrototype,{ptrType:s,ptr:l,smartPtrType:this,smartPtr:e}):pe(s.registeredClass.instancePrototype,{ptrType:s,ptr:l})}var _e=e=>"undefined"==typeof FinalizationRegistry?(_e=e=>e,e):(re=new FinalizationRegistry((e=>{ne(e.$$)})),_e=e=>{var t=e.$$;if(t.smartPtr){var r={$$:t};re.register(e,r,e)}return e},ie=e=>re.unregister(e),_e(e));function ye(){}var ge=(e,t)=>Object.defineProperty(t,"name",{value:e}),ve=(e,t,r)=>{if(void 0===e[t].overloadTable){var i=e[t];e[t]=function(){return e[t].overloadTable.hasOwnProperty(arguments.length)||X(`Function '${r}' called with an invalid number of arguments (${arguments.length}) - expects one of (${e[t].overloadTable})!`),e[t].overloadTable[arguments.length].apply(this,arguments)},e[t].overloadTable=[],e[t].overloadTable[i.argCount]=i}};function be(e,t,r,i,n,s,a,o){this.name=e,this.constructor=t,this.instancePrototype=r,this.rawDestructor=i,this.baseClass=n,this.getActualType=s,this.upcast=a,this.downcast=o,this.pureVirtualFunctions=[]}var we=(e,t,r)=>{for(;t!==r;)t.upcast||X(`Expected null or instance of ${r.name}, got an instance of ${t.name}`),e=t.upcast(e),t=t.baseClass;return e};function Se(e,t){if(null===t)return this.isReference&&X(`null is not a valid ${this.name}`),0;t.$$||X(`Cannot pass "${je(t)}" as a ${this.name}`),t.$$.ptr||X(`Cannot pass deleted object as a pointer of type ${this.name}`);var r=t.$$.ptrType.registeredClass;return we(t.$$.ptr,r,this.registeredClass)}function Ee(e,t){var r;if(null===t)return this.isReference&&X(`null is not a valid ${this.name}`),this.isSmartPointer?(r=this.rawConstructor(),null!==e&&e.push(this.rawDestructor,r),r):0;t.$$||X(`Cannot pass "${je(t)}" as a ${this.name}`),t.$$.ptr||X(`Cannot pass deleted object as a pointer of type ${this.name}`),!this.isConst&&t.$$.ptrType.isConst&&X(`Cannot convert argument of type ${t.$$.smartPtrType?t.$$.smartPtrType.name:t.$$.ptrType.name} to parameter type ${this.name}`);var i=t.$$.ptrType.registeredClass;if(r=we(t.$$.ptr,i,this.registeredClass),this.isSmartPointer)switch(void 0===t.$$.smartPtr&&X("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:t.$$.smartPtrType===this?r=t.$$.smartPtr:X(`Cannot convert argument of type ${t.$$.smartPtrType?t.$$.smartPtrType.name:t.$$.ptrType.name} to parameter type ${this.name}`);break;case 1:r=t.$$.smartPtr;break;case 2:if(t.$$.smartPtrType===this)r=t.$$.smartPtr;else{var n=t.clone();r=this.rawShare(r,He.toHandle((()=>n.delete()))),null!==e&&e.push(this.rawDestructor,r)}break;default:X("Unsupporting sharing policy")}return r}function Ue(e,t){if(null===t)return this.isReference&&X(`null is not a valid ${this.name}`),0;t.$$||X(`Cannot pass "${je(t)}" as a ${this.name}`),t.$$.ptr||X(`Cannot pass deleted object as a pointer of type ${this.name}`),t.$$.ptrType.isConst&&X(`Cannot convert argument of type ${t.$$.ptrType.name} to parameter type ${this.name}`);var r=t.$$.ptrType.registeredClass;return we(t.$$.ptr,r,this.registeredClass)}function xe(e){return this.fromWireType(x[e>>2])}function Ae(e,t,r,i,n,s,a,o,l,d,u){this.name=e,this.registeredClass=t,this.isReference=r,this.isConst=i,this.isSmartPointer=n,this.pointeeType=s,this.sharingPolicy=a,this.rawGetPointee=o,this.rawConstructor=l,this.rawShare=d,this.rawDestructor=u,n||void 0!==t.baseClass?this.toWireType=Ee:i?(this.toWireType=Se,this.destructorFunction=null):(this.toWireType=Ue,this.destructorFunction=null)}var Te,ke,Ce=[],Be=e=>{var t=Ce[e];return t||(e>=Ce.length&&(Ce.length=e+1),Ce[e]=t=Te.get(e)),t},De=(e,t,r)=>e.includes("j")?((e,t,r)=>{var i=n["dynCall_"+e];return r&&r.length?i.apply(null,[t].concat(r)):i.call(null,t)})(e,t,r):Be(t).apply(null,r),Pe=(e,t)=>{var r,i,n,s=(e=j(e)).includes("j")?(r=e,i=t,n=[],function(){return n.length=0,Object.assign(n,arguments),De(r,i,n)}):Be(t);return"function"!=typeof s&&X(`unknown function pointer with signature ${e}: ${t}`),s},Fe=e=>{var t=vt(e),r=j(t);return yt(t),r},Ie=(e,t)=>{var r=[],i={};throw t.forEach((function e(t){i[t]||q[t]||(K[t]?K[t].forEach(e):(r.push(t),i[t]=!0))})),new ke(`${e}: `+r.map(Fe).join([", "]))},Le=(e,t)=>{for(var r=[],i=0;i>2]);return r},Re=e=>{for(;e.length;){var t=e.pop();e.pop()(t)}};function ze(e,t){if(!(e instanceof Function))throw new TypeError(`new_ called with constructor type ${typeof e} which is not a function`);var r=ge(e.name||"unknownFunctionName",(function(){}));r.prototype=e.prototype;var i=new r,n=e.apply(i,t);return n instanceof Object?n:i}function Me(e,t,r,i,n,s){var a=t.length;a<2&&X("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var o=null!==t[1]&&null!==r,l=!1,d=1;d0?", ":"")+h),f+=(u||s?"var rv = ":"")+"invoker(fn"+(h.length>0?", ":"")+h+");\n",l)f+="runDestructors(destructors);\n";else for(d=o?1:2;d{e>=Ne.reserved&&0==--Ne.get(e).refcount&&Ne.free(e)},Ge=()=>{for(var e=0,t=Ne.reserved;t(e||X("Cannot use deleted val. handle = "+e),Ne.get(e).value),toHandle:e=>{switch(e){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:return Ne.allocate({refcount:1,value:e})}}};function Ve(e){return this.fromWireType(U[e>>2])}var We,je=e=>{if(null===e)return"null";var t=typeof e;return"object"===t||"array"===t||"function"===t?e.toString():""+e},Ye=(e,t)=>{switch(t){case 4:return function(e){return this.fromWireType(A[e>>2])};case 8:return function(e){return this.fromWireType(T[e>>3])};default:throw new TypeError(`invalid float width (${t}): ${e}`)}},qe=(e,t,r)=>{switch(t){case 1:return r?e=>b[0|e]:e=>w[0|e];case 2:return r?e=>S[e>>1]:e=>E[e>>1];case 4:return r?e=>U[e>>2]:e=>x[e>>2];default:throw new TypeError(`invalid integer width (${t}): ${e}`)}},Ke="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0,Xe=(e,t,r)=>{for(var i=t+r,n=t;e[n]&&!(n>=i);)++n;if(n-t>16&&e.buffer&&Ke)return Ke.decode(e.subarray(t,n));for(var s="";t>10,56320|1023&d)}}else s+=String.fromCharCode((31&a)<<6|o)}else s+=String.fromCharCode(a)}return s},Ze=(e,t)=>e?Xe(w,e,t):"",Je="undefined"!=typeof TextDecoder?new TextDecoder("utf-16le"):void 0,Qe=(e,t)=>{for(var r=e,i=r>>1,n=i+t/2;!(i>=n)&&E[i];)++i;if((r=i<<1)-e>32&&Je)return Je.decode(w.subarray(e,r));for(var s="",a=0;!(a>=t/2);++a){var o=S[e+2*a>>1];if(0==o)break;s+=String.fromCharCode(o)}return s},et=(e,t,r)=>{if(void 0===r&&(r=2147483647),r<2)return 0;for(var i=t,n=(r-=2)<2*e.length?r/2:e.length,s=0;s>1]=a,t+=2}return S[t>>1]=0,t-i},tt=e=>2*e.length,rt=(e,t)=>{for(var r=0,i="";!(r>=t/4);){var n=U[e+4*r>>2];if(0==n)break;if(++r,n>=65536){var s=n-65536;i+=String.fromCharCode(55296|s>>10,56320|1023&s)}else i+=String.fromCharCode(n)}return i},it=(e,t,r)=>{if(void 0===r&&(r=2147483647),r<4)return 0;for(var i=t,n=i+r-4,s=0;s=55296&&a<=57343&&(a=65536+((1023&a)<<10)|1023&e.charCodeAt(++s)),U[t>>2]=a,(t+=4)+4>n)break}return U[t>>2]=0,t-i},nt=e=>{for(var t=0,r=0;r=55296&&i<=57343&&++r,t+=4}return t},st={},at=e=>{var t=st[e];return void 0===t?j(e):t},ot=[],lt=(e,t)=>{var r=q[e];return void 0===r&&X(t+" has unknown type "+Fe(e)),r},dt=(e,t,r)=>{var i=[],n=e.toWireType(i,r);return i.length&&(x[t>>2]=He.toHandle(i)),n};We=()=>performance.now();var ut,ct,ht,ft=[null,[],[]];(()=>{for(var e=new Array(256),t=0;t<256;++t)e[t]=String.fromCharCode(t);H=e})(),V=n.BindingError=class extends Error{constructor(e){super(e),this.name="BindingError"}},W=n.InternalError=class extends Error{constructor(e){super(e),this.name="InternalError"}},Object.assign(ye.prototype,{isAliasOf(e){if(!(this instanceof ye))return!1;if(!(e instanceof ye))return!1;var t=this.$$.ptrType.registeredClass,r=this.$$.ptr;e.$$=e.$$;for(var i=e.$$.ptrType.registeredClass,n=e.$$.ptr;t.baseClass;)r=t.upcast(r),t=t.baseClass;for(;i.baseClass;)n=i.upcast(n),i=i.baseClass;return t===i&&r===n},clone(){if(this.$$.ptr||te(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var e,t=_e(Object.create(Object.getPrototypeOf(this),{$$:{value:(e=this.$$,{count:e.count,deleteScheduled:e.deleteScheduled,preservePointerOnDelete:e.preservePointerOnDelete,ptr:e.ptr,ptrType:e.ptrType,smartPtr:e.smartPtr,smartPtrType:e.smartPtrType})}}));return t.$$.count.value+=1,t.$$.deleteScheduled=!1,t},delete(){this.$$.ptr||te(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&X("Object already scheduled for deletion"),ie(this),ne(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)},isDeleted(){return!this.$$.ptr},deleteLater(){return this.$$.ptr||te(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&X("Object already scheduled for deletion"),de.push(this),1===de.length&&ee&&ee(ue),this.$$.deleteScheduled=!0,this}}),n.getInheritedInstanceCount=oe,n.getLiveInheritedInstances=le,n.flushPendingDeletes=ue,n.setDelayFunction=ce,Object.assign(Ae.prototype,{getPointee(e){return this.rawGetPointee&&(e=this.rawGetPointee(e)),e},destructor(e){this.rawDestructor&&this.rawDestructor(e)},argPackAdvance:8,readValueFromPointer:xe,deleteObject(e){null!==e&&e.delete()},fromWireType:me}),ke=n.UnboundTypeError=(ut=Error,(ht=ge(ct="UnboundTypeError",(function(e){this.name=ct,this.message=e;var t=new Error(e).stack;void 0!==t&&(this.stack=this.toString()+"\n"+t.replace(/^Error(:[^\n]*)?\n/,""))}))).prototype=Object.create(ut.prototype),ht.prototype.constructor=ht,ht.prototype.toString=function(){return void 0===this.message?this.name:`${this.name}: ${this.message}`},ht),Object.assign(Oe.prototype,{get(e){return this.allocated[e]},has(e){return void 0!==this.allocated[e]},allocate(e){var t=this.freelist.pop()||this.allocated.length;return this.allocated[t]=e,t},free(e){this.allocated[e]=void 0,this.freelist.push(e)}}),Ne.allocated.push({value:void 0},{value:null},{value:!0},{value:!1}),Ne.reserved=Ne.allocated.length,n.count_emval_handles=Ge;var pt,mt={o:(e,t,r)=>{throw new G(e).init(t,r),e},r:(e,t,r,i,n)=>{},x:(e,t,r,i)=>{Q(e,{name:t=j(t),fromWireType:function(e){return!!e},toWireType:function(e,t){return t?r:i},argPackAdvance:8,readValueFromPointer:function(e){return this.fromWireType(w[e])},destructorFunction:null})},q:(e,t,r,i,s,a,o,l,d,u,c,h,f)=>{c=j(c),a=Pe(s,a),l&&(l=Pe(o,l)),u&&(u=Pe(d,u)),f=Pe(h,f);var p=(e=>{if(void 0===e)return"_unknown";var t=(e=e.replace(/[^a-zA-Z0-9_]/g,"$")).charCodeAt(0);return t>=48&&t<=57?`_${e}`:e})(c);((e,t,r)=>{n.hasOwnProperty(e)?((void 0===r||void 0!==n[e].overloadTable&&void 0!==n[e].overloadTable[r])&&X(`Cannot register public name '${e}' twice`),ve(n,e,e),n.hasOwnProperty(r)&&X(`Cannot register multiple overloads of a function with the same number of arguments (${r})!`),n[e].overloadTable[r]=t):(n[e]=t,void 0!==r&&(n[e].numArguments=r))})(p,(function(){Ie(`Cannot construct ${c} due to unbound types`,[i])})),J([e,t,r],i?[i]:[],(function(t){var r,s;t=t[0],s=i?(r=t.registeredClass).instancePrototype:ye.prototype;var o=ge(c,(function(){if(Object.getPrototypeOf(this)!==d)throw new V("Use 'new' to construct "+c);if(void 0===h.constructor_body)throw new V(c+" has no accessible constructor");var e=h.constructor_body[arguments.length];if(void 0===e)throw new V(`Tried to invoke ctor of ${c} with invalid number of parameters (${arguments.length}) - expected (${Object.keys(h.constructor_body).toString()}) parameters instead!`);return e.apply(this,arguments)})),d=Object.create(s,{constructor:{value:o}});o.prototype=d;var h=new be(c,o,d,f,r,a,l,u);h.baseClass&&(void 0===h.baseClass.__derivedClasses&&(h.baseClass.__derivedClasses=[]),h.baseClass.__derivedClasses.push(h));var m=new Ae(c,h,!0,!1,!1),_=new Ae(c+"*",h,!1,!1,!1),y=new Ae(c+" const*",h,!1,!0,!1);return ae[e]={pointerType:_,constPointerType:y},((e,t,r)=>{n.hasOwnProperty(e)||Z("Replacing nonexistant public symbol"),void 0!==n[e].overloadTable&&void 0!==r?n[e].overloadTable[r]=t:(n[e]=t,n[e].argCount=r)})(p,o),[m,_,y]}))},p:(e,t,r,i,n,s)=>{var a=Le(t,r);n=Pe(i,n),J([],[e],(function(e){var r=`constructor ${(e=e[0]).name}`;if(void 0===e.registeredClass.constructor_body&&(e.registeredClass.constructor_body=[]),void 0!==e.registeredClass.constructor_body[t-1])throw new V(`Cannot register multiple constructors with identical number of parameters (${t-1}) for class '${e.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`);return e.registeredClass.constructor_body[t-1]=()=>{Ie(`Cannot construct ${e.name} due to unbound types`,a)},J([],a,(i=>(i.splice(1,0,null),e.registeredClass.constructor_body[t-1]=Me(r,i,null,n,s),[]))),[]}))},h:(e,t,r,i,n,s,a,o,l)=>{var d=Le(r,i);t=(e=>{const t=(e=e.trim()).indexOf("(");return-1!==t?e.substr(0,t):e})(t=j(t)),s=Pe(n,s),J([],[e],(function(e){var i=`${(e=e[0]).name}.${t}`;function n(){Ie(`Cannot call ${i} due to unbound types`,d)}t.startsWith("@@")&&(t=Symbol[t.substring(2)]),o&&e.registeredClass.pureVirtualFunctions.push(t);var u=e.registeredClass.instancePrototype,c=u[t];return void 0===c||void 0===c.overloadTable&&c.className!==e.name&&c.argCount===r-2?(n.argCount=r-2,n.className=e.name,u[t]=n):(ve(u,t,i),u[t].overloadTable[r-2]=n),J([],d,(function(n){var o=Me(i,n,e,s,a,l);return void 0===u[t].overloadTable?(o.argCount=r-2,u[t]=o):u[t].overloadTable[r-2]=o,[]})),[]}))},w:(e,t)=>{Q(e,{name:t=j(t),fromWireType:e=>{var t=He.toValue(e);return $e(e),t},toWireType:(e,t)=>He.toHandle(t),argPackAdvance:8,readValueFromPointer:Ve,destructorFunction:null})},k:(e,t,r)=>{Q(e,{name:t=j(t),fromWireType:e=>e,toWireType:(e,t)=>t,argPackAdvance:8,readValueFromPointer:Ye(t,r),destructorFunction:null})},b:(e,t,r,i,n)=>{t=j(t);var s=e=>e;if(0===i){var a=32-8*r;s=e=>e<>>a}var o=t.includes("unsigned");Q(e,{name:t,fromWireType:s,toWireType:o?function(e,t){return this.name,t>>>0}:function(e,t){return this.name,t},argPackAdvance:8,readValueFromPointer:qe(t,r,0!==i),destructorFunction:null})},a:(e,t,r)=>{var i=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][t];function n(e){var t=x[e>>2],r=x[e+4>>2];return new i(b.buffer,r,t)}Q(e,{name:r=j(r),fromWireType:n,argPackAdvance:8,readValueFromPointer:n},{ignoreDuplicateRegistrations:!0})},l:(e,t)=>{var r="std::string"===(t=j(t));Q(e,{name:t,fromWireType(e){var t,i=x[e>>2],n=e+4;if(r)for(var s=n,a=0;a<=i;++a){var o=n+a;if(a==i||0==w[o]){var l=Ze(s,o-s);void 0===t?t=l:(t+=String.fromCharCode(0),t+=l),s=o+1}}else{var d=new Array(i);for(a=0;a{for(var t=0,r=0;r=55296&&i<=57343?(t+=4,++r):t+=3}return t})(t):t.length;var s=gt(4+i+1),a=s+4;if(x[s>>2]=i,r&&n)((e,t,r,i)=>{if(!(i>0))return 0;for(var n=r+i-1,s=0;s=55296&&a<=57343&&(a=65536+((1023&a)<<10)|1023&e.charCodeAt(++s)),a<=127){if(r>=n)break;t[r++]=a}else if(a<=2047){if(r+1>=n)break;t[r++]=192|a>>6,t[r++]=128|63&a}else if(a<=65535){if(r+2>=n)break;t[r++]=224|a>>12,t[r++]=128|a>>6&63,t[r++]=128|63&a}else{if(r+3>=n)break;t[r++]=240|a>>18,t[r++]=128|a>>12&63,t[r++]=128|a>>6&63,t[r++]=128|63&a}}t[r]=0})(t,w,a,i+1);else if(n)for(var o=0;o255&&(yt(a),X("String has UTF-16 code units that do not fit in 8 bits")),w[a+o]=l}else for(o=0;o{var i,n,s,a,o;r=j(r),2===t?(i=Qe,n=et,a=tt,s=()=>E,o=1):4===t&&(i=rt,n=it,a=nt,s=()=>x,o=2),Q(e,{name:r,fromWireType:e=>{for(var r,n=x[e>>2],a=s(),l=e+4,d=0;d<=n;++d){var u=e+4+d*t;if(d==n||0==a[u>>o]){var c=i(l,u-l);void 0===r?r=c:(r+=String.fromCharCode(0),r+=c),l=u+t}}return yt(e),r},toWireType:(e,i)=>{"string"!=typeof i&&X(`Cannot pass non-string to C++ string type ${r}`);var s=a(i),l=gt(4+s+t);return x[l>>2]=s>>o,n(i,l+4,s+t),null!==e&&e.push(yt,l),l},argPackAdvance:8,readValueFromPointer:Ve,destructorFunction(e){yt(e)}})},y:(e,t)=>{Q(e,{isVoid:!0,name:t=j(t),argPackAdvance:0,fromWireType:()=>{},toWireType:(e,t)=>{}})},g:(e,t,r,i,n)=>(e=ot[e])(t=He.toValue(t),t[r=at(r)],i,n),c:$e,f:(e,t,r)=>{var i=((e,t)=>{for(var r=new Array(e),i=0;i>2],"parameter "+i);return r})(e,t),n=i.shift();e--;var s="return function (obj, func, destructorsRef, args) {\n",a=0,o=[];0===r&&o.push("obj");for(var l=["retType"],d=[n],u=0;ue.name)).join(", ")}) => ${n.name}>`;return c=ge(p,f),h=ot.length,ot.push(c),h},z:e=>{e>4&&(Ne.get(e).refcount+=1)},m:e=>He.toHandle(at(e)),B:()=>He.toHandle({}),v:e=>He.toHandle(Ze(e)),e:e=>{var t=He.toValue(e);Re(t),$e(e)},n:(e,t,r)=>{e=He.toValue(e),t=He.toValue(t),r=He.toValue(r),e[t]=r},A:(e,t)=>{var r=(e=lt(e,"_emval_take_value")).readValueFromPointer(t);return He.toHandle(r)},j:()=>{I("")},d:We,u:(e,t,r)=>w.copyWithin(e,t,t+r),s:e=>{w.length,I("OOM")},t:(e,t,r,i)=>{for(var n,s,a,o=0,l=0;l>2],u=x[t+4>>2];t+=8;for(var c=0;c>2]=o,0}},_t=function(){var e,t,r,s,a={a:mt};function o(e,t){var r,i;return _t=e.exports,y=_t.C,r=y.buffer,n.HEAP8=b=new Int8Array(r),n.HEAP16=S=new Int16Array(r),n.HEAPU8=w=new Uint8Array(r),n.HEAPU16=E=new Uint16Array(r),n.HEAP32=U=new Int32Array(r),n.HEAPU32=x=new Uint32Array(r),n.HEAPF32=A=new Float32Array(r),n.HEAPF64=T=new Float64Array(r),Te=_t.G,i=_t.D,B.unshift(i),function(e){if(P--,n.monitorRunDependencies&&n.monitorRunDependencies(P),0==P&&F){var t=F;F=null,t()}}(),_t}if(P++,n.monitorRunDependencies&&n.monitorRunDependencies(P),n.instantiateWasm)try{return n.instantiateWasm(a,o)}catch(e){v(`Module.instantiateWasm callback failed with error: ${e}`),i(e)}return(e=_,t=L,r=a,s=function(e){o(e.instance)},e||"function"!=typeof WebAssembly.instantiateStreaming||z(t)||M(t)||c||"function"!=typeof fetch?N(t,r,s):fetch(t,{credentials:"same-origin"}).then((e=>WebAssembly.instantiateStreaming(e,r).then(s,(function(e){return v(`wasm streaming compile failed: ${e}`),v("falling back to ArrayBuffer instantiation"),N(t,r,s)}))))).catch(i),{}}(),yt=e=>(yt=_t.E)(e),gt=e=>(gt=_t.F)(e),vt=e=>(vt=_t.H)(e),bt=e=>(bt=_t.I)(e);function wt(){function e(){pt||(pt=!0,n.calledRun=!0,k||($(B),r(n),n.onRuntimeInitialized&&n.onRuntimeInitialized(),function(){if(n.postRun)for("function"==typeof n.postRun&&(n.postRun=[n.postRun]);n.postRun.length;)e=n.postRun.shift(),D.unshift(e);var e;$(D)}()))}P>0||(function(){if(n.preRun)for("function"==typeof n.preRun&&(n.preRun=[n.preRun]);n.preRun.length;)e=n.preRun.shift(),C.unshift(e);var e;$(C)}(),P>0||(n.setStatus?(n.setStatus("Running..."),setTimeout((function(){setTimeout((function(){n.setStatus("")}),1),e()}),1)):e()))}if(n.dynCall_jiji=(e,t,r,i,s)=>(n.dynCall_jiji=_t.J)(e,t,r,i,s),n.___start_em_js=143452,n.___stop_em_js=143509,F=function e(){pt||wt(),pt||(F=e)},n.preInit)for("function"==typeof n.preInit&&(n.preInit=[n.preInit]);n.preInit.length>0;)n.preInit.pop()();return wt(),t.ready}),r=(()=>{var e="undefined"==typeof document&&"undefined"==typeof location?new(require("url").URL)("file:"+__filename).href:"undefined"==typeof document?location.href:document.currentScript&&document.currentScript.src||new URL("decoder-pro-simd.js",document.baseURI).href;return function(t){var r,i;(t=void 0!==(t=t||{})?t:{}).ready=new Promise((function(e,t){r=e,i=t})),(t=void 0!==t?t:{}).locateFile=function(e){return"decoder-pro-audio.wasm"==e&&"undefined"!=typeof EASYPLAYER_PRO_AUDIO_WASM_URL&&""!=EASYPLAYER_PRO_AUDIO_WASM_URL?EASYPLAYER_PRO_AUDIO_WASM_URL:e};var n,s,a,o,l,d,u=Object.assign({},t),c="./this.program",h="object"==typeof window,f="function"==typeof importScripts,p="object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node,m="";p?(m=f?require("path").dirname(m)+"/":__dirname+"/",d=()=>{l||(o=require("fs"),l=require("path"))},n=function(e,t){return d(),e=l.normalize(e),o.readFileSync(e,t?void 0:"utf8")},a=e=>{var t=n(e,!0);return t.buffer||(t=new Uint8Array(t)),t},s=(e,t,r)=>{d(),e=l.normalize(e),o.readFile(e,(function(e,i){e?r(e):t(i.buffer)}))},process.argv.length>1&&(c=process.argv[1].replace(/\\/g,"/")),process.argv.slice(2),process.on("uncaughtException",(function(e){if(!(e instanceof ee))throw e})),process.on("unhandledRejection",(function(e){throw e})),t.inspect=function(){return"[Emscripten Module object]"}):(h||f)&&(f?m=self.location.href:"undefined"!=typeof document&&document.currentScript&&(m=document.currentScript.src),e&&(m=e),m=0!==m.indexOf("blob:")?m.substr(0,m.replace(/[?#].*/,"").lastIndexOf("/")+1):"",n=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.send(null),t.responseText},f&&(a=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.responseType="arraybuffer",t.send(null),new Uint8Array(t.response)}),s=(e,t,r)=>{var i=new XMLHttpRequest;i.open("GET",e,!0),i.responseType="arraybuffer",i.onload=()=>{200==i.status||0==i.status&&i.response?t(i.response):r()},i.onerror=r,i.send(null)});var _=t.print||console.log.bind(console),y=t.printErr||console.warn.bind(console);Object.assign(t,u),u=null,t.arguments&&t.arguments,t.thisProgram&&(c=t.thisProgram),t.quit&&t.quit;var g,v,b=4;t.wasmBinary&&(g=t.wasmBinary),t.noExitRuntime,"object"!=typeof WebAssembly&&W("no native wasm support detected");var w=!1;function S(e,t){e||W(t)}var E,U,x,A,T,k,C,B,D,P,F="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0;function I(e,t,r){for(var i=t+r,n=t;e[n]&&!(n>=i);)++n;if(n-t>16&&e.buffer&&F)return F.decode(e.subarray(t,n));for(var s="";t>10,56320|1023&d)}}else s+=String.fromCharCode((31&a)<<6|o)}else s+=String.fromCharCode(a)}return s}function L(e,t){return e?I(x,e,t):""}function R(e,t,r,i){if(!(i>0))return 0;for(var n=r,s=r+i-1,a=0;a=55296&&o<=57343)o=65536+((1023&o)<<10)|1023&e.charCodeAt(++a);if(o<=127){if(r>=s)break;t[r++]=o}else if(o<=2047){if(r+1>=s)break;t[r++]=192|o>>6,t[r++]=128|63&o}else if(o<=65535){if(r+2>=s)break;t[r++]=224|o>>12,t[r++]=128|o>>6&63,t[r++]=128|63&o}else{if(r+3>=s)break;t[r++]=240|o>>18,t[r++]=128|o>>12&63,t[r++]=128|o>>6&63,t[r++]=128|63&o}}return t[r]=0,r-n}function z(e){for(var t=0,r=0;r=55296&&i<=57343?(t+=4,++r):t+=3}return t}t.INITIAL_MEMORY;var M=[],O=[],N=[];var $=0,G=null;function H(e){$++,t.monitorRunDependencies&&t.monitorRunDependencies($)}function V(e){if($--,t.monitorRunDependencies&&t.monitorRunDependencies($),0==$&&G){var r=G;G=null,r()}}function W(e){t.onAbort&&t.onAbort(e),y(e="Aborted("+e+")"),w=!0,e+=". Build with -sASSERTIONS for more info.";var r=new WebAssembly.RuntimeError(e);throw i(r),r}var j,Y,q,K,X="data:application/octet-stream;base64,";function Z(e){return e.startsWith(X)}function J(e){return e.startsWith("file://")}function Q(e){try{if(e==j&&g)return new Uint8Array(g);if(a)return a(e);throw"both async and sync fetching of the wasm failed"}catch(e){W(e)}}function ee(e){this.name="ExitStatus",this.message="Program terminated with exit("+e+")",this.status=e}function te(e){for(;e.length>0;)e.shift()(t)}function re(e){this.excPtr=e,this.ptr=e-24,this.set_type=function(e){C[this.ptr+4>>2]=e},this.get_type=function(){return C[this.ptr+4>>2]},this.set_destructor=function(e){C[this.ptr+8>>2]=e},this.get_destructor=function(){return C[this.ptr+8>>2]},this.set_refcount=function(e){k[this.ptr>>2]=e},this.set_caught=function(e){e=e?1:0,U[this.ptr+12|0]=e},this.get_caught=function(){return 0!=U[this.ptr+12|0]},this.set_rethrown=function(e){e=e?1:0,U[this.ptr+13|0]=e},this.get_rethrown=function(){return 0!=U[this.ptr+13|0]},this.init=function(e,t){this.set_adjusted_ptr(0),this.set_type(e),this.set_destructor(t),this.set_refcount(0),this.set_caught(!1),this.set_rethrown(!1)},this.add_ref=function(){var e=k[this.ptr>>2];k[this.ptr>>2]=e+1},this.release_ref=function(){var e=k[this.ptr>>2];return k[this.ptr>>2]=e-1,1===e},this.set_adjusted_ptr=function(e){C[this.ptr+16>>2]=e},this.get_adjusted_ptr=function(){return C[this.ptr+16>>2]},this.get_exception_ptr=function(){if(Xt(this.get_type()))return C[this.excPtr>>2];var e=this.get_adjusted_ptr();return 0!==e?e:this.excPtr}}t.locateFile?Z(j="decoder-pro-audio.wasm")||(Y=j,j=t.locateFile?t.locateFile(Y,m):m+Y):j=new URL("decoder-pro-audio.wasm","undefined"==typeof document&&"undefined"==typeof location?new(require("url").URL)("file:"+__filename).href:"undefined"==typeof document?location.href:document.currentScript&&document.currentScript.src||new URL("decoder-pro-simd.js",document.baseURI).href).toString();var ie={isAbs:e=>"/"===e.charAt(0),splitPath:e=>/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(e).slice(1),normalizeArray:(e,t)=>{for(var r=0,i=e.length-1;i>=0;i--){var n=e[i];"."===n?e.splice(i,1):".."===n?(e.splice(i,1),r++):r&&(e.splice(i,1),r--)}if(t)for(;r;r--)e.unshift("..");return e},normalize:e=>{var t=ie.isAbs(e),r="/"===e.substr(-1);return(e=ie.normalizeArray(e.split("/").filter((e=>!!e)),!t).join("/"))||t||(e="."),e&&r&&(e+="/"),(t?"/":"")+e},dirname:e=>{var t=ie.splitPath(e),r=t[0],i=t[1];return r||i?(i&&(i=i.substr(0,i.length-1)),r+i):"."},basename:e=>{if("/"===e)return"/";var t=(e=(e=ie.normalize(e)).replace(/\/$/,"")).lastIndexOf("/");return-1===t?e:e.substr(t+1)},join:function(){var e=Array.prototype.slice.call(arguments,0);return ie.normalize(e.join("/"))},join2:(e,t)=>ie.normalize(e+"/"+t)};var ne={resolve:function(){for(var e="",t=!1,r=arguments.length-1;r>=-1&&!t;r--){var i=r>=0?arguments[r]:de.cwd();if("string"!=typeof i)throw new TypeError("Arguments to path.resolve must be strings");if(!i)return"";e=i+"/"+e,t=ie.isAbs(i)}return(t?"/":"")+(e=ie.normalizeArray(e.split("/").filter((e=>!!e)),!t).join("/"))||"."},relative:(e,t)=>{function r(e){for(var t=0;t=0&&""===e[r];r--);return t>r?[]:e.slice(t,r-t+1)}e=ne.resolve(e).substr(1),t=ne.resolve(t).substr(1);for(var i=r(e.split("/")),n=r(t.split("/")),s=Math.min(i.length,n.length),a=s,o=0;o0?r:z(e)+1,n=new Array(i),s=R(e,n,0,n.length);return t&&(n.length=s),n}var ae={ttys:[],init:function(){},shutdown:function(){},register:function(e,t){ae.ttys[e]={input:[],output:[],ops:t},de.registerDevice(e,ae.stream_ops)},stream_ops:{open:function(e){var t=ae.ttys[e.node.rdev];if(!t)throw new de.ErrnoError(43);e.tty=t,e.seekable=!1},close:function(e){e.tty.ops.flush(e.tty)},flush:function(e){e.tty.ops.flush(e.tty)},read:function(e,t,r,i,n){if(!e.tty||!e.tty.ops.get_char)throw new de.ErrnoError(60);for(var s=0,a=0;a0?r.slice(0,i).toString("utf-8"):null}else"undefined"!=typeof window&&"function"==typeof window.prompt?null!==(t=window.prompt("Input: "))&&(t+="\n"):"function"==typeof readline&&null!==(t=readline())&&(t+="\n");if(!t)return null;e.input=se(t,!0)}return e.input.shift()},put_char:function(e,t){null===t||10===t?(_(I(e.output,0)),e.output=[]):0!=t&&e.output.push(t)},flush:function(e){e.output&&e.output.length>0&&(_(I(e.output,0)),e.output=[])}},default_tty1_ops:{put_char:function(e,t){null===t||10===t?(y(I(e.output,0)),e.output=[]):0!=t&&e.output.push(t)},flush:function(e){e.output&&e.output.length>0&&(y(I(e.output,0)),e.output=[])}}};function oe(e){e=function(e,t){return Math.ceil(e/t)*t}(e,65536);var t=Kt(65536,e);return t?(function(e,t){x.fill(0,e,e+t)}(t,e),t):0}var le={ops_table:null,mount:function(e){return le.createNode(null,"/",16895,0)},createNode:function(e,t,r,i){if(de.isBlkdev(r)||de.isFIFO(r))throw new de.ErrnoError(63);le.ops_table||(le.ops_table={dir:{node:{getattr:le.node_ops.getattr,setattr:le.node_ops.setattr,lookup:le.node_ops.lookup,mknod:le.node_ops.mknod,rename:le.node_ops.rename,unlink:le.node_ops.unlink,rmdir:le.node_ops.rmdir,readdir:le.node_ops.readdir,symlink:le.node_ops.symlink},stream:{llseek:le.stream_ops.llseek}},file:{node:{getattr:le.node_ops.getattr,setattr:le.node_ops.setattr},stream:{llseek:le.stream_ops.llseek,read:le.stream_ops.read,write:le.stream_ops.write,allocate:le.stream_ops.allocate,mmap:le.stream_ops.mmap,msync:le.stream_ops.msync}},link:{node:{getattr:le.node_ops.getattr,setattr:le.node_ops.setattr,readlink:le.node_ops.readlink},stream:{}},chrdev:{node:{getattr:le.node_ops.getattr,setattr:le.node_ops.setattr},stream:de.chrdev_stream_ops}});var n=de.createNode(e,t,r,i);return de.isDir(n.mode)?(n.node_ops=le.ops_table.dir.node,n.stream_ops=le.ops_table.dir.stream,n.contents={}):de.isFile(n.mode)?(n.node_ops=le.ops_table.file.node,n.stream_ops=le.ops_table.file.stream,n.usedBytes=0,n.contents=null):de.isLink(n.mode)?(n.node_ops=le.ops_table.link.node,n.stream_ops=le.ops_table.link.stream):de.isChrdev(n.mode)&&(n.node_ops=le.ops_table.chrdev.node,n.stream_ops=le.ops_table.chrdev.stream),n.timestamp=Date.now(),e&&(e.contents[t]=n,e.timestamp=n.timestamp),n},getFileDataAsTypedArray:function(e){return e.contents?e.contents.subarray?e.contents.subarray(0,e.usedBytes):new Uint8Array(e.contents):new Uint8Array(0)},expandFileStorage:function(e,t){var r=e.contents?e.contents.length:0;if(!(r>=t)){t=Math.max(t,r*(r<1048576?2:1.125)>>>0),0!=r&&(t=Math.max(t,256));var i=e.contents;e.contents=new Uint8Array(t),e.usedBytes>0&&e.contents.set(i.subarray(0,e.usedBytes),0)}},resizeFileStorage:function(e,t){if(e.usedBytes!=t)if(0==t)e.contents=null,e.usedBytes=0;else{var r=e.contents;e.contents=new Uint8Array(t),r&&e.contents.set(r.subarray(0,Math.min(t,e.usedBytes))),e.usedBytes=t}},node_ops:{getattr:function(e){var t={};return t.dev=de.isChrdev(e.mode)?e.id:1,t.ino=e.id,t.mode=e.mode,t.nlink=1,t.uid=0,t.gid=0,t.rdev=e.rdev,de.isDir(e.mode)?t.size=4096:de.isFile(e.mode)?t.size=e.usedBytes:de.isLink(e.mode)?t.size=e.link.length:t.size=0,t.atime=new Date(e.timestamp),t.mtime=new Date(e.timestamp),t.ctime=new Date(e.timestamp),t.blksize=4096,t.blocks=Math.ceil(t.size/t.blksize),t},setattr:function(e,t){void 0!==t.mode&&(e.mode=t.mode),void 0!==t.timestamp&&(e.timestamp=t.timestamp),void 0!==t.size&&le.resizeFileStorage(e,t.size)},lookup:function(e,t){throw de.genericErrors[44]},mknod:function(e,t,r,i){return le.createNode(e,t,r,i)},rename:function(e,t,r){if(de.isDir(e.mode)){var i;try{i=de.lookupNode(t,r)}catch(e){}if(i)for(var n in i.contents)throw new de.ErrnoError(55)}delete e.parent.contents[e.name],e.parent.timestamp=Date.now(),e.name=r,t.contents[r]=e,t.timestamp=e.parent.timestamp,e.parent=t},unlink:function(e,t){delete e.contents[t],e.timestamp=Date.now()},rmdir:function(e,t){var r=de.lookupNode(e,t);for(var i in r.contents)throw new de.ErrnoError(55);delete e.contents[t],e.timestamp=Date.now()},readdir:function(e){var t=[".",".."];for(var r in e.contents)e.contents.hasOwnProperty(r)&&t.push(r);return t},symlink:function(e,t,r){var i=le.createNode(e,t,41471,0);return i.link=r,i},readlink:function(e){if(!de.isLink(e.mode))throw new de.ErrnoError(28);return e.link}},stream_ops:{read:function(e,t,r,i,n){var s=e.node.contents;if(n>=e.node.usedBytes)return 0;var a=Math.min(e.node.usedBytes-n,i);if(a>8&&s.subarray)t.set(s.subarray(n,n+a),r);else for(var o=0;o0||r+t{if(!(e=ne.resolve(de.cwd(),e)))return{path:"",node:null};if((t=Object.assign({follow_mount:!0,recurse_count:0},t)).recurse_count>8)throw new de.ErrnoError(32);for(var r=ie.normalizeArray(e.split("/").filter((e=>!!e)),!1),i=de.root,n="/",s=0;s40)throw new de.ErrnoError(32)}}return{path:n,node:i}},getPath:e=>{for(var t;;){if(de.isRoot(e)){var r=e.mount.mountpoint;return t?"/"!==r[r.length-1]?r+"/"+t:r+t:r}t=t?e.name+"/"+t:e.name,e=e.parent}},hashName:(e,t)=>{for(var r=0,i=0;i>>0)%de.nameTable.length},hashAddNode:e=>{var t=de.hashName(e.parent.id,e.name);e.name_next=de.nameTable[t],de.nameTable[t]=e},hashRemoveNode:e=>{var t=de.hashName(e.parent.id,e.name);if(de.nameTable[t]===e)de.nameTable[t]=e.name_next;else for(var r=de.nameTable[t];r;){if(r.name_next===e){r.name_next=e.name_next;break}r=r.name_next}},lookupNode:(e,t)=>{var r=de.mayLookup(e);if(r)throw new de.ErrnoError(r,e);for(var i=de.hashName(e.id,t),n=de.nameTable[i];n;n=n.name_next){var s=n.name;if(n.parent.id===e.id&&s===t)return n}return de.lookup(e,t)},createNode:(e,t,r,i)=>{var n=new de.FSNode(e,t,r,i);return de.hashAddNode(n),n},destroyNode:e=>{de.hashRemoveNode(e)},isRoot:e=>e===e.parent,isMountpoint:e=>!!e.mounted,isFile:e=>32768==(61440&e),isDir:e=>16384==(61440&e),isLink:e=>40960==(61440&e),isChrdev:e=>8192==(61440&e),isBlkdev:e=>24576==(61440&e),isFIFO:e=>4096==(61440&e),isSocket:e=>!(49152&~e),flagModes:{r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090},modeStringToFlags:e=>{var t=de.flagModes[e];if(void 0===t)throw new Error("Unknown file open mode: "+e);return t},flagsToPermissionString:e=>{var t=["r","w","rw"][3&e];return 512&e&&(t+="w"),t},nodePermissions:(e,t)=>de.ignorePermissions||(!t.includes("r")||292&e.mode)&&(!t.includes("w")||146&e.mode)&&(!t.includes("x")||73&e.mode)?0:2,mayLookup:e=>{var t=de.nodePermissions(e,"x");return t||(e.node_ops.lookup?0:2)},mayCreate:(e,t)=>{try{de.lookupNode(e,t);return 20}catch(e){}return de.nodePermissions(e,"wx")},mayDelete:(e,t,r)=>{var i;try{i=de.lookupNode(e,t)}catch(e){return e.errno}var n=de.nodePermissions(e,"wx");if(n)return n;if(r){if(!de.isDir(i.mode))return 54;if(de.isRoot(i)||de.getPath(i)===de.cwd())return 10}else if(de.isDir(i.mode))return 31;return 0},mayOpen:(e,t)=>e?de.isLink(e.mode)?32:de.isDir(e.mode)&&("r"!==de.flagsToPermissionString(t)||512&t)?31:de.nodePermissions(e,de.flagsToPermissionString(t)):44,MAX_OPEN_FDS:4096,nextfd:(e=0,t=de.MAX_OPEN_FDS)=>{for(var r=e;r<=t;r++)if(!de.streams[r])return r;throw new de.ErrnoError(33)},getStream:e=>de.streams[e],createStream:(e,t,r)=>{de.FSStream||(de.FSStream=function(){this.shared={}},de.FSStream.prototype={},Object.defineProperties(de.FSStream.prototype,{object:{get:function(){return this.node},set:function(e){this.node=e}},isRead:{get:function(){return 1!=(2097155&this.flags)}},isWrite:{get:function(){return!!(2097155&this.flags)}},isAppend:{get:function(){return 1024&this.flags}},flags:{get:function(){return this.shared.flags},set:function(e){this.shared.flags=e}},position:{get:function(){return this.shared.position},set:function(e){this.shared.position=e}}})),e=Object.assign(new de.FSStream,e);var i=de.nextfd(t,r);return e.fd=i,de.streams[i]=e,e},closeStream:e=>{de.streams[e]=null},chrdev_stream_ops:{open:e=>{var t=de.getDevice(e.node.rdev);e.stream_ops=t.stream_ops,e.stream_ops.open&&e.stream_ops.open(e)},llseek:()=>{throw new de.ErrnoError(70)}},major:e=>e>>8,minor:e=>255&e,makedev:(e,t)=>e<<8|t,registerDevice:(e,t)=>{de.devices[e]={stream_ops:t}},getDevice:e=>de.devices[e],getMounts:e=>{for(var t=[],r=[e];r.length;){var i=r.pop();t.push(i),r.push.apply(r,i.mounts)}return t},syncfs:(e,t)=>{"function"==typeof e&&(t=e,e=!1),de.syncFSRequests++,de.syncFSRequests>1&&y("warning: "+de.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work");var r=de.getMounts(de.root.mount),i=0;function n(e){return de.syncFSRequests--,t(e)}function s(e){if(e)return s.errored?void 0:(s.errored=!0,n(e));++i>=r.length&&n(null)}r.forEach((t=>{if(!t.type.syncfs)return s(null);t.type.syncfs(t,e,s)}))},mount:(e,t,r)=>{var i,n="/"===r,s=!r;if(n&&de.root)throw new de.ErrnoError(10);if(!n&&!s){var a=de.lookupPath(r,{follow_mount:!1});if(r=a.path,i=a.node,de.isMountpoint(i))throw new de.ErrnoError(10);if(!de.isDir(i.mode))throw new de.ErrnoError(54)}var o={type:e,opts:t,mountpoint:r,mounts:[]},l=e.mount(o);return l.mount=o,o.root=l,n?de.root=l:i&&(i.mounted=o,i.mount&&i.mount.mounts.push(o)),l},unmount:e=>{var t=de.lookupPath(e,{follow_mount:!1});if(!de.isMountpoint(t.node))throw new de.ErrnoError(28);var r=t.node,i=r.mounted,n=de.getMounts(i);Object.keys(de.nameTable).forEach((e=>{for(var t=de.nameTable[e];t;){var r=t.name_next;n.includes(t.mount)&&de.destroyNode(t),t=r}})),r.mounted=null;var s=r.mount.mounts.indexOf(i);r.mount.mounts.splice(s,1)},lookup:(e,t)=>e.node_ops.lookup(e,t),mknod:(e,t,r)=>{var i=de.lookupPath(e,{parent:!0}).node,n=ie.basename(e);if(!n||"."===n||".."===n)throw new de.ErrnoError(28);var s=de.mayCreate(i,n);if(s)throw new de.ErrnoError(s);if(!i.node_ops.mknod)throw new de.ErrnoError(63);return i.node_ops.mknod(i,n,t,r)},create:(e,t)=>(t=void 0!==t?t:438,t&=4095,t|=32768,de.mknod(e,t,0)),mkdir:(e,t)=>(t=void 0!==t?t:511,t&=1023,t|=16384,de.mknod(e,t,0)),mkdirTree:(e,t)=>{for(var r=e.split("/"),i="",n=0;n(void 0===r&&(r=t,t=438),t|=8192,de.mknod(e,t,r)),symlink:(e,t)=>{if(!ne.resolve(e))throw new de.ErrnoError(44);var r=de.lookupPath(t,{parent:!0}).node;if(!r)throw new de.ErrnoError(44);var i=ie.basename(t),n=de.mayCreate(r,i);if(n)throw new de.ErrnoError(n);if(!r.node_ops.symlink)throw new de.ErrnoError(63);return r.node_ops.symlink(r,i,e)},rename:(e,t)=>{var r,i,n=ie.dirname(e),s=ie.dirname(t),a=ie.basename(e),o=ie.basename(t);if(r=de.lookupPath(e,{parent:!0}).node,i=de.lookupPath(t,{parent:!0}).node,!r||!i)throw new de.ErrnoError(44);if(r.mount!==i.mount)throw new de.ErrnoError(75);var l,d=de.lookupNode(r,a),u=ne.relative(e,s);if("."!==u.charAt(0))throw new de.ErrnoError(28);if("."!==(u=ne.relative(t,n)).charAt(0))throw new de.ErrnoError(55);try{l=de.lookupNode(i,o)}catch(e){}if(d!==l){var c=de.isDir(d.mode),h=de.mayDelete(r,a,c);if(h)throw new de.ErrnoError(h);if(h=l?de.mayDelete(i,o,c):de.mayCreate(i,o))throw new de.ErrnoError(h);if(!r.node_ops.rename)throw new de.ErrnoError(63);if(de.isMountpoint(d)||l&&de.isMountpoint(l))throw new de.ErrnoError(10);if(i!==r&&(h=de.nodePermissions(r,"w")))throw new de.ErrnoError(h);de.hashRemoveNode(d);try{r.node_ops.rename(d,i,o)}catch(e){throw e}finally{de.hashAddNode(d)}}},rmdir:e=>{var t=de.lookupPath(e,{parent:!0}).node,r=ie.basename(e),i=de.lookupNode(t,r),n=de.mayDelete(t,r,!0);if(n)throw new de.ErrnoError(n);if(!t.node_ops.rmdir)throw new de.ErrnoError(63);if(de.isMountpoint(i))throw new de.ErrnoError(10);t.node_ops.rmdir(t,r),de.destroyNode(i)},readdir:e=>{var t=de.lookupPath(e,{follow:!0}).node;if(!t.node_ops.readdir)throw new de.ErrnoError(54);return t.node_ops.readdir(t)},unlink:e=>{var t=de.lookupPath(e,{parent:!0}).node;if(!t)throw new de.ErrnoError(44);var r=ie.basename(e),i=de.lookupNode(t,r),n=de.mayDelete(t,r,!1);if(n)throw new de.ErrnoError(n);if(!t.node_ops.unlink)throw new de.ErrnoError(63);if(de.isMountpoint(i))throw new de.ErrnoError(10);t.node_ops.unlink(t,r),de.destroyNode(i)},readlink:e=>{var t=de.lookupPath(e).node;if(!t)throw new de.ErrnoError(44);if(!t.node_ops.readlink)throw new de.ErrnoError(28);return ne.resolve(de.getPath(t.parent),t.node_ops.readlink(t))},stat:(e,t)=>{var r=de.lookupPath(e,{follow:!t}).node;if(!r)throw new de.ErrnoError(44);if(!r.node_ops.getattr)throw new de.ErrnoError(63);return r.node_ops.getattr(r)},lstat:e=>de.stat(e,!0),chmod:(e,t,r)=>{var i;"string"==typeof e?i=de.lookupPath(e,{follow:!r}).node:i=e;if(!i.node_ops.setattr)throw new de.ErrnoError(63);i.node_ops.setattr(i,{mode:4095&t|-4096&i.mode,timestamp:Date.now()})},lchmod:(e,t)=>{de.chmod(e,t,!0)},fchmod:(e,t)=>{var r=de.getStream(e);if(!r)throw new de.ErrnoError(8);de.chmod(r.node,t)},chown:(e,t,r,i)=>{var n;"string"==typeof e?n=de.lookupPath(e,{follow:!i}).node:n=e;if(!n.node_ops.setattr)throw new de.ErrnoError(63);n.node_ops.setattr(n,{timestamp:Date.now()})},lchown:(e,t,r)=>{de.chown(e,t,r,!0)},fchown:(e,t,r)=>{var i=de.getStream(e);if(!i)throw new de.ErrnoError(8);de.chown(i.node,t,r)},truncate:(e,t)=>{if(t<0)throw new de.ErrnoError(28);var r;"string"==typeof e?r=de.lookupPath(e,{follow:!0}).node:r=e;if(!r.node_ops.setattr)throw new de.ErrnoError(63);if(de.isDir(r.mode))throw new de.ErrnoError(31);if(!de.isFile(r.mode))throw new de.ErrnoError(28);var i=de.nodePermissions(r,"w");if(i)throw new de.ErrnoError(i);r.node_ops.setattr(r,{size:t,timestamp:Date.now()})},ftruncate:(e,t)=>{var r=de.getStream(e);if(!r)throw new de.ErrnoError(8);if(!(2097155&r.flags))throw new de.ErrnoError(28);de.truncate(r.node,t)},utime:(e,t,r)=>{var i=de.lookupPath(e,{follow:!0}).node;i.node_ops.setattr(i,{timestamp:Math.max(t,r)})},open:(e,r,i)=>{if(""===e)throw new de.ErrnoError(44);var n;if(i=void 0===i?438:i,i=64&(r="string"==typeof r?de.modeStringToFlags(r):r)?4095&i|32768:0,"object"==typeof e)n=e;else{e=ie.normalize(e);try{n=de.lookupPath(e,{follow:!(131072&r)}).node}catch(e){}}var s=!1;if(64&r)if(n){if(128&r)throw new de.ErrnoError(20)}else n=de.mknod(e,i,0),s=!0;if(!n)throw new de.ErrnoError(44);if(de.isChrdev(n.mode)&&(r&=-513),65536&r&&!de.isDir(n.mode))throw new de.ErrnoError(54);if(!s){var a=de.mayOpen(n,r);if(a)throw new de.ErrnoError(a)}512&r&&!s&&de.truncate(n,0),r&=-131713;var o=de.createStream({node:n,path:de.getPath(n),flags:r,seekable:!0,position:0,stream_ops:n.stream_ops,ungotten:[],error:!1});return o.stream_ops.open&&o.stream_ops.open(o),!t.logReadFiles||1&r||(de.readFiles||(de.readFiles={}),e in de.readFiles||(de.readFiles[e]=1)),o},close:e=>{if(de.isClosed(e))throw new de.ErrnoError(8);e.getdents&&(e.getdents=null);try{e.stream_ops.close&&e.stream_ops.close(e)}catch(e){throw e}finally{de.closeStream(e.fd)}e.fd=null},isClosed:e=>null===e.fd,llseek:(e,t,r)=>{if(de.isClosed(e))throw new de.ErrnoError(8);if(!e.seekable||!e.stream_ops.llseek)throw new de.ErrnoError(70);if(0!=r&&1!=r&&2!=r)throw new de.ErrnoError(28);return e.position=e.stream_ops.llseek(e,t,r),e.ungotten=[],e.position},read:(e,t,r,i,n)=>{if(i<0||n<0)throw new de.ErrnoError(28);if(de.isClosed(e))throw new de.ErrnoError(8);if(1==(2097155&e.flags))throw new de.ErrnoError(8);if(de.isDir(e.node.mode))throw new de.ErrnoError(31);if(!e.stream_ops.read)throw new de.ErrnoError(28);var s=void 0!==n;if(s){if(!e.seekable)throw new de.ErrnoError(70)}else n=e.position;var a=e.stream_ops.read(e,t,r,i,n);return s||(e.position+=a),a},write:(e,t,r,i,n,s)=>{if(i<0||n<0)throw new de.ErrnoError(28);if(de.isClosed(e))throw new de.ErrnoError(8);if(!(2097155&e.flags))throw new de.ErrnoError(8);if(de.isDir(e.node.mode))throw new de.ErrnoError(31);if(!e.stream_ops.write)throw new de.ErrnoError(28);e.seekable&&1024&e.flags&&de.llseek(e,0,2);var a=void 0!==n;if(a){if(!e.seekable)throw new de.ErrnoError(70)}else n=e.position;var o=e.stream_ops.write(e,t,r,i,n,s);return a||(e.position+=o),o},allocate:(e,t,r)=>{if(de.isClosed(e))throw new de.ErrnoError(8);if(t<0||r<=0)throw new de.ErrnoError(28);if(!(2097155&e.flags))throw new de.ErrnoError(8);if(!de.isFile(e.node.mode)&&!de.isDir(e.node.mode))throw new de.ErrnoError(43);if(!e.stream_ops.allocate)throw new de.ErrnoError(138);e.stream_ops.allocate(e,t,r)},mmap:(e,t,r,i,n)=>{if(2&i&&!(2&n)&&2!=(2097155&e.flags))throw new de.ErrnoError(2);if(1==(2097155&e.flags))throw new de.ErrnoError(2);if(!e.stream_ops.mmap)throw new de.ErrnoError(43);return e.stream_ops.mmap(e,t,r,i,n)},msync:(e,t,r,i,n)=>e&&e.stream_ops.msync?e.stream_ops.msync(e,t,r,i,n):0,munmap:e=>0,ioctl:(e,t,r)=>{if(!e.stream_ops.ioctl)throw new de.ErrnoError(59);return e.stream_ops.ioctl(e,t,r)},readFile:(e,t={})=>{if(t.flags=t.flags||0,t.encoding=t.encoding||"binary","utf8"!==t.encoding&&"binary"!==t.encoding)throw new Error('Invalid encoding type "'+t.encoding+'"');var r,i=de.open(e,t.flags),n=de.stat(e).size,s=new Uint8Array(n);return de.read(i,s,0,n,0),"utf8"===t.encoding?r=I(s,0):"binary"===t.encoding&&(r=s),de.close(i),r},writeFile:(e,t,r={})=>{r.flags=r.flags||577;var i=de.open(e,r.flags,r.mode);if("string"==typeof t){var n=new Uint8Array(z(t)+1),s=R(t,n,0,n.length);de.write(i,n,0,s,void 0,r.canOwn)}else{if(!ArrayBuffer.isView(t))throw new Error("Unsupported data type");de.write(i,t,0,t.byteLength,void 0,r.canOwn)}de.close(i)},cwd:()=>de.currentPath,chdir:e=>{var t=de.lookupPath(e,{follow:!0});if(null===t.node)throw new de.ErrnoError(44);if(!de.isDir(t.node.mode))throw new de.ErrnoError(54);var r=de.nodePermissions(t.node,"x");if(r)throw new de.ErrnoError(r);de.currentPath=t.path},createDefaultDirectories:()=>{de.mkdir("/tmp"),de.mkdir("/home"),de.mkdir("/home/web_user")},createDefaultDevices:()=>{de.mkdir("/dev"),de.registerDevice(de.makedev(1,3),{read:()=>0,write:(e,t,r,i,n)=>i}),de.mkdev("/dev/null",de.makedev(1,3)),ae.register(de.makedev(5,0),ae.default_tty_ops),ae.register(de.makedev(6,0),ae.default_tty1_ops),de.mkdev("/dev/tty",de.makedev(5,0)),de.mkdev("/dev/tty1",de.makedev(6,0));var e=function(){if("object"==typeof crypto&&"function"==typeof crypto.getRandomValues){var e=new Uint8Array(1);return()=>(crypto.getRandomValues(e),e[0])}if(p)try{var t=require("crypto");return()=>t.randomBytes(1)[0]}catch(e){}return()=>W("randomDevice")}();de.createDevice("/dev","random",e),de.createDevice("/dev","urandom",e),de.mkdir("/dev/shm"),de.mkdir("/dev/shm/tmp")},createSpecialDirectories:()=>{de.mkdir("/proc");var e=de.mkdir("/proc/self");de.mkdir("/proc/self/fd"),de.mount({mount:()=>{var t=de.createNode(e,"fd",16895,73);return t.node_ops={lookup:(e,t)=>{var r=+t,i=de.getStream(r);if(!i)throw new de.ErrnoError(8);var n={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>i.path}};return n.parent=n,n}},t}},{},"/proc/self/fd")},createStandardStreams:()=>{t.stdin?de.createDevice("/dev","stdin",t.stdin):de.symlink("/dev/tty","/dev/stdin"),t.stdout?de.createDevice("/dev","stdout",null,t.stdout):de.symlink("/dev/tty","/dev/stdout"),t.stderr?de.createDevice("/dev","stderr",null,t.stderr):de.symlink("/dev/tty1","/dev/stderr"),de.open("/dev/stdin",0),de.open("/dev/stdout",1),de.open("/dev/stderr",1)},ensureErrnoError:()=>{de.ErrnoError||(de.ErrnoError=function(e,t){this.node=t,this.setErrno=function(e){this.errno=e},this.setErrno(e),this.message="FS error"},de.ErrnoError.prototype=new Error,de.ErrnoError.prototype.constructor=de.ErrnoError,[44].forEach((e=>{de.genericErrors[e]=new de.ErrnoError(e),de.genericErrors[e].stack=""})))},staticInit:()=>{de.ensureErrnoError(),de.nameTable=new Array(4096),de.mount(le,{},"/"),de.createDefaultDirectories(),de.createDefaultDevices(),de.createSpecialDirectories(),de.filesystems={MEMFS:le}},init:(e,r,i)=>{de.init.initialized=!0,de.ensureErrnoError(),t.stdin=e||t.stdin,t.stdout=r||t.stdout,t.stderr=i||t.stderr,de.createStandardStreams()},quit:()=>{de.init.initialized=!1;for(var e=0;e{var r=0;return e&&(r|=365),t&&(r|=146),r},findObject:(e,t)=>{var r=de.analyzePath(e,t);return r.exists?r.object:null},analyzePath:(e,t)=>{try{e=(i=de.lookupPath(e,{follow:!t})).path}catch(e){}var r={isRoot:!1,exists:!1,error:0,name:null,path:null,object:null,parentExists:!1,parentPath:null,parentObject:null};try{var i=de.lookupPath(e,{parent:!0});r.parentExists=!0,r.parentPath=i.path,r.parentObject=i.node,r.name=ie.basename(e),i=de.lookupPath(e,{follow:!t}),r.exists=!0,r.path=i.path,r.object=i.node,r.name=i.node.name,r.isRoot="/"===i.path}catch(e){r.error=e.errno}return r},createPath:(e,t,r,i)=>{e="string"==typeof e?e:de.getPath(e);for(var n=t.split("/").reverse();n.length;){var s=n.pop();if(s){var a=ie.join2(e,s);try{de.mkdir(a)}catch(e){}e=a}}return a},createFile:(e,t,r,i,n)=>{var s=ie.join2("string"==typeof e?e:de.getPath(e),t),a=de.getMode(i,n);return de.create(s,a)},createDataFile:(e,t,r,i,n,s)=>{var a=t;e&&(e="string"==typeof e?e:de.getPath(e),a=t?ie.join2(e,t):e);var o=de.getMode(i,n),l=de.create(a,o);if(r){if("string"==typeof r){for(var d=new Array(r.length),u=0,c=r.length;u{var n=ie.join2("string"==typeof e?e:de.getPath(e),t),s=de.getMode(!!r,!!i);de.createDevice.major||(de.createDevice.major=64);var a=de.makedev(de.createDevice.major++,0);return de.registerDevice(a,{open:e=>{e.seekable=!1},close:e=>{i&&i.buffer&&i.buffer.length&&i(10)},read:(e,t,i,n,s)=>{for(var a=0,o=0;o{for(var a=0;a{if(e.isDevice||e.isFolder||e.link||e.contents)return!0;if("undefined"!=typeof XMLHttpRequest)throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.");if(!n)throw new Error("Cannot load without read() or XMLHttpRequest.");try{e.contents=se(n(e.url),!0),e.usedBytes=e.contents.length}catch(e){throw new de.ErrnoError(29)}},createLazyFile:(e,t,r,i,n)=>{function s(){this.lengthKnown=!1,this.chunks=[]}if(s.prototype.get=function(e){if(!(e>this.length-1||e<0)){var t=e%this.chunkSize,r=e/this.chunkSize|0;return this.getter(r)[t]}},s.prototype.setDataGetter=function(e){this.getter=e},s.prototype.cacheLength=function(){var e=new XMLHttpRequest;if(e.open("HEAD",r,!1),e.send(null),!(e.status>=200&&e.status<300||304===e.status))throw new Error("Couldn't load "+r+". Status: "+e.status);var t,i=Number(e.getResponseHeader("Content-length")),n=(t=e.getResponseHeader("Accept-Ranges"))&&"bytes"===t,s=(t=e.getResponseHeader("Content-Encoding"))&&"gzip"===t,a=1048576;n||(a=i);var o=this;o.setDataGetter((e=>{var t=e*a,n=(e+1)*a-1;if(n=Math.min(n,i-1),void 0===o.chunks[e]&&(o.chunks[e]=((e,t)=>{if(e>t)throw new Error("invalid range ("+e+", "+t+") or no bytes requested!");if(t>i-1)throw new Error("only "+i+" bytes available! programmer error!");var n=new XMLHttpRequest;if(n.open("GET",r,!1),i!==a&&n.setRequestHeader("Range","bytes="+e+"-"+t),n.responseType="arraybuffer",n.overrideMimeType&&n.overrideMimeType("text/plain; charset=x-user-defined"),n.send(null),!(n.status>=200&&n.status<300||304===n.status))throw new Error("Couldn't load "+r+". Status: "+n.status);return void 0!==n.response?new Uint8Array(n.response||[]):se(n.responseText||"",!0)})(t,n)),void 0===o.chunks[e])throw new Error("doXHR failed!");return o.chunks[e]})),!s&&i||(a=i=1,i=this.getter(0).length,a=i,_("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=i,this._chunkSize=a,this.lengthKnown=!0},"undefined"!=typeof XMLHttpRequest){if(!f)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var a=new s;Object.defineProperties(a,{length:{get:function(){return this.lengthKnown||this.cacheLength(),this._length}},chunkSize:{get:function(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}});var o={isDevice:!1,contents:a}}else o={isDevice:!1,url:r};var l=de.createFile(e,t,o,i,n);o.contents?l.contents=o.contents:o.url&&(l.contents=null,l.url=o.url),Object.defineProperties(l,{usedBytes:{get:function(){return this.contents.length}}});var d={};function u(e,t,r,i,n){var s=e.node.contents;if(n>=s.length)return 0;var a=Math.min(s.length-n,i);if(s.slice)for(var o=0;o{var t=l.stream_ops[e];d[e]=function(){return de.forceLoadFile(l),t.apply(null,arguments)}})),d.read=(e,t,r,i,n)=>(de.forceLoadFile(l),u(e,t,r,i,n)),d.mmap=(e,t,r,i,n)=>{de.forceLoadFile(l);var s=oe(t);if(!s)throw new de.ErrnoError(48);return u(e,U,s,t,r),{ptr:s,allocated:!0}},l.stream_ops=d,l},createPreloadedFile:(e,t,r,i,n,a,o,l,d,u)=>{var c=t?ne.resolve(ie.join2(e,t)):e;function h(r){function s(r){u&&u(),l||de.createDataFile(e,t,r,i,n,d),a&&a(),V()}Browser.handledByPreloadPlugin(r,c,s,(()=>{o&&o(),V()}))||s(r)}H(),"string"==typeof r?function(e,t,r,i){var n=i?"":"al "+e;s(e,(r=>{S(r,'Loading data file "'+e+'" failed (no arrayBuffer).'),t(new Uint8Array(r)),n&&V()}),(t=>{if(!r)throw'Loading data file "'+e+'" failed.';r()})),n&&H()}(r,(e=>h(e)),o):h(r)},indexedDB:()=>window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB,DB_NAME:()=>"EM_FS_"+window.location.pathname,DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:(e,t,r)=>{t=t||(()=>{}),r=r||(()=>{});var i=de.indexedDB();try{var n=i.open(de.DB_NAME(),de.DB_VERSION)}catch(e){return r(e)}n.onupgradeneeded=()=>{_("creating db"),n.result.createObjectStore(de.DB_STORE_NAME)},n.onsuccess=()=>{var i=n.result.transaction([de.DB_STORE_NAME],"readwrite"),s=i.objectStore(de.DB_STORE_NAME),a=0,o=0,l=e.length;function d(){0==o?t():r()}e.forEach((e=>{var t=s.put(de.analyzePath(e).object.contents,e);t.onsuccess=()=>{++a+o==l&&d()},t.onerror=()=>{o++,a+o==l&&d()}})),i.onerror=r},n.onerror=r},loadFilesFromDB:(e,t,r)=>{t=t||(()=>{}),r=r||(()=>{});var i=de.indexedDB();try{var n=i.open(de.DB_NAME(),de.DB_VERSION)}catch(e){return r(e)}n.onupgradeneeded=r,n.onsuccess=()=>{var i=n.result;try{var s=i.transaction([de.DB_STORE_NAME],"readonly")}catch(e){return void r(e)}var a=s.objectStore(de.DB_STORE_NAME),o=0,l=0,d=e.length;function u(){0==l?t():r()}e.forEach((e=>{var t=a.get(e);t.onsuccess=()=>{de.analyzePath(e).exists&&de.unlink(e),de.createDataFile(ie.dirname(e),ie.basename(e),t.result,!0,!0,!0),++o+l==d&&u()},t.onerror=()=>{l++,o+l==d&&u()}})),s.onerror=r},n.onerror=r}},ue={DEFAULT_POLLMASK:5,calculateAt:function(e,t,r){if(ie.isAbs(t))return t;var i;if(-100===e)i=de.cwd();else{var n=de.getStream(e);if(!n)throw new de.ErrnoError(8);i=n.path}if(0==t.length){if(!r)throw new de.ErrnoError(44);return i}return ie.join2(i,t)},doStat:function(e,t,r){try{var i=e(t)}catch(e){if(e&&e.node&&ie.normalize(t)!==ie.normalize(de.getPath(e.node)))return-54;throw e}return k[r>>2]=i.dev,k[r+4>>2]=0,k[r+8>>2]=i.ino,k[r+12>>2]=i.mode,k[r+16>>2]=i.nlink,k[r+20>>2]=i.uid,k[r+24>>2]=i.gid,k[r+28>>2]=i.rdev,k[r+32>>2]=0,K=[i.size>>>0,(q=i.size,+Math.abs(q)>=1?q>0?(0|Math.min(+Math.floor(q/4294967296),4294967295))>>>0:~~+Math.ceil((q-+(~~q>>>0))/4294967296)>>>0:0)],k[r+40>>2]=K[0],k[r+44>>2]=K[1],k[r+48>>2]=4096,k[r+52>>2]=i.blocks,K=[Math.floor(i.atime.getTime()/1e3)>>>0,(q=Math.floor(i.atime.getTime()/1e3),+Math.abs(q)>=1?q>0?(0|Math.min(+Math.floor(q/4294967296),4294967295))>>>0:~~+Math.ceil((q-+(~~q>>>0))/4294967296)>>>0:0)],k[r+56>>2]=K[0],k[r+60>>2]=K[1],k[r+64>>2]=0,K=[Math.floor(i.mtime.getTime()/1e3)>>>0,(q=Math.floor(i.mtime.getTime()/1e3),+Math.abs(q)>=1?q>0?(0|Math.min(+Math.floor(q/4294967296),4294967295))>>>0:~~+Math.ceil((q-+(~~q>>>0))/4294967296)>>>0:0)],k[r+72>>2]=K[0],k[r+76>>2]=K[1],k[r+80>>2]=0,K=[Math.floor(i.ctime.getTime()/1e3)>>>0,(q=Math.floor(i.ctime.getTime()/1e3),+Math.abs(q)>=1?q>0?(0|Math.min(+Math.floor(q/4294967296),4294967295))>>>0:~~+Math.ceil((q-+(~~q>>>0))/4294967296)>>>0:0)],k[r+88>>2]=K[0],k[r+92>>2]=K[1],k[r+96>>2]=0,K=[i.ino>>>0,(q=i.ino,+Math.abs(q)>=1?q>0?(0|Math.min(+Math.floor(q/4294967296),4294967295))>>>0:~~+Math.ceil((q-+(~~q>>>0))/4294967296)>>>0:0)],k[r+104>>2]=K[0],k[r+108>>2]=K[1],0},doMsync:function(e,t,r,i,n){var s=x.slice(e,e+r);de.msync(t,s,n,r,i)},varargs:void 0,get:function(){return ue.varargs+=4,k[ue.varargs-4>>2]},getStr:function(e){return L(e)},getStreamFromFD:function(e){var t=de.getStream(e);if(!t)throw new de.ErrnoError(8);return t}};function ce(e){switch(e){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+e)}}var he=void 0;function fe(e){for(var t="",r=e;x[r];)t+=he[x[r++]];return t}var pe={},me={},_e={},ye=48,ge=57;function ve(e){if(void 0===e)return"_unknown";var t=(e=e.replace(/[^a-zA-Z0-9_]/g,"$")).charCodeAt(0);return t>=ye&&t<=ge?"_"+e:e}function be(e,t){return e=ve(e),new Function("body","return function "+e+'() {\n "use strict"; return body.apply(this, arguments);\n};\n')(t)}function we(e,t){var r=be(t,(function(e){this.name=t,this.message=e;var r=new Error(e).stack;void 0!==r&&(this.stack=this.toString()+"\n"+r.replace(/^Error(:[^\n]*)?\n/,""))}));return r.prototype=Object.create(e.prototype),r.prototype.constructor=r,r.prototype.toString=function(){return void 0===this.message?this.name:this.name+": "+this.message},r}var Se=void 0;function Ee(e){throw new Se(e)}var Ue=void 0;function xe(e){throw new Ue(e)}function Ae(e,t,r){function i(t){var i=r(t);i.length!==e.length&&xe("Mismatched type converter count");for(var n=0;n{me.hasOwnProperty(e)?n[t]=me[e]:(s.push(e),pe.hasOwnProperty(e)||(pe[e]=[]),pe[e].push((()=>{n[t]=me[e],++a===s.length&&i(n)})))})),0===s.length&&i(n)}function Te(e,t,r={}){if(!("argPackAdvance"in t))throw new TypeError("registerType registeredInstance requires argPackAdvance");var i=t.name;if(e||Ee('type "'+i+'" must have a positive integer typeid pointer'),me.hasOwnProperty(e)){if(r.ignoreDuplicateRegistrations)return;Ee("Cannot register type '"+i+"' twice")}if(me[e]=t,delete _e[e],pe.hasOwnProperty(e)){var n=pe[e];delete pe[e],n.forEach((e=>e()))}}function ke(e){if(!(this instanceof Xe))return!1;if(!(e instanceof Xe))return!1;for(var t=this.$$.ptrType.registeredClass,r=this.$$.ptr,i=e.$$.ptrType.registeredClass,n=e.$$.ptr;t.baseClass;)r=t.upcast(r),t=t.baseClass;for(;i.baseClass;)n=i.upcast(n),i=i.baseClass;return t===i&&r===n}function Ce(e){Ee(e.$$.ptrType.registeredClass.name+" instance already deleted")}var Be=!1;function De(e){}function Pe(e){e.count.value-=1,0===e.count.value&&function(e){e.smartPtr?e.smartPtrType.rawDestructor(e.smartPtr):e.ptrType.registeredClass.rawDestructor(e.ptr)}(e)}function Fe(e,t,r){if(t===r)return e;if(void 0===r.baseClass)return null;var i=Fe(e,t,r.baseClass);return null===i?null:r.downcast(i)}var Ie={};function Le(){return Object.keys($e).length}function Re(){var e=[];for(var t in $e)$e.hasOwnProperty(t)&&e.push($e[t]);return e}var ze=[];function Me(){for(;ze.length;){var e=ze.pop();e.$$.deleteScheduled=!1,e.delete()}}var Oe=void 0;function Ne(e){Oe=e,ze.length&&Oe&&Oe(Me)}var $e={};function Ge(e,t){return t=function(e,t){for(void 0===t&&Ee("ptr should not be undefined");e.baseClass;)t=e.upcast(t),e=e.baseClass;return t}(e,t),$e[t]}function He(e,t){return t.ptrType&&t.ptr||xe("makeClassHandle requires ptr and ptrType"),!!t.smartPtrType!==!!t.smartPtr&&xe("Both smartPtrType and smartPtr must be specified"),t.count={value:1},We(Object.create(e,{$$:{value:t}}))}function Ve(e){var t=this.getPointee(e);if(!t)return this.destructor(e),null;var r=Ge(this.registeredClass,t);if(void 0!==r){if(0===r.$$.count.value)return r.$$.ptr=t,r.$$.smartPtr=e,r.clone();var i=r.clone();return this.destructor(e),i}function n(){return this.isSmartPointer?He(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:t,smartPtrType:this,smartPtr:e}):He(this.registeredClass.instancePrototype,{ptrType:this,ptr:e})}var s,a=this.registeredClass.getActualType(t),o=Ie[a];if(!o)return n.call(this);s=this.isConst?o.constPointerType:o.pointerType;var l=Fe(t,this.registeredClass,s.registeredClass);return null===l?n.call(this):this.isSmartPointer?He(s.registeredClass.instancePrototype,{ptrType:s,ptr:l,smartPtrType:this,smartPtr:e}):He(s.registeredClass.instancePrototype,{ptrType:s,ptr:l})}function We(e){return"undefined"==typeof FinalizationRegistry?(We=e=>e,e):(Be=new FinalizationRegistry((e=>{Pe(e.$$)})),We=e=>{var t=e.$$;if(!!t.smartPtr){var r={$$:t};Be.register(e,r,e)}return e},De=e=>Be.unregister(e),We(e))}function je(){if(this.$$.ptr||Ce(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var e,t=We(Object.create(Object.getPrototypeOf(this),{$$:{value:(e=this.$$,{count:e.count,deleteScheduled:e.deleteScheduled,preservePointerOnDelete:e.preservePointerOnDelete,ptr:e.ptr,ptrType:e.ptrType,smartPtr:e.smartPtr,smartPtrType:e.smartPtrType})}}));return t.$$.count.value+=1,t.$$.deleteScheduled=!1,t}function Ye(){this.$$.ptr||Ce(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&Ee("Object already scheduled for deletion"),De(this),Pe(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)}function qe(){return!this.$$.ptr}function Ke(){return this.$$.ptr||Ce(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&Ee("Object already scheduled for deletion"),ze.push(this),1===ze.length&&Oe&&Oe(Me),this.$$.deleteScheduled=!0,this}function Xe(){}function Ze(e,t,r){if(void 0===e[t].overloadTable){var i=e[t];e[t]=function(){return e[t].overloadTable.hasOwnProperty(arguments.length)||Ee("Function '"+r+"' called with an invalid number of arguments ("+arguments.length+") - expects one of ("+e[t].overloadTable+")!"),e[t].overloadTable[arguments.length].apply(this,arguments)},e[t].overloadTable=[],e[t].overloadTable[i.argCount]=i}}function Je(e,t,r,i,n,s,a,o){this.name=e,this.constructor=t,this.instancePrototype=r,this.rawDestructor=i,this.baseClass=n,this.getActualType=s,this.upcast=a,this.downcast=o,this.pureVirtualFunctions=[]}function Qe(e,t,r){for(;t!==r;)t.upcast||Ee("Expected null or instance of "+r.name+", got an instance of "+t.name),e=t.upcast(e),t=t.baseClass;return e}function et(e,t){if(null===t)return this.isReference&&Ee("null is not a valid "+this.name),0;t.$$||Ee('Cannot pass "'+xt(t)+'" as a '+this.name),t.$$.ptr||Ee("Cannot pass deleted object as a pointer of type "+this.name);var r=t.$$.ptrType.registeredClass;return Qe(t.$$.ptr,r,this.registeredClass)}function tt(e,t){var r;if(null===t)return this.isReference&&Ee("null is not a valid "+this.name),this.isSmartPointer?(r=this.rawConstructor(),null!==e&&e.push(this.rawDestructor,r),r):0;t.$$||Ee('Cannot pass "'+xt(t)+'" as a '+this.name),t.$$.ptr||Ee("Cannot pass deleted object as a pointer of type "+this.name),!this.isConst&&t.$$.ptrType.isConst&&Ee("Cannot convert argument of type "+(t.$$.smartPtrType?t.$$.smartPtrType.name:t.$$.ptrType.name)+" to parameter type "+this.name);var i=t.$$.ptrType.registeredClass;if(r=Qe(t.$$.ptr,i,this.registeredClass),this.isSmartPointer)switch(void 0===t.$$.smartPtr&&Ee("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:t.$$.smartPtrType===this?r=t.$$.smartPtr:Ee("Cannot convert argument of type "+(t.$$.smartPtrType?t.$$.smartPtrType.name:t.$$.ptrType.name)+" to parameter type "+this.name);break;case 1:r=t.$$.smartPtr;break;case 2:if(t.$$.smartPtrType===this)r=t.$$.smartPtr;else{var n=t.clone();r=this.rawShare(r,Ut.toHandle((function(){n.delete()}))),null!==e&&e.push(this.rawDestructor,r)}break;default:Ee("Unsupporting sharing policy")}return r}function rt(e,t){if(null===t)return this.isReference&&Ee("null is not a valid "+this.name),0;t.$$||Ee('Cannot pass "'+xt(t)+'" as a '+this.name),t.$$.ptr||Ee("Cannot pass deleted object as a pointer of type "+this.name),t.$$.ptrType.isConst&&Ee("Cannot convert argument of type "+t.$$.ptrType.name+" to parameter type "+this.name);var r=t.$$.ptrType.registeredClass;return Qe(t.$$.ptr,r,this.registeredClass)}function it(e){return this.fromWireType(k[e>>2])}function nt(e){return this.rawGetPointee&&(e=this.rawGetPointee(e)),e}function st(e){this.rawDestructor&&this.rawDestructor(e)}function at(e){null!==e&&e.delete()}function ot(e,t,r,i,n,s,a,o,l,d,u){this.name=e,this.registeredClass=t,this.isReference=r,this.isConst=i,this.isSmartPointer=n,this.pointeeType=s,this.sharingPolicy=a,this.rawGetPointee=o,this.rawConstructor=l,this.rawShare=d,this.rawDestructor=u,n||void 0!==t.baseClass?this.toWireType=tt:i?(this.toWireType=et,this.destructorFunction=null):(this.toWireType=rt,this.destructorFunction=null)}var lt=[];function dt(e){var t=lt[e];return t||(e>=lt.length&&(lt.length=e+1),lt[e]=t=P.get(e)),t}function ut(e,r,i){return e.includes("j")?function(e,r,i){var n=t["dynCall_"+e];return i&&i.length?n.apply(null,[r].concat(i)):n.call(null,r)}(e,r,i):dt(r).apply(null,i)}function ct(e,t){var r,i,n,s=(e=fe(e)).includes("j")?(r=e,i=t,n=[],function(){return n.length=0,Object.assign(n,arguments),ut(r,i,n)}):dt(t);return"function"!=typeof s&&Ee("unknown function pointer with signature "+e+": "+t),s}var ht=void 0;function ft(e){var t=jt(e),r=fe(t);return Vt(t),r}function pt(e,t){var r=[],i={};throw t.forEach((function e(t){i[t]||me[t]||(_e[t]?_e[t].forEach(e):(r.push(t),i[t]=!0))})),new ht(e+": "+r.map(ft).join([", "]))}function mt(e,t){for(var r=[],i=0;i>2]);return r}function _t(e){for(;e.length;){var t=e.pop();e.pop()(t)}}function yt(e,t){if(!(e instanceof Function))throw new TypeError("new_ called with constructor type "+typeof e+" which is not a function");var r=be(e.name||"unknownFunctionName",(function(){}));r.prototype=e.prototype;var i=new r,n=e.apply(i,t);return n instanceof Object?n:i}function gt(e,t,r,i,n){var s=t.length;s<2&&Ee("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var a=null!==t[1]&&null!==r,o=!1,l=1;l0?", ":"")+c),h+=(d?"var rv = ":"")+"invoker(fn"+(c.length>0?", ":"")+c+");\n",o)h+="runDestructors(destructors);\n";else for(l=a?1:2;l4&&0==--bt[e].refcount&&(bt[e]=void 0,vt.push(e))}function St(){for(var e=0,t=5;t(e||Ee("Cannot use deleted val. handle = "+e),bt[e].value),toHandle:e=>{switch(e){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:var t=vt.length?vt.pop():bt.length;return bt[t]={refcount:1,value:e},t}}};function xt(e){if(null===e)return"null";var t=typeof e;return"object"===t||"array"===t||"function"===t?e.toString():""+e}function At(e,t){switch(t){case 2:return function(e){return this.fromWireType(B[e>>2])};case 3:return function(e){return this.fromWireType(D[e>>3])};default:throw new TypeError("Unknown float type: "+e)}}function Tt(e,t,r){switch(t){case 0:return r?function(e){return U[e]}:function(e){return x[e]};case 1:return r?function(e){return A[e>>1]}:function(e){return T[e>>1]};case 2:return r?function(e){return k[e>>2]}:function(e){return C[e>>2]};default:throw new TypeError("Unknown integer type: "+e)}}var kt="undefined"!=typeof TextDecoder?new TextDecoder("utf-16le"):void 0;function Ct(e,t){for(var r=e,i=r>>1,n=i+t/2;!(i>=n)&&T[i];)++i;if((r=i<<1)-e>32&&kt)return kt.decode(x.subarray(e,r));for(var s="",a=0;!(a>=t/2);++a){var o=A[e+2*a>>1];if(0==o)break;s+=String.fromCharCode(o)}return s}function Bt(e,t,r){if(void 0===r&&(r=2147483647),r<2)return 0;for(var i=t,n=(r-=2)<2*e.length?r/2:e.length,s=0;s>1]=a,t+=2}return A[t>>1]=0,t-i}function Dt(e){return 2*e.length}function Pt(e,t){for(var r=0,i="";!(r>=t/4);){var n=k[e+4*r>>2];if(0==n)break;if(++r,n>=65536){var s=n-65536;i+=String.fromCharCode(55296|s>>10,56320|1023&s)}else i+=String.fromCharCode(n)}return i}function Ft(e,t,r){if(void 0===r&&(r=2147483647),r<4)return 0;for(var i=t,n=i+r-4,s=0;s=55296&&a<=57343)a=65536+((1023&a)<<10)|1023&e.charCodeAt(++s);if(k[t>>2]=a,(t+=4)+4>n)break}return k[t>>2]=0,t-i}function It(e){for(var t=0,r=0;r=55296&&i<=57343&&++r,t+=4}return t}var Lt={};var Rt=[];var zt=[];var Mt={};function Ot(){if(!Ot.strings){var e={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:("object"==typeof navigator&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:c||"./this.program"};for(var t in Mt)void 0===Mt[t]?delete e[t]:e[t]=Mt[t];var r=[];for(var t in e)r.push(t+"="+e[t]);Ot.strings=r}return Ot.strings}var Nt=function(e,t,r,i){e||(e=this),this.parent=e,this.mount=e.mount,this.mounted=null,this.id=de.nextInode++,this.name=t,this.mode=r,this.node_ops={},this.stream_ops={},this.rdev=i},$t=365,Gt=146;Object.defineProperties(Nt.prototype,{read:{get:function(){return(this.mode&$t)===$t},set:function(e){e?this.mode|=$t:this.mode&=-366}},write:{get:function(){return(this.mode&Gt)===Gt},set:function(e){e?this.mode|=Gt:this.mode&=-147}},isFolder:{get:function(){return de.isDir(this.mode)}},isDevice:{get:function(){return de.isChrdev(this.mode)}}}),de.FSNode=Nt,de.staticInit(),function(){for(var e=new Array(256),t=0;t<256;++t)e[t]=String.fromCharCode(t);he=e}(),Se=t.BindingError=we(Error,"BindingError"),Ue=t.InternalError=we(Error,"InternalError"),Xe.prototype.isAliasOf=ke,Xe.prototype.clone=je,Xe.prototype.delete=Ye,Xe.prototype.isDeleted=qe,Xe.prototype.deleteLater=Ke,t.getInheritedInstanceCount=Le,t.getLiveInheritedInstances=Re,t.flushPendingDeletes=Me,t.setDelayFunction=Ne,ot.prototype.getPointee=nt,ot.prototype.destructor=st,ot.prototype.argPackAdvance=8,ot.prototype.readValueFromPointer=it,ot.prototype.deleteObject=at,ot.prototype.fromWireType=Ve,ht=t.UnboundTypeError=we(Error,"UnboundTypeError"),t.count_emval_handles=St,t.get_first_emval=Et;var Ht={q:function(e){return qt(e+24)+24},p:function(e,t,r){throw new re(e).init(t,r),e},C:function(e,t,r){ue.varargs=r;try{var i=ue.getStreamFromFD(e);switch(t){case 0:return(n=ue.get())<0?-28:de.createStream(i,n).fd;case 1:case 2:case 6:case 7:return 0;case 3:return i.flags;case 4:var n=ue.get();return i.flags|=n,0;case 5:n=ue.get();return A[n+0>>1]=2,0;case 16:case 8:default:return-28;case 9:return s=28,k[Wt()>>2]=s,-1}}catch(e){if(void 0===de||!(e instanceof de.ErrnoError))throw e;return-e.errno}var s},w:function(e,t,r,i){ue.varargs=i;try{t=ue.getStr(t),t=ue.calculateAt(e,t);var n=i?ue.get():0;return de.open(t,r,n).fd}catch(e){if(void 0===de||!(e instanceof de.ErrnoError))throw e;return-e.errno}},u:function(e,t,r,i,n){},E:function(e,t,r,i,n){var s=ce(r);Te(e,{name:t=fe(t),fromWireType:function(e){return!!e},toWireType:function(e,t){return t?i:n},argPackAdvance:8,readValueFromPointer:function(e){var i;if(1===r)i=U;else if(2===r)i=A;else{if(4!==r)throw new TypeError("Unknown boolean type size: "+t);i=k}return this.fromWireType(i[e>>s])},destructorFunction:null})},t:function(e,r,i,n,s,a,o,l,d,u,c,h,f){c=fe(c),a=ct(s,a),l&&(l=ct(o,l)),u&&(u=ct(d,u)),f=ct(h,f);var p=ve(c);!function(e,r,i){t.hasOwnProperty(e)?((void 0===i||void 0!==t[e].overloadTable&&void 0!==t[e].overloadTable[i])&&Ee("Cannot register public name '"+e+"' twice"),Ze(t,e,e),t.hasOwnProperty(i)&&Ee("Cannot register multiple overloads of a function with the same number of arguments ("+i+")!"),t[e].overloadTable[i]=r):(t[e]=r,void 0!==i&&(t[e].numArguments=i))}(p,(function(){pt("Cannot construct "+c+" due to unbound types",[n])})),Ae([e,r,i],n?[n]:[],(function(r){var i,s;r=r[0],s=n?(i=r.registeredClass).instancePrototype:Xe.prototype;var o=be(p,(function(){if(Object.getPrototypeOf(this)!==d)throw new Se("Use 'new' to construct "+c);if(void 0===h.constructor_body)throw new Se(c+" has no accessible constructor");var e=h.constructor_body[arguments.length];if(void 0===e)throw new Se("Tried to invoke ctor of "+c+" with invalid number of parameters ("+arguments.length+") - expected ("+Object.keys(h.constructor_body).toString()+") parameters instead!");return e.apply(this,arguments)})),d=Object.create(s,{constructor:{value:o}});o.prototype=d;var h=new Je(c,o,d,f,i,a,l,u),m=new ot(c,h,!0,!1,!1),_=new ot(c+"*",h,!1,!1,!1),y=new ot(c+" const*",h,!1,!0,!1);return Ie[e]={pointerType:_,constPointerType:y},function(e,r,i){t.hasOwnProperty(e)||xe("Replacing nonexistant public symbol"),void 0!==t[e].overloadTable&&void 0!==i?t[e].overloadTable[i]=r:(t[e]=r,t[e].argCount=i)}(p,o),[m,_,y]}))},r:function(e,t,r,i,n,s){S(t>0);var a=mt(t,r);n=ct(i,n),Ae([],[e],(function(e){var r="constructor "+(e=e[0]).name;if(void 0===e.registeredClass.constructor_body&&(e.registeredClass.constructor_body=[]),void 0!==e.registeredClass.constructor_body[t-1])throw new Se("Cannot register multiple constructors with identical number of parameters ("+(t-1)+") for class '"+e.name+"'! Overload resolution is currently only performed using the parameter count, not actual type info!");return e.registeredClass.constructor_body[t-1]=()=>{pt("Cannot construct "+e.name+" due to unbound types",a)},Ae([],a,(function(i){return i.splice(1,0,null),e.registeredClass.constructor_body[t-1]=gt(r,i,null,n,s),[]})),[]}))},d:function(e,t,r,i,n,s,a,o){var l=mt(r,i);t=fe(t),s=ct(n,s),Ae([],[e],(function(e){var i=(e=e[0]).name+"."+t;function n(){pt("Cannot call "+i+" due to unbound types",l)}t.startsWith("@@")&&(t=Symbol[t.substring(2)]),o&&e.registeredClass.pureVirtualFunctions.push(t);var d=e.registeredClass.instancePrototype,u=d[t];return void 0===u||void 0===u.overloadTable&&u.className!==e.name&&u.argCount===r-2?(n.argCount=r-2,n.className=e.name,d[t]=n):(Ze(d,t,i),d[t].overloadTable[r-2]=n),Ae([],l,(function(n){var o=gt(i,n,e,s,a);return void 0===d[t].overloadTable?(o.argCount=r-2,d[t]=o):d[t].overloadTable[r-2]=o,[]})),[]}))},D:function(e,t){Te(e,{name:t=fe(t),fromWireType:function(e){var t=Ut.toValue(e);return wt(e),t},toWireType:function(e,t){return Ut.toHandle(t)},argPackAdvance:8,readValueFromPointer:it,destructorFunction:null})},n:function(e,t,r){var i=ce(r);Te(e,{name:t=fe(t),fromWireType:function(e){return e},toWireType:function(e,t){return t},argPackAdvance:8,readValueFromPointer:At(t,i),destructorFunction:null})},c:function(e,t,r,i,n){t=fe(t);var s=ce(r),a=e=>e;if(0===i){var o=32-8*r;a=e=>e<>>o}var l=t.includes("unsigned");Te(e,{name:t,fromWireType:a,toWireType:l?function(e,t){return this.name,t>>>0}:function(e,t){return this.name,t},argPackAdvance:8,readValueFromPointer:Tt(t,s,0!==i),destructorFunction:null})},b:function(e,t,r){var i=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][t];function n(e){var t=C,r=t[e>>=2],n=t[e+1];return new i(E,n,r)}Te(e,{name:r=fe(r),fromWireType:n,argPackAdvance:8,readValueFromPointer:n},{ignoreDuplicateRegistrations:!0})},m:function(e,t){var r="std::string"===(t=fe(t));Te(e,{name:t,fromWireType:function(e){var t,i=C[e>>2],n=e+4;if(r)for(var s=n,a=0;a<=i;++a){var o=n+a;if(a==i||0==x[o]){var l=L(s,o-s);void 0===t?t=l:(t+=String.fromCharCode(0),t+=l),s=o+1}}else{var d=new Array(i);for(a=0;a>2]=i,r&&n)R(t,x,a,i+1);else if(n)for(var o=0;o255&&(Vt(a),Ee("String has UTF-16 code units that do not fit in 8 bits")),x[a+o]=l}else for(o=0;oT,o=1):4===t&&(i=Pt,n=Ft,a=It,s=()=>C,o=2),Te(e,{name:r,fromWireType:function(e){for(var r,n=C[e>>2],a=s(),l=e+4,d=0;d<=n;++d){var u=e+4+d*t;if(d==n||0==a[u>>o]){var c=i(l,u-l);void 0===r?r=c:(r+=String.fromCharCode(0),r+=c),l=u+t}}return Vt(e),r},toWireType:function(e,i){"string"!=typeof i&&Ee("Cannot pass non-string to C++ string type "+r);var s=a(i),l=qt(4+s+t);return C[l>>2]=s>>o,n(i,l+4,s+t),null!==e&&e.push(Vt,l),l},argPackAdvance:8,readValueFromPointer:it,destructorFunction:function(e){Vt(e)}})},o:function(e,t){Te(e,{isVoid:!0,name:t=fe(t),argPackAdvance:0,fromWireType:function(){},toWireType:function(e,t){}})},f:function(){return Date.now()},g:function(e,t,r,i){var n,s;(e=Rt[e])(t=Ut.toValue(t),r=void 0===(s=Lt[n=r])?fe(n):s,null,i)},j:wt,i:function(e,t){var r=function(e,t){for(var r,i,n,s=new Array(e),a=0;a>2],i="parameter "+a,n=void 0,void 0===(n=me[r])&&Ee(i+" has unknown type "+ft(r)),n);return s}(e,t),i=r[0],n=i.name+"_$"+r.slice(1).map((function(e){return e.name})).join("_")+"$",s=zt[n];if(void 0!==s)return s;for(var a=["retType"],o=[i],l="",d=0;d>2]=s,function(e,t,r){for(var i=0;i>2]=r.length;var i=0;return r.forEach((function(e){i+=e.length+1})),C[t>>2]=i,0},l:function(e){try{var t=ue.getStreamFromFD(e);return de.close(t),0}catch(e){if(void 0===de||!(e instanceof de.ErrnoError))throw e;return e.errno}},x:function(e,t){try{var r=ue.getStreamFromFD(e),i=r.tty?2:de.isDir(r.mode)?3:de.isLink(r.mode)?7:4;return U[t|0]=i,0}catch(e){if(void 0===de||!(e instanceof de.ErrnoError))throw e;return e.errno}},B:function(e,t,r,i){try{var n=function(e,t,r,i){for(var n=0,s=0;s>2],o=C[t+4>>2];t+=8;var l=de.read(e,U,a,o,i);if(l<0)return-1;if(n+=l,l>2]=n,0}catch(e){if(void 0===de||!(e instanceof de.ErrnoError))throw e;return e.errno}},s:function(e,t,r,i,n){try{var s=(l=r)+2097152>>>0<4194305-!!(o=t)?(o>>>0)+4294967296*l:NaN;if(isNaN(s))return 61;var a=ue.getStreamFromFD(e);return de.llseek(a,s,i),K=[a.position>>>0,(q=a.position,+Math.abs(q)>=1?q>0?(0|Math.min(+Math.floor(q/4294967296),4294967295))>>>0:~~+Math.ceil((q-+(~~q>>>0))/4294967296)>>>0:0)],k[n>>2]=K[0],k[n+4>>2]=K[1],a.getdents&&0===s&&0===i&&(a.getdents=null),0}catch(e){if(void 0===de||!(e instanceof de.ErrnoError))throw e;return e.errno}var o,l},k:function(e,t,r,i){try{var n=function(e,t,r,i){for(var n=0,s=0;s>2],o=C[t+4>>2];t+=8;var l=de.write(e,U,a,o,i);if(l<0)return-1;n+=l}return n}(ue.getStreamFromFD(e),t,r);return C[i>>2]=n,0}catch(e){if(void 0===de||!(e instanceof de.ErrnoError))throw e;return e.errno}},e:function(e){}};!function(){var e={a:Ht};function r(e,r){var i,n,s=e.exports;t.asm=s,v=t.asm.F,i=v.buffer,E=i,t.HEAP8=U=new Int8Array(i),t.HEAP16=A=new Int16Array(i),t.HEAP32=k=new Int32Array(i),t.HEAPU8=x=new Uint8Array(i),t.HEAPU16=T=new Uint16Array(i),t.HEAPU32=C=new Uint32Array(i),t.HEAPF32=B=new Float32Array(i),t.HEAPF64=D=new Float64Array(i),P=t.asm.I,n=t.asm.G,O.unshift(n),V()}function n(e){r(e.instance)}function a(t){return function(){if(!g&&(h||f)){if("function"==typeof fetch&&!J(j))return fetch(j,{credentials:"same-origin"}).then((function(e){if(!e.ok)throw"failed to load wasm binary file at '"+j+"'";return e.arrayBuffer()})).catch((function(){return Q(j)}));if(s)return new Promise((function(e,t){s(j,(function(t){e(new Uint8Array(t))}),t)}))}return Promise.resolve().then((function(){return Q(j)}))}().then((function(t){return WebAssembly.instantiate(t,e)})).then((function(e){return e})).then(t,(function(e){y("failed to asynchronously prepare wasm: "+e),W(e)}))}if(H(),t.instantiateWasm)try{return t.instantiateWasm(e,r)}catch(e){return y("Module.instantiateWasm callback failed with error: "+e),!1}(g||"function"!=typeof WebAssembly.instantiateStreaming||Z(j)||J(j)||p||"function"!=typeof fetch?a(n):fetch(j,{credentials:"same-origin"}).then((function(t){return WebAssembly.instantiateStreaming(t,e).then(n,(function(e){return y("wasm streaming compile failed: "+e),y("falling back to ArrayBuffer instantiation"),a(n)}))}))).catch(i)}(),t.___wasm_call_ctors=function(){return(t.___wasm_call_ctors=t.asm.G).apply(null,arguments)};var Vt=t._free=function(){return(Vt=t._free=t.asm.H).apply(null,arguments)},Wt=t.___errno_location=function(){return(Wt=t.___errno_location=t.asm.J).apply(null,arguments)},jt=t.___getTypeName=function(){return(jt=t.___getTypeName=t.asm.K).apply(null,arguments)};t.___embind_register_native_and_builtin_types=function(){return(t.___embind_register_native_and_builtin_types=t.asm.L).apply(null,arguments)};var Yt,qt=t._malloc=function(){return(qt=t._malloc=t.asm.M).apply(null,arguments)},Kt=t._emscripten_builtin_memalign=function(){return(Kt=t._emscripten_builtin_memalign=t.asm.N).apply(null,arguments)},Xt=t.___cxa_is_pointer_type=function(){return(Xt=t.___cxa_is_pointer_type=t.asm.O).apply(null,arguments)};function Zt(e){function i(){Yt||(Yt=!0,t.calledRun=!0,w||(t.noFSInit||de.init.initialized||de.init(),de.ignorePermissions=!1,te(O),r(t),t.onRuntimeInitialized&&t.onRuntimeInitialized(),function(){if(t.postRun)for("function"==typeof t.postRun&&(t.postRun=[t.postRun]);t.postRun.length;)e=t.postRun.shift(),N.unshift(e);var e;te(N)}()))}$>0||(!function(){if(t.preRun)for("function"==typeof t.preRun&&(t.preRun=[t.preRun]);t.preRun.length;)e=t.preRun.shift(),M.unshift(e);var e;te(M)}(),$>0||(t.setStatus?(t.setStatus("Running..."),setTimeout((function(){setTimeout((function(){t.setStatus("")}),1),i()}),1)):i()))}if(t.dynCall_viiijj=function(){return(t.dynCall_viiijj=t.asm.P).apply(null,arguments)},t.dynCall_jij=function(){return(t.dynCall_jij=t.asm.Q).apply(null,arguments)},t.dynCall_jii=function(){return(t.dynCall_jii=t.asm.R).apply(null,arguments)},t.dynCall_jiji=function(){return(t.dynCall_jiji=t.asm.S).apply(null,arguments)},G=function e(){Yt||Zt(),Yt||(G=e)},t.preInit)for("function"==typeof t.preInit&&(t.preInit=[t.preInit]);t.preInit.length>0;)t.preInit.pop()();return Zt(),t.ready}})(),i=1e-6,n="undefined"!=typeof Float32Array?Float32Array:Array;function s(){var e=new n(16);return n!=Float32Array&&(e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=0,e[12]=0,e[13]=0,e[14]=0),e[0]=1,e[5]=1,e[10]=1,e[15]=1,e}function a(e){return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}Math.hypot||(Math.hypot=function(){for(var e=0,t=arguments.length;t--;)e+=arguments[t]*arguments[t];return Math.sqrt(e)});var o,l=function(e,t,r,i,n,s,a){var o=1/(t-r),l=1/(i-n),d=1/(s-a);return e[0]=-2*o,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=-2*l,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=2*d,e[11]=0,e[12]=(t+r)*o,e[13]=(n+i)*l,e[14]=(a+s)*d,e[15]=1,e};function d(e,t,r){var i=new n(3);return i[0]=e,i[1]=t,i[2]=r,i}o=new n(3),n!=Float32Array&&(o[0]=0,o[1]=0,o[2]=0);var u=(e,t)=>{t&&e.pixelStorei(e.UNPACK_ALIGNMENT,1);const r=function(){const t=m(e.VERTEX_SHADER,"\n attribute vec4 aVertexPosition;\n attribute vec2 aTexturePosition;\n uniform mat4 uModelMatrix;\n uniform mat4 uViewMatrix;\n uniform mat4 uProjectionMatrix;\n varying lowp vec2 vTexturePosition;\n void main(void) {\n gl_Position = uProjectionMatrix * uViewMatrix * uModelMatrix * aVertexPosition;\n vTexturePosition = aTexturePosition;\n }\n "),r=m(e.FRAGMENT_SHADER,"\n precision highp float;\n varying highp vec2 vTexturePosition;\n uniform int isyuv;\n uniform sampler2D rgbaTexture;\n uniform sampler2D yTexture;\n uniform sampler2D uTexture;\n uniform sampler2D vTexture;\n\n const mat4 YUV2RGB = mat4( 1.1643828125, 0, 1.59602734375, -.87078515625,\n 1.1643828125, -.39176171875, -.81296875, .52959375,\n 1.1643828125, 2.017234375, 0, -1.081390625,\n 0, 0, 0, 1);\n\n\n void main(void) {\n\n if (isyuv>0) {\n\n highp float y = texture2D(yTexture, vTexturePosition).r;\n highp float u = texture2D(uTexture, vTexturePosition).r;\n highp float v = texture2D(vTexture, vTexturePosition).r;\n gl_FragColor = vec4(y, u, v, 1) * YUV2RGB;\n\n } else {\n gl_FragColor = texture2D(rgbaTexture, vTexturePosition);\n }\n }\n "),i=e.createProgram();if(e.attachShader(i,t),e.attachShader(i,r),e.linkProgram(i),!e.getProgramParameter(i,e.LINK_STATUS))return console.log("Unable to initialize the shader program: "+e.getProgramInfoLog(i)),null;return i}();let n={program:r,attribLocations:{vertexPosition:e.getAttribLocation(r,"aVertexPosition"),texturePosition:e.getAttribLocation(r,"aTexturePosition")},uniformLocations:{projectionMatrix:e.getUniformLocation(r,"uProjectionMatrix"),modelMatrix:e.getUniformLocation(r,"uModelMatrix"),viewMatrix:e.getUniformLocation(r,"uViewMatrix"),rgbatexture:e.getUniformLocation(r,"rgbaTexture"),ytexture:e.getUniformLocation(r,"yTexture"),utexture:e.getUniformLocation(r,"uTexture"),vtexture:e.getUniformLocation(r,"vTexture"),isyuv:e.getUniformLocation(r,"isyuv")}},o=function(){const t=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,t);e.bufferData(e.ARRAY_BUFFER,new Float32Array([-1,-1,-1,1,-1,-1,1,1,-1,-1,1,-1]),e.STATIC_DRAW);var r=[];r=r.concat([0,1],[1,1],[1,0],[0,0]);const i=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,i),e.bufferData(e.ARRAY_BUFFER,new Float32Array(r),e.STATIC_DRAW);const n=e.createBuffer();e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,n);return e.bufferData(e.ELEMENT_ARRAY_BUFFER,new Uint16Array([0,1,2,0,2,3]),e.STATIC_DRAW),{position:t,texPosition:i,indices:n}}(),u=p(),c=p(),h=p(),f=p();function p(){let t=e.createTexture();return e.bindTexture(e.TEXTURE_2D,t),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),t}function m(t,r){const i=e.createShader(t);return e.shaderSource(i,r),e.compileShader(i),e.getShaderParameter(i,e.COMPILE_STATUS)?i:(console.log("An error occurred compiling the shaders: "+e.getShaderInfoLog(i)),e.deleteShader(i),null)}function _(t,r){e.viewport(0,0,t,r),e.clearColor(0,0,0,0),e.clearDepth(1),e.enable(e.DEPTH_TEST),e.depthFunc(e.LEQUAL),e.clear(e.COLOR_BUFFER_BIT|e.DEPTH_BUFFER_BIT);const u=s();l(u,-1,1,-1,1,.1,100);const p=s();a(p);const m=s();!function(e,t,r,n){var s,o,l,d,u,c,h,f,p,m,_=t[0],y=t[1],g=t[2],v=n[0],b=n[1],w=n[2],S=r[0],E=r[1],U=r[2];Math.abs(_-S)>1,(1&t)<<7|r<<3])}function je(e){return Ye(e)&&e[1]===Pe.sequenceHeader}function Ye(e){return e[0]>>4===xe.AAC}Ve((function(e){!function(){var t="undefined"!=typeof window&&void 0!==window.document?window.document:{},r=e.exports,i=function(){for(var e,r=[["requestFullscreen","exitFullscreen","fullscreenElement","fullscreenEnabled","fullscreenchange","fullscreenerror"],["webkitRequestFullscreen","webkitExitFullscreen","webkitFullscreenElement","webkitFullscreenEnabled","webkitfullscreenchange","webkitfullscreenerror"],["webkitRequestFullScreen","webkitCancelFullScreen","webkitCurrentFullScreenElement","webkitCancelFullScreen","webkitfullscreenchange","webkitfullscreenerror"],["mozRequestFullScreen","mozCancelFullScreen","mozFullScreenElement","mozFullScreenEnabled","mozfullscreenchange","mozfullscreenerror"],["msRequestFullscreen","msExitFullscreen","msFullscreenElement","msFullscreenEnabled","MSFullscreenChange","MSFullscreenError"]],i=0,n=r.length,s={};i{if(n=i,"[object Number]"!==Object.prototype.toString.call(n))return;var n;t+=i;const s=Qe(),a=s-r;a>=1e3&&(e(t/a*1e3),r=s,t=0)}}function tt(){const e=window.navigator.userAgent;return!e.match(/Chrome/gi)&&!!e.match(/Safari/gi)}function rt(e){return null==e}function it(e){e.close()}function nt(e,t){t&&(e=e.filter((e=>e.type&&e.type===t)));let r=e[0],i=null,n=1;if(e.length>0){let t=e[1];t&&t.ts-r.ts>1e5&&(r=t,n=2)}if(r)for(let s=n;s=1e3){e[s-1].ts-r.ts<1e3&&(i=s+1)}}}return i}function st(){return function(e){let t="";if("object"==typeof e)try{t=JSON.stringify(e),t=JSON.parse(t)}catch(r){t=e}else t=e;return t}(w)}function at(e){return e[0]>>4===Fe.keyFrame&&e[1]===Pe.sequenceHeader}function ot(e){return!0===e||"true"===e}function lt(e){return!0!==e&&"true"!==e}(()=>{try{if("object"==typeof WebAssembly&&"function"==typeof WebAssembly.instantiate){const e=new WebAssembly.Module(Uint8Array.of(0,97,115,109,1,0,0,0));if(e instanceof WebAssembly.Module)return new WebAssembly.Instance(e)instanceof WebAssembly.Instance}}catch(e){}})();var dt=function(e,t,r,i){return new(r||(r=Promise))((function(n,s){function a(e){try{l(i.next(e))}catch(e){s(e)}}function o(e){try{l(i.throw(e))}catch(e){s(e)}}function l(e){var t;e.done?n(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(a,o)}l((i=i.apply(e,t||[])).next())}))};const ut=Symbol(32),ct=Symbol(16),ht=Symbol(8);class ft{constructor(e){this.g=e,this.consumed=0,e&&(this.need=e.next().value)}setG(e){this.g=e,this.demand(e.next().value,!0)}consume(){this.buffer&&this.consumed&&(this.buffer.copyWithin(0,this.consumed),this.buffer=this.buffer.subarray(0,this.buffer.length-this.consumed),this.consumed=0)}demand(e,t){return t&&this.consume(),this.need=e,this.flush()}read(e){return dt(this,void 0,void 0,(function*(){return this.lastReadPromise&&(yield this.lastReadPromise),this.lastReadPromise=new Promise(((t,r)=>{var i;this.reject=r,this.resolve=e=>{delete this.lastReadPromise,delete this.resolve,delete this.need,t(e)};this.demand(e,!0)||null===(i=this.pull)||void 0===i||i.call(this,e)}))}))}readU32(){return this.read(ut)}readU16(){return this.read(ct)}readU8(){return this.read(ht)}close(){var e;this.g&&this.g.return(),this.buffer&&this.buffer.subarray(0,0),null===(e=this.reject)||void 0===e||e.call(this,new Error("EOF")),delete this.lastReadPromise}flush(){if(!this.buffer||!this.need)return;let e=null;const t=this.buffer.subarray(this.consumed);let r=0;const i=e=>t.length<(r=e);if("number"==typeof this.need){if(i(this.need))return;e=t.subarray(0,r)}else if(this.need===ut){if(i(4))return;e=t[0]<<24|t[1]<<16|t[2]<<8|t[3]}else if(this.need===ct){if(i(2))return;e=t[0]<<8|t[1]}else if(this.need===ht){if(i(1))return;e=t[0]}else if("buffer"in this.need){if("byteOffset"in this.need){if(i(this.need.byteLength-this.need.byteOffset))return;new Uint8Array(this.need.buffer,this.need.byteOffset).set(t.subarray(0,r)),e=this.need}else if(this.g)return void this.g.throw(new Error("Unsupported type"))}else{if(i(this.need.byteLength))return;new Uint8Array(this.need).set(t.subarray(0,r)),e=this.need}return this.consumed+=r,this.g?this.demand(this.g.next(e).value,!0):this.resolve&&this.resolve(e),e}write(e){if(e instanceof Uint8Array?this.malloc(e.length).set(e):"buffer"in e?this.malloc(e.byteLength).set(new Uint8Array(e.buffer,e.byteOffset,e.byteLength)):this.malloc(e.byteLength).set(new Uint8Array(e)),!this.g&&!this.resolve)return new Promise((e=>this.pull=e));this.flush()}writeU32(e){this.malloc(4).set([e>>24&255,e>>16&255,e>>8&255,255&e]),this.flush()}writeU16(e){this.malloc(2).set([e>>8&255,255&e]),this.flush()}writeU8(e){this.malloc(1)[0]=e,this.flush()}malloc(e){if(this.buffer){const t=this.buffer.length,r=t+e;if(r<=this.buffer.buffer.byteLength-this.buffer.byteOffset)this.buffer=new Uint8Array(this.buffer.buffer,this.buffer.byteOffset,r);else{const e=new Uint8Array(r);e.set(this.buffer),this.buffer=e}return this.buffer.subarray(t,r)}return this.buffer=new Uint8Array(e),this.buffer}}ft.U32=ut,ft.U16=ct,ft.U8=ht;class pt{constructor(e){this.log=(t,...r)=>{if(e._opt.debug&&e._opt.debugLevel==g){const i=e._opt.debugUuid?`[${e._opt.debugUuid}]`:"";console.log(`EasyPro${i}[✅✅✅][${t}]`,...r)}},this.warn=(t,...r)=>{if(e._opt.debug&&(e._opt.debugLevel==g||e._opt.debugLevel==v)){const i=e._opt.debugUuid?`[${e._opt.debugUuid}]`:"";console.log(`EasyPro${i}[❗❗❗][${t}]`,...r)}},this.error=(t,...r)=>{const i=e._opt.debugUuid?`[${e._opt.debugUuid}]`:"";console.error(`EasyPro${i}[❌❌❌][${t}]`,...r)}}}class mt{constructor(e){this._buffer=e,this._buffer_index=0,this._total_bytes=e.byteLength,this._total_bits=8*e.byteLength,this._current_word=0,this._current_word_bits_left=0}destroy(){this._buffer=null}_fillCurrentWord(){let e=this._total_bytes-this._buffer_index;if(e<=0)return void console.error("ExpGolomb: _fillCurrentWord() but no bytes available",this._total_bytes,this._buffer_index);let t=Math.min(4,e),r=new Uint8Array(4);r.set(this._buffer.subarray(this._buffer_index,this._buffer_index+t)),this._current_word=new DataView(r.buffer).getUint32(0,!1),this._buffer_index+=t,this._current_word_bits_left=8*t}readBits(e){if(e>32&&console.error("ExpGolomb: readBits() bits exceeded max 32bits!"),e<=this._current_word_bits_left){let t=this._current_word>>>32-e;return this._current_word<<=e,this._current_word_bits_left-=e,t}let t=this._current_word_bits_left?this._current_word:0;t>>>=32-this._current_word_bits_left;let r=e-this._current_word_bits_left;this._fillCurrentWord();let i=Math.min(r,this._current_word_bits_left),n=this._current_word>>>32-i;return this._current_word<<=i,this._current_word_bits_left-=i,t=t<>>e)return this._current_word<<=e,this._current_word_bits_left-=e,e;return this._fillCurrentWord(),e+this._skipLeadingZero()}readUEG(){let e=this._skipLeadingZero();return this.readBits(e+1)-1}readSEG(){let e=this.readUEG();return 1&e?e+1>>>1:-1*(e>>>1)}}class _t{static _ebsp2rbsp(e){let t=e,r=t.byteLength,i=new Uint8Array(r),n=0;for(let e=0;e=2&&3===t[e]&&0===t[e-1]&&0===t[e-2]||(i[n]=t[e],n++);return new Uint8Array(i.buffer,0,n)}static parseSPS(e){let t=_t._ebsp2rbsp(e),r=new mt(t);r.readByte();let i=r.readByte();r.readByte();let n=r.readByte();r.readUEG();let s=_t.getProfileString(i),a=_t.getLevelString(n),o=1,l=420,d=[0,420,422,444],u=8;if((100===i||110===i||122===i||244===i||44===i||83===i||86===i||118===i||128===i||138===i||144===i)&&(o=r.readUEG(),3===o&&r.readBits(1),o<=3&&(l=d[o]),u=r.readUEG()+8,r.readUEG(),r.readBits(1),r.readBool())){let e=3!==o?8:12;for(let t=0;t0&&e<16?(b=[1,12,10,16,40,24,20,32,80,18,15,64,160,4,3,2][e-1],w=[1,11,11,11,33,11,11,11,33,11,11,33,99,3,2,1][e-1]):255===e&&(b=r.readByte()<<8|r.readByte(),w=r.readByte()<<8|r.readByte())}if(r.readBool()&&r.readBool(),r.readBool()&&(r.readBits(4),r.readBool()&&r.readBits(24)),r.readBool()&&(r.readUEG(),r.readUEG()),r.readBool()){let e=r.readBits(32),t=r.readBits(32);E=r.readBool(),U=t,x=2*e,S=U/x}}let A=1;1===b&&1===w||(A=b/w);let T=0,k=0;if(0===o)T=1,k=2-m;else{T=3===o?1:2,k=(1===o?2:1)*(2-m)}let C=16*(f+1),B=16*(p+1)*(2-m);C-=(_+y)*T,B-=(g+v)*k;let D=Math.ceil(C*A);return r.destroy(),r=null,{profile_string:s,level_string:a,bit_depth:u,ref_frames:h,chroma_format:l,chroma_format_string:_t.getChromaFormatString(l),frame_rate:{fixed:E,fps:S,fps_den:x,fps_num:U},sar_ratio:{width:b,height:w},codec_size:{width:C,height:B},present_size:{width:D,height:B}}}static parseSPS$2(e){let t=e.subarray(1,4),r="avc1.";for(let e=0;e<3;e++){let i=t[e].toString(16);i.length<2&&(i="0"+i),r+=i}let i=_t._ebsp2rbsp(e),n=new mt(i);n.readByte();let s=n.readByte();n.readByte();let a=n.readByte();n.readUEG();let o=_t.getProfileString(s),l=_t.getLevelString(a),d=1,u=420,c=[0,420,422,444],h=8,f=8;if((100===s||110===s||122===s||244===s||44===s||83===s||86===s||118===s||128===s||138===s||144===s)&&(d=n.readUEG(),3===d&&n.readBits(1),d<=3&&(u=c[d]),h=n.readUEG()+8,f=n.readUEG()+8,n.readBits(1),n.readBool())){let e=3!==d?8:12;for(let t=0;t0&&e<16?(E=[1,12,10,16,40,24,20,32,80,18,15,64,160,4,3,2][e-1],U=[1,11,11,11,33,11,11,11,33,11,11,33,99,3,2,1][e-1]):255===e&&(E=n.readByte()<<8|n.readByte(),U=n.readByte()<<8|n.readByte())}if(n.readBool()&&n.readBool(),n.readBool()&&(n.readBits(4),n.readBool()&&n.readBits(24)),n.readBool()&&(n.readUEG(),n.readUEG()),n.readBool()){let e=n.readBits(32),t=n.readBits(32);A=n.readBool(),T=t,k=2*e,x=T/k}}let C=1;1===E&&1===U||(C=E/U);let B=0,D=0;if(0===d)B=1,D=2-g;else{B=3===d?1:2,D=(1===d?2:1)*(2-g)}let P=16*(_+1),F=16*(y+1)*(2-g);P-=(v+b)*B,F-=(w+S)*D;let I=Math.ceil(P*C);return n.destroy(),n=null,{codec_mimetype:r,profile_idc:s,level_idc:a,profile_string:o,level_string:l,chroma_format_idc:d,bit_depth:h,bit_depth_luma:h,bit_depth_chroma:f,ref_frames:m,chroma_format:u,chroma_format_string:_t.getChromaFormatString(u),frame_rate:{fixed:A,fps:x,fps_den:k,fps_num:T},sar_ratio:{width:E,height:U},codec_size:{width:P,height:F},present_size:{width:I,height:F}}}static _skipScalingList(e,t){let r=8,i=8,n=0;for(let s=0;s=this.buflen)return this.iserro=!0,0;this.iserro=!1,r=this.bufoff+e>8?8-this.bufoff:e,t<<=r,t+=this.buffer[this.bufpos]>>8-this.bufoff-r&255>>8-r,this.bufoff+=r,e-=r,8==this.bufoff&&(this.bufpos++,this.bufoff=0)}return t}look(e){let t=this.bufpos,r=this.bufoff,i=this.read(e);return this.bufpos=t,this.bufoff=r,i}read_golomb(){let e;for(e=0;0===this.read(1)&&!this.iserro;e++);return(1<>>24&255,e>>>16&255,e>>>8&255,255&e]),i=new Uint8Array(e+4);i.set(r,0),i.set(t.sps,4),t.sps=i}if(t.pps){const e=t.pps.byteLength,r=new Uint8Array([e>>>24&255,e>>>16&255,e>>>8&255,255&e]),i=new Uint8Array(e+4);i.set(r,0),i.set(t.pps,4),t.pps=i}return t}function vt({sps:e,pps:t}){const r=[23,0,0,0,0,1,66,0,30,255];r[0]=23,r[6]=e[1],r[7]=e[2],r[8]=e[3],r[10]=225,r[11]=e.byteLength>>8&255,r[12]=255&e.byteLength,r.push(...e,1,t.byteLength>>8&255,255&t.byteLength,...t);return new Uint8Array(r)}function bt(e,t){let r=[];r[0]=t?23:39,r[1]=1,r[2]=0,r[3]=0,r[4]=0;const i=new Uint8Array(r.length+e.byteLength);return i.set(r,0),i.set(e,r.length),i}function wt(e){return 31&e[0]}function St(e){return e===Ae.kSliceSEI}function Et(e){return!function(e){return e===Ae.sps||e===Ae.pps}(e)&&!St(e)}function Ut(e){return e===Ae.iFrame}const xt=e=>{let t=e,r=t.byteLength,i=new Uint8Array(r),n=0;for(let e=0;e=2&&3===t[e]&&0===t[e-1]&&0===t[e-2]||(i[n]=t[e],n++);return new Uint8Array(i.buffer,0,n)},At=e=>{switch(e){case 0:return"4:0:0";case 1:return"4:2:0";case 2:return"4:2:2";case 3:return"4:4:4";default:return"Unknown"}},Tt=e=>{let t=xt(e),r=new mt(t);r.readByte(),r.readByte();let i=0,n=0,s=0,a=0;r.readBits(4);let o=r.readBits(3);r.readBool();let l=r.readBits(2),d=r.readBool(),u=r.readBits(5),c=r.readByte(),h=r.readByte(),f=r.readByte(),p=r.readByte(),m=r.readByte(),_=r.readByte(),y=r.readByte(),g=r.readByte(),v=r.readByte(),b=r.readByte(),w=r.readByte(),S=[],E=[];for(let e=0;e0)for(let e=o;e<8;e++)r.readBits(2);for(let e=0;e1&&r.readSEG();for(let e=0;e0&&e<16?(I=[1,12,10,16,40,24,20,32,80,18,15,64,160,4,3,2][e-1],L=[1,11,11,11,33,11,11,11,33,11,11,33,99,3,2,1][e-1]):255===e&&(I=r.readBits(16),L=r.readBits(16))}if(r.readBool()&&r.readBool(),r.readBool()){r.readBits(3),r.readBool(),r.readBool()&&(r.readByte(),r.readByte(),r.readByte())}if(r.readBool()&&(r.readUEG(),r.readUEG()),r.readBool(),r.readBool(),r.readBool(),P=r.readBool(),P&&(i+=r.readUEG(),n+=r.readUEG(),s+=r.readUEG(),a+=r.readUEG()),r.readBool()){if(z=r.readBits(32),M=r.readBits(32),r.readBool()){if(r.readUEG(),r.readBool()){let e=!1,t=!1,i=!1;e=r.readBool(),t=r.readBool(),(e||t)&&(i=r.readBool(),i&&(r.readByte(),r.readBits(5),r.readBool(),r.readBits(5)),r.readBits(4),r.readBits(4),i&&r.readBits(4),r.readBits(5),r.readBits(5),r.readBits(5));for(let n=0;n<=o;n++){let n=r.readBool();R=n;let s=!1,a=1;n||(s=r.readBool());let o=!1;if(s?r.readSEG():o=r.readBool(),o||(cpbcnt=r.readUEG()+1),e)for(let e=0;e{let t=xt(e),r=new mt(t);return r.readByte(),r.readByte(),r.readBits(4),r.readBits(2),r.readBits(6),{num_temporal_layers:r.readBits(3)+1,temporal_id_nested:r.readBool()}},Ct=e=>{let t=xt(e),r=new mt(t);r.readByte(),r.readByte(),r.readUEG(),r.readUEG(),r.readBool(),r.readBool(),r.readBits(3),r.readBool(),r.readBool(),r.readUEG(),r.readUEG(),r.readSEG(),r.readBool(),r.readBool(),r.readBool()&&r.readUEG(),r.readSEG(),r.readSEG(),r.readBool(),r.readBool(),r.readBool(),r.readBool();let i=r.readBool(),n=r.readBool(),s=1;return n&&i?s=0:n?s=3:i&&(s=2),{parallelismType:s}};function Bt(e,t=0){return(e[t]<<24>>>0)+(e[t+1]<<16)+(e[t+2]<<8)+(e[t+3]||0)}function Dt(e,t=4){if(e.length<4)return;const r=e.length,i=[];let n,s=0;for(;s+t>>=8),s+=t,n){if(s+n>r)break;i.push(e.subarray(s,s+n)),s+=n}return i}function Pt(e){const t=e.byteLength,r=new Uint8Array(4);r[0]=t>>>24&255,r[1]=t>>>16&255,r[2]=t>>>8&255,r[3]=255&t;const i=new Uint8Array(t+4);return i.set(r,0),i.set(e,4),i}function Ft(e,t){let r=null;return t?e.length>=28&&(r=1+(3&e[26])):e.length>=12&&(r=1+(3&e[9])),r}function It(e,t){let r={},i=e.length,n=[],s=new yt(e);s.read(1),s.read(6),s.read(6),s.read(3);for(let e=2;e0)for(let t=r;t<8;t++)e.read(2);i.sub_layer_profile_space=[],i.sub_layer_tier_flag=[],i.sub_layer_profile_idc=[],i.sub_layer_profile_compatibility_flag=[],i.sub_layer_progressive_source_flag=[],i.sub_layer_interlaced_source_flag=[],i.sub_layer_non_packed_constraint_flag=[],i.sub_layer_frame_only_constraint_flag=[],i.sub_layer_level_idc=[];for(let t=0;t>8,l[14]=255&i.min_spatial_segmentation_idc,l[15]=252|3&i.parallelismType,l[16]=252|3&i.chroma_format_idc,l[17]=248|7&i.bit_depth_luma_minus8,l[18]=248|7&i.bit_depth_chroma_minus8,l[19]=0,l[20]=0,l[21]=(3&i.constant_frame_rate)<<6|(7&i.num_temporal_layers)<<3|(i.temporal_id_nested?1:0)<<2|3,l[22]=3,l[23]=128|Te.vps,l[24]=0,l[25]=1,l[26]=(65280&e.byteLength)>>8,l[27]=255&e.byteLength,l.set(e,28),l[23+(5+e.byteLength)+0]=128|Te.sps,l[23+(5+e.byteLength)+1]=0,l[23+(5+e.byteLength)+2]=1,l[23+(5+e.byteLength)+3]=(65280&r.byteLength)>>8,l[23+(5+e.byteLength)+4]=255&r.byteLength,l.set(r,23+(5+e.byteLength)+5),l[23+(5+e.byteLength+5+r.byteLength)+0]=128|Te.pps,l[23+(5+e.byteLength+5+r.byteLength)+1]=0,l[23+(5+e.byteLength+5+r.byteLength)+2]=1,l[23+(5+e.byteLength+5+r.byteLength)+3]=(65280&t.byteLength)>>8,l[23+(5+e.byteLength+5+r.byteLength)+4]=255&t.byteLength,l.set(t,23+(5+e.byteLength+5+r.byteLength)+5);const d=[28,0,0,0,0],u=new Uint8Array(d.length+l.byteLength);return u.set(d,0),u.set(l,d.length),u}function Rt(e,t){let r=[];r[0]=t?28:44,r[1]=1,r[2]=0,r[3]=0,r[4]=0;const i=new Uint8Array(r.length+e.byteLength);return i.set(r,0),i.set(e,r.length),i}function zt(e){return(126&e[0])>>1}function Mt(e){return!function(e){return e>=32&&e<=40}(e)}function Ot(e){return e>=16&&e<=21}function Nt(e){return parseInt(e)===e}function $t(e){if(!Nt(e.length))return!1;for(var t=0;t255)return!1;return!0}function Gt(e,t){if(e.buffer&&"Uint8Array"===e.name)return t&&(e=e.slice?e.slice():Array.prototype.slice.call(e)),e;if(Array.isArray(e)){if(!$t(e))throw new Error("Array contains invalid value: "+e);return new Uint8Array(e)}if(Nt(e.length)&&$t(e))return new Uint8Array(e);throw new Error("unsupported array-like object")}function Ht(e){return new Uint8Array(e)}function Vt(e,t,r,i,n){null==i&&null==n||(e=e.slice?e.slice(i,n):Array.prototype.slice.call(e,i,n)),t.set(e,r)}var Wt,jt={toBytes:function(e){var t=[],r=0;for(e=encodeURI(e);r191&&i<224?(t.push(String.fromCharCode((31&i)<<6|63&e[r+1])),r+=2):(t.push(String.fromCharCode((15&i)<<12|(63&e[r+1])<<6|63&e[r+2])),r+=3)}return t.join("")}},Yt=(Wt="0123456789abcdef",{toBytes:function(e){for(var t=[],r=0;r>4]+Wt[15&i])}return t.join("")}}),qt={16:10,24:12,32:14},Kt=[1,2,4,8,16,32,64,128,27,54,108,216,171,77,154,47,94,188,99,198,151,53,106,212,179,125,250,239,197,145],Xt=[99,124,119,123,242,107,111,197,48,1,103,43,254,215,171,118,202,130,201,125,250,89,71,240,173,212,162,175,156,164,114,192,183,253,147,38,54,63,247,204,52,165,229,241,113,216,49,21,4,199,35,195,24,150,5,154,7,18,128,226,235,39,178,117,9,131,44,26,27,110,90,160,82,59,214,179,41,227,47,132,83,209,0,237,32,252,177,91,106,203,190,57,74,76,88,207,208,239,170,251,67,77,51,133,69,249,2,127,80,60,159,168,81,163,64,143,146,157,56,245,188,182,218,33,16,255,243,210,205,12,19,236,95,151,68,23,196,167,126,61,100,93,25,115,96,129,79,220,34,42,144,136,70,238,184,20,222,94,11,219,224,50,58,10,73,6,36,92,194,211,172,98,145,149,228,121,231,200,55,109,141,213,78,169,108,86,244,234,101,122,174,8,186,120,37,46,28,166,180,198,232,221,116,31,75,189,139,138,112,62,181,102,72,3,246,14,97,53,87,185,134,193,29,158,225,248,152,17,105,217,142,148,155,30,135,233,206,85,40,223,140,161,137,13,191,230,66,104,65,153,45,15,176,84,187,22],Zt=[82,9,106,213,48,54,165,56,191,64,163,158,129,243,215,251,124,227,57,130,155,47,255,135,52,142,67,68,196,222,233,203,84,123,148,50,166,194,35,61,238,76,149,11,66,250,195,78,8,46,161,102,40,217,36,178,118,91,162,73,109,139,209,37,114,248,246,100,134,104,152,22,212,164,92,204,93,101,182,146,108,112,72,80,253,237,185,218,94,21,70,87,167,141,157,132,144,216,171,0,140,188,211,10,247,228,88,5,184,179,69,6,208,44,30,143,202,63,15,2,193,175,189,3,1,19,138,107,58,145,17,65,79,103,220,234,151,242,207,206,240,180,230,115,150,172,116,34,231,173,53,133,226,249,55,232,28,117,223,110,71,241,26,113,29,41,197,137,111,183,98,14,170,24,190,27,252,86,62,75,198,210,121,32,154,219,192,254,120,205,90,244,31,221,168,51,136,7,199,49,177,18,16,89,39,128,236,95,96,81,127,169,25,181,74,13,45,229,122,159,147,201,156,239,160,224,59,77,174,42,245,176,200,235,187,60,131,83,153,97,23,43,4,126,186,119,214,38,225,105,20,99,85,33,12,125],Jt=[3328402341,4168907908,4000806809,4135287693,4294111757,3597364157,3731845041,2445657428,1613770832,33620227,3462883241,1445669757,3892248089,3050821474,1303096294,3967186586,2412431941,528646813,2311702848,4202528135,4026202645,2992200171,2387036105,4226871307,1101901292,3017069671,1604494077,1169141738,597466303,1403299063,3832705686,2613100635,1974974402,3791519004,1033081774,1277568618,1815492186,2118074177,4126668546,2211236943,1748251740,1369810420,3521504564,4193382664,3799085459,2883115123,1647391059,706024767,134480908,2512897874,1176707941,2646852446,806885416,932615841,168101135,798661301,235341577,605164086,461406363,3756188221,3454790438,1311188841,2142417613,3933566367,302582043,495158174,1479289972,874125870,907746093,3698224818,3025820398,1537253627,2756858614,1983593293,3084310113,2108928974,1378429307,3722699582,1580150641,327451799,2790478837,3117535592,0,3253595436,1075847264,3825007647,2041688520,3059440621,3563743934,2378943302,1740553945,1916352843,2487896798,2555137236,2958579944,2244988746,3151024235,3320835882,1336584933,3992714006,2252555205,2588757463,1714631509,293963156,2319795663,3925473552,67240454,4269768577,2689618160,2017213508,631218106,1269344483,2723238387,1571005438,2151694528,93294474,1066570413,563977660,1882732616,4059428100,1673313503,2008463041,2950355573,1109467491,537923632,3858759450,4260623118,3218264685,2177748300,403442708,638784309,3287084079,3193921505,899127202,2286175436,773265209,2479146071,1437050866,4236148354,2050833735,3362022572,3126681063,840505643,3866325909,3227541664,427917720,2655997905,2749160575,1143087718,1412049534,999329963,193497219,2353415882,3354324521,1807268051,672404540,2816401017,3160301282,369822493,2916866934,3688947771,1681011286,1949973070,336202270,2454276571,201721354,1210328172,3093060836,2680341085,3184776046,1135389935,3294782118,965841320,831886756,3554993207,4068047243,3588745010,2345191491,1849112409,3664604599,26054028,2983581028,2622377682,1235855840,3630984372,2891339514,4092916743,3488279077,3395642799,4101667470,1202630377,268961816,1874508501,4034427016,1243948399,1546530418,941366308,1470539505,1941222599,2546386513,3421038627,2715671932,3899946140,1042226977,2521517021,1639824860,227249030,260737669,3765465232,2084453954,1907733956,3429263018,2420656344,100860677,4160157185,470683154,3261161891,1781871967,2924959737,1773779408,394692241,2579611992,974986535,664706745,3655459128,3958962195,731420851,571543859,3530123707,2849626480,126783113,865375399,765172662,1008606754,361203602,3387549984,2278477385,2857719295,1344809080,2782912378,59542671,1503764984,160008576,437062935,1707065306,3622233649,2218934982,3496503480,2185314755,697932208,1512910199,504303377,2075177163,2824099068,1841019862,739644986],Qt=[2781242211,2230877308,2582542199,2381740923,234877682,3184946027,2984144751,1418839493,1348481072,50462977,2848876391,2102799147,434634494,1656084439,3863849899,2599188086,1167051466,2636087938,1082771913,2281340285,368048890,3954334041,3381544775,201060592,3963727277,1739838676,4250903202,3930435503,3206782108,4149453988,2531553906,1536934080,3262494647,484572669,2923271059,1783375398,1517041206,1098792767,49674231,1334037708,1550332980,4098991525,886171109,150598129,2481090929,1940642008,1398944049,1059722517,201851908,1385547719,1699095331,1587397571,674240536,2704774806,252314885,3039795866,151914247,908333586,2602270848,1038082786,651029483,1766729511,3447698098,2682942837,454166793,2652734339,1951935532,775166490,758520603,3000790638,4004797018,4217086112,4137964114,1299594043,1639438038,3464344499,2068982057,1054729187,1901997871,2534638724,4121318227,1757008337,0,750906861,1614815264,535035132,3363418545,3988151131,3201591914,1183697867,3647454910,1265776953,3734260298,3566750796,3903871064,1250283471,1807470800,717615087,3847203498,384695291,3313910595,3617213773,1432761139,2484176261,3481945413,283769337,100925954,2180939647,4037038160,1148730428,3123027871,3813386408,4087501137,4267549603,3229630528,2315620239,2906624658,3156319645,1215313976,82966005,3747855548,3245848246,1974459098,1665278241,807407632,451280895,251524083,1841287890,1283575245,337120268,891687699,801369324,3787349855,2721421207,3431482436,959321879,1469301956,4065699751,2197585534,1199193405,2898814052,3887750493,724703513,2514908019,2696962144,2551808385,3516813135,2141445340,1715741218,2119445034,2872807568,2198571144,3398190662,700968686,3547052216,1009259540,2041044702,3803995742,487983883,1991105499,1004265696,1449407026,1316239930,504629770,3683797321,168560134,1816667172,3837287516,1570751170,1857934291,4014189740,2797888098,2822345105,2754712981,936633572,2347923833,852879335,1133234376,1500395319,3084545389,2348912013,1689376213,3533459022,3762923945,3034082412,4205598294,133428468,634383082,2949277029,2398386810,3913789102,403703816,3580869306,2297460856,1867130149,1918643758,607656988,4049053350,3346248884,1368901318,600565992,2090982877,2632479860,557719327,3717614411,3697393085,2249034635,2232388234,2430627952,1115438654,3295786421,2865522278,3633334344,84280067,33027830,303828494,2747425121,1600795957,4188952407,3496589753,2434238086,1486471617,658119965,3106381470,953803233,334231800,3005978776,857870609,3151128937,1890179545,2298973838,2805175444,3056442267,574365214,2450884487,550103529,1233637070,4289353045,2018519080,2057691103,2399374476,4166623649,2148108681,387583245,3664101311,836232934,3330556482,3100665960,3280093505,2955516313,2002398509,287182607,3413881008,4238890068,3597515707,975967766],er=[1671808611,2089089148,2006576759,2072901243,4061003762,1807603307,1873927791,3310653893,810573872,16974337,1739181671,729634347,4263110654,3613570519,2883997099,1989864566,3393556426,2191335298,3376449993,2106063485,4195741690,1508618841,1204391495,4027317232,2917941677,3563566036,2734514082,2951366063,2629772188,2767672228,1922491506,3227229120,3082974647,4246528509,2477669779,644500518,911895606,1061256767,4144166391,3427763148,878471220,2784252325,3845444069,4043897329,1905517169,3631459288,827548209,356461077,67897348,3344078279,593839651,3277757891,405286936,2527147926,84871685,2595565466,118033927,305538066,2157648768,3795705826,3945188843,661212711,2999812018,1973414517,152769033,2208177539,745822252,439235610,455947803,1857215598,1525593178,2700827552,1391895634,994932283,3596728278,3016654259,695947817,3812548067,795958831,2224493444,1408607827,3513301457,0,3979133421,543178784,4229948412,2982705585,1542305371,1790891114,3410398667,3201918910,961245753,1256100938,1289001036,1491644504,3477767631,3496721360,4012557807,2867154858,4212583931,1137018435,1305975373,861234739,2241073541,1171229253,4178635257,33948674,2139225727,1357946960,1011120188,2679776671,2833468328,1374921297,2751356323,1086357568,2408187279,2460827538,2646352285,944271416,4110742005,3168756668,3066132406,3665145818,560153121,271589392,4279952895,4077846003,3530407890,3444343245,202643468,322250259,3962553324,1608629855,2543990167,1154254916,389623319,3294073796,2817676711,2122513534,1028094525,1689045092,1575467613,422261273,1939203699,1621147744,2174228865,1339137615,3699352540,577127458,712922154,2427141008,2290289544,1187679302,3995715566,3100863416,339486740,3732514782,1591917662,186455563,3681988059,3762019296,844522546,978220090,169743370,1239126601,101321734,611076132,1558493276,3260915650,3547250131,2901361580,1655096418,2443721105,2510565781,3828863972,2039214713,3878868455,3359869896,928607799,1840765549,2374762893,3580146133,1322425422,2850048425,1823791212,1459268694,4094161908,3928346602,1706019429,2056189050,2934523822,135794696,3134549946,2022240376,628050469,779246638,472135708,2800834470,3032970164,3327236038,3894660072,3715932637,1956440180,522272287,1272813131,3185336765,2340818315,2323976074,1888542832,1044544574,3049550261,1722469478,1222152264,50660867,4127324150,236067854,1638122081,895445557,1475980887,3117443513,2257655686,3243809217,489110045,2662934430,3778599393,4162055160,2561878936,288563729,1773916777,3648039385,2391345038,2493985684,2612407707,505560094,2274497927,3911240169,3460925390,1442818645,678973480,3749357023,2358182796,2717407649,2306869641,219617805,3218761151,3862026214,1120306242,1756942440,1103331905,2578459033,762796589,252780047,2966125488,1425844308,3151392187,372911126],tr=[1667474886,2088535288,2004326894,2071694838,4075949567,1802223062,1869591006,3318043793,808472672,16843522,1734846926,724270422,4278065639,3621216949,2880169549,1987484396,3402253711,2189597983,3385409673,2105378810,4210693615,1499065266,1195886990,4042263547,2913856577,3570689971,2728590687,2947541573,2627518243,2762274643,1920112356,3233831835,3082273397,4261223649,2475929149,640051788,909531756,1061110142,4160160501,3435941763,875846760,2779116625,3857003729,4059105529,1903268834,3638064043,825316194,353713962,67374088,3351728789,589522246,3284360861,404236336,2526454071,84217610,2593830191,117901582,303183396,2155911963,3806477791,3958056653,656894286,2998062463,1970642922,151591698,2206440989,741110872,437923380,454765878,1852748508,1515908788,2694904667,1381168804,993742198,3604373943,3014905469,690584402,3823320797,791638366,2223281939,1398011302,3520161977,0,3991743681,538992704,4244381667,2981218425,1532751286,1785380564,3419096717,3200178535,960056178,1246420628,1280103576,1482221744,3486468741,3503319995,4025428677,2863326543,4227536621,1128514950,1296947098,859002214,2240123921,1162203018,4193849577,33687044,2139062782,1347481760,1010582648,2678045221,2829640523,1364325282,2745433693,1077985408,2408548869,2459086143,2644360225,943212656,4126475505,3166494563,3065430391,3671750063,555836226,269496352,4294908645,4092792573,3537006015,3452783745,202118168,320025894,3974901699,1600119230,2543297077,1145359496,387397934,3301201811,2812801621,2122220284,1027426170,1684319432,1566435258,421079858,1936954854,1616945344,2172753945,1330631070,3705438115,572679748,707427924,2425400123,2290647819,1179044492,4008585671,3099120491,336870440,3739122087,1583276732,185277718,3688593069,3772791771,842159716,976899700,168435220,1229577106,101059084,606366792,1549591736,3267517855,3553849021,2897014595,1650632388,2442242105,2509612081,3840161747,2038008818,3890688725,3368567691,926374254,1835907034,2374863873,3587531953,1313788572,2846482505,1819063512,1448540844,4109633523,3941213647,1701162954,2054852340,2930698567,134748176,3132806511,2021165296,623210314,774795868,471606328,2795958615,3031746419,3334885783,3907527627,3722280097,1953799400,522133822,1263263126,3183336545,2341176845,2324333839,1886425312,1044267644,3048588401,1718004428,1212733584,50529542,4143317495,235803164,1633788866,892690282,1465383342,3115962473,2256965911,3250673817,488449850,2661202215,3789633753,4177007595,2560144171,286339874,1768537042,3654906025,2391705863,2492770099,2610673197,505291324,2273808917,3924369609,3469625735,1431699370,673740880,3755965093,2358021891,2711746649,2307489801,218961690,3217021541,3873845719,1111672452,1751693520,1094828930,2576986153,757954394,252645662,2964376443,1414855848,3149649517,370555436],rr=[1374988112,2118214995,437757123,975658646,1001089995,530400753,2902087851,1273168787,540080725,2910219766,2295101073,4110568485,1340463100,3307916247,641025152,3043140495,3736164937,632953703,1172967064,1576976609,3274667266,2169303058,2370213795,1809054150,59727847,361929877,3211623147,2505202138,3569255213,1484005843,1239443753,2395588676,1975683434,4102977912,2572697195,666464733,3202437046,4035489047,3374361702,2110667444,1675577880,3843699074,2538681184,1649639237,2976151520,3144396420,4269907996,4178062228,1883793496,2403728665,2497604743,1383856311,2876494627,1917518562,3810496343,1716890410,3001755655,800440835,2261089178,3543599269,807962610,599762354,33778362,3977675356,2328828971,2809771154,4077384432,1315562145,1708848333,101039829,3509871135,3299278474,875451293,2733856160,92987698,2767645557,193195065,1080094634,1584504582,3178106961,1042385657,2531067453,3711829422,1306967366,2438237621,1908694277,67556463,1615861247,429456164,3602770327,2302690252,1742315127,2968011453,126454664,3877198648,2043211483,2709260871,2084704233,4169408201,0,159417987,841739592,504459436,1817866830,4245618683,260388950,1034867998,908933415,168810852,1750902305,2606453969,607530554,202008497,2472011535,3035535058,463180190,2160117071,1641816226,1517767529,470948374,3801332234,3231722213,1008918595,303765277,235474187,4069246893,766945465,337553864,1475418501,2943682380,4003061179,2743034109,4144047775,1551037884,1147550661,1543208500,2336434550,3408119516,3069049960,3102011747,3610369226,1113818384,328671808,2227573024,2236228733,3535486456,2935566865,3341394285,496906059,3702665459,226906860,2009195472,733156972,2842737049,294930682,1206477858,2835123396,2700099354,1451044056,573804783,2269728455,3644379585,2362090238,2564033334,2801107407,2776292904,3669462566,1068351396,742039012,1350078989,1784663195,1417561698,4136440770,2430122216,775550814,2193862645,2673705150,1775276924,1876241833,3475313331,3366754619,270040487,3902563182,3678124923,3441850377,1851332852,3969562369,2203032232,3868552805,2868897406,566021896,4011190502,3135740889,1248802510,3936291284,699432150,832877231,708780849,3332740144,899835584,1951317047,4236429990,3767586992,866637845,4043610186,1106041591,2144161806,395441711,1984812685,1139781709,3433712980,3835036895,2664543715,1282050075,3240894392,1181045119,2640243204,25965917,4203181171,4211818798,3009879386,2463879762,3910161971,1842759443,2597806476,933301370,1509430414,3943906441,3467192302,3076639029,3776767469,2051518780,2631065433,1441952575,404016761,1942435775,1408749034,1610459739,3745345300,2017778566,3400528769,3110650942,941896748,3265478751,371049330,3168937228,675039627,4279080257,967311729,135050206,3635733660,1683407248,2076935265,3576870512,1215061108,3501741890],ir=[1347548327,1400783205,3273267108,2520393566,3409685355,4045380933,2880240216,2471224067,1428173050,4138563181,2441661558,636813900,4233094615,3620022987,2149987652,2411029155,1239331162,1730525723,2554718734,3781033664,46346101,310463728,2743944855,3328955385,3875770207,2501218972,3955191162,3667219033,768917123,3545789473,692707433,1150208456,1786102409,2029293177,1805211710,3710368113,3065962831,401639597,1724457132,3028143674,409198410,2196052529,1620529459,1164071807,3769721975,2226875310,486441376,2499348523,1483753576,428819965,2274680428,3075636216,598438867,3799141122,1474502543,711349675,129166120,53458370,2592523643,2782082824,4063242375,2988687269,3120694122,1559041666,730517276,2460449204,4042459122,2706270690,3446004468,3573941694,533804130,2328143614,2637442643,2695033685,839224033,1973745387,957055980,2856345839,106852767,1371368976,4181598602,1033297158,2933734917,1179510461,3046200461,91341917,1862534868,4284502037,605657339,2547432937,3431546947,2003294622,3182487618,2282195339,954669403,3682191598,1201765386,3917234703,3388507166,0,2198438022,1211247597,2887651696,1315723890,4227665663,1443857720,507358933,657861945,1678381017,560487590,3516619604,975451694,2970356327,261314535,3535072918,2652609425,1333838021,2724322336,1767536459,370938394,182621114,3854606378,1128014560,487725847,185469197,2918353863,3106780840,3356761769,2237133081,1286567175,3152976349,4255350624,2683765030,3160175349,3309594171,878443390,1988838185,3704300486,1756818940,1673061617,3403100636,272786309,1075025698,545572369,2105887268,4174560061,296679730,1841768865,1260232239,4091327024,3960309330,3497509347,1814803222,2578018489,4195456072,575138148,3299409036,446754879,3629546796,4011996048,3347532110,3252238545,4270639778,915985419,3483825537,681933534,651868046,2755636671,3828103837,223377554,2607439820,1649704518,3270937875,3901806776,1580087799,4118987695,3198115200,2087309459,2842678573,3016697106,1003007129,2802849917,1860738147,2077965243,164439672,4100872472,32283319,2827177882,1709610350,2125135846,136428751,3874428392,3652904859,3460984630,3572145929,3593056380,2939266226,824852259,818324884,3224740454,930369212,2801566410,2967507152,355706840,1257309336,4148292826,243256656,790073846,2373340630,1296297904,1422699085,3756299780,3818836405,457992840,3099667487,2135319889,77422314,1560382517,1945798516,788204353,1521706781,1385356242,870912086,325965383,2358957921,2050466060,2388260884,2313884476,4006521127,901210569,3990953189,1014646705,1503449823,1062597235,2031621326,3212035895,3931371469,1533017514,350174575,2256028891,2177544179,1052338372,741876788,1606591296,1914052035,213705253,2334669897,1107234197,1899603969,3725069491,2631447780,2422494913,1635502980,1893020342,1950903388,1120974935],nr=[2807058932,1699970625,2764249623,1586903591,1808481195,1173430173,1487645946,59984867,4199882800,1844882806,1989249228,1277555970,3623636965,3419915562,1149249077,2744104290,1514790577,459744698,244860394,3235995134,1963115311,4027744588,2544078150,4190530515,1608975247,2627016082,2062270317,1507497298,2200818878,567498868,1764313568,3359936201,2305455554,2037970062,1047239e3,1910319033,1337376481,2904027272,2892417312,984907214,1243112415,830661914,861968209,2135253587,2011214180,2927934315,2686254721,731183368,1750626376,4246310725,1820824798,4172763771,3542330227,48394827,2404901663,2871682645,671593195,3254988725,2073724613,145085239,2280796200,2779915199,1790575107,2187128086,472615631,3029510009,4075877127,3802222185,4107101658,3201631749,1646252340,4270507174,1402811438,1436590835,3778151818,3950355702,3963161475,4020912224,2667994737,273792366,2331590177,104699613,95345982,3175501286,2377486676,1560637892,3564045318,369057872,4213447064,3919042237,1137477952,2658625497,1119727848,2340947849,1530455833,4007360968,172466556,266959938,516552836,0,2256734592,3980931627,1890328081,1917742170,4294704398,945164165,3575528878,958871085,3647212047,2787207260,1423022939,775562294,1739656202,3876557655,2530391278,2443058075,3310321856,547512796,1265195639,437656594,3121275539,719700128,3762502690,387781147,218828297,3350065803,2830708150,2848461854,428169201,122466165,3720081049,1627235199,648017665,4122762354,1002783846,2117360635,695634755,3336358691,4234721005,4049844452,3704280881,2232435299,574624663,287343814,612205898,1039717051,840019705,2708326185,793451934,821288114,1391201670,3822090177,376187827,3113855344,1224348052,1679968233,2361698556,1058709744,752375421,2431590963,1321699145,3519142200,2734591178,188127444,2177869557,3727205754,2384911031,3215212461,2648976442,2450346104,3432737375,1180849278,331544205,3102249176,4150144569,2952102595,2159976285,2474404304,766078933,313773861,2570832044,2108100632,1668212892,3145456443,2013908262,418672217,3070356634,2594734927,1852171925,3867060991,3473416636,3907448597,2614737639,919489135,164948639,2094410160,2997825956,590424639,2486224549,1723872674,3157750862,3399941250,3501252752,3625268135,2555048196,3673637356,1343127501,4130281361,3599595085,2957853679,1297403050,81781910,3051593425,2283490410,532201772,1367295589,3926170974,895287692,1953757831,1093597963,492483431,3528626907,1446242576,1192455638,1636604631,209336225,344873464,1015671571,669961897,3375740769,3857572124,2973530695,3747192018,1933530610,3464042516,935293895,3454686199,2858115069,1863638845,3683022916,4085369519,3292445032,875313188,1080017571,3279033885,621591778,1233856572,2504130317,24197544,3017672716,3835484340,3247465558,2220981195,3060847922,1551124588,1463996600],sr=[4104605777,1097159550,396673818,660510266,2875968315,2638606623,4200115116,3808662347,821712160,1986918061,3430322568,38544885,3856137295,718002117,893681702,1654886325,2975484382,3122358053,3926825029,4274053469,796197571,1290801793,1184342925,3556361835,2405426947,2459735317,1836772287,1381620373,3196267988,1948373848,3764988233,3385345166,3263785589,2390325492,1480485785,3111247143,3780097726,2293045232,548169417,3459953789,3746175075,439452389,1362321559,1400849762,1685577905,1806599355,2174754046,137073913,1214797936,1174215055,3731654548,2079897426,1943217067,1258480242,529487843,1437280870,3945269170,3049390895,3313212038,923313619,679998e3,3215307299,57326082,377642221,3474729866,2041877159,133361907,1776460110,3673476453,96392454,878845905,2801699524,777231668,4082475170,2330014213,4142626212,2213296395,1626319424,1906247262,1846563261,562755902,3708173718,1040559837,3871163981,1418573201,3294430577,114585348,1343618912,2566595609,3186202582,1078185097,3651041127,3896688048,2307622919,425408743,3371096953,2081048481,1108339068,2216610296,0,2156299017,736970802,292596766,1517440620,251657213,2235061775,2933202493,758720310,265905162,1554391400,1532285339,908999204,174567692,1474760595,4002861748,2610011675,3234156416,3693126241,2001430874,303699484,2478443234,2687165888,585122620,454499602,151849742,2345119218,3064510765,514443284,4044981591,1963412655,2581445614,2137062819,19308535,1928707164,1715193156,4219352155,1126790795,600235211,3992742070,3841024952,836553431,1669664834,2535604243,3323011204,1243905413,3141400786,4180808110,698445255,2653899549,2989552604,2253581325,3252932727,3004591147,1891211689,2487810577,3915653703,4237083816,4030667424,2100090966,865136418,1229899655,953270745,3399679628,3557504664,4118925222,2061379749,3079546586,2915017791,983426092,2022837584,1607244650,2118541908,2366882550,3635996816,972512814,3283088770,1568718495,3499326569,3576539503,621982671,2895723464,410887952,2623762152,1002142683,645401037,1494807662,2595684844,1335535747,2507040230,4293295786,3167684641,367585007,3885750714,1865862730,2668221674,2960971305,2763173681,1059270954,2777952454,2724642869,1320957812,2194319100,2429595872,2815956275,77089521,3973773121,3444575871,2448830231,1305906550,4021308739,2857194700,2516901860,3518358430,1787304780,740276417,1699839814,1592394909,2352307457,2272556026,188821243,1729977011,3687994002,274084841,3594982253,3613494426,2701949495,4162096729,322734571,2837966542,1640576439,484830689,1202797690,3537852828,4067639125,349075736,3342319475,4157467219,4255800159,1030690015,1155237496,2951971274,1757691577,607398968,2738905026,499347990,3794078908,1011452712,227885567,2818666809,213114376,3034881240,1455525988,3414450555,850817237,1817998408,3092726480],ar=[0,235474187,470948374,303765277,941896748,908933415,607530554,708780849,1883793496,2118214995,1817866830,1649639237,1215061108,1181045119,1417561698,1517767529,3767586992,4003061179,4236429990,4069246893,3635733660,3602770327,3299278474,3400528769,2430122216,2664543715,2362090238,2193862645,2835123396,2801107407,3035535058,3135740889,3678124923,3576870512,3341394285,3374361702,3810496343,3977675356,4279080257,4043610186,2876494627,2776292904,3076639029,3110650942,2472011535,2640243204,2403728665,2169303058,1001089995,899835584,666464733,699432150,59727847,226906860,530400753,294930682,1273168787,1172967064,1475418501,1509430414,1942435775,2110667444,1876241833,1641816226,2910219766,2743034109,2976151520,3211623147,2505202138,2606453969,2302690252,2269728455,3711829422,3543599269,3240894392,3475313331,3843699074,3943906441,4178062228,4144047775,1306967366,1139781709,1374988112,1610459739,1975683434,2076935265,1775276924,1742315127,1034867998,866637845,566021896,800440835,92987698,193195065,429456164,395441711,1984812685,2017778566,1784663195,1683407248,1315562145,1080094634,1383856311,1551037884,101039829,135050206,437757123,337553864,1042385657,807962610,573804783,742039012,2531067453,2564033334,2328828971,2227573024,2935566865,2700099354,3001755655,3168937228,3868552805,3902563182,4203181171,4102977912,3736164937,3501741890,3265478751,3433712980,1106041591,1340463100,1576976609,1408749034,2043211483,2009195472,1708848333,1809054150,832877231,1068351396,766945465,599762354,159417987,126454664,361929877,463180190,2709260871,2943682380,3178106961,3009879386,2572697195,2538681184,2236228733,2336434550,3509871135,3745345300,3441850377,3274667266,3910161971,3877198648,4110568485,4211818798,2597806476,2497604743,2261089178,2295101073,2733856160,2902087851,3202437046,2968011453,3936291284,3835036895,4136440770,4169408201,3535486456,3702665459,3467192302,3231722213,2051518780,1951317047,1716890410,1750902305,1113818384,1282050075,1584504582,1350078989,168810852,67556463,371049330,404016761,841739592,1008918595,775550814,540080725,3969562369,3801332234,4035489047,4269907996,3569255213,3669462566,3366754619,3332740144,2631065433,2463879762,2160117071,2395588676,2767645557,2868897406,3102011747,3069049960,202008497,33778362,270040487,504459436,875451293,975658646,675039627,641025152,2084704233,1917518562,1615861247,1851332852,1147550661,1248802510,1484005843,1451044056,933301370,967311729,733156972,632953703,260388950,25965917,328671808,496906059,1206477858,1239443753,1543208500,1441952575,2144161806,1908694277,1675577880,1842759443,3610369226,3644379585,3408119516,3307916247,4011190502,3776767469,4077384432,4245618683,2809771154,2842737049,3144396420,3043140495,2673705150,2438237621,2203032232,2370213795],or=[0,185469197,370938394,487725847,741876788,657861945,975451694,824852259,1483753576,1400783205,1315723890,1164071807,1950903388,2135319889,1649704518,1767536459,2967507152,3152976349,2801566410,2918353863,2631447780,2547432937,2328143614,2177544179,3901806776,3818836405,4270639778,4118987695,3299409036,3483825537,3535072918,3652904859,2077965243,1893020342,1841768865,1724457132,1474502543,1559041666,1107234197,1257309336,598438867,681933534,901210569,1052338372,261314535,77422314,428819965,310463728,3409685355,3224740454,3710368113,3593056380,3875770207,3960309330,4045380933,4195456072,2471224067,2554718734,2237133081,2388260884,3212035895,3028143674,2842678573,2724322336,4138563181,4255350624,3769721975,3955191162,3667219033,3516619604,3431546947,3347532110,2933734917,2782082824,3099667487,3016697106,2196052529,2313884476,2499348523,2683765030,1179510461,1296297904,1347548327,1533017514,1786102409,1635502980,2087309459,2003294622,507358933,355706840,136428751,53458370,839224033,957055980,605657339,790073846,2373340630,2256028891,2607439820,2422494913,2706270690,2856345839,3075636216,3160175349,3573941694,3725069491,3273267108,3356761769,4181598602,4063242375,4011996048,3828103837,1033297158,915985419,730517276,545572369,296679730,446754879,129166120,213705253,1709610350,1860738147,1945798516,2029293177,1239331162,1120974935,1606591296,1422699085,4148292826,4233094615,3781033664,3931371469,3682191598,3497509347,3446004468,3328955385,2939266226,2755636671,3106780840,2988687269,2198438022,2282195339,2501218972,2652609425,1201765386,1286567175,1371368976,1521706781,1805211710,1620529459,2105887268,1988838185,533804130,350174575,164439672,46346101,870912086,954669403,636813900,788204353,2358957921,2274680428,2592523643,2441661558,2695033685,2880240216,3065962831,3182487618,3572145929,3756299780,3270937875,3388507166,4174560061,4091327024,4006521127,3854606378,1014646705,930369212,711349675,560487590,272786309,457992840,106852767,223377554,1678381017,1862534868,1914052035,2031621326,1211247597,1128014560,1580087799,1428173050,32283319,182621114,401639597,486441376,768917123,651868046,1003007129,818324884,1503449823,1385356242,1333838021,1150208456,1973745387,2125135846,1673061617,1756818940,2970356327,3120694122,2802849917,2887651696,2637442643,2520393566,2334669897,2149987652,3917234703,3799141122,4284502037,4100872472,3309594171,3460984630,3545789473,3629546796,2050466060,1899603969,1814803222,1730525723,1443857720,1560382517,1075025698,1260232239,575138148,692707433,878443390,1062597235,243256656,91341917,409198410,325965383,3403100636,3252238545,3704300486,3620022987,3874428392,3990953189,4042459122,4227665663,2460449204,2578018489,2226875310,2411029155,3198115200,3046200461,2827177882,2743944855],lr=[0,218828297,437656594,387781147,875313188,958871085,775562294,590424639,1750626376,1699970625,1917742170,2135253587,1551124588,1367295589,1180849278,1265195639,3501252752,3720081049,3399941250,3350065803,3835484340,3919042237,4270507174,4085369519,3102249176,3051593425,2734591178,2952102595,2361698556,2177869557,2530391278,2614737639,3145456443,3060847922,2708326185,2892417312,2404901663,2187128086,2504130317,2555048196,3542330227,3727205754,3375740769,3292445032,3876557655,3926170974,4246310725,4027744588,1808481195,1723872674,1910319033,2094410160,1608975247,1391201670,1173430173,1224348052,59984867,244860394,428169201,344873464,935293895,984907214,766078933,547512796,1844882806,1627235199,2011214180,2062270317,1507497298,1423022939,1137477952,1321699145,95345982,145085239,532201772,313773861,830661914,1015671571,731183368,648017665,3175501286,2957853679,2807058932,2858115069,2305455554,2220981195,2474404304,2658625497,3575528878,3625268135,3473416636,3254988725,3778151818,3963161475,4213447064,4130281361,3599595085,3683022916,3432737375,3247465558,3802222185,4020912224,4172763771,4122762354,3201631749,3017672716,2764249623,2848461854,2331590177,2280796200,2431590963,2648976442,104699613,188127444,472615631,287343814,840019705,1058709744,671593195,621591778,1852171925,1668212892,1953757831,2037970062,1514790577,1463996600,1080017571,1297403050,3673637356,3623636965,3235995134,3454686199,4007360968,3822090177,4107101658,4190530515,2997825956,3215212461,2830708150,2779915199,2256734592,2340947849,2627016082,2443058075,172466556,122466165,273792366,492483431,1047239e3,861968209,612205898,695634755,1646252340,1863638845,2013908262,1963115311,1446242576,1530455833,1277555970,1093597963,1636604631,1820824798,2073724613,1989249228,1436590835,1487645946,1337376481,1119727848,164948639,81781910,331544205,516552836,1039717051,821288114,669961897,719700128,2973530695,3157750862,2871682645,2787207260,2232435299,2283490410,2667994737,2450346104,3647212047,3564045318,3279033885,3464042516,3980931627,3762502690,4150144569,4199882800,3070356634,3121275539,2904027272,2686254721,2200818878,2384911031,2570832044,2486224549,3747192018,3528626907,3310321856,3359936201,3950355702,3867060991,4049844452,4234721005,1739656202,1790575107,2108100632,1890328081,1402811438,1586903591,1233856572,1149249077,266959938,48394827,369057872,418672217,1002783846,919489135,567498868,752375421,209336225,24197544,376187827,459744698,945164165,895287692,574624663,793451934,1679968233,1764313568,2117360635,1933530610,1343127501,1560637892,1243112415,1192455638,3704280881,3519142200,3336358691,3419915562,3907448597,3857572124,4075877127,4294704398,3029510009,3113855344,2927934315,2744104290,2159976285,2377486676,2594734927,2544078150],dr=[0,151849742,303699484,454499602,607398968,758720310,908999204,1059270954,1214797936,1097159550,1517440620,1400849762,1817998408,1699839814,2118541908,2001430874,2429595872,2581445614,2194319100,2345119218,3034881240,3186202582,2801699524,2951971274,3635996816,3518358430,3399679628,3283088770,4237083816,4118925222,4002861748,3885750714,1002142683,850817237,698445255,548169417,529487843,377642221,227885567,77089521,1943217067,2061379749,1640576439,1757691577,1474760595,1592394909,1174215055,1290801793,2875968315,2724642869,3111247143,2960971305,2405426947,2253581325,2638606623,2487810577,3808662347,3926825029,4044981591,4162096729,3342319475,3459953789,3576539503,3693126241,1986918061,2137062819,1685577905,1836772287,1381620373,1532285339,1078185097,1229899655,1040559837,923313619,740276417,621982671,439452389,322734571,137073913,19308535,3871163981,4021308739,4104605777,4255800159,3263785589,3414450555,3499326569,3651041127,2933202493,2815956275,3167684641,3049390895,2330014213,2213296395,2566595609,2448830231,1305906550,1155237496,1607244650,1455525988,1776460110,1626319424,2079897426,1928707164,96392454,213114376,396673818,514443284,562755902,679998e3,865136418,983426092,3708173718,3557504664,3474729866,3323011204,4180808110,4030667424,3945269170,3794078908,2507040230,2623762152,2272556026,2390325492,2975484382,3092726480,2738905026,2857194700,3973773121,3856137295,4274053469,4157467219,3371096953,3252932727,3673476453,3556361835,2763173681,2915017791,3064510765,3215307299,2156299017,2307622919,2459735317,2610011675,2081048481,1963412655,1846563261,1729977011,1480485785,1362321559,1243905413,1126790795,878845905,1030690015,645401037,796197571,274084841,425408743,38544885,188821243,3613494426,3731654548,3313212038,3430322568,4082475170,4200115116,3780097726,3896688048,2668221674,2516901860,2366882550,2216610296,3141400786,2989552604,2837966542,2687165888,1202797690,1320957812,1437280870,1554391400,1669664834,1787304780,1906247262,2022837584,265905162,114585348,499347990,349075736,736970802,585122620,972512814,821712160,2595684844,2478443234,2293045232,2174754046,3196267988,3079546586,2895723464,2777952454,3537852828,3687994002,3234156416,3385345166,4142626212,4293295786,3841024952,3992742070,174567692,57326082,410887952,292596766,777231668,660510266,1011452712,893681702,1108339068,1258480242,1343618912,1494807662,1715193156,1865862730,1948373848,2100090966,2701949495,2818666809,3004591147,3122358053,2235061775,2352307457,2535604243,2653899549,3915653703,3764988233,4219352155,4067639125,3444575871,3294430577,3746175075,3594982253,836553431,953270745,600235211,718002117,367585007,484830689,133361907,251657213,2041877159,1891211689,1806599355,1654886325,1568718495,1418573201,1335535747,1184342925];function ur(e){for(var t=[],r=0;r>2,this._Ke[r][t%4]=s[t],this._Kd[e-r][t%4]=s[t];for(var a,o=0,l=n;l>16&255]<<24^Xt[a>>8&255]<<16^Xt[255&a]<<8^Xt[a>>24&255]^Kt[o]<<24,o+=1,8!=n)for(t=1;t>8&255]<<8^Xt[a>>16&255]<<16^Xt[a>>24&255]<<24;for(t=n/2+1;t>2,u=l%4,this._Ke[d][u]=s[t],this._Kd[e-d][u]=s[t++],l++}for(var d=1;d>24&255]^or[a>>16&255]^lr[a>>8&255]^dr[255&a]},cr.prototype.encrypt=function(e){if(16!=e.length)throw new Error("invalid plaintext size (must be 16 bytes)");for(var t=this._Ke.length-1,r=[0,0,0,0],i=ur(e),n=0;n<4;n++)i[n]^=this._Ke[0][n];for(var s=1;s>24&255]^Qt[i[(n+1)%4]>>16&255]^er[i[(n+2)%4]>>8&255]^tr[255&i[(n+3)%4]]^this._Ke[s][n];i=r.slice()}var a,o=Ht(16);for(n=0;n<4;n++)a=this._Ke[t][n],o[4*n]=255&(Xt[i[n]>>24&255]^a>>24),o[4*n+1]=255&(Xt[i[(n+1)%4]>>16&255]^a>>16),o[4*n+2]=255&(Xt[i[(n+2)%4]>>8&255]^a>>8),o[4*n+3]=255&(Xt[255&i[(n+3)%4]]^a);return o},cr.prototype.decrypt=function(e){if(16!=e.length)throw new Error("invalid ciphertext size (must be 16 bytes)");for(var t=this._Kd.length-1,r=[0,0,0,0],i=ur(e),n=0;n<4;n++)i[n]^=this._Kd[0][n];for(var s=1;s>24&255]^ir[i[(n+3)%4]>>16&255]^nr[i[(n+2)%4]>>8&255]^sr[255&i[(n+1)%4]]^this._Kd[s][n];i=r.slice()}var a,o=Ht(16);for(n=0;n<4;n++)a=this._Kd[t][n],o[4*n]=255&(Zt[i[n]>>24&255]^a>>24),o[4*n+1]=255&(Zt[i[(n+3)%4]>>16&255]^a>>16),o[4*n+2]=255&(Zt[i[(n+2)%4]>>8&255]^a>>8),o[4*n+3]=255&(Zt[255&i[(n+1)%4]]^a);return o};var hr=function(e){if(!(this instanceof hr))throw Error("AES must be instanitated with `new`");this.description="Electronic Code Block",this.name="ecb",this._aes=new cr(e)};hr.prototype.encrypt=function(e){if((e=Gt(e)).length%16!=0)throw new Error("invalid plaintext size (must be multiple of 16 bytes)");for(var t=Ht(e.length),r=Ht(16),i=0;iNumber.MAX_SAFE_INTEGER)throw new Error("integer value out of safe range");for(var t=15;t>=0;--t)this._counter[t]=e%256,e=parseInt(e/256)},_r.prototype.setBytes=function(e){if(16!=(e=Gt(e,!0)).length)throw new Error("invalid counter bytes size (must be 16 bytes)");this._counter=e},_r.prototype.increment=function(){for(var e=15;e>=0;e--){if(255!==this._counter[e]){this._counter[e]++;break}this._counter[e]=0}};var yr=function(e,t){if(!(this instanceof yr))throw Error("AES must be instanitated with `new`");this.description="Counter",this.name="ctr",t instanceof _r||(t=new _r(t)),this._counter=t,this._remainingCounter=null,this._remainingCounterIndex=16,this._aes=new cr(e)};yr.prototype.encrypt=function(e){for(var t=Gt(e,!0),r=0;r16)throw new Error("PKCS#7 padding byte out of range");for(var r=e.length-t,i=0;i=i&&console.debug("["+s.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)},log:function(e,t){this.debug(e.msg)},info:function(e,t){2>=i&&console.info("["+s.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)},warn:function(e,t){3>=i&&console.warn("["+s.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)},error:function(e,t){4>=i&&console.error("["+s.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)}},n);s.getDurationString=function(e,t){var r;function i(e,t){for(var r=(""+e).split(".");r[0].length0){for(var r="",i=0;i0&&(r+=","),r+="["+s.getDurationString(e.start(i))+","+s.getDurationString(e.end(i))+"]";return r}return"(empty)"},t.Log=s;var a=function(e){if(!(e instanceof ArrayBuffer))throw"Needs an array buffer";this.buffer=e,this.dataview=new DataView(e),this.position=0};a.prototype.getPosition=function(){return this.position},a.prototype.getEndPosition=function(){return this.buffer.byteLength},a.prototype.getLength=function(){return this.buffer.byteLength},a.prototype.seek=function(e){var t=Math.max(0,Math.min(this.buffer.byteLength,e));return this.position=isNaN(t)||!isFinite(t)?0:t,!0},a.prototype.isEos=function(){return this.getPosition()>=this.getEndPosition()},a.prototype.readAnyInt=function(e,t){var r=0;if(this.position+e<=this.buffer.byteLength){switch(e){case 1:r=t?this.dataview.getInt8(this.position):this.dataview.getUint8(this.position);break;case 2:r=t?this.dataview.getInt16(this.position):this.dataview.getUint16(this.position);break;case 3:if(t)throw"No method for reading signed 24 bits values";r=this.dataview.getUint8(this.position)<<16,r|=this.dataview.getUint8(this.position+1)<<8,r|=this.dataview.getUint8(this.position+2);break;case 4:r=t?this.dataview.getInt32(this.position):this.dataview.getUint32(this.position);break;case 8:if(t)throw"No method for reading signed 64 bits values";r=this.dataview.getUint32(this.position)<<32,r|=this.dataview.getUint32(this.position+4);break;default:throw"readInt method not implemented for size: "+e}return this.position+=e,r}throw"Not enough bytes in buffer"},a.prototype.readUint8=function(){return this.readAnyInt(1,!1)},a.prototype.readUint16=function(){return this.readAnyInt(2,!1)},a.prototype.readUint24=function(){return this.readAnyInt(3,!1)},a.prototype.readUint32=function(){return this.readAnyInt(4,!1)},a.prototype.readUint64=function(){return this.readAnyInt(8,!1)},a.prototype.readString=function(e){if(this.position+e<=this.buffer.byteLength){for(var t="",r=0;rthis._byteLength&&(this._byteLength=t);else{for(r<1&&(r=1);t>r;)r*=2;var i=new ArrayBuffer(r),n=new Uint8Array(this._buffer);new Uint8Array(i,0,n.length).set(n),this.buffer=i,this._byteLength=t}}},o.prototype._trimAlloc=function(){if(this._byteLength!=this._buffer.byteLength){var e=new ArrayBuffer(this._byteLength),t=new Uint8Array(e),r=new Uint8Array(this._buffer,0,t.length);t.set(r),this.buffer=e}},o.BIG_ENDIAN=!1,o.LITTLE_ENDIAN=!0,o.prototype._byteLength=0,Object.defineProperty(o.prototype,"byteLength",{get:function(){return this._byteLength-this._byteOffset}}),Object.defineProperty(o.prototype,"buffer",{get:function(){return this._trimAlloc(),this._buffer},set:function(e){this._buffer=e,this._dataView=new DataView(this._buffer,this._byteOffset),this._byteLength=this._buffer.byteLength}}),Object.defineProperty(o.prototype,"byteOffset",{get:function(){return this._byteOffset},set:function(e){this._byteOffset=e,this._dataView=new DataView(this._buffer,this._byteOffset),this._byteLength=this._buffer.byteLength}}),Object.defineProperty(o.prototype,"dataView",{get:function(){return this._dataView},set:function(e){this._byteOffset=e.byteOffset,this._buffer=e.buffer,this._dataView=new DataView(this._buffer,this._byteOffset),this._byteLength=this._byteOffset+e.byteLength}}),o.prototype.seek=function(e){var t=Math.max(0,Math.min(this.byteLength,e));this.position=isNaN(t)||!isFinite(t)?0:t},o.prototype.isEof=function(){return this.position>=this._byteLength},o.prototype.mapUint8Array=function(e){this._realloc(1*e);var t=new Uint8Array(this._buffer,this.byteOffset+this.position,e);return this.position+=1*e,t},o.prototype.readInt32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var r=new Int32Array(e);return o.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),o.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},o.prototype.readInt16Array=function(e,t){e=null==e?this.byteLength-this.position/2:e;var r=new Int16Array(e);return o.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),o.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},o.prototype.readInt8Array=function(e){e=null==e?this.byteLength-this.position:e;var t=new Int8Array(e);return o.memcpy(t.buffer,0,this.buffer,this.byteOffset+this.position,e*t.BYTES_PER_ELEMENT),this.position+=t.byteLength,t},o.prototype.readUint32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var r=new Uint32Array(e);return o.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),o.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},o.prototype.readUint16Array=function(e,t){e=null==e?this.byteLength-this.position/2:e;var r=new Uint16Array(e);return o.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),o.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},o.prototype.readUint8Array=function(e){e=null==e?this.byteLength-this.position:e;var t=new Uint8Array(e);return o.memcpy(t.buffer,0,this.buffer,this.byteOffset+this.position,e*t.BYTES_PER_ELEMENT),this.position+=t.byteLength,t},o.prototype.readFloat64Array=function(e,t){e=null==e?this.byteLength-this.position/8:e;var r=new Float64Array(e);return o.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),o.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},o.prototype.readFloat32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var r=new Float32Array(e);return o.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),o.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},o.prototype.readInt32=function(e){var t=this._dataView.getInt32(this.position,null==e?this.endianness:e);return this.position+=4,t},o.prototype.readInt16=function(e){var t=this._dataView.getInt16(this.position,null==e?this.endianness:e);return this.position+=2,t},o.prototype.readInt8=function(){var e=this._dataView.getInt8(this.position);return this.position+=1,e},o.prototype.readUint32=function(e){var t=this._dataView.getUint32(this.position,null==e?this.endianness:e);return this.position+=4,t},o.prototype.readUint16=function(e){var t=this._dataView.getUint16(this.position,null==e?this.endianness:e);return this.position+=2,t},o.prototype.readUint8=function(){var e=this._dataView.getUint8(this.position);return this.position+=1,e},o.prototype.readFloat32=function(e){var t=this._dataView.getFloat32(this.position,null==e?this.endianness:e);return this.position+=4,t},o.prototype.readFloat64=function(e){var t=this._dataView.getFloat64(this.position,null==e?this.endianness:e);return this.position+=8,t},o.endianness=new Int8Array(new Int16Array([1]).buffer)[0]>0,o.memcpy=function(e,t,r,i,n){var s=new Uint8Array(e,t,n),a=new Uint8Array(r,i,n);s.set(a)},o.arrayToNative=function(e,t){return t==this.endianness?e:this.flipArrayEndianness(e)},o.nativeToEndian=function(e,t){return this.endianness==t?e:this.flipArrayEndianness(e)},o.flipArrayEndianness=function(e){for(var t=new Uint8Array(e.buffer,e.byteOffset,e.byteLength),r=0;rn;i--,n++){var s=t[n];t[n]=t[i],t[i]=s}return e},o.prototype.failurePosition=0,String.fromCharCodeUint8=function(e){for(var t=[],r=0;r>16),this.writeUint8((65280&e)>>8),this.writeUint8(255&e)},o.prototype.adjustUint32=function(e,t){var r=this.position;this.seek(e),this.writeUint32(t),this.seek(r)},o.prototype.mapInt32Array=function(e,t){this._realloc(4*e);var r=new Int32Array(this._buffer,this.byteOffset+this.position,e);return o.arrayToNative(r,null==t?this.endianness:t),this.position+=4*e,r},o.prototype.mapInt16Array=function(e,t){this._realloc(2*e);var r=new Int16Array(this._buffer,this.byteOffset+this.position,e);return o.arrayToNative(r,null==t?this.endianness:t),this.position+=2*e,r},o.prototype.mapInt8Array=function(e){this._realloc(1*e);var t=new Int8Array(this._buffer,this.byteOffset+this.position,e);return this.position+=1*e,t},o.prototype.mapUint32Array=function(e,t){this._realloc(4*e);var r=new Uint32Array(this._buffer,this.byteOffset+this.position,e);return o.arrayToNative(r,null==t?this.endianness:t),this.position+=4*e,r},o.prototype.mapUint16Array=function(e,t){this._realloc(2*e);var r=new Uint16Array(this._buffer,this.byteOffset+this.position,e);return o.arrayToNative(r,null==t?this.endianness:t),this.position+=2*e,r},o.prototype.mapFloat64Array=function(e,t){this._realloc(8*e);var r=new Float64Array(this._buffer,this.byteOffset+this.position,e);return o.arrayToNative(r,null==t?this.endianness:t),this.position+=8*e,r},o.prototype.mapFloat32Array=function(e,t){this._realloc(4*e);var r=new Float32Array(this._buffer,this.byteOffset+this.position,e);return o.arrayToNative(r,null==t?this.endianness:t),this.position+=4*e,r};var d=function(e){this.buffers=[],this.bufferIndex=-1,e&&(this.insertBuffer(e),this.bufferIndex=0)};(d.prototype=new o(new ArrayBuffer,0,o.BIG_ENDIAN)).initialized=function(){var e;return this.bufferIndex>-1||(this.buffers.length>0?0===(e=this.buffers[0]).fileStart?(this.buffer=e,this.bufferIndex=0,s.debug("MultiBufferStream","Stream ready for parsing"),!0):(s.warn("MultiBufferStream","The first buffer should have a fileStart of 0"),this.logBufferLevel(),!1):(s.warn("MultiBufferStream","No buffer to start parsing from"),this.logBufferLevel(),!1))},ArrayBuffer.concat=function(e,t){s.debug("ArrayBuffer","Trying to create a new buffer of size: "+(e.byteLength+t.byteLength));var r=new Uint8Array(e.byteLength+t.byteLength);return r.set(new Uint8Array(e),0),r.set(new Uint8Array(t),e.byteLength),r.buffer},d.prototype.reduceBuffer=function(e,t,r){var i;return(i=new Uint8Array(r)).set(new Uint8Array(e,t,r)),i.buffer.fileStart=e.fileStart+t,i.buffer.usedBytes=0,i.buffer},d.prototype.insertBuffer=function(e){for(var t=!0,r=0;ri.byteLength){this.buffers.splice(r,1),r--;continue}s.warn("MultiBufferStream","Buffer (fileStart: "+e.fileStart+" - Length: "+e.byteLength+") already appended, ignoring")}else e.fileStart+e.byteLength<=i.fileStart||(e=this.reduceBuffer(e,0,i.fileStart-e.fileStart)),s.debug("MultiBufferStream","Appending new buffer (fileStart: "+e.fileStart+" - Length: "+e.byteLength+")"),this.buffers.splice(r,0,e),0===r&&(this.buffer=e);t=!1;break}if(e.fileStart0)){t=!1;break}e=this.reduceBuffer(e,n,a)}}t&&(s.debug("MultiBufferStream","Appending new buffer (fileStart: "+e.fileStart+" - Length: "+e.byteLength+")"),this.buffers.push(e),0===r&&(this.buffer=e))},d.prototype.logBufferLevel=function(e){var t,r,i,n,a,o=[],l="";for(i=0,n=0,t=0;t0&&(l+=a.end-1+"]");var d=e?s.info:s.debug;0===this.buffers.length?d("MultiBufferStream","No more buffer in memory"):d("MultiBufferStream",this.buffers.length+" stored buffer(s) ("+i+"/"+n+" bytes), continuous ranges: "+l)},d.prototype.cleanBuffers=function(){var e,t;for(e=0;e"+this.buffer.byteLength+")"),!0}return!1}return!1},d.prototype.findPosition=function(e,t,r){var i,n=null,a=-1;for(i=!0===e?0:this.bufferIndex;i=t?(s.debug("MultiBufferStream","Found position in existing buffer #"+a),a):-1},d.prototype.findEndContiguousBuf=function(e){var t,r,i,n=void 0!==e?e:this.bufferIndex;if(r=this.buffers[n],this.buffers.length>n+1)for(t=n+1;t>3;return 31===i&&r.data.length>=2&&(i=32+((7&r.data[0])<<3)+((224&r.data[1])>>5)),i}return null},r.DecoderConfigDescriptor=function(e){r.Descriptor.call(this,4,e)},r.DecoderConfigDescriptor.prototype=new r.Descriptor,r.DecoderConfigDescriptor.prototype.parse=function(e){this.oti=e.readUint8(),this.streamType=e.readUint8(),this.bufferSize=e.readUint24(),this.maxBitrate=e.readUint32(),this.avgBitrate=e.readUint32(),this.size-=13,this.parseRemainingDescriptors(e)},r.DecoderSpecificInfo=function(e){r.Descriptor.call(this,5,e)},r.DecoderSpecificInfo.prototype=new r.Descriptor,r.SLConfigDescriptor=function(e){r.Descriptor.call(this,6,e)},r.SLConfigDescriptor.prototype=new r.Descriptor,this};t.MPEG4DescriptorParser=u;var c={ERR_INVALID_DATA:-1,ERR_NOT_ENOUGH_DATA:0,OK:1,BASIC_BOXES:["mdat","idat","free","skip","meco","strk"],FULL_BOXES:["hmhd","nmhd","iods","xml ","bxml","ipro","mere"],CONTAINER_BOXES:[["moov",["trak","pssh"]],["trak"],["edts"],["mdia"],["minf"],["dinf"],["stbl",["sgpd","sbgp"]],["mvex",["trex"]],["moof",["traf"]],["traf",["trun","sgpd","sbgp"]],["vttc"],["tref"],["iref"],["mfra",["tfra"]],["meco"],["hnti"],["hinf"],["strk"],["strd"],["sinf"],["rinf"],["schi"],["trgr"],["udta",["kind"]],["iprp",["ipma"]],["ipco"]],boxCodes:[],fullBoxCodes:[],containerBoxCodes:[],sampleEntryCodes:{},sampleGroupEntryCodes:[],trackGroupTypes:[],UUIDBoxes:{},UUIDs:[],initialize:function(){c.FullBox.prototype=new c.Box,c.ContainerBox.prototype=new c.Box,c.SampleEntry.prototype=new c.Box,c.TrackGroupTypeBox.prototype=new c.FullBox,c.BASIC_BOXES.forEach((function(e){c.createBoxCtor(e)})),c.FULL_BOXES.forEach((function(e){c.createFullBoxCtor(e)})),c.CONTAINER_BOXES.forEach((function(e){c.createContainerBoxCtor(e[0],null,e[1])}))},Box:function(e,t,r){this.type=e,this.size=t,this.uuid=r},FullBox:function(e,t,r){c.Box.call(this,e,t,r),this.flags=0,this.version=0},ContainerBox:function(e,t,r){c.Box.call(this,e,t,r),this.boxes=[]},SampleEntry:function(e,t,r,i){c.ContainerBox.call(this,e,t),this.hdr_size=r,this.start=i},SampleGroupEntry:function(e){this.grouping_type=e},TrackGroupTypeBox:function(e,t){c.FullBox.call(this,e,t)},createBoxCtor:function(e,t){c.boxCodes.push(e),c[e+"Box"]=function(t){c.Box.call(this,e,t)},c[e+"Box"].prototype=new c.Box,t&&(c[e+"Box"].prototype.parse=t)},createFullBoxCtor:function(e,t){c[e+"Box"]=function(t){c.FullBox.call(this,e,t)},c[e+"Box"].prototype=new c.FullBox,c[e+"Box"].prototype.parse=function(e){this.parseFullHeader(e),t&&t.call(this,e)}},addSubBoxArrays:function(e){if(e){this.subBoxNames=e;for(var t=e.length,r=0;rr?(s.error("BoxParser","Box of type '"+u+"' has a size "+d+" greater than its container size "+r),{code:c.ERR_NOT_ENOUGH_DATA,type:u,size:d,hdr_size:l,start:o}):0!==d&&o+d>e.getEndPosition()?(e.seek(o),s.info("BoxParser","Not enough data in stream to parse the entire '"+u+"' box"),{code:c.ERR_NOT_ENOUGH_DATA,type:u,size:d,hdr_size:l,start:o}):t?{code:c.OK,type:u,size:d,hdr_size:l,start:o}:(c[u+"Box"]?i=new c[u+"Box"](d):"uuid"!==u?(s.warn("BoxParser","Unknown box type: '"+u+"'"),(i=new c.Box(u,d)).has_unparsed_data=!0):c.UUIDBoxes[a]?i=new c.UUIDBoxes[a](d):(s.warn("BoxParser","Unknown uuid type: '"+a+"'"),(i=new c.Box(u,d)).uuid=a,i.has_unparsed_data=!0),i.hdr_size=l,i.start=o,i.write===c.Box.prototype.write&&"mdat"!==i.type&&(s.info("BoxParser","'"+h+"' box writing not yet implemented, keeping unparsed data in memory for later write"),i.parseDataAndRewind(e)),i.parse(e),(n=e.getPosition()-(i.start+i.size))<0?(s.warn("BoxParser","Parsing of box '"+h+"' did not read the entire indicated box data size (missing "+-n+" bytes), seeking forward"),e.seek(i.start+i.size)):n>0&&(s.error("BoxParser","Parsing of box '"+h+"' read "+n+" more bytes than the indicated box data size, seeking backwards"),0!==i.size&&e.seek(i.start+i.size)),{code:c.OK,box:i,size:i.size})},c.Box.prototype.parse=function(e){"mdat"!=this.type?this.data=e.readUint8Array(this.size-this.hdr_size):0===this.size?e.seek(e.getEndPosition()):e.seek(this.start+this.size)},c.Box.prototype.parseDataAndRewind=function(e){this.data=e.readUint8Array(this.size-this.hdr_size),e.position-=this.size-this.hdr_size},c.FullBox.prototype.parseDataAndRewind=function(e){this.parseFullHeader(e),this.data=e.readUint8Array(this.size-this.hdr_size),this.hdr_size-=4,e.position-=this.size-this.hdr_size},c.FullBox.prototype.parseFullHeader=function(e){this.version=e.readUint8(),this.flags=e.readUint24(),this.hdr_size+=4},c.FullBox.prototype.parse=function(e){this.parseFullHeader(e),this.data=e.readUint8Array(this.size-this.hdr_size)},c.ContainerBox.prototype.parse=function(e){for(var t,r;e.getPosition()>10&31,t[1]=this.language>>5&31,t[2]=31&this.language,this.languageString=String.fromCharCode(t[0]+96,t[1]+96,t[2]+96)},c.SAMPLE_ENTRY_TYPE_VISUAL="Visual",c.SAMPLE_ENTRY_TYPE_AUDIO="Audio",c.SAMPLE_ENTRY_TYPE_HINT="Hint",c.SAMPLE_ENTRY_TYPE_METADATA="Metadata",c.SAMPLE_ENTRY_TYPE_SUBTITLE="Subtitle",c.SAMPLE_ENTRY_TYPE_SYSTEM="System",c.SAMPLE_ENTRY_TYPE_TEXT="Text",c.SampleEntry.prototype.parseHeader=function(e){e.readUint8Array(6),this.data_reference_index=e.readUint16(),this.hdr_size+=8},c.SampleEntry.prototype.parse=function(e){this.parseHeader(e),this.data=e.readUint8Array(this.size-this.hdr_size)},c.SampleEntry.prototype.parseDataAndRewind=function(e){this.parseHeader(e),this.data=e.readUint8Array(this.size-this.hdr_size),this.hdr_size-=8,e.position-=this.size-this.hdr_size},c.SampleEntry.prototype.parseFooter=function(e){c.ContainerBox.prototype.parse.call(this,e)},c.createMediaSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_HINT),c.createMediaSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_METADATA),c.createMediaSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_SUBTITLE),c.createMediaSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_SYSTEM),c.createMediaSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_TEXT),c.createMediaSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_VISUAL,(function(e){var t;this.parseHeader(e),e.readUint16(),e.readUint16(),e.readUint32Array(3),this.width=e.readUint16(),this.height=e.readUint16(),this.horizresolution=e.readUint32(),this.vertresolution=e.readUint32(),e.readUint32(),this.frame_count=e.readUint16(),t=Math.min(31,e.readUint8()),this.compressorname=e.readString(t),t<31&&e.readString(31-t),this.depth=e.readUint16(),e.readUint16(),this.parseFooter(e)})),c.createMediaSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_AUDIO,(function(e){this.parseHeader(e),e.readUint32Array(2),this.channel_count=e.readUint16(),this.samplesize=e.readUint16(),e.readUint16(),e.readUint16(),this.samplerate=e.readUint32()/65536,this.parseFooter(e)})),c.createSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_VISUAL,"avc1"),c.createSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_VISUAL,"avc2"),c.createSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_VISUAL,"avc3"),c.createSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_VISUAL,"avc4"),c.createSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_VISUAL,"av01"),c.createSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_VISUAL,"hvc1"),c.createSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_VISUAL,"hev1"),c.createSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_VISUAL,"vvc1"),c.createSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_VISUAL,"vvi1"),c.createSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_VISUAL,"vvs1"),c.createSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_VISUAL,"vvcN"),c.createSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_VISUAL,"vp08"),c.createSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_VISUAL,"vp09"),c.createSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_AUDIO,"mp4a"),c.createSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_AUDIO,"ac-3"),c.createSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_AUDIO,"ec-3"),c.createSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_AUDIO,"Opus"),c.createEncryptedSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_VISUAL,"encv"),c.createEncryptedSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_AUDIO,"enca"),c.createEncryptedSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_SUBTITLE,"encu"),c.createEncryptedSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_SYSTEM,"encs"),c.createEncryptedSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_TEXT,"enct"),c.createEncryptedSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_METADATA,"encm"),c.createBoxCtor("a1lx",(function(e){var t=16*(1+(1&(1&e.readUint8())));this.layer_size=[];for(var r=0;r<3;r++)this.layer_size[r]=16==t?e.readUint16():e.readUint32()})),c.createBoxCtor("a1op",(function(e){this.op_index=e.readUint8()})),c.createFullBoxCtor("auxC",(function(e){this.aux_type=e.readCString();var t=this.size-this.hdr_size-(this.aux_type.length+1);this.aux_subtype=e.readUint8Array(t)})),c.createBoxCtor("av1C",(function(e){var t=e.readUint8();if(t>>7&!1)s.error("av1C marker problem");else if(this.version=127&t,1===this.version)if(t=e.readUint8(),this.seq_profile=t>>5&7,this.seq_level_idx_0=31&t,t=e.readUint8(),this.seq_tier_0=t>>7&1,this.high_bitdepth=t>>6&1,this.twelve_bit=t>>5&1,this.monochrome=t>>4&1,this.chroma_subsampling_x=t>>3&1,this.chroma_subsampling_y=t>>2&1,this.chroma_sample_position=3&t,t=e.readUint8(),this.reserved_1=t>>5&7,0===this.reserved_1){if(this.initial_presentation_delay_present=t>>4&1,1===this.initial_presentation_delay_present)this.initial_presentation_delay_minus_one=15&t;else if(this.reserved_2=15&t,0!==this.reserved_2)return void s.error("av1C reserved_2 parsing problem");var r=this.size-this.hdr_size-4;this.configOBUs=e.readUint8Array(r)}else s.error("av1C reserved_1 parsing problem");else s.error("av1C version "+this.version+" not supported")})),c.createBoxCtor("avcC",(function(e){var t,r;for(this.configurationVersion=e.readUint8(),this.AVCProfileIndication=e.readUint8(),this.profile_compatibility=e.readUint8(),this.AVCLevelIndication=e.readUint8(),this.lengthSizeMinusOne=3&e.readUint8(),this.nb_SPS_nalus=31&e.readUint8(),r=this.size-this.hdr_size-6,this.SPS=[],t=0;t0&&(this.ext=e.readUint8Array(r))})),c.createBoxCtor("btrt",(function(e){this.bufferSizeDB=e.readUint32(),this.maxBitrate=e.readUint32(),this.avgBitrate=e.readUint32()})),c.createBoxCtor("clap",(function(e){this.cleanApertureWidthN=e.readUint32(),this.cleanApertureWidthD=e.readUint32(),this.cleanApertureHeightN=e.readUint32(),this.cleanApertureHeightD=e.readUint32(),this.horizOffN=e.readUint32(),this.horizOffD=e.readUint32(),this.vertOffN=e.readUint32(),this.vertOffD=e.readUint32()})),c.createBoxCtor("clli",(function(e){this.max_content_light_level=e.readUint16(),this.max_pic_average_light_level=e.readUint16()})),c.createFullBoxCtor("co64",(function(e){var t,r;if(t=e.readUint32(),this.chunk_offsets=[],0===this.version)for(r=0;r>7}else("rICC"===this.colour_type||"prof"===this.colour_type)&&(this.ICC_profile=e.readUint8Array(this.size-4))})),c.createFullBoxCtor("cprt",(function(e){this.parseLanguage(e),this.notice=e.readCString()})),c.createFullBoxCtor("cslg",(function(e){0===this.version&&(this.compositionToDTSShift=e.readInt32(),this.leastDecodeToDisplayDelta=e.readInt32(),this.greatestDecodeToDisplayDelta=e.readInt32(),this.compositionStartTime=e.readInt32(),this.compositionEndTime=e.readInt32())})),c.createFullBoxCtor("ctts",(function(e){var t,r;if(t=e.readUint32(),this.sample_counts=[],this.sample_offsets=[],0===this.version)for(r=0;r>6,this.bsid=t>>1&31,this.bsmod=(1&t)<<2|r>>6&3,this.acmod=r>>3&7,this.lfeon=r>>2&1,this.bit_rate_code=3&r|i>>5&7})),c.createBoxCtor("dec3",(function(e){var t=e.readUint16();this.data_rate=t>>3,this.num_ind_sub=7&t,this.ind_subs=[];for(var r=0;r>6,i.bsid=n>>1&31,i.bsmod=(1&n)<<4|s>>4&15,i.acmod=s>>1&7,i.lfeon=1&s,i.num_dep_sub=a>>1&15,i.num_dep_sub>0&&(i.chan_loc=(1&a)<<8|e.readUint8())}})),c.createFullBoxCtor("dfLa",(function(e){var t=[],r=["STREAMINFO","PADDING","APPLICATION","SEEKTABLE","VORBIS_COMMENT","CUESHEET","PICTURE","RESERVED"];for(this.parseFullHeader(e);;){var i=e.readUint8(),n=Math.min(127&i,r.length-1);if(n?e.readUint8Array(e.readUint24()):(e.readUint8Array(13),this.samplerate=e.readUint32()>>12,e.readUint8Array(20)),t.push(r[n]),128&i)break}this.numMetadataBlocks=t.length+" ("+t.join(", ")+")"})),c.createBoxCtor("dimm",(function(e){this.bytessent=e.readUint64()})),c.createBoxCtor("dmax",(function(e){this.time=e.readUint32()})),c.createBoxCtor("dmed",(function(e){this.bytessent=e.readUint64()})),c.createBoxCtor("dOps",(function(e){if(this.Version=e.readUint8(),this.OutputChannelCount=e.readUint8(),this.PreSkip=e.readUint16(),this.InputSampleRate=e.readUint32(),this.OutputGain=e.readInt16(),this.ChannelMappingFamily=e.readUint8(),0!==this.ChannelMappingFamily){this.StreamCount=e.readUint8(),this.CoupledCount=e.readUint8(),this.ChannelMapping=[];for(var t=0;t=4;)this.compatible_brands[r]=e.readString(4),t-=4,r++})),c.createFullBoxCtor("hdlr",(function(e){0===this.version&&(e.readUint32(),this.handler=e.readString(4),e.readUint32Array(3),this.name=e.readString(this.size-this.hdr_size-20),"\0"===this.name[this.name.length-1]&&(this.name=this.name.slice(0,-1)))})),c.createBoxCtor("hvcC",(function(e){var t,r,i,n;this.configurationVersion=e.readUint8(),n=e.readUint8(),this.general_profile_space=n>>6,this.general_tier_flag=(32&n)>>5,this.general_profile_idc=31&n,this.general_profile_compatibility=e.readUint32(),this.general_constraint_indicator=e.readUint8Array(6),this.general_level_idc=e.readUint8(),this.min_spatial_segmentation_idc=4095&e.readUint16(),this.parallelismType=3&e.readUint8(),this.chroma_format_idc=3&e.readUint8(),this.bit_depth_luma_minus8=7&e.readUint8(),this.bit_depth_chroma_minus8=7&e.readUint8(),this.avgFrameRate=e.readUint16(),n=e.readUint8(),this.constantFrameRate=n>>6,this.numTemporalLayers=(13&n)>>3,this.temporalIdNested=(4&n)>>2,this.lengthSizeMinusOne=3&n,this.nalu_arrays=[];var s=e.readUint8();for(t=0;t>7,a.nalu_type=63&n;var o=e.readUint16();for(r=0;r>4&15,this.length_size=15&t,t=e.readUint8(),this.base_offset_size=t>>4&15,1===this.version||2===this.version?this.index_size=15&t:this.index_size=0,this.items=[];var r=0;if(this.version<2)r=e.readUint16();else{if(2!==this.version)throw"version of iloc box not supported";r=e.readUint32()}for(var i=0;i>7,this.axis=1&t})),c.createFullBoxCtor("infe",(function(e){if(0!==this.version&&1!==this.version||(this.item_ID=e.readUint16(),this.item_protection_index=e.readUint16(),this.item_name=e.readCString(),this.content_type=e.readCString(),this.content_encoding=e.readCString()),1===this.version)return this.extension_type=e.readString(4),s.warn("BoxParser","Cannot parse extension type"),void e.seek(this.start+this.size);this.version>=2&&(2===this.version?this.item_ID=e.readUint16():3===this.version&&(this.item_ID=e.readUint32()),this.item_protection_index=e.readUint16(),this.item_type=e.readString(4),this.item_name=e.readCString(),"mime"===this.item_type?(this.content_type=e.readCString(),this.content_encoding=e.readCString()):"uri "===this.item_type&&(this.item_uri_type=e.readCString()))})),c.createFullBoxCtor("ipma",(function(e){var t,r;for(entry_count=e.readUint32(),this.associations=[],t=0;t>7==1,1&this.flags?a.property_index=(127&s)<<8|e.readUint8():a.property_index=127&s}}})),c.createFullBoxCtor("iref",(function(e){var t,r;for(this.references=[];e.getPosition()>7,i.assignment_type=127&n,i.assignment_type){case 0:i.grouping_type=e.readString(4);break;case 1:i.grouping_type=e.readString(4),i.grouping_type_parameter=e.readUint32();break;case 2:case 3:break;case 4:i.sub_track_id=e.readUint32();break;default:s.warn("BoxParser","Unknown leva assignement type")}}})),c.createBoxCtor("lsel",(function(e){this.layer_id=e.readUint16()})),c.createBoxCtor("maxr",(function(e){this.period=e.readUint32(),this.bytes=e.readUint32()})),c.createBoxCtor("mdcv",(function(e){this.display_primaries=[],this.display_primaries[0]={},this.display_primaries[0].x=e.readUint16(),this.display_primaries[0].y=e.readUint16(),this.display_primaries[1]={},this.display_primaries[1].x=e.readUint16(),this.display_primaries[1].y=e.readUint16(),this.display_primaries[2]={},this.display_primaries[2].x=e.readUint16(),this.display_primaries[2].y=e.readUint16(),this.white_point={},this.white_point.x=e.readUint16(),this.white_point.y=e.readUint16(),this.max_display_mastering_luminance=e.readUint32(),this.min_display_mastering_luminance=e.readUint32()})),c.createFullBoxCtor("mdhd",(function(e){1==this.version?(this.creation_time=e.readUint64(),this.modification_time=e.readUint64(),this.timescale=e.readUint32(),this.duration=e.readUint64()):(this.creation_time=e.readUint32(),this.modification_time=e.readUint32(),this.timescale=e.readUint32(),this.duration=e.readUint32()),this.parseLanguage(e),e.readUint16()})),c.createFullBoxCtor("mehd",(function(e){1&this.flags&&(s.warn("BoxParser","mehd box incorrectly uses flags set to 1, converting version to 1"),this.version=1),1==this.version?this.fragment_duration=e.readUint64():this.fragment_duration=e.readUint32()})),c.createFullBoxCtor("meta",(function(e){this.boxes=[],c.ContainerBox.prototype.parse.call(this,e)})),c.createFullBoxCtor("mfhd",(function(e){this.sequence_number=e.readUint32()})),c.createFullBoxCtor("mfro",(function(e){this._size=e.readUint32()})),c.createFullBoxCtor("mvhd",(function(e){1==this.version?(this.creation_time=e.readUint64(),this.modification_time=e.readUint64(),this.timescale=e.readUint32(),this.duration=e.readUint64()):(this.creation_time=e.readUint32(),this.modification_time=e.readUint32(),this.timescale=e.readUint32(),this.duration=e.readUint32()),this.rate=e.readUint32(),this.volume=e.readUint16()>>8,e.readUint16(),e.readUint32Array(2),this.matrix=e.readUint32Array(9),e.readUint32Array(6),this.next_track_id=e.readUint32()})),c.createBoxCtor("npck",(function(e){this.packetssent=e.readUint32()})),c.createBoxCtor("nump",(function(e){this.packetssent=e.readUint64()})),c.createFullBoxCtor("padb",(function(e){var t=e.readUint32();this.padbits=[];for(var r=0;r0){var t=e.readUint32();this.kid=[];for(var r=0;r0&&(this.data=e.readUint8Array(i))})),c.createFullBoxCtor("clef",(function(e){this.width=e.readUint32(),this.height=e.readUint32()})),c.createFullBoxCtor("enof",(function(e){this.width=e.readUint32(),this.height=e.readUint32()})),c.createFullBoxCtor("prof",(function(e){this.width=e.readUint32(),this.height=e.readUint32()})),c.createContainerBoxCtor("tapt",null,["clef","prof","enof"]),c.createBoxCtor("rtp ",(function(e){this.descriptionformat=e.readString(4),this.sdptext=e.readString(this.size-this.hdr_size-4)})),c.createFullBoxCtor("saio",(function(e){1&this.flags&&(this.aux_info_type=e.readUint32(),this.aux_info_type_parameter=e.readUint32());var t=e.readUint32();this.offset=[];for(var r=0;r>7,this.avgRateFlag=t>>6&1,this.durationFlag&&(this.duration=e.readUint32()),this.avgRateFlag&&(this.accurateStatisticsFlag=e.readUint8(),this.avgBitRate=e.readUint16(),this.avgFrameRate=e.readUint16()),this.dependency=[];for(var r=e.readUint8(),i=0;i>7,this.num_leading_samples=127&t})),c.createSampleGroupCtor("rash",(function(e){if(this.operation_point_count=e.readUint16(),this.description_length!==2+(1===this.operation_point_count?2:6*this.operation_point_count)+9)s.warn("BoxParser","Mismatch in "+this.grouping_type+" sample group length"),this.data=e.readUint8Array(this.description_length-2);else{if(1===this.operation_point_count)this.target_rate_share=e.readUint16();else{this.target_rate_share=[],this.available_bitrate=[];for(var t=0;t>4,this.skip_byte_block=15&t,this.isProtected=e.readUint8(),this.Per_Sample_IV_Size=e.readUint8(),this.KID=c.parseHex16(e),this.constant_IV_size=0,this.constant_IV=0,1===this.isProtected&&0===this.Per_Sample_IV_Size&&(this.constant_IV_size=e.readUint8(),this.constant_IV=e.readUint8Array(this.constant_IV_size))})),c.createSampleGroupCtor("stsa",(function(e){s.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),c.createSampleGroupCtor("sync",(function(e){var t=e.readUint8();this.NAL_unit_type=63&t})),c.createSampleGroupCtor("tele",(function(e){var t=e.readUint8();this.level_independently_decodable=t>>7})),c.createSampleGroupCtor("tsas",(function(e){s.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),c.createSampleGroupCtor("tscl",(function(e){s.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),c.createSampleGroupCtor("vipr",(function(e){s.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),c.createFullBoxCtor("sbgp",(function(e){this.grouping_type=e.readString(4),1===this.version?this.grouping_type_parameter=e.readUint32():this.grouping_type_parameter=0,this.entries=[];for(var t=e.readUint32(),r=0;r>6,this.sample_depends_on[i]=t>>4&3,this.sample_is_depended_on[i]=t>>2&3,this.sample_has_redundancy[i]=3&t})),c.createFullBoxCtor("senc"),c.createFullBoxCtor("sgpd",(function(e){this.grouping_type=e.readString(4),s.debug("BoxParser","Found Sample Groups of type "+this.grouping_type),1===this.version?this.default_length=e.readUint32():this.default_length=0,this.version>=2&&(this.default_group_description_index=e.readUint32()),this.entries=[];for(var t=e.readUint32(),r=0;r>31&1,i.referenced_size=2147483647&n,i.subsegment_duration=e.readUint32(),n=e.readUint32(),i.starts_with_SAP=n>>31&1,i.SAP_type=n>>28&7,i.SAP_delta_time=268435455&n}})),c.SingleItemTypeReferenceBox=function(e,t,r,i){c.Box.call(this,e,t),this.hdr_size=r,this.start=i},c.SingleItemTypeReferenceBox.prototype=new c.Box,c.SingleItemTypeReferenceBox.prototype.parse=function(e){this.from_item_ID=e.readUint16();var t=e.readUint16();this.references=[];for(var r=0;r>4&15,this.sample_sizes[t+1]=15&i}else if(8===this.field_size)for(t=0;t0)for(r=0;r>4&15,this.default_skip_byte_block=15&t}this.default_isProtected=e.readUint8(),this.default_Per_Sample_IV_Size=e.readUint8(),this.default_KID=c.parseHex16(e),1===this.default_isProtected&&0===this.default_Per_Sample_IV_Size&&(this.default_constant_IV_size=e.readUint8(),this.default_constant_IV=e.readUint8Array(this.default_constant_IV_size))})),c.createFullBoxCtor("tfdt",(function(e){1==this.version?this.baseMediaDecodeTime=e.readUint64():this.baseMediaDecodeTime=e.readUint32()})),c.createFullBoxCtor("tfhd",(function(e){var t=0;this.track_id=e.readUint32(),this.size-this.hdr_size>t&&this.flags&c.TFHD_FLAG_BASE_DATA_OFFSET?(this.base_data_offset=e.readUint64(),t+=8):this.base_data_offset=0,this.size-this.hdr_size>t&&this.flags&c.TFHD_FLAG_SAMPLE_DESC?(this.default_sample_description_index=e.readUint32(),t+=4):this.default_sample_description_index=0,this.size-this.hdr_size>t&&this.flags&c.TFHD_FLAG_SAMPLE_DUR?(this.default_sample_duration=e.readUint32(),t+=4):this.default_sample_duration=0,this.size-this.hdr_size>t&&this.flags&c.TFHD_FLAG_SAMPLE_SIZE?(this.default_sample_size=e.readUint32(),t+=4):this.default_sample_size=0,this.size-this.hdr_size>t&&this.flags&c.TFHD_FLAG_SAMPLE_FLAGS?(this.default_sample_flags=e.readUint32(),t+=4):this.default_sample_flags=0})),c.createFullBoxCtor("tfra",(function(e){this.track_ID=e.readUint32(),e.readUint24();var t=e.readUint8();this.length_size_of_traf_num=t>>4&3,this.length_size_of_trun_num=t>>2&3,this.length_size_of_sample_num=3&t,this.entries=[];for(var r=e.readUint32(),i=0;i>8,e.readUint16(),this.matrix=e.readInt32Array(9),this.width=e.readUint32(),this.height=e.readUint32()})),c.createBoxCtor("tmax",(function(e){this.time=e.readUint32()})),c.createBoxCtor("tmin",(function(e){this.time=e.readUint32()})),c.createBoxCtor("totl",(function(e){this.bytessent=e.readUint32()})),c.createBoxCtor("tpay",(function(e){this.bytessent=e.readUint32()})),c.createBoxCtor("tpyl",(function(e){this.bytessent=e.readUint64()})),c.TrackGroupTypeBox.prototype.parse=function(e){this.parseFullHeader(e),this.track_group_id=e.readUint32()},c.createTrackGroupCtor("msrc"),c.TrackReferenceTypeBox=function(e,t,r,i){c.Box.call(this,e,t),this.hdr_size=r,this.start=i},c.TrackReferenceTypeBox.prototype=new c.Box,c.TrackReferenceTypeBox.prototype.parse=function(e){this.track_ids=e.readUint32Array((this.size-this.hdr_size)/4)},c.trefBox.prototype.parse=function(e){for(var t,r;e.getPosition()t&&this.flags&c.TRUN_FLAGS_DATA_OFFSET?(this.data_offset=e.readInt32(),t+=4):this.data_offset=0,this.size-this.hdr_size>t&&this.flags&c.TRUN_FLAGS_FIRST_FLAG?(this.first_sample_flags=e.readUint32(),t+=4):this.first_sample_flags=0,this.sample_duration=[],this.sample_size=[],this.sample_flags=[],this.sample_composition_time_offset=[],this.size-this.hdr_size>t)for(var r=0;r0&&(this.location=e.readCString())})),c.createUUIDBox("a5d40b30e81411ddba2f0800200c9a66",!0,!1,(function(e){this.LiveServerManifest=e.readString(this.size-this.hdr_size).replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")})),c.createUUIDBox("d08a4f1810f34a82b6c832d8aba183d3",!0,!1,(function(e){this.system_id=c.parseHex16(e);var t=e.readUint32();t>0&&(this.data=e.readUint8Array(t))})),c.createUUIDBox("a2394f525a9b4f14a2446c427c648df4",!0,!1),c.createUUIDBox("8974dbce7be74c5184f97148f9882554",!0,!1,(function(e){this.default_AlgorithmID=e.readUint24(),this.default_IV_size=e.readUint8(),this.default_KID=c.parseHex16(e)})),c.createUUIDBox("d4807ef2ca3946958e5426cb9e46a79f",!0,!1,(function(e){this.fragment_count=e.readUint8(),this.entries=[];for(var t=0;t>4,this.chromaSubsampling=t>>1&7,this.videoFullRangeFlag=1&t,this.colourPrimaries=e.readUint8(),this.transferCharacteristics=e.readUint8(),this.matrixCoefficients=e.readUint8(),this.codecIntializationDataSize=e.readUint16(),this.codecIntializationData=e.readUint8Array(this.codecIntializationDataSize)):(this.profile=e.readUint8(),this.level=e.readUint8(),t=e.readUint8(),this.bitDepth=t>>4&15,this.colorSpace=15&t,t=e.readUint8(),this.chromaSubsampling=t>>4&15,this.transferFunction=t>>1&7,this.videoFullRangeFlag=1&t,this.codecIntializationDataSize=e.readUint16(),this.codecIntializationData=e.readUint8Array(this.codecIntializationDataSize))})),c.createBoxCtor("vttC",(function(e){this.text=e.readString(this.size-this.hdr_size)})),c.createFullBoxCtor("vvcC",(function(e){var t,r,i={held_bits:void 0,num_held_bits:0,stream_read_1_bytes:function(e){this.held_bits=e.readUint8(),this.num_held_bits=8},stream_read_2_bytes:function(e){this.held_bits=e.readUint16(),this.num_held_bits=16},extract_bits:function(e){var t=this.held_bits>>this.num_held_bits-e&(1<=0;--r){var a=i.extract_bits(1);this.ptl_sublayer_present_mask|=a<1;++r)i.extract_bits(1);for(r=this.num_sublayers-2;r>=0;--r)this.ptl_sublayer_present_mask&1<>=1;t+=c.decimalToHex(i,0),t+=".",0===this.hvcC.general_tier_flag?t+="L":t+="H",t+=this.hvcC.general_level_idc;var n=!1,s="";for(e=5;e>=0;e--)(this.hvcC.general_constraint_indicator[e]||n)&&(s="."+c.decimalToHex(this.hvcC.general_constraint_indicator[e],0)+s,n=!0);t+=s}return t},c.vvc1SampleEntry.prototype.getCodec=c.vvi1SampleEntry.prototype.getCodec=function(){var e,t=c.SampleEntry.prototype.getCodec.call(this);if(this.vvcC){t+="."+this.vvcC.general_profile_idc,this.vvcC.general_tier_flag?t+=".H":t+=".L",t+=this.vvcC.general_level_idc;var r="";if(this.vvcC.general_constraint_info){var i,n=[],s=0;for(s|=this.vvcC.ptl_frame_only_constraint<<7,s|=this.vvcC.ptl_multilayer_enabled<<6,e=0;e>2&63,n.push(s),s&&(i=e),s=this.vvcC.general_constraint_info[e]>>2&3;if(void 0===i)r=".CA";else{r=".C";var a="ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",o=0,l=0;for(e=0;e<=i;++e)for(o=o<<8|n[e],l+=8;l>=5;){r+=a[o>>l-5&31],o&=(1<<(l-=5))-1}l&&(r+=a[31&(o<<=5-l)])}}t+=r}return t},c.mp4aSampleEntry.prototype.getCodec=function(){var e=c.SampleEntry.prototype.getCodec.call(this);if(this.esds&&this.esds.esd){var t=this.esds.esd.getOTI(),r=this.esds.esd.getAudioConfig();return e+"."+c.decimalToHex(t)+(r?"."+r:"")}return e},c.stxtSampleEntry.prototype.getCodec=function(){var e=c.SampleEntry.prototype.getCodec.call(this);return this.mime_format?e+"."+this.mime_format:e},c.vp08SampleEntry.prototype.getCodec=c.vp09SampleEntry.prototype.getCodec=function(){var e=c.SampleEntry.prototype.getCodec.call(this),t=this.vpcC.level;0==t&&(t="00");var r=this.vpcC.bitDepth;return 8==r&&(r="08"),e+".0"+this.vpcC.profile+"."+t+"."+r},c.av01SampleEntry.prototype.getCodec=function(){var e,t=c.SampleEntry.prototype.getCodec.call(this),r=this.av1C.seq_level_idx_0;return r<10&&(r="0"+r),2===this.av1C.seq_profile&&1===this.av1C.high_bitdepth?e=1===this.av1C.twelve_bit?"12":"10":this.av1C.seq_profile<=2&&(e=1===this.av1C.high_bitdepth?"10":"08"),t+"."+this.av1C.seq_profile+"."+r+(this.av1C.seq_tier_0?"H":"M")+"."+e},c.Box.prototype.writeHeader=function(e,t){this.size+=8,this.size>l&&(this.size+=8),"uuid"===this.type&&(this.size+=16),s.debug("BoxWriter","Writing box "+this.type+" of size: "+this.size+" at position "+e.getPosition()+(t||"")),this.size>l?e.writeUint32(1):(this.sizePosition=e.getPosition(),e.writeUint32(this.size)),e.writeString(this.type,null,4),"uuid"===this.type&&e.writeUint8Array(this.uuid),this.size>l&&e.writeUint64(this.size)},c.FullBox.prototype.writeHeader=function(e){this.size+=4,c.Box.prototype.writeHeader.call(this,e," v="+this.version+" f="+this.flags),e.writeUint8(this.version),e.writeUint24(this.flags)},c.Box.prototype.write=function(e){"mdat"===this.type?this.data&&(this.size=this.data.length,this.writeHeader(e),e.writeUint8Array(this.data)):(this.size=this.data?this.data.length:0,this.writeHeader(e),this.data&&e.writeUint8Array(this.data))},c.ContainerBox.prototype.write=function(e){this.size=0,this.writeHeader(e);for(var t=0;t=2&&e.writeUint32(this.default_sample_description_index),e.writeUint32(this.entries.length),t=0;t0)for(t=0;t+1t?1:0,this.flags=0,this.size=4,1===this.version&&(this.size+=4),this.writeHeader(e),1===this.version?e.writeUint64(this.baseMediaDecodeTime):e.writeUint32(this.baseMediaDecodeTime)},c.tfhdBox.prototype.write=function(e){this.version=0,this.size=4,this.flags&c.TFHD_FLAG_BASE_DATA_OFFSET&&(this.size+=8),this.flags&c.TFHD_FLAG_SAMPLE_DESC&&(this.size+=4),this.flags&c.TFHD_FLAG_SAMPLE_DUR&&(this.size+=4),this.flags&c.TFHD_FLAG_SAMPLE_SIZE&&(this.size+=4),this.flags&c.TFHD_FLAG_SAMPLE_FLAGS&&(this.size+=4),this.writeHeader(e),e.writeUint32(this.track_id),this.flags&c.TFHD_FLAG_BASE_DATA_OFFSET&&e.writeUint64(this.base_data_offset),this.flags&c.TFHD_FLAG_SAMPLE_DESC&&e.writeUint32(this.default_sample_description_index),this.flags&c.TFHD_FLAG_SAMPLE_DUR&&e.writeUint32(this.default_sample_duration),this.flags&c.TFHD_FLAG_SAMPLE_SIZE&&e.writeUint32(this.default_sample_size),this.flags&c.TFHD_FLAG_SAMPLE_FLAGS&&e.writeUint32(this.default_sample_flags)},c.tkhdBox.prototype.write=function(e){this.version=0,this.size=80,this.writeHeader(e),e.writeUint32(this.creation_time),e.writeUint32(this.modification_time),e.writeUint32(this.track_id),e.writeUint32(0),e.writeUint32(this.duration),e.writeUint32(0),e.writeUint32(0),e.writeInt16(this.layer),e.writeInt16(this.alternate_group),e.writeInt16(this.volume<<8),e.writeUint16(0),e.writeInt32Array(this.matrix),e.writeUint32(this.width),e.writeUint32(this.height)},c.trexBox.prototype.write=function(e){this.version=0,this.flags=0,this.size=20,this.writeHeader(e),e.writeUint32(this.track_id),e.writeUint32(this.default_sample_description_index),e.writeUint32(this.default_sample_duration),e.writeUint32(this.default_sample_size),e.writeUint32(this.default_sample_flags)},c.trunBox.prototype.write=function(e){this.version=0,this.size=4,this.flags&c.TRUN_FLAGS_DATA_OFFSET&&(this.size+=4),this.flags&c.TRUN_FLAGS_FIRST_FLAG&&(this.size+=4),this.flags&c.TRUN_FLAGS_DURATION&&(this.size+=4*this.sample_duration.length),this.flags&c.TRUN_FLAGS_SIZE&&(this.size+=4*this.sample_size.length),this.flags&c.TRUN_FLAGS_FLAGS&&(this.size+=4*this.sample_flags.length),this.flags&c.TRUN_FLAGS_CTS_OFFSET&&(this.size+=4*this.sample_composition_time_offset.length),this.writeHeader(e),e.writeUint32(this.sample_count),this.flags&c.TRUN_FLAGS_DATA_OFFSET&&(this.data_offset_position=e.getPosition(),e.writeInt32(this.data_offset)),this.flags&c.TRUN_FLAGS_FIRST_FLAG&&e.writeUint32(this.first_sample_flags);for(var t=0;t-1||e[r]instanceof c.Box||t[r]instanceof c.Box||void 0===e[r]||void 0===t[r]||"function"==typeof e[r]||"function"==typeof t[r]||e.subBoxNames&&e.subBoxNames.indexOf(r.slice(0,4))>-1||t.subBoxNames&&t.subBoxNames.indexOf(r.slice(0,4))>-1||"data"===r||"start"===r||"size"===r||"creation_time"===r||"modification_time"===r||c.DIFF_PRIMITIVE_ARRAY_PROP_NAMES.indexOf(r)>-1||e[r]===t[r]))return!1;return!0},c.boxEqual=function(e,t){if(!c.boxEqualFields(e,t))return!1;for(var r=0;r1)for(t=1;t-1&&this.fragmentedTracks.splice(t,1)},p.prototype.setExtractionOptions=function(e,t,r){var i=this.getTrackById(e);if(i){var n={};this.extractedTracks.push(n),n.id=e,n.user=t,n.trak=i,i.nextSample=0,n.nb_samples=1e3,n.samples=[],r&&r.nbSamples&&(n.nb_samples=r.nbSamples)}},p.prototype.unsetExtractionOptions=function(e){for(var t=-1,r=0;r-1&&this.extractedTracks.splice(t,1)},p.prototype.parse=function(){var e,t;if(!this.restoreParsePosition||this.restoreParsePosition())for(;;){if(this.hasIncompleteMdat&&this.hasIncompleteMdat()){if(this.processIncompleteMdat())continue;return}if(this.saveParsePosition&&this.saveParsePosition(),(e=c.parseOneBox(this.stream,false)).code===c.ERR_NOT_ENOUGH_DATA){if(this.processIncompleteBox){if(this.processIncompleteBox(e))continue;return}return}var r;switch(r="uuid"!==(t=e.box).type?t.type:t.uuid,this.boxes.push(t),r){case"mdat":this.mdats.push(t);break;case"moof":this.moofs.push(t);break;case"moov":this.moovStartFound=!0,0===this.mdats.length&&(this.isProgressive=!0);default:void 0!==this[r]&&s.warn("ISOFile","Duplicate Box of type: "+r+", overriding previous occurrence"),this[r]=t}this.updateUsedBytes&&this.updateUsedBytes(t,e)}},p.prototype.checkBuffer=function(e){if(null==e)throw"Buffer must be defined and non empty";if(void 0===e.fileStart)throw"Buffer must have a fileStart property";return 0===e.byteLength?(s.warn("ISOFile","Ignoring empty buffer (fileStart: "+e.fileStart+")"),this.stream.logBufferLevel(),!1):(s.info("ISOFile","Processing buffer (fileStart: "+e.fileStart+")"),e.usedBytes=0,this.stream.insertBuffer(e),this.stream.logBufferLevel(),!!this.stream.initialized()||(s.warn("ISOFile","Not ready to start parsing"),!1))},p.prototype.appendBuffer=function(e,t){var r;if(this.checkBuffer(e))return this.parse(),this.moovStartFound&&!this.moovStartSent&&(this.moovStartSent=!0,this.onMoovStart&&this.onMoovStart()),this.moov?(this.sampleListBuilt||(this.buildSampleLists(),this.sampleListBuilt=!0),this.updateSampleLists(),this.onReady&&!this.readySent&&(this.readySent=!0,this.onReady(this.getInfo())),this.processSamples(t),this.nextSeekPosition?(r=this.nextSeekPosition,this.nextSeekPosition=void 0):r=this.nextParsePosition,this.stream.getEndFilePositionAfter&&(r=this.stream.getEndFilePositionAfter(r))):r=this.nextParsePosition?this.nextParsePosition:0,this.sidx&&this.onSidx&&!this.sidxSent&&(this.onSidx(this.sidx),this.sidxSent=!0),this.meta&&(this.flattenItemInfo&&!this.itemListBuilt&&(this.flattenItemInfo(),this.itemListBuilt=!0),this.processItems&&this.processItems(this.onItem)),this.stream.cleanBuffers&&(s.info("ISOFile","Done processing buffer (fileStart: "+e.fileStart+") - next buffer to fetch should have a fileStart position of "+r),this.stream.logBufferLevel(),this.stream.cleanBuffers(),this.stream.logBufferLevel(!0),s.info("ISOFile","Sample data size in memory: "+this.getAllocatedSampleDataSize())),r},p.prototype.getInfo=function(){var e,t,r,i,n,s,a={},o=new Date("1904-01-01T00:00:00Z").getTime();if(this.moov)for(a.hasMoov=!0,a.duration=this.moov.mvhd.duration,a.timescale=this.moov.mvhd.timescale,a.isFragmented=null!=this.moov.mvex,a.isFragmented&&this.moov.mvex.mehd&&(a.fragment_duration=this.moov.mvex.mehd.fragment_duration),a.isProgressive=this.isProgressive,a.hasIOD=null!=this.moov.iods,a.brands=[],a.brands.push(this.ftyp.major_brand),a.brands=a.brands.concat(this.ftyp.compatible_brands),a.created=new Date(o+1e3*this.moov.mvhd.creation_time),a.modified=new Date(o+1e3*this.moov.mvhd.modification_time),a.tracks=[],a.audioTracks=[],a.videoTracks=[],a.subtitleTracks=[],a.metadataTracks=[],a.hintTracks=[],a.otherTracks=[],e=0;e0?a.mime+='video/mp4; codecs="':a.audioTracks&&a.audioTracks.length>0?a.mime+='audio/mp4; codecs="':a.mime+='application/mp4; codecs="',e=0;e=r.samples.length)&&(s.info("ISOFile","Sending fragmented data on track #"+i.id+" for samples ["+Math.max(0,r.nextSample-i.nb_samples)+","+(r.nextSample-1)+"]"),s.info("ISOFile","Sample data size in memory: "+this.getAllocatedSampleDataSize()),this.onSegment&&this.onSegment(i.id,i.user,i.segmentStream.buffer,r.nextSample,e||r.nextSample>=r.samples.length),i.segmentStream=null,i!==this.fragmentedTracks[t]))break}}if(null!==this.onSamples)for(t=0;t=r.samples.length)&&(s.debug("ISOFile","Sending samples on track #"+a.id+" for sample "+r.nextSample),this.onSamples&&this.onSamples(a.id,a.user,a.samples),a.samples=[],a!==this.extractedTracks[t]))break}}}},p.prototype.getBox=function(e){var t=this.getBoxes(e,!0);return t.length?t[0]:null},p.prototype.getBoxes=function(e,t){var r=[];return p._sweep.call(this,e,r,t),r},p._sweep=function(e,t,r){for(var i in this.type&&this.type==e&&t.push(this),this.boxes){if(t.length&&r)return;p._sweep.call(this.boxes[i],e,t,r)}},p.prototype.getTrackSamplesInfo=function(e){var t=this.getTrackById(e);return t?t.samples:void 0},p.prototype.getTrackSample=function(e,t){var r=this.getTrackById(e);return this.getSample(r,t)},p.prototype.releaseUsedSamples=function(e,t){var r=0,i=this.getTrackById(e);i.lastValidSample||(i.lastValidSample=0);for(var n=i.lastValidSample;ne*n.timescale){d=i-1;break}t&&n.is_sync&&(l=i)}for(t&&(d=l),e=r.samples[d].cts,r.nextSample=d;r.samples[d].alreadyRead===r.samples[d].size&&r.samples[d+1];)d++;return a=r.samples[d].offset+r.samples[d].alreadyRead,s.info("ISOFile","Seeking to "+(t?"RAP":"")+" sample #"+r.nextSample+" on track "+r.tkhd.track_id+", time "+s.getDurationString(e,o)+" and offset: "+a),{offset:a,time:e/o}},p.prototype.seek=function(e,t){var r,i,n,a=this.moov,o={offset:1/0,time:1/0};if(this.moov){for(n=0;n-1){o=l;break}switch(o){case"Visual":if(n.add("vmhd").set("graphicsmode",0).set("opcolor",[0,0,0]),s.set("width",t.width).set("height",t.height).set("horizresolution",72<<16).set("vertresolution",72<<16).set("frame_count",1).set("compressorname",t.type+" Compressor").set("depth",24),t.avcDecoderConfigRecord){var h=new c.avcCBox,f=new a(t.avcDecoderConfigRecord);h.parse(f),s.addBox(h)}break;case"Audio":n.add("smhd").set("balance",t.balance||0),s.set("channel_count",t.channel_count||2).set("samplesize",t.samplesize||16).set("samplerate",t.samplerate||65536);break;case"Hint":n.add("hmhd");break;case"Subtitle":if(n.add("sthd"),"stpp"===t.type)s.set("namespace",t.namespace||"nonamespace").set("schema_location",t.schema_location||"").set("auxiliary_mime_types",t.auxiliary_mime_types||"");break;default:n.add("nmhd")}t.description&&s.addBox(t.description),t.description_boxes&&t.description_boxes.forEach((function(e){s.addBox(e)})),n.add("dinf").add("dref").addEntry((new c["url Box"]).set("flags",1));var p=n.add("stbl");return p.add("stsd").addEntry(s),p.add("stts").set("sample_counts",[]).set("sample_deltas",[]),p.add("stsc").set("first_chunk",[]).set("samples_per_chunk",[]).set("sample_description_index",[]),p.add("stco").set("chunk_offsets",[]),p.add("stsz").set("sample_sizes",[]),this.moov.mvex.add("trex").set("track_id",t.id).set("default_sample_description_index",t.default_sample_description_index||1).set("default_sample_duration",t.default_sample_duration||0).set("default_sample_size",t.default_sample_size||0).set("default_sample_flags",t.default_sample_flags||0),this.buildTrakSampleLists(r),t.id}},c.Box.prototype.computeSize=function(e){var t=e||new o;t.endianness=o.BIG_ENDIAN,this.write(t)},p.prototype.addSample=function(e,t,r){var i=r||{},n={},s=this.getTrackById(e);if(null!==s){n.number=s.samples.length,n.track_id=s.tkhd.track_id,n.timescale=s.mdia.mdhd.timescale,n.description_index=i.sample_description_index?i.sample_description_index-1:0,n.description=s.mdia.minf.stbl.stsd.entries[n.description_index],n.data=t,n.size=t.byteLength,n.alreadyRead=n.size,n.duration=i.duration||1,n.cts=i.cts||0,n.dts=i.dts||0,n.is_sync=i.is_sync||!1,n.is_leading=i.is_leading||0,n.depends_on=i.depends_on||0,n.is_depended_on=i.is_depended_on||0,n.has_redundancy=i.has_redundancy||0,n.degradation_priority=i.degradation_priority||0,n.offset=0,n.subsamples=i.subsamples,s.samples.push(n),s.samples_size+=n.size,s.samples_duration+=n.duration,s.first_dts||(s.first_dts=i.dts),this.processSamples();var a=this.createSingleSampleMoof(n);return this.addBox(a),a.computeSize(),a.trafs[0].truns[0].data_offset=a.size+8,this.add("mdat").data=new Uint8Array(t),n}},p.prototype.createSingleSampleMoof=function(e){var t=0;t=e.is_sync?1<<25:65536;var r=new c.moofBox;r.add("mfhd").set("sequence_number",this.nextMoofNumber),this.nextMoofNumber++;var i=r.add("traf"),n=this.getTrackById(e.track_id);return i.add("tfhd").set("track_id",e.track_id).set("flags",c.TFHD_FLAG_DEFAULT_BASE_IS_MOOF),i.add("tfdt").set("baseMediaDecodeTime",e.dts-(n.first_dts||0)),i.add("trun").set("flags",c.TRUN_FLAGS_DATA_OFFSET|c.TRUN_FLAGS_DURATION|c.TRUN_FLAGS_SIZE|c.TRUN_FLAGS_FLAGS|c.TRUN_FLAGS_CTS_OFFSET).set("data_offset",0).set("first_sample_flags",0).set("sample_count",1).set("sample_duration",[e.duration]).set("sample_size",[e.size]).set("sample_flags",[t]).set("sample_composition_time_offset",[e.cts-e.dts]),r},p.prototype.lastMoofIndex=0,p.prototype.samplesDataSize=0,p.prototype.resetTables=function(){var e,t,r,i,n,s;for(this.initial_duration=this.moov.mvhd.duration,this.moov.mvhd.duration=0,e=0;e=2&&(l=n[a].grouping_type+"/0",(o=new d(n[a].grouping_type,0)).is_fragment=!0,t.sample_groups_info[l]||(t.sample_groups_info[l]=o))}else for(a=0;a=2&&(l=i[a].grouping_type+"/0",o=new d(i[a].grouping_type,0),e.sample_groups_info[l]||(e.sample_groups_info[l]=o))},p.setSampleGroupProperties=function(e,t,r,i){var n,s;for(n in t.sample_groups=[],i){var a;if(t.sample_groups[n]={},t.sample_groups[n].grouping_type=i[n].grouping_type,t.sample_groups[n].grouping_type_parameter=i[n].grouping_type_parameter,r>=i[n].last_sample_in_run&&(i[n].last_sample_in_run<0&&(i[n].last_sample_in_run=0),i[n].entry_index++,i[n].entry_index<=i[n].sbgp.entries.length-1&&(i[n].last_sample_in_run+=i[n].sbgp.entries[i[n].entry_index].sample_count)),i[n].entry_index<=i[n].sbgp.entries.length-1?t.sample_groups[n].group_description_index=i[n].sbgp.entries[i[n].entry_index].group_description_index:t.sample_groups[n].group_description_index=-1,0!==t.sample_groups[n].group_description_index)a=i[n].fragment_description?i[n].fragment_description:i[n].description,t.sample_groups[n].group_description_index>0?(s=t.sample_groups[n].group_description_index>65535?(t.sample_groups[n].group_description_index>>16)-1:t.sample_groups[n].group_description_index-1,a&&s>=0&&(t.sample_groups[n].description=a.entries[s])):a&&a.version>=2&&a.default_group_description_index>0&&(t.sample_groups[n].description=a.entries[a.default_group_description_index-1])}},p.process_sdtp=function(e,t,r){t&&(e?(t.is_leading=e.is_leading[r],t.depends_on=e.sample_depends_on[r],t.is_depended_on=e.sample_is_depended_on[r],t.has_redundancy=e.sample_has_redundancy[r]):(t.is_leading=0,t.depends_on=0,t.is_depended_on=0,t.has_redundancy=0))},p.prototype.buildSampleLists=function(){var e,t;for(e=0;ev&&(b++,v<0&&(v=0),v+=s.sample_counts[b]),t>0?(e.samples[t-1].duration=s.sample_deltas[b],e.samples_duration+=e.samples[t-1].duration,A.dts=e.samples[t-1].dts+e.samples[t-1].duration):A.dts=0,a?(t>=w&&(S++,w<0&&(w=0),w+=a.sample_counts[S]),A.cts=e.samples[t].dts+a.sample_offsets[S]):A.cts=A.dts,o?(t==o.sample_numbers[E]-1?(A.is_sync=!0,E++):(A.is_sync=!1,A.degradation_priority=0),d&&d.entries[U].sample_delta+x==t+1&&(A.subsamples=d.entries[U].subsamples,x+=d.entries[U].sample_delta,U++)):A.is_sync=!0,p.process_sdtp(e.mdia.minf.stbl.sdtp,A,A.number),A.degradation_priority=h?h.priority[t]:0,d&&d.entries[U].sample_delta+x==t&&(A.subsamples=d.entries[U].subsamples,x+=d.entries[U].sample_delta),(u.length>0||c.length>0)&&p.setSampleGroupProperties(e,A,t,e.sample_groups_info)}t>0&&(e.samples[t-1].duration=Math.max(e.mdia.mdhd.duration-e.samples[t-1].dts,0),e.samples_duration+=e.samples[t-1].duration)}},p.prototype.updateSampleLists=function(){var e,t,r,i,n,s,a,o,l,d,u,h,f,m,_;if(void 0!==this.moov)for(;this.lastMoofIndex0&&p.initSampleGroups(h,u,u.sbgps,h.mdia.minf.stbl.sgpds,u.sgpds),t=0;t0?m.dts=h.samples[h.samples.length-2].dts+h.samples[h.samples.length-2].duration:(u.tfdt?m.dts=u.tfdt.baseMediaDecodeTime:m.dts=0,h.first_traf_merged=!0),m.cts=m.dts,y.flags&c.TRUN_FLAGS_CTS_OFFSET&&(m.cts=m.dts+y.sample_composition_time_offset[r]),_=a,y.flags&c.TRUN_FLAGS_FLAGS?_=y.sample_flags[r]:0===r&&y.flags&c.TRUN_FLAGS_FIRST_FLAG&&(_=y.first_sample_flags),m.is_sync=!(_>>16&1),m.is_leading=_>>26&3,m.depends_on=_>>24&3,m.is_depended_on=_>>22&3,m.has_redundancy=_>>20&3,m.degradation_priority=65535&_;var g=!!(u.tfhd.flags&c.TFHD_FLAG_BASE_DATA_OFFSET),v=!!(u.tfhd.flags&c.TFHD_FLAG_DEFAULT_BASE_IS_MOOF),b=!!(y.flags&c.TRUN_FLAGS_DATA_OFFSET),w=0;w=g?u.tfhd.base_data_offset:v||0===t?d.start:o,m.offset=0===t&&0===r?b?w+y.data_offset:w:o,o=m.offset+m.size,(u.sbgps.length>0||u.sgpds.length>0||h.mdia.minf.stbl.sbgps.length>0||h.mdia.minf.stbl.sgpds.length>0)&&p.setSampleGroupProperties(h,m,m.number_in_traf,u.sample_groups_info)}}if(u.subs){h.has_fragment_subsamples=!0;var S=u.first_sample_index;for(t=0;t-1))return null;var a=(r=this.stream.buffers[n]).byteLength-(i.offset+i.alreadyRead-r.fileStart);if(i.size-i.alreadyRead<=a)return s.debug("ISOFile","Getting sample #"+t+" data (alreadyRead: "+i.alreadyRead+" offset: "+(i.offset+i.alreadyRead-r.fileStart)+" read size: "+(i.size-i.alreadyRead)+" full size: "+i.size+")"),o.memcpy(i.data.buffer,i.alreadyRead,r,i.offset+i.alreadyRead-r.fileStart,i.size-i.alreadyRead),r.usedBytes+=i.size-i.alreadyRead,this.stream.logBufferLevel(),i.alreadyRead=i.size,i;if(0===a)return null;s.debug("ISOFile","Getting sample #"+t+" partial data (alreadyRead: "+i.alreadyRead+" offset: "+(i.offset+i.alreadyRead-r.fileStart)+" read size: "+a+" full size: "+i.size+")"),o.memcpy(i.data.buffer,i.alreadyRead,r,i.offset+i.alreadyRead-r.fileStart,a),i.alreadyRead+=a,r.usedBytes+=a,this.stream.logBufferLevel()}},p.prototype.releaseSample=function(e,t){var r=e.samples[t];return r.data?(this.samplesDataSize-=r.size,r.data=null,r.alreadyRead=0,r.size):0},p.prototype.getAllocatedSampleDataSize=function(){return this.samplesDataSize},p.prototype.getCodecs=function(){var e,t="";for(e=0;e0&&(t+=","),t+=this.moov.traks[e].mdia.minf.stbl.stsd.entries[0].getCodec()}return t},p.prototype.getTrexById=function(e){var t;if(!this.moov||!this.moov.mvex)return null;for(t=0;t0&&(r.protection=n.ipro.protections[n.iinf.item_infos[e].protection_index-1]),n.iinf.item_infos[e].item_type?r.type=n.iinf.item_infos[e].item_type:r.type="mime",r.content_type=n.iinf.item_infos[e].content_type,r.content_encoding=n.iinf.item_infos[e].content_encoding;if(n.iloc)for(e=0;e0&&c.property_index-1-1))return null;var l=(t=this.stream.buffers[a]).byteLength-(n.offset+n.alreadyRead-t.fileStart);if(!(n.length-n.alreadyRead<=l))return s.debug("ISOFile","Getting item #"+e+" extent #"+i+" partial data (alreadyRead: "+n.alreadyRead+" offset: "+(n.offset+n.alreadyRead-t.fileStart)+" read size: "+l+" full extent size: "+n.length+" full item size: "+r.size+")"),o.memcpy(r.data.buffer,r.alreadyRead,t,n.offset+n.alreadyRead-t.fileStart,l),n.alreadyRead+=l,r.alreadyRead+=l,t.usedBytes+=l,this.stream.logBufferLevel(),null;s.debug("ISOFile","Getting item #"+e+" extent #"+i+" data (alreadyRead: "+n.alreadyRead+" offset: "+(n.offset+n.alreadyRead-t.fileStart)+" read size: "+(n.length-n.alreadyRead)+" full extent size: "+n.length+" full item size: "+r.size+")"),o.memcpy(r.data.buffer,r.alreadyRead,t,n.offset+n.alreadyRead-t.fileStart,n.length-n.alreadyRead),t.usedBytes+=n.length-n.alreadyRead,this.stream.logBufferLevel(),r.alreadyRead+=n.length-n.alreadyRead,n.alreadyRead=n.length}}return r.alreadyRead===r.size?r:null},p.prototype.releaseItem=function(e){var t=this.items[e];if(t.data){this.itemsDataSize-=t.size,t.data=null,t.alreadyRead=0;for(var r=0;r0?this.moov.traks[e].samples[0].duration:0),t.push(i)}return t},c.Box.prototype.printHeader=function(e){this.size+=8,this.size>l&&(this.size+=8),"uuid"===this.type&&(this.size+=16),e.log(e.indent+"size:"+this.size),e.log(e.indent+"type:"+this.type)},c.FullBox.prototype.printHeader=function(e){this.size+=4,c.Box.prototype.printHeader.call(this,e),e.log(e.indent+"version:"+this.version),e.log(e.indent+"flags:"+this.flags)},c.Box.prototype.print=function(e){this.printHeader(e)},c.ContainerBox.prototype.print=function(e){this.printHeader(e);for(var t=0;t>8)),e.log(e.indent+"matrix: "+this.matrix.join(", ")),e.log(e.indent+"next_track_id: "+this.next_track_id)},c.tkhdBox.prototype.print=function(e){c.FullBox.prototype.printHeader.call(this,e),e.log(e.indent+"creation_time: "+this.creation_time),e.log(e.indent+"modification_time: "+this.modification_time),e.log(e.indent+"track_id: "+this.track_id),e.log(e.indent+"duration: "+this.duration),e.log(e.indent+"volume: "+(this.volume>>8)),e.log(e.indent+"matrix: "+this.matrix.join(", ")),e.log(e.indent+"layer: "+this.layer),e.log(e.indent+"alternate_group: "+this.alternate_group),e.log(e.indent+"width: "+this.width),e.log(e.indent+"height: "+this.height)};var m={createFile:function(e,t){var r=void 0===e||e,i=new p(t);return i.discardMdatData=!r,i}};t.createFile=m.createFile}));function br(e){return e.reduce(((e,t)=>256*e+t))}function wr(e){const t=[101,103,119,99],r=e.length-28,i=e.slice(r,r+t.length);return t.every(((e,t)=>e===i[t]))}vr.Log,vr.MP4BoxStream,vr.DataStream,vr.MultiBufferStream,vr.MPEG4DescriptorParser,vr.BoxParser,vr.XMLSubtitlein4Parser,vr.Textin4Parser,vr.ISOFile,vr.createFile;class Sr{constructor(){this.s=null,this.a=null,this.l=0,this.c=0,this.u=1/0,this.A=!1,this.d=!1,this.r=4194304,this.n=new Uint8Array([30,158,90,33,244,57,83,165,2,70,35,87,215,231,226,108]),this.t=this.n.slice().reverse()}destroy(){this.s=null,this.a=null,this.l=0,this.c=0,this.u=1/0,this.A=!1,this.d=!1,this.r=4194304,this.n=null,this.t=null}transport(e){if(!this.s&&this.l>50)return e;if(this.l++,this.d)return e;const t=new Uint8Array(e);if(this.A){if(!(this.c~e))}(e.slice(r+32,r+32+t))]}return null}(t,this.t);if(!r)return e;const i=function(e){try{if("object"!=typeof WebAssembly||"function"!=typeof WebAssembly.instantiate)throw null;{const e=new WebAssembly.Module(Uint8Array.of(0,97,115,109,1,0,0,0));if(!(e instanceof WebAssembly.Module&&new WebAssembly.Instance(e)instanceof WebAssembly.Instance))throw null}}catch(e){return new Error("video_error_4")}let t;try{t={env:{__handle_stack_overflow:()=>e(new Error("video_error_1")),memory:new WebAssembly.Memory({initial:256,maximum:256})}}}catch(e){return new Error("video_error_5")}return t}(e);if(i instanceof Error)return console.error(i.message),this.d=!0,e;this.A=!0,this.u=r[1],wr(t)&&this.c++,WebAssembly.instantiate(r[2],i).then((e=>{if("function"!=typeof(t=e.instance.exports).parse||"object"!=typeof t.memory)return this.d=!0,void console.error("video_error_3");var t;this.s=e.instance.exports,this.a=new Uint8Array(this.s.memory.buffer)})).catch((e=>{this.d=!0,console.error("video_error_6")}))}return e}}const Er=0,Ur=32,xr=16,Ar=[214,144,233,254,204,225,61,183,22,182,20,194,40,251,44,5,43,103,154,118,42,190,4,195,170,68,19,38,73,134,6,153,156,66,80,244,145,239,152,122,51,84,11,67,237,207,172,98,228,179,28,169,201,8,232,149,128,223,148,250,117,143,63,166,71,7,167,252,243,115,23,186,131,89,60,25,230,133,79,168,104,107,129,178,113,100,218,139,248,235,15,75,112,86,157,53,30,36,14,94,99,88,209,162,37,34,124,59,1,33,120,135,212,0,70,87,159,211,39,82,76,54,2,231,160,196,200,158,234,191,138,210,64,199,56,181,163,247,242,206,249,97,21,161,224,174,93,164,155,52,26,85,173,147,50,48,245,140,177,227,29,246,226,46,130,102,202,96,192,41,35,171,13,83,78,111,213,219,55,69,222,253,142,47,3,255,106,114,109,108,91,81,141,27,175,146,187,221,188,127,17,217,92,65,31,16,90,216,10,193,49,136,165,205,123,189,45,116,208,18,184,229,180,176,137,105,151,74,12,150,119,126,101,185,241,9,197,110,198,132,24,240,125,236,58,220,77,32,121,238,95,62,215,203,57,72],Tr=[462357,472066609,943670861,1415275113,1886879365,2358483617,2830087869,3301692121,3773296373,4228057617,404694573,876298825,1347903077,1819507329,2291111581,2762715833,3234320085,3705924337,4177462797,337322537,808926789,1280531041,1752135293,2223739545,2695343797,3166948049,3638552301,4110090761,269950501,741554753,1213159005,1684763257];function kr(e){const t=[];for(let r=0,i=e.length;r>>32-r}function Br(e){return(255&Ar[e>>>24&255])<<24|(255&Ar[e>>>16&255])<<16|(255&Ar[e>>>8&255])<<8|255&Ar[255&e]}function Dr(e){return e^Cr(e,2)^Cr(e,10)^Cr(e,18)^Cr(e,24)}function Pr(e){return e^Cr(e,13)^Cr(e,23)}function Fr(e,t,r){const i=new Array(4),n=new Array(4);for(let t=0;t<4;t++)n[0]=255&e[4*t],n[1]=255&e[4*t+1],n[2]=255&e[4*t+2],n[3]=255&e[4*t+3],i[t]=n[0]<<24|n[1]<<16|n[2]<<8|n[3];for(let e,t=0;t<32;t+=4)e=i[1]^i[2]^i[3]^r[t+0],i[0]^=Dr(Br(e)),e=i[2]^i[3]^i[0]^r[t+1],i[1]^=Dr(Br(e)),e=i[3]^i[0]^i[1]^r[t+2],i[2]^=Dr(Br(e)),e=i[0]^i[1]^i[2]^r[t+3],i[3]^=Dr(Br(e));for(let e=0;e<16;e+=4)t[e]=i[3-e/4]>>>24&255,t[e+1]=i[3-e/4]>>>16&255,t[e+2]=i[3-e/4]>>>8&255,t[e+3]=255&i[3-e/4]}function Ir(e,t,r,{padding:i="pkcs#7",mode:n,iv:s=[],output:a="string"}={}){if("cbc"===n&&("string"==typeof s&&(s=kr(s)),16!==s.length))throw new Error("iv is invalid");if("string"==typeof t&&(t=kr(t)),16!==t.length)throw new Error("key is invalid");if(e="string"==typeof e?r!==Er?function(e){const t=[];for(let r=0,i=e.length;r>>6),t.push(128|63&i);else if(i<=55295||i>=57344&&i<=65535)t.push(224|i>>>12),t.push(128|i>>>6&63),t.push(128|63&i);else{if(!(i>=65536&&i<=1114111))throw t.push(i),new Error("input is not supported");r++,t.push(240|i>>>18&28),t.push(128|i>>>12&63),t.push(128|i>>>6&63),t.push(128|63&i)}}return t}(e):kr(e):[...e],("pkcs#5"===i||"pkcs#7"===i)&&r!==Er){const t=xr-e.length%xr;for(let r=0;r=xr;){const t=e.slice(c,c+16),i=new Array(16);if("cbc"===n)for(let e=0;e1===(e=e.toString(16)).length?"0"+e:e)).join(""):function(e){const t=[];for(let r=0,i=e.length;r=240&&e[r]<=247?(t.push(String.fromCodePoint(((7&e[r])<<18)+((63&e[r+1])<<12)+((63&e[r+2])<<6)+(63&e[r+3]))),r+=3):e[r]>=224&&e[r]<=239?(t.push(String.fromCodePoint(((15&e[r])<<12)+((63&e[r+1])<<6)+(63&e[r+2]))),r+=2):e[r]>=192&&e[r]<=223?(t.push(String.fromCodePoint(((31&e[r])<<6)+(63&e[r+1]))),r++):t.push(String.fromCodePoint(e[r]));return t.join("")}(l):l}class Lr{on(e,t,r){const i=this.e||(this.e={});return(i[e]||(i[e]=[])).push({fn:t,ctx:r}),this}once(e,t,r){const i=this;function n(...s){i.off(e,n),t.apply(r,s)}return n._=t,this.on(e,n,r)}emit(e,...t){const r=((this.e||(this.e={}))[e]||[]).slice();for(let e=0;e{delete r[e]})),void delete this.e;const i=r[e],n=[];if(i&&t)for(let e=0,r=i.length;e=2&&!this.isDestroyed;)if(255==this.tempBuffer[this.parsedOffset]){if(!(!1&this.tempBuffer[this.parsedOffset+1])){this.versionLayer=this.tempBuffer[this.parsedOffset+1],this.state=Rr.findFirstStartCode,this.fisrtStartCodeOffset=this.parsedOffset,this.parsedOffset+=2,e=!0;break}this.parsedOffset++}else this.parsedOffset++;if(e)continue;break}if(this.state==Rr.findFirstStartCode){let e=!1;for(;this.tempBuffer.length-this.parsedOffset>=2&&!this.isDestroyed;)if(255==this.tempBuffer[this.parsedOffset]){if(this.tempBuffer[this.parsedOffset+1]==this.versionLayer){this.state=Rr.findSecondStartCode,this.secondStartCodeOffset=this.parsedOffset,this.parsedOffset+=2,e=!0;break}this.parsedOffset++}else this.parsedOffset++;if(e)continue;break}if(this.state==Rr.findSecondStartCode){let e=this.tempBuffer.slice(this.fisrtStartCodeOffset,this.secondStartCodeOffset);this.emit("data",e,t),this.tempBuffer=this.tempBuffer.slice(this.secondStartCodeOffset),this.fisrtStartCodeOffset=0,this.parsedOffset=2,this.state=Rr.findFirstStartCode}}}}function Mr(e,t,r){for(let i=2;ie+t.byteLength),0));let r=0;return e.forEach((e=>{t.set(e,r),r+=e.byteLength})),t}class Nr{static init(){Nr.types={avc1:[],avcC:[],hvc1:[],hvcC:[],av01:[],av1C:[],btrt:[],dinf:[],dref:[],esds:[],ftyp:[],hdlr:[],mdat:[],mdhd:[],mdia:[],mfhd:[],minf:[],moof:[],moov:[],mp4a:[],mvex:[],mvhd:[],sdtp:[],stbl:[],stco:[],stsc:[],stsd:[],stsz:[],stts:[],tfdt:[],tfhd:[],traf:[],trak:[],trun:[],trex:[],tkhd:[],vmhd:[],smhd:[],".mp3":[],Opus:[],dOps:[],"ac-3":[],dac3:[],"ec-3":[],dec3:[]};for(let e in Nr.types)Nr.types.hasOwnProperty(e)&&(Nr.types[e]=[e.charCodeAt(0),e.charCodeAt(1),e.charCodeAt(2),e.charCodeAt(3)]);let e=Nr.constants={};e.FTYP=new Uint8Array([105,115,111,109,0,0,0,1,105,115,111,109,97,118,99,49]),e.STSD_PREFIX=new Uint8Array([0,0,0,0,0,0,0,1]),e.STTS=new Uint8Array([0,0,0,0,0,0,0,0]),e.STSC=e.STCO=e.STTS,e.STSZ=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0]),e.HDLR_VIDEO=new Uint8Array([0,0,0,0,0,0,0,0,118,105,100,101,0,0,0,0,0,0,0,0,0,0,0,0,86,105,100,101,111,72,97,110,100,108,101,114,0]),e.HDLR_AUDIO=new Uint8Array([0,0,0,0,0,0,0,0,115,111,117,110,0,0,0,0,0,0,0,0,0,0,0,0,83,111,117,110,100,72,97,110,100,108,101,114,0]),e.DREF=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,12,117,114,108,32,0,0,0,1]),e.SMHD=new Uint8Array([0,0,0,0,0,0,0,0]),e.VMHD=new Uint8Array([0,0,0,1,0,0,0,0,0,0,0,0])}static box(e){let t=8,r=null,i=Array.prototype.slice.call(arguments,1),n=i.length;for(let e=0;e>>24&255,r[1]=t>>>16&255,r[2]=t>>>8&255,r[3]=255&t,r.set(e,4);let s=8;for(let e=0;e>>24&255,e>>>16&255,e>>>8&255,255&e,t>>>24&255,t>>>16&255,t>>>8&255,255&t,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255]))}static trak(e){return Nr.box(Nr.types.trak,Nr.tkhd(e),Nr.mdia(e))}static tkhd(e){let t=e.id,r=e.duration,i=e.presentWidth,n=e.presentHeight;return Nr.box(Nr.types.tkhd,new Uint8Array([0,0,0,7,0,0,0,0,0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t,0,0,0,0,r>>>24&255,r>>>16&255,r>>>8&255,255&r,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,i>>>8&255,255&i,0,0,n>>>8&255,255&n,0,0]))}static mdia(e){return Nr.box(Nr.types.mdia,Nr.mdhd(e),Nr.hdlr(e),Nr.minf(e))}static mdhd(e){let t=e.timescale,r=e.duration;return Nr.box(Nr.types.mdhd,new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t,r>>>24&255,r>>>16&255,r>>>8&255,255&r,85,196,0,0]))}static hdlr(e){let t=null;return t="audio"===e.type?Nr.constants.HDLR_AUDIO:Nr.constants.HDLR_VIDEO,Nr.box(Nr.types.hdlr,t)}static minf(e){let t=null;return t="audio"===e.type?Nr.box(Nr.types.smhd,Nr.constants.SMHD):Nr.box(Nr.types.vmhd,Nr.constants.VMHD),Nr.box(Nr.types.minf,t,Nr.dinf(),Nr.stbl(e))}static dinf(){return Nr.box(Nr.types.dinf,Nr.box(Nr.types.dref,Nr.constants.DREF))}static stbl(e){return Nr.box(Nr.types.stbl,Nr.stsd(e),Nr.box(Nr.types.stts,Nr.constants.STTS),Nr.box(Nr.types.stsc,Nr.constants.STSC),Nr.box(Nr.types.stsz,Nr.constants.STSZ),Nr.box(Nr.types.stco,Nr.constants.STCO))}static stsd(e){return"audio"===e.type?"mp3"===e.audioType?Nr.box(Nr.types.stsd,Nr.constants.STSD_PREFIX,Nr.mp3(e)):Nr.box(Nr.types.stsd,Nr.constants.STSD_PREFIX,Nr.mp4a(e)):"avc"===e.videoType?Nr.box(Nr.types.stsd,Nr.constants.STSD_PREFIX,Nr.avc1(e)):Nr.box(Nr.types.stsd,Nr.constants.STSD_PREFIX,Nr.hvc1(e))}static mp3(e){let t=e.channelCount,r=e.audioSampleRate,i=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,t,0,16,0,0,0,0,r>>>8&255,255&r,0,0]);return Nr.box(Nr.types[".mp3"],i)}static mp4a(e){let t=e.channelCount,r=e.audioSampleRate,i=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,t,0,16,0,0,0,0,r>>>8&255,255&r,0,0]);return Nr.box(Nr.types.mp4a,i,Nr.esds(e))}static esds(e){let t=e.config||[],r=t.length,i=new Uint8Array([0,0,0,0,3,23+r,0,1,0,4,15+r,64,21,0,0,0,0,0,0,0,0,0,0,0,5].concat([r]).concat(t).concat([6,1,2]));return Nr.box(Nr.types.esds,i)}static avc1(e){let t=e.avcc;const r=e.codecWidth,i=e.codecHeight;let n=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,r>>>8&255,255&r,i>>>8&255,255&i,0,72,0,0,0,72,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,255,255]);return Nr.box(Nr.types.avc1,n,Nr.box(Nr.types.avcC,t))}static hvc1(e){let t=e.avcc;const r=e.codecWidth,i=e.codecHeight;let n=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,r>>>8&255,255&r,i>>>8&255,255&i,0,72,0,0,0,72,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,255,255]);return Nr.box(Nr.types.hvc1,n,Nr.box(Nr.types.hvcC,t))}static mvex(e){return Nr.box(Nr.types.mvex,Nr.trex(e))}static trex(e){let t=e.id,r=new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1]);return Nr.box(Nr.types.trex,r)}static moof(e,t){return Nr.box(Nr.types.moof,Nr.mfhd(e.sequenceNumber),Nr.traf(e,t))}static mfhd(e){let t=new Uint8Array([0,0,0,0,e>>>24&255,e>>>16&255,e>>>8&255,255&e]);return Nr.box(Nr.types.mfhd,t)}static traf(e,t){let r=e.id,i=Nr.box(Nr.types.tfhd,new Uint8Array([0,0,0,0,r>>>24&255,r>>>16&255,r>>>8&255,255&r])),n=Nr.box(Nr.types.tfdt,new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t])),s=Nr.sdtp(e),a=Nr.trun(e,s.byteLength+16+16+8+16+8+8);return Nr.box(Nr.types.traf,i,n,a,s)}static sdtp(e){let t=new Uint8Array(5),r=e.flags;return t[4]=r.isLeading<<6|r.dependsOn<<4|r.isDependedOn<<2|r.hasRedundancy,Nr.box(Nr.types.sdtp,t)}static trun(e,t){let r=new Uint8Array(28);t+=36,r.set([0,0,15,1,0,0,0,1,t>>>24&255,t>>>16&255,t>>>8&255,255&t],0);let i=e.duration,n=e.size,s=e.flags,a=e.cts;return r.set([i>>>24&255,i>>>16&255,i>>>8&255,255&i,n>>>24&255,n>>>16&255,n>>>8&255,255&n,s.isLeading<<2|s.dependsOn,s.isDependedOn<<6|s.hasRedundancy<<4|s.isNonSync,0,0,a>>>24&255,a>>>16&255,a>>>8&255,255&a],12),Nr.box(Nr.types.trun,r)}static mdat(e){return Nr.box(Nr.types.mdat,e)}}function $r(e={},t={},r=!1){let i=[],n=[],s={},a=new AbortController,o=null,l=null,d=null,g=null,v=null,w=null,Pe=!1,Fe=!1,Ve=!!ot(r),Qe=!1,dt=null,ut=null,ct=null,ht=[],mt=null,yt=null,xt=0,At=0,Tt=null,kt=null,Ct=0,Bt=0,Nt=!1,$t=!1,Gt=!1,Ht=null,Vt=null,Wt=null,jt=!1,Yt=()=>{const e=st();return{debug:e.debug,debugLevel:e.debugLevel,debugUuid:e.debugUuid,useOffscreen:e.useOffscreen,useWCS:e.useWCS,useMSE:e.useMSE,videoBuffer:e.videoBuffer,videoBufferDelay:e.videoBufferDelay,openWebglAlignment:e.openWebglAlignment,playType:e.playType,hasAudio:e.hasAudio,hasVideo:e.hasVideo,playbackRate:1,playbackForwardMaxRateDecodeIFrame:e.playbackForwardMaxRateDecodeIFrame,playbackIsCacheBeforeDecodeForFpsRender:e.playbackConfig.isCacheBeforeDecodeForFpsRender,sampleRate:0,networkDelay:e.networkDelay,visibility:!0,useSIMD:e.useSIMD,isRecording:!1,recordType:e.recordType,isNakedFlow:e.isNakedFlow,checkFirstIFrame:e.checkFirstIFrame,audioBufferSize:1024,isM7sCrypto:e.isM7sCrypto,m7sCryptoAudio:e.m7sCryptoAudio,cryptoKey:e.cryptoKey,cryptoIV:e.cryptoIV,isSm4Crypto:e.isSm4Crypto,sm4CryptoKey:e.sm4CryptoKey,isXorCrypto:e.isXorCrypto,isHls265:!1,isFlv:e.isFlv,isFmp4:e.isFmp4,isMpeg4:e.isMpeg4,isTs:e.isTs,isFmp4Private:e.isFmp4Private,isEmitSEI:e.isEmitSEI,isRecordTypeFlv:!1,isWasmMp4:!1,isChrome:!1,isDropSameTimestampGop:e.isDropSameTimestampGop,mseDecodeAudio:e.mseDecodeAudio,nakedFlowH265DemuxUseNew:e.nakedFlowH265DemuxUseNew,mseDecoderUseWorker:e.mseDecoderUseWorker,mseAutoCleanupSourceBuffer:e.mseAutoCleanupSourceBuffer,mseAutoCleanupMaxBackwardDuration:e.mseAutoCleanupMaxBackwardDuration,mseAutoCleanupMinBackwardDuration:e.mseAutoCleanupMinBackwardDuration,mseCorrectTimeDuration:e.mseCorrectTimeDuration}};"VideoEncoder"in self&&(s={hasInit:!1,isEmitInfo:!1,offscreenCanvas:null,offscreenCanvasCtx:null,decoder:new VideoDecoder({output:function(e){if(s.isEmitInfo||(Qt.debug.log("worker","Webcodecs Video Decoder initSize"),postMessage({cmd:E,w:e.codedWidth,h:e.codedHeight}),s.isEmitInfo=!0,s.offscreenCanvas=new OffscreenCanvas(e.codedWidth,e.codedHeight),s.offscreenCanvasCtx=s.offscreenCanvas.getContext("2d")),"function"==typeof e.createImageBitmap)e.createImageBitmap().then((t=>{s.offscreenCanvasCtx.drawImage(t,0,0,e.codedWidth,e.codedHeight);let r=s.offscreenCanvas.transferToImageBitmap();postMessage({cmd:U,buffer:r,delay:Qt.delay,ts:0},[r]),it(e)}));else{s.offscreenCanvasCtx.drawImage(e,0,0,e.codedWidth,e.codedHeight);let t=s.offscreenCanvas.transferToImageBitmap();postMessage({cmd:U,buffer:t,delay:Qt.delay,ts:0},[t]),it(e)}},error:function(e){Qt.debug.error("worker","VideoDecoder error",e)}}),decode:function(e,t,r){const i=e[0]>>4==1;if(s.hasInit){const r=new EncodedVideoChunk({data:e.slice(5),timestamp:t,type:i?ke:Ce});s.decoder.decode(r)}else if(i&&0===e[1]){const t=15&e[0];postMessage({cmd:B,code:t});const r=new Uint8Array(e);postMessage({cmd:D,buffer:r,codecId:t},[r.buffer]);const i=function(e){let t=e.subarray(1,4),r="avc1.";for(let e=0;e<3;e++){let i=t[e].toString(16);i.length<2&&(i="0"+i),r+=i}return{codec:r,description:e}}(e.slice(5));s.decoder.configure(i),s.hasInit=!0}},reset(){s.hasInit=!1,s.isEmitInfo=!1,s.offscreenCanvas=null,s.offscreenCanvasCtx=null}});let qt=function(){if(jt=!0,Qt.fetchStatus!==Re||lt(Qt._opt.isChrome)){if(a)try{a.abort(),a=null}catch(e){Qt.debug.log("worker","abort catch",e)}}else a=null,Qt.debug.log("worker",`abort() and not abortController.abort() _status is ${Qt.fetchStatus} and _isChrome is ${Qt._opt.isChrome}`)},Kt={init(){Kt.lastBuf=null,Kt.vps=null,Kt.sps=null,Kt.pps=null,Kt.streamType=null,Kt.localDts=0,Kt.isSendSeqHeader=!1},destroy(){Kt.lastBuf=null,Kt.vps=null,Kt.sps=null,Kt.pps=null,Kt.streamType=null,Kt.localDts=0,Kt.isSendSeqHeader=!1},dispatch(e){const t=new Uint8Array(e);Kt.extractNALu$2(t)},getNaluDts(){let e=Kt.localDts;return Kt.localDts=Kt.localDts+40,e},getNaluAudioDts(){const e=Qt._opt.sampleRate,t=Qt._opt.audioBufferSize;return Kt.localDts+parseInt(t/e*1e3)},extractNALu(e){let t,r,i=0,n=e.byteLength,s=0,a=[];for(;i1)for(let e=0;e>1,r!==Te.vps&&r!==Te.sps&&r!==Te.pps||(t=Ue.h265)),t}(e),Ht=Kt.streamType===Ue.h265),Kt.streamType===Ue.h264){const t=Kt.handleAddNaluStartCode(e),r=Kt.extractNALu(t);if(0===r.length)return void Qt.debug.warn("worker","handleVideoNalu","h264 naluList.length === 0");const i=[];if(r.forEach((e=>{const t=wt(e);t===Ae.pps||t===Ae.sps?Kt.handleVideoH264Nalu(e):Et(t)&&i.push(e)})),1===i.length)Kt.handleVideoH264Nalu(i[0]);else{const e=function(e){if(0===e.length)return!1;const t=wt(e[0]);for(let r=1;r{Kt.handleVideoH264Nalu(e)}))}}else if(Kt.streamType===Ue.h265)if(Qt._opt.nakedFlowH265DemuxUseNew){const t=Kt.handleAddNaluStartCode(e),r=Kt.extractNALu(t);if(0===r.length)return void Qt.debug.warn("worker","handleVideoNalu","h265 naluList.length === 0");const i=[];if(r.forEach((e=>{const t=zt(e);t===Te.pps||t===Te.sps||t===Te.vps?Kt.handleVideoH265Nalu(e):Mt(t)&&i.push(e)})),1===i.length)Kt.handleVideoH265Nalu(i[0]);else{const e=function(e){if(0===e.length)return!1;const t=zt(e[0]);for(let r=1;r{Kt.handleVideoH265Nalu(e)}))}}else{zt(e)===Te.pps?Kt.extractH265PPS(e):Kt.handleVideoH265Nalu(e)}},extractH264PPS(e){const t=Kt.handleAddNaluStartCode(e);Kt.extractNALu(t).forEach((e=>{St(wt(e))?Kt.extractH264SEI(e):Kt.handleVideoH264Nalu(e)}))},extractH265PPS(e){const t=Kt.handleAddNaluStartCode(e);Kt.extractNALu(t).forEach((e=>{const t=zt(e);t===Te.sei?Kt.extractH265SEI(e):Kt.handleVideoH265Nalu(e)}))},extractH264SEI(e){const t=Kt.handleAddNaluStartCode(e);Kt.extractNALu(t).forEach((e=>{Kt.handleVideoH264Nalu(e)}))},extractH265SEI(e){const t=Kt.handleAddNaluStartCode(e);Kt.extractNALu(t).forEach((e=>{Kt.handleVideoH265Nalu(e)}))},handleAddNaluStartCode(e){const t=[0,0,0,1],r=new Uint8Array(e.length+t.length);return r.set(t),r.set(e,t.length),r},handleVideoH264Nalu(e){const t=wt(e);switch(t){case Ae.sps:Kt.sps=e;break;case Ae.pps:Kt.pps=e}if(Kt.isSendSeqHeader){if(Kt.sps&&Kt.pps){const e=vt({sps:Kt.sps,pps:Kt.pps}),t=Kt.getNaluDts();Qt.decode(e,{type:Z,ts:t,isIFrame:!0,cts:0}),Kt.sps=null,Kt.pps=null}if(Et(t)){const r=Ut(t),i=Kt.getNaluDts(),n=function(e,t){let r=[];r[0]=t?23:39,r[1]=1,r[2]=0,r[3]=0,r[4]=0,r[5]=e.byteLength>>24&255,r[6]=e.byteLength>>16&255,r[7]=e.byteLength>>8&255,r[8]=255&e.byteLength;const i=new Uint8Array(r.length+e.byteLength);return i.set(r,0),i.set(e,r.length),i}(e,r);Kt.doDecode(n,{type:Z,ts:i,isIFrame:r,cts:0})}else Qt.debug.warn("work",`handleVideoH264Nalu Avc Seq Head is ${t}`)}else if(Kt.sps&&Kt.pps){Kt.isSendSeqHeader=!0;const e=vt({sps:Kt.sps,pps:Kt.pps});Qt.decode(e,{type:Z,ts:0,isIFrame:!0,cts:0}),Kt.sps=null,Kt.pps=null}},handleVideoH264NaluList(e,t,r){if(Kt.isSendSeqHeader){const i=Kt.getNaluDts(),n=bt(e.reduce(((e,t)=>{const r=Pt(e),i=Pt(t),n=new Uint8Array(r.byteLength+i.byteLength);return n.set(r,0),n.set(i,r.byteLength),n})),t);Kt.doDecode(n,{type:Z,ts:i,isIFrame:t,cts:0}),Qt.debug.log("worker",`handleVideoH264NaluList list size is ${e.length} package length is ${n.byteLength} isIFrame is ${t},nalu type is ${r}, dts is ${i}`)}else Qt.debug.warn("worker","handleVideoH264NaluList isSendSeqHeader is false")},handleVideoH265Nalu(e){const t=zt(e);switch(t){case Te.vps:Kt.vps=e;break;case Te.sps:Kt.sps=e;break;case Te.pps:Kt.pps=e}if(Kt.isSendSeqHeader){if(Kt.vps&&Kt.sps&&Kt.pps){const e=Lt({vps:Kt.vps,sps:Kt.sps,pps:Kt.pps}),t=Kt.getNaluDts();Qt.decode(e,{type:Z,ts:t,isIFrame:!0,cts:0}),Kt.vps=null,Kt.sps=null,Kt.pps=null}if(Mt(t)){const r=Ot(t),i=Kt.getNaluDts(),n=function(e,t){let r=[];r[0]=t?28:44,r[1]=1,r[2]=0,r[3]=0,r[4]=0,r[5]=e.byteLength>>24&255,r[6]=e.byteLength>>16&255,r[7]=e.byteLength>>8&255,r[8]=255&e.byteLength;const i=new Uint8Array(r.length+e.byteLength);return i.set(r,0),i.set(e,r.length),i}(e,r);Kt.doDecode(n,{type:Z,ts:i,isIFrame:r,cts:0})}else Qt.debug.warn("work",`handleVideoH265Nalu HevcSeqHead is ${t}`)}else if(Kt.vps&&Kt.sps&&Kt.pps){Kt.isSendSeqHeader=!0;const e=Lt({vps:Kt.vps,sps:Kt.sps,pps:Kt.pps});Qt.decode(e,{type:Z,ts:0,isIFrame:!0,cts:0}),Kt.vps=null,Kt.sps=null,Kt.pps=null}},handleVideoH265NaluList(e,t,r){if(Kt.isSendSeqHeader){const i=Kt.getNaluDts(),n=Rt(e.reduce(((e,t)=>{const r=Pt(e),i=Pt(t),n=new Uint8Array(r.byteLength+i.byteLength);return n.set(r,0),n.set(i,r.byteLength),n})),t);Kt.doDecode(n,{type:Z,ts:i,isIFrame:t,cts:0}),Qt.debug.log("worker",`handleVideoH265NaluList list size is ${e.length} package length is ${n.byteLength} isIFrame is ${t},nalu type is ${r}, dts is ${i}`)}else Qt.debug.warn("worker","handleVideoH265NaluList isSendSeqHeader is false")},doDecode(e,t){Qt.calcNetworkDelay(t.ts),t.isIFrame&&Qt.calcIframeIntervalTimestamp(t.ts),postMessage({cmd:L,type:fe,value:e.byteLength}),postMessage({cmd:L,type:pe,value:t.ts}),Qt.decode(e,t)}},Xt={LOG_NAME:"worker fmp4Demuxer",mp4Box:vr.createFile(),offset:0,videoTrackId:null,audioTrackId:null,isHevc:!1,listenMp4Box(){Xt.mp4Box.onReady=Xt.onReady,Xt.mp4Box.onError=Xt.onError,Xt.mp4Box.onSamples=Xt.onSamples},initTransportDescarmber(){Xt.transportDescarmber=new Sr},_getSeqHeader(e){const t=Xt.mp4Box.getTrackById(e.id);for(const e of t.mdia.minf.stbl.stsd.entries)if(e.avcC||e.hvcC){const t=new vr.DataStream(void 0,0,vr.DataStream.BIG_ENDIAN);let r=[];e.avcC?(e.avcC.write(t),r=[23,0,0,0,0]):(Xt.isHevc=!0,Ht=!0,e.hvcC.write(t),r=[28,0,0,0,0]);const i=new Uint8Array(t.buffer,8),n=new Uint8Array(r.length+i.length);return n.set(r,0),n.set(i,r.length),n}return null},onReady(e){Qt.debug.log(Xt.LOG_NAME,"onReady()",e);const t=e.videoTracks[0],r=e.audioTracks[0];if(t){Xt.videoTrackId=t.id;const e=Xt._getSeqHeader(t);e&&(Qt.debug.log(Xt.LOG_NAME,"seqHeader"),Qt.decodeVideo(e,0,!0,0)),Xt.mp4Box.setExtractionOptions(t.id)}if(r&&Qt._opt.hasAudio){Xt.audioTrackId=r.id;const e=r.audio||{},t=Ke.indexOf(e.sample_rate),i=r.codec.replace("mp4a.40.","");Xt.mp4Box.setExtractionOptions(r.id);const n=We({profile:parseInt(i,10),sampleRate:t,channel:e.channel_count});Qt.debug.log(Xt.LOG_NAME,"aacADTSHeader"),Qt.decodeAudio(n,0)}Xt.mp4Box.start()},onError(e){Qt.debug.error(Xt.LOG_NAME,"mp4Box onError",e)},onSamples(e,t,r){if(e===Xt.videoTrackId)for(const e of r){const t=e.data,r=e.is_sync,i=1e3*e.cts/e.timescale;e.duration,e.timescale,r&&Qt.calcIframeIntervalTimestamp(i);let n=null;n=Xt.isHevc?Rt(t,r):bt(t,r),postMessage({cmd:L,type:fe,value:n.byteLength}),postMessage({cmd:L,type:pe,value:i}),Qt.decode(n,{type:Z,ts:i,isIFrame:r,cts:0})}else if(e===Xt.audioTrackId){if(Qt._opt.hasAudio)for(const e of r){const t=e.data,r=1e3*e.cts/e.timescale;e.duration,e.timescale;const i=new Uint8Array(t.byteLength+2);i.set([175,1],0),i.set(t,2),postMessage({cmd:L,type:he,value:i.byteLength}),Qt.decode(i,{type:X,ts:r,isIFrame:!1,cts:0})}}else Qt.debug.warn(Xt.LOG_NAME,"onSamples() trackId error",e)},dispatch(e){let t=e;"string"!=typeof e?"object"==typeof e?(Xt.transportDescarmber&&(t=Xt.transportDescarmber.transport(t)),t.buffer.fileStart=Xt.offset,Xt.offset+=t.byteLength,Xt.mp4Box.appendBuffer(t.buffer)):Qt.debug.warn(Xt.LOG_NAME,"dispatch()","data is not object",e):Qt.debug.warn(Xt.LOG_NAME,"dispatch()","data is string",e)},destroy(){Xt.mp4Box&&(Xt.mp4Box.flush(),Xt.mp4Box=null),Xt.transportDescarmber&&(Xt.transportDescarmber.destroy(),Xt.transportDescarmber=null),Xt.offset=0,Xt.videoTrackId=null,Xt.audioTrackId=null,Xt.isHevc=!1}},Zt={LOG_NAME:"worker mpeg4Demuxer",lastBuffer:new Uint8Array(0),parsedOffset:0,firstStartCodeOffset:0,secondStartCodeOffset:0,state:"init",hasInitVideoCodec:!1,localDts:0,dispatch(e){const t=new Uint8Array(e);Zt.extractNALu(t)},destroy(){Zt.lastBuffer=new Uint8Array(0),Zt.parsedOffset=0,Zt.firstStartCodeOffset=0,Zt.secondStartCodeOffset=0,Zt.state="init",Zt.hasInitVideoCodec=!1,Zt.localDts=0},extractNALu(e){if(!e||e.byteLength<1)return void Qt.debug.warn(Zt.LOG_NAME,"extractNALu() buffer error",e);const t=new Uint8Array(Zt.lastBuffer.length+e.length);for(t.set(Zt.lastBuffer,0),t.set(new Uint8Array(e),Zt.lastBuffer.length),Zt.lastBuffer=t;;){if("init"===Zt.state){let e=!1;for(;Zt.lastBuffer.length-Zt.parsedOffset>=4;)if(0===Zt.lastBuffer[Zt.parsedOffset])if(0===Zt.lastBuffer[Zt.parsedOffset+1])if(1===Zt.lastBuffer[Zt.parsedOffset+2]){if(182===Zt.lastBuffer[Zt.parsedOffset+3]){Zt.state="findFirstStartCode",Zt.firstStartCodeOffset=Zt.parsedOffset,Zt.parsedOffset+=4,e=!0;break}Zt.parsedOffset++}else Zt.parsedOffset++;else Zt.parsedOffset++;else Zt.parsedOffset++;if(e)continue;break}if("findFirstStartCode"===Zt.state){let e=!1;for(;Zt.lastBuffer.length-Zt.parsedOffset>=4;)if(0===Zt.lastBuffer[Zt.parsedOffset])if(0===Zt.lastBuffer[Zt.parsedOffset+1])if(1===Zt.lastBuffer[Zt.parsedOffset+2]){if(182===Zt.lastBuffer[Zt.parsedOffset+3]){Zt.state="findSecondStartCode",Zt.secondStartCodeOffset=Zt.parsedOffset,Zt.parsedOffset+=4,e=!0;break}Zt.parsedOffset++}else Zt.parsedOffset++;else Zt.parsedOffset++;else Zt.parsedOffset++;if(e)continue;break}if("findSecondStartCode"===Zt.state){if(!(Zt.lastBuffer.length-Zt.parsedOffset>0))break;{let e,t,r=192&Zt.lastBuffer[Zt.parsedOffset];e=0==r?Zt.secondStartCodeOffset-14:Zt.secondStartCodeOffset;let i=0==(192&Zt.lastBuffer[Zt.firstStartCodeOffset+4]);if(i){if(Zt.firstStartCodeOffset-14<0)return void Qt.debug.warn(Zt.LOG_NAME,"firstStartCodeOffset -14 is",Zt.firstStartCodeOffset-14);Zt.hasInitVideoCodec||(Zt.hasInitVideoCodec=!0,Qt.debug.log(Zt.LOG_NAME,"setCodec"),tr.setCodec(Ee,"")),t=Zt.lastBuffer.subarray(Zt.firstStartCodeOffset-14,e)}else t=Zt.lastBuffer.subarray(Zt.firstStartCodeOffset,e);let n=Zt.getNaluDts();Zt.hasInitVideoCodec?(postMessage({cmd:L,type:fe,value:t.byteLength}),postMessage({cmd:L,type:pe,value:n}),tr.decode(t,i?1:0,n)):Qt.debug.warn(Zt.LOG_NAME,"has not init video codec"),Zt.lastBuffer=Zt.lastBuffer.subarray(e),Zt.firstStartCodeOffset=0==r?14:0,Zt.parsedOffset=Zt.firstStartCodeOffset+4,Zt.state="findFirstStartCode"}}}},getNaluDts(){let e=Zt.localDts;return Zt.localDts=Zt.localDts+40,e}},Jt={isFirstDispatch:!0,_pmtId:-1,_remainingPacketData:null,_videoPesData:[],_audioPesData:[],_gopId:0,_videoPid:-1,_audioPid:-1,_codecType:we,_audioCodecType:xe.AAC,_vps:null,_sps:null,_pps:null,TAG_NAME:"worker TsDemuxer",videoTrack:{samples:[]},audioTrack:{samples:[]},_baseDts:-1,_audioNextPts:void 0,_videoNextDts:void 0,_audioTimestampBreak:!1,_videoTimestampBreak:!1,_lastAudioExceptionGapDot:0,_lastAudioExceptionOverlapDot:0,_lastAudioExceptionLargeGapDot:0,_isSendAACSeqHeader:!1,init(){},dispatch(e){const t=new Uint8Array(e);Jt.demuxAndFix(t,Jt.isFirstDispatch,!0,0),Jt.isFirstDispatch&&(Jt.isFirstDispatch=!1)},_probe:e=>!!e.length&&(71===e[0]&&71===e[188]&&71===e[376]),_parsePES(e){const t=e[8];if(null==t||e.lengthe.length-6)return;let i,n;const s=e[7];return 192&s&&(i=536870912*(14&e[9])+4194304*(255&e[10])+16384*(254&e[11])+128*(255&e[12])+(254&e[13])/2,64&s?(n=536870912*(14&e[14])+4194304*(255&e[15])+16384*(254&e[16])+128*(255&e[17])+(254&e[18])/2,i-n>54e5&&(i=n)):n=i),{data:e.subarray(9+t),pts:i,dts:n,originalPts:i,originalDts:n}},demuxAndFix(e,t,r,i){Jt._demux(e,t,r),Jt._fix(i,t,r)},_initVideoTrack:()=>({samples:[]}),_initAudioTrack:()=>({samples:[]}),_demux(e,t=!1,r=!0){t&&(Jt._pmtId=-1,Jt.videoTrack=Jt._initVideoTrack(),Jt.audioTrack=Jt._initAudioTrack()),!r||t?(Jt._remainingPacketData=null,Jt._videoPesData=[],Jt._audioPesData=[]):(Jt.videoTrack.samples=[],Jt.audioTrack.samples=[],Jt._remainingPacketData&&(e=Or(Jt._remainingPacketData,e),Jt._remainingPacketData=null));let i=e.length;const n=i%188;n&&(Jt._remainingPacketData=e.subarray(i-n),i-=n);for(let t=0;t>4>1){if(n=t+5+e[t+4],n===t+188)continue}else n=t+4;switch(i){case 0:r&&(n+=e[n]+1),Jt._pmtId=(31&e[n+10])<<8|e[n+11];break;case Jt._pmtId:{r&&(n+=e[n]+1);const t=n+3+((15&e[n+1])<<8|e[n+2])-4;for(n+=12+((15&e[n+10])<<8|e[n+11]);n=t)return[];const n=[];for(;i=r)return;const n=i,s=[],a=(60&e[i+2])>>>2,o=qe[a];if(!o)throw new Error(`Invalid sampling index: ${a}`);const l=1+((192&e[i+2])>>>6),d=(1&e[i+2])<<2|(192&e[i+3])>>>6;let u,c,h=0;const f=Ze(o);for(;i+7>5,r-i=r?void 0:e.subarray(i),frames:s,samplingFrequencyIndex:a,sampleRate:o,objectType:l,channelCount:d,originCodec:`mp4a.40.${l}`}}(e.data,e.originalPts);if(t){if(Jt.audioTrack.codec=t.codec,Jt.audioTrack.sampleRate=t.sampleRate,Jt.audioTrack.channelCount=t.channelCount,!Jt._isSendAACSeqHeader){const e=We({profile:t.objectType,sampleRate:t.samplingFrequencyIndex,channel:t.channelCount});Jt._isSendAACSeqHeader=!0,Qt.debug.log(Jt.TAG_NAME,"aac seq header",`profile: ${t.objectType}, sampleRate:${t.sampleRate},sampleRateIndex: ${t.samplingFrequencyIndex}, channel: ${t.channelCount}`),Qt.decodeAudio(e,0)}if(Jt._isSendAACSeqHeader){const e=[];t.frames.forEach((t=>{const r=t.pts,i=new Uint8Array(t.data.length+2);i.set([175,1],0),i.set(t.data,2);const n={type:X,pts:r,dts:r,payload:i};e.push(n)})),Jt.audioTrack.samples=Jt.audioTrack.samples.concat(e)}else Qt.debug.warn(Jt.TAG_NAME,"aac seq header not send")}else Qt.debug.warn(Jt.TAG_NAME,"aac parseADTS error")}Jt._audioPesData=[]}}else Qt.debug.warn(Jt.TAG_NAME,"Cannot parse audio pes",Jt._audioPesData)},_fix(e=0,t=!1,r=!0){e=Math.round(9e4*e);const i=Jt.videoTrack,n=Jt.audioTrack,s=i.samples,a=n.samples;if(!s.length&&!a.length)return;const o=s[0],l=a[0];let d=0;if(s.length&&a.length&&(d=o.dts-l.pts),Jt._baseDtsInited||Jt._calculateBaseDts(),t&&(Jt._calculateBaseDts(),Jt._baseDts-=e),!r){Jt._videoNextDts=d>0?e+d:e,Jt._audioNextPts=d>0?e:e-d;const t=o?o.dts-Jt._baseDts-Jt._videoNextDts:0,r=l?l.pts-Jt._baseDts-Jt._audioNextPts:0;Math.abs(t||r)>MAX_VIDEO_FRAME_DURATION&&(Jt._calculateBaseDts(Jt.audioTrack,Jt.videoTrack),Jt._baseDts-=e)}Jt._resetBaseDtsWhenStreamBreaked(),Jt._fixAudio(n),Jt._fixVideo(i);let u=i.samples.concat(n.samples);u=u.map((e=>(e.dts=Math.round(e.dts/90),e.pts=Math.round(e.pts/90),e.cts=e.pts-e.dts,e))).sort(((e,t)=>e.dts-t.dts)),u.forEach((e=>{const t=new Uint8Array(e.payload);delete e.payload,e.type===Z?Jt._doDecodeVideo({...e,payload:t}):e.type===X&&Jt._doDecodeAudio({...e,payload:t})}))},_calculateBaseDts(){const e=Jt.audioTrack,t=Jt.videoTrack,r=e.samples,i=t.samples;if(!r.length&&!i.length)return!1;let n=1/0,s=1/0;r.length&&(e.baseDts=n=r[0].pts),i.length&&(t.baseDts=s=i[0].dts),Jt._baseDts=Math.min(n,s);const a=s-n;return Number.isFinite(a)&&Math.abs(a)>45e3&&Qt.debug.warn(Jt.TAG_NAME,`large av first frame gap,\n video pts: ${s},\n audio pts: ${n},\n base dts: ${Jt._baseDts},\n detect is: ${a}`),Jt._baseDtsInited=!0,!0},_resetBaseDtsWhenStreamBreaked(){if(Jt._baseDtsInited&&Jt._videoTimestampBreak&&Jt._audioTimestampBreak){if(!Jt._calculateBaseDts(Jt.audioTrack,Jt.videoTrack))return;Jt._baseDts-=Math.min(Jt._audioNextPts,Jt._videoNextDts),Jt._audioLastSample=null,Jt._videoLastSample=null,Jt._videoTimestampBreak=!1,Jt._audioTimestampBreak=!1}},_createVideoSample(e,t,r){if(!e.length)return;const i=Jt._codecType===Se,n={isIFrame:!1,type:Z,isHevc:i,vps:null,sps:null,pps:null,pts:t,dts:r,payload:null};e.forEach((e=>{const t=i?e[0]>>>1&63:31&e[0];switch(t){case 5:case 16:case 17:case 18:case 19:case 20:case 21:case 22:case 23:if(!i&&5!==t||i&&5===t)break;n.isIFrame=!0,Jt._gopId++;break;case 6:case 39:case 40:if(!i&&6!==t||i&&6===t)break;return void function(e,t){const r=e.length;let i=t?2:1,n=0,s=0,a="";for(;255===e[i];)n+=255,i++;for(n+=e[i++];255===e[i];)s+=255,i++;if(s+=e[i++],5===n&&r>i+16)for(let t=0;t<16;t++)a+=e[i].toString(16),i++;e.subarray(i)}(function(e){const t=e.byteLength,r=[];let i=1;for(;i>>8,s[7]=255&a;let o=8;s.set(e,8),o+=a,s[o]=1;let l=t.byteLength;s[o+1]=l>>>8,s[o+2]=255&l,s.set(t,o+3),o+=3+l,i&&(s[o]=252|n.chroma_format_idc,s[o+1]=248|n.bit_depth_luma-8,s[o+2]=248|n.bit_depth_chroma-8,s[o+3]=0,o+=4);const d=[23,0,0,0,0],u=new Uint8Array(d.length+s.byteLength);return u.set(d,0),u.set(s,d.length),u}({sps:n.sps,pps:n.pps})),s&&(Qt.debug.log(Jt.TAG_NAME,"_createVideoSample","seqHeader"),Qt.decodeVideo(s,Z,Math.round(n.pts/90),!0,0)),n.isIFrame&&Qt.calcIframeIntervalTimestamp(Math.round(n.dts/90)),Jt.videoTrack.samples=Jt.videoTrack.samples.concat(n)},_fixAudio(e){const t=e.samples;t.length&&(t.forEach((e=>{e.pts-=Jt._baseDts,e.dts=e.pts})),Jt._doFixAudioInternal(e,t,9e4))},_fixVideo(e){const t=e.samples;if(!t.length)return;if(t.forEach((e=>{e.dts-=Jt._baseDts,e.pts-=Jt._baseDts})),void 0===Jt._videoNextDts){const e=t[0];Jt._videoNextDts=e.dts}const r=t.length;let i=0;const n=t[0],s=t[1],a=Jt._videoNextDts-n.dts;let o;Math.abs(a)>45e3&&(n.dts+=a,n.pts+=a,Qt.debug.warn(Jt.TAG_NAME,`large video gap between chunk,\n next dts is ${Jt._videoNextDts},\n first dts is ${n.dts},\n next dts is ${s.dts},\n duration is ${a}`),s&&Math.abs(s.dts-n.dts)>9e4&&(Jt._videoTimestampBreak=!0,t.forEach(((e,t)=>{0!==t&&(e.dts+=a,e.pts+=a)}))));const l=e.samples[0],d=e.samples[r-1];o=1===r?9e3:Math.floor((d.dts-l.dts)/(r-1));for(let n=0;n9e4||i<0){Jt._videoTimestampBreak=!0,i=Jt._audioTimestampBreak?o:Math.max(i,2700);const r=Jt._audioNextPts||0;a&&a.dts>r&&(i=o),Qt.debug.warn(Jt.TAG_NAME,`large video gap between frames,\n time is ${s/e.timescale},\n dts is ${s},\n origin dts is ${t[n].originalDts},\n next dts is ${Jt._videoNextDts},\n sample Duration is ${i} ,\n ref Sample DurationInt is ${o}`)}t[n].duration=i,Jt._videoNextDts+=i}},_doFixAudioInternal(e,t,r){e.sampleDuration||(e.sampleDuration=Ze(e.timescale,r));const i=e.sampleDuration;if(void 0===Jt._audioNextPts){const e=t[0];Jt._audioNextPts=e.pts}for(let r=0;r=3*i&&a<=Ge&&!tt()){Xe(e.codec,e.channelCount)||t[0].data.subarray();const o=Math.floor(a/i);Math.abs(s.pts-Jt._lastAudioExceptionGapDot)>AUDIO_EXCETION_LOG_EMIT_DURATION&&(Jt._lastAudioExceptionGapDot=s.pts),Qt.debug.warn(Jt.TAG_NAME,`audio gap detected,\n pts is ${t.pts},\n originPts is ${t.originalPts},\n count is ${o},\n nextPts is ${n},\n ref sample duration is ${i}`);for(let e=0;e=-9e4?(Math.abs(s.pts-Jt._lastAudioExceptionOverlapDot)>He&&(Jt._lastAudioExceptionOverlapDot=s.pts,Qt.debug.warn(Jt.TAG_NAME,`audio overlap detected,\n pts is ${s.pts},\n originPts is ${s.originalPts},\n nextPts is ${n},\n ref sample duration is ${i}`)),t.splice(r,1),r--):(Math.abs(a)>=Ge&&(Jt._audioTimestampBreak=!0,Math.abs(s.pts-Jt._lastAudioExceptionLargeGapDot)>He&&(Jt._lastAudioExceptionLargeGapDot=s.pts,Qt.debug.warn(Jt.TAG_NAME,`large audio gap detected,\n time is ${s.pts/1e3}\n pts is ${s.pts},\n originPts is ${s.originalPts},\n nextPts is ${n},\n sample duration is ${a}\n ref sample duration is ${i}`))),s.dts=s.pts=n,Jt._audioNextPts+=i)}},_doDecodeVideo(e){const t=new Uint8Array(e.payload);let r=null;r=e.isHevc?Rt(t,e.isIFrame):bt(t,e.isIFrame),postMessage({cmd:L,type:fe,value:r.byteLength}),postMessage({cmd:L,type:pe,value:e.dts});const i=e.pts-e.dts;let n=Qt.cryptoPayload(r,e.isIFrame);Qt.decode(n,{type:Z,ts:e.dts,isIFrame:e.isIFrame,cts:i})},_doDecodeAudio(){const e=new Uint8Array(sample.payload);postMessage({cmd:L,type:he,value:e.byteLength});let t=e;ot(Qt._opt.m7sCryptoAudio)&&(t=Qt.cryptoPayloadAudio(e)),Qt.decode(t,{type:X,ts:sample.dts,isIFrame:!1,cts:0})},destroy(){Jt.videoTrack=null,Jt.audioTrack=null,Jt.tempSampleListInfo={},Jt._baseDts=-1,Jt._baseDtsInited=!1,Jt._basefps=50,Jt._hasCalcFps=!1,Jt._audioNextPts=void 0,Jt._videoNextDts=void 0,Jt._audioTimestampBreak=!1,Jt._videoTimestampBreak=!1,Jt._lastAudioExceptionGapDot=0,Jt._lastAudioExceptionOverlapDot=0,Jt._lastAudioExceptionLargeGapDot=0,Jt._isForHls=!0,Jt._isSendAACSeqHeader=!1,Qt.debug.log(Jt.TAG_NAME,"destroy")}},Qt={isPlayer:!0,isPlayback:!1,dropping:!1,isPushDropping:!1,isWorkerFetch:!1,isDestroyed:!1,fetchStatus:Le,_opt:Yt(),mp3Demuxer:null,delay:-1,pushLatestDelay:-1,firstTimestamp:null,startTimestamp:null,preDelayTimestamp:null,stopId:null,streamFps:null,streamAudioFps:null,streamVideoFps:null,writableStream:null,networkDelay:0,webglObj:null,startStreamRateAndStatsInterval:function(){Qt.stopStreamRateAndStatsInterval(),d=setInterval((()=>{l&&l(0);const e=JSON.stringify({demuxBufferDelay:Qt.getVideoBufferLength(),audioDemuxBufferDelay:Qt.getAudioBufferLength(),flvBufferByteLength:Qt.getFlvBufferLength(),netBuf:Qt.networkDelay||0,pushLatestDelay:Qt.pushLatestDelay||0,latestDelay:Qt.delay,isStreamTsMoreThanLocal:Qe});postMessage({cmd:L,type:_e,value:e})}),1e3)},stopStreamRateAndStatsInterval:function(){d&&(clearInterval(d),d=null)},useOffscreen:function(){return Qt._opt.useOffscreen&&"undefined"!=typeof OffscreenCanvas},getDelay:function(e,t){if(!e||Qt._opt.hasVideo&&!Ve)return-1;if(t===X)return Qt.delay;if(Qt.preDelayTimestamp&&Qt.preDelayTimestamp>e)return Qt.preDelayTimestamp-e>1e3&&Qt.debug.warn("worker",`getDelay() and preDelayTimestamp is ${Qt.preDelayTimestamp} > timestamp is ${e} more than ${Qt.preDelayTimestamp-e}ms and return ${Qt.delay}`),Qt.preDelayTimestamp=e,Qt.delay;if(Qt.firstTimestamp){if(e){const t=Date.now()-Qt.startTimestamp,r=e-Qt.firstTimestamp;t>=r?(Qe=!1,Qt.delay=t-r):(Qe=!0,Qt.delay=r-t)}}else Qt.firstTimestamp=e,Qt.startTimestamp=Date.now(),Qt.delay=-1;return Qt.preDelayTimestamp=e,Qt.delay},getDelayNotUpdateDelay:function(e,t){if(!e||Qt._opt.hasVideo&&!Ve)return-1;if(t===X)return Qt.pushLatestDelay;if(Qt.preDelayTimestamp&&Qt.preDelayTimestamp-e>1e3)return Qt.debug.warn("worker",`getDelayNotUpdateDelay() and preDelayTimestamp is ${Qt.preDelayTimestamp} > timestamp is ${e} more than ${Qt.preDelayTimestamp-e}ms and return -1`),-1;if(Qt.firstTimestamp){let t=-1;if(e){const r=Date.now()-Qt.startTimestamp,i=e-Qt.firstTimestamp;r>=i?(Qe=!1,t=r-i):(Qe=!0,t=i-r)}return t}return-1},resetDelay:function(){Qt.firstTimestamp=null,Qt.startTimestamp=null,Qt.delay=-1,Qt.dropping=!1},resetAllDelay:function(){Qt.resetDelay(),Qt.preDelayTimestamp=null},doDecode:function(e){Qt._opt.isEmitSEI&&e.type===Z&&Qt.isWorkerFetch&&Qt.findSei(e.payload,e.ts),Qt._opt.useWCS&&Qt.useOffscreen()&&e.type===Z&&s.decode?s.decode(e.payload,e.ts,e.cts):e.decoder.decode(e.payload,e.ts,e.isIFrame,e.cts)},decodeNext(e){if(0===i.length)return;const t=e.ts,n=i[0],s=e.type===Z&&at(e.payload);if(lt(r))s&&(Qt.debug.log("worker",`decode data type is ${e.type} and\n ts is ${t} next data type is ${n.type} ts is ${n.ts}\n isVideoSqeHeader is ${s}`),i.shift(),Qt.doDecode(n));else{const r=n.ts-t,a=n.type===X&&e.type===Z;(r<=20||a||s)&&(Qt.debug.log("worker",`decode data type is ${e.type} and\n ts is ${t} next data type is ${n.type} ts is ${n.ts}\n diff is ${r} and isVideoAndNextAudio is ${a} and isVideoSqeHeader is ${s}`),i.shift(),Qt.doDecode(n))}},init:function(){Qt.debug.log("worker","init and opt is",JSON.stringify(Qt._opt));const e=Qt._opt.playType===m,t=Qt._opt.playType===_;if(Kt.init(),Qt.isPlayer=e,Qt.isPlayback=t,Qt.isPlaybackCacheBeforeDecodeForFpsRender())Qt.debug.log("worker","playback and playbackIsCacheBeforeDecodeForFpsRender is true");else{Qt.debug.log("worker","setInterval()");const t=Qt._opt.videoBuffer+Qt._opt.videoBufferDelay,r=()=>{let r=null;if(i.length){if(Qt.isPushDropping)return void Qt.debug.warn("worker",`loop() isPushDropping is true and bufferList length is ${i.length}`);if(Qt.dropping){for(r=i.shift(),Qt.debug.warn("worker",`loop() dropBuffer is dropping and isIFrame ${r.isIFrame} and delay is ${Qt.delay} and bufferlist is ${i.length}`);!r.isIFrame&&i.length;)r=i.shift();const e=Qt.getDelayNotUpdateDelay(r.ts,r.type);r.isIFrame&&e<=Qt.getNotDroppingDelayTs()&&(Qt.debug.log("worker","loop() is dropping = false, is iFrame"),Qt.dropping=!1,Qt.doDecode(r),Qt.decodeNext(r))}else if(Qt.isPlayback||Qt.isPlayUseMSE()||0===Qt._opt.videoBuffer)for(;i.length;)r=i.shift(),Qt.doDecode(r);else if(r=i[0],-1===Qt.getDelay(r.ts,r.type))Qt.debug.log("worker","loop() common dumex delay is -1 ,data.ts is",r.ts),i.shift(),Qt.doDecode(r),Qt.decodeNext(r);else if(Qt.delay>t&&e)Qt.hasIframeInBufferList()?(Qt.debug.log("worker",`delay is ${Qt.delay} > maxDelay ${t}, set dropping is true`),Qt.resetAllDelay(),Qt.dropping=!0,postMessage({cmd:z})):(i.shift(),Qt.doDecode(r),Qt.decodeNext(r));else for(;i.length;){if(r=i[0],!(Qt.getDelay(r.ts,r.type)>Qt._opt.videoBuffer)){Qt.delay<0&&Qt.debug.warn("worker",`loop() do not decode and delay is ${Qt.delay}, bufferList is ${i.length}`);break}i.shift(),Qt.doDecode(r)}}else-1!==Qt.delay&&Qt.debug.log("worker","loop() bufferList is empty and reset delay"),Qt.resetAllDelay()};Qt.stopId=setInterval((()=>{let e=(new Date).getTime();dt||(dt=e);const t=e-dt;t>100&&Qt.debug.warn("worker",`loop demux diff time is ${t}`),r(),dt=(new Date).getTime()}),20)}lt(Qt._opt.checkFirstIFrame)&&(Ve=!0)},playbackCacheLoop:function(){Qt.stopId&&(clearInterval(Qt.stopId),Qt.stopId=null);const e=()=>{let e=null;i.length&&(e=i.shift(),Qt.doDecode(e))};e();const t=Math.ceil(1e3/(Qt.streamFps*Qt._opt.playbackRate));Qt.debug.log("worker",`playbackCacheLoop fragDuration is ${t}, streamFps is ${Qt.streamFps}, streamAudioFps is ${Qt.streamAudioFps} ,streamVideoFps is ${Qt.streamVideoFps} playbackRate is ${Qt._opt.playbackRate}`),Qt.stopId=setInterval(e,t)},close:function(){if(Qt.debug.log("worker","close"),Qt.isDestroyed=!0,qt(),!o||1!==o.readyState&&2!==o.readyState?o&&Qt.debug.log("worker",`close() and socket.readyState is ${o.readyState}`):(jt=!0,o.close(1e3,"Client disconnecting")),o=null,Qt.stopStreamRateAndStatsInterval(),Qt.stopId&&(clearInterval(Qt.stopId),Qt.stopId=null),Qt.mp3Demuxer&&(Qt.mp3Demuxer.destroy(),Qt.mp3Demuxer=null),Qt.writableStream&<(Qt.writableStream.locked)&&Qt.writableStream.close().catch((e=>{Qt.debug.log("worker","close() and writableStream.close() error",e)})),Qt.writableStream=null,er)try{er.clear&&er.clear(),er=null}catch(e){Qt.debug.warn("worker","close() and audioDecoder.clear error",e)}if(tr)try{tr.clear&&tr.clear(),tr=null}catch(e){Qt.debug.warn("worker","close() and videoDecoder.clear error",e)}l=null,dt=null,Qe=!1,s&&(s.reset&&s.reset(),s=null),Qt.firstTimestamp=null,Qt.startTimestamp=null,Qt.networkDelay=0,Qt.streamFps=null,Qt.streamAudioFps=null,Qt.streamVideoFps=null,Qt.delay=-1,Qt.pushLatestDelay=-1,Qt.preDelayTimestamp=null,Qt.dropping=!1,Qt.isPushDropping=!1,Qt.isPlayer=!0,Qt.isPlayback=!1,Qt.isWorkerFetch=!1,Qt._opt=Yt(),Qt.webglObj&&(Qt.webglObj.destroy(),Qt.offscreenCanvas.removeEventListener("webglcontextlost",Qt.onOffscreenCanvasWebglContextLost),Qt.offscreenCanvas.removeEventListener("webglcontextrestored",Qt.onOffscreenCanvasWebglContextRestored),Qt.offscreenCanvas=null,Qt.offscreenCanvasGL=null,Qt.offscreenCanvasCtx=null),i=[],n=[],g=null,v=null,w=null,Pe=!1,Fe=!1,Ve=!1,Nt=!1,$t=!1,Gt=!1,Ht=null,Vt=null,ht=[],xt=0,At=0,ut=null,ct=null,Tt=null,kt=null,Wt=null,Ct=0,Bt=0,mt=null,yt=null,Qt.fetchStatus=Le,Kt.destroy(),Xt.destroy(),Zt.destroy(),Jt.destroy(),postMessage({cmd:G})},pushBuffer:function(e,t){if(t.type===X&&je(e)){if(Qt.debug.log("worker",`pushBuffer audio ts is ${t.ts}, isAacCodecPacket is true`),Qt._opt.isRecordTypeFlv){const t=new Uint8Array(e);postMessage({cmd:j,buffer:t},[t.buffer])}Qt.decodeAudio(e,t.ts)}else if(t.type===Z&&t.isIFrame&&at(e)){if(Qt.debug.log("worker",`pushBuffer video ts is ${t.ts}, isVideoSequenceHeader is true`),Qt._opt.isRecordTypeFlv){const t=new Uint8Array(e);postMessage({cmd:Y,buffer:t},[t.buffer])}Qt.decodeVideo(e,t.ts,t.isIFrame,t.cts)}else{if(Qt._opt.isRecording)if(Qt._opt.isRecordTypeFlv){const r=new Uint8Array(e);postMessage({cmd:q,type:t.type,buffer:r,ts:t.ts},[r.buffer])}else if(Qt._opt.recordType===y)if(t.type===Z){const r=new Uint8Array(e).slice(5);postMessage({cmd:P,buffer:r,isIFrame:t.isIFrame,ts:t.ts,cts:t.cts},[r.buffer])}else if(t.type===X&&Qt._opt.isWasmMp4){const r=new Uint8Array(e),i=Ye(r)?r.slice(2):r.slice(1);postMessage({cmd:k,buffer:i,ts:t.ts},[i.buffer])}if(Qt.isPlayer&&Ct>0&&kt>0&&t.type===Z){const e=t.ts-kt,r=Ct+Ct/2;e>r&&Qt.debug.log("worker",`pushBuffer video\n ts is ${t.ts}, preTimestamp is ${kt},\n diff is ${e} and preTimestampDuration is ${Ct} and maxDiff is ${r}\n maybe trigger black screen or flower screen\n `)}if(Qt.isPlayer&&kt>0&&t.type===Z&&t.tsb&&(Qt.debug.warn("worker",`pushBuffer,\n preTimestamp is ${kt}, options.ts is ${t.ts},\n diff is ${kt-t.ts} more than 3600000,\n and resetAllDelay`),Qt.resetAllDelay(),kt=null,Ct=0),Qt.isPlayer&&kt>0&&t.ts<=kt&&t.type===Z&&(Qt.debug.warn("worker",`pushBuffer,\n options.ts is ${t.ts} less than (or equal) preTimestamp is ${kt} and\n payloadBufferSize is ${e.byteLength} and prevPayloadBufferSize is ${Bt}`),Qt._opt.isDropSameTimestampGop&&Ve)){const e=Qt.hasIframeInBufferList(),t=lt(Qt.isPushDropping);return Qt.debug.log("worker",`pushBuffer, isDropSameTimestampGop is true and\n hasIframe is ${e} and isNotPushDropping is ${t} and next dropBuffer`),void(e&&t?Qt.dropBuffer$2():(Qt.clearBuffer(!0),ot(Qt._opt.checkFirstIFrame)&&ot(r)&&postMessage({cmd:K})))}if(Qt.isPlayer&&Ve){const e=Qt._opt.videoBuffer+Qt._opt.videoBufferDelay,r=Qt.getDelayNotUpdateDelay(t.ts,t.type);Qt.pushLatestDelay=r,r>e&&Qt.delay0&&Qt.hasIframeInBufferList()&&!1===Qt.isPushDropping&&(Qt.debug.log("worker",`pushBuffer(), pushLatestDelay is ${r} more than ${e} and decoder.delay is ${Qt.delay} and has iIframe and next decoder.dropBuffer$2()`),Qt.dropBuffer$2())}if(Qt.isPlayer&&t.type===Z&&(kt>0&&(Ct=t.ts-kt),Bt=e.byteLength,kt=t.ts),t.type===X?i.push({ts:t.ts,payload:e,decoder:{decode:Qt.decodeAudio},type:X,isIFrame:!1}):t.type===Z&&i.push({ts:t.ts,cts:t.cts,payload:e,decoder:{decode:Qt.decodeVideo},type:Z,isIFrame:t.isIFrame}),Qt.isPlaybackCacheBeforeDecodeForFpsRender()&&(rt(Qt.streamVideoFps)||rt(Qt.streamAudioFps))){let e=Qt.streamVideoFps,t=Qt.streamAudioFps;if(rt(Qt.streamVideoFps)&&(e=nt(i,Z),e&&(Qt.streamVideoFps=e,postMessage({cmd:M,value:Qt.streamVideoFps}),Qt.streamFps=t?e+t:e,lt(Qt._opt.hasAudio)&&(Qt.debug.log("worker","playbackCacheBeforeDecodeForFpsRender, _opt.hasAudio is false and set streamAudioFps is 0"),Qt.streamAudioFps=0),Qt.playbackCacheLoop())),rt(Qt.streamAudioFps)&&(t=nt(i,X),t&&(Qt.streamAudioFps=t,Qt.streamFps=e?e+t:t,Qt.playbackCacheLoop())),rt(Qt.streamVideoFps)&&rt(Qt.streamAudioFps)){const r=i.map((e=>({type:e.type,ts:e.ts})));Qt.debug.log("worker",`playbackCacheBeforeDecodeForFpsRender, calc streamAudioFps is ${t}, streamVideoFps is ${e}, bufferListLength is ${i.length}, and ts list is ${JSON.stringify(r)}`)}const r=Qt.getAudioBufferLength()>0,n=r?60:40;i.length>=n&&(Qt.debug.warn("worker",`playbackCacheBeforeDecodeForFpsRender, bufferListLength is ${i.length} more than ${n}, and hasAudio is ${r} an set streamFps is 25`),Qt.streamVideoFps=25,postMessage({cmd:M,value:Qt.streamVideoFps}),r?(Qt.streamAudioFps=25,Qt.streamFps=Qt.streamVideoFps+Qt.streamAudioFps):Qt.streamFps=Qt.streamVideoFps,Qt.playbackCacheLoop())}}},getVideoBufferLength(){let e=0;return i.forEach((t=>{t.type===Z&&(e+=1)})),e},hasIframeInBufferList:()=>i.some((e=>e.type===Z&&e.isIFrame)),isAllIframeInBufferList(){const e=Qt.getVideoBufferLength();let t=0;return i.forEach((e=>{e.type===Z&&e.isIFrame&&(t+=1)})),e===t},getNotDroppingDelayTs:()=>Qt._opt.videoBuffer+Qt._opt.videoBufferDelay/2,getAudioBufferLength(){let e=0;return i.forEach((t=>{t.type===X&&(e+=1)})),e},getFlvBufferLength(){let e=0;return g&&g.buffer&&(e=g.buffer.byteLength),Qt._opt.isNakedFlow&&Kt.lastBuf&&(e=Kt.lastBuf.byteLength),e},fetchStream:function(e,t){Qt.debug.log("worker","fetchStream, url is "+e,"options:",JSON.stringify(t)),Qt.isWorkerFetch=!0,t.isFlv?Qt._opt.isFlv=!0:t.isFmp4?Qt._opt.isFmp4=!0:t.isMpeg4?Qt._opt.isMpeg4=!0:t.isNakedFlow?Qt._opt.isNakedFlow=!0:t.isTs&&(Qt._opt.isTs=!0),l=et((e=>{postMessage({cmd:L,type:ce,value:e})})),Qt.startStreamRateAndStatsInterval(),t.isFmp4&&(Xt.listenMp4Box(),Qt._opt.isFmp4Private&&Xt.initTransportDescarmber()),t.protocol===h?(g=new ft(Qt.demuxFlv()),fetch(e,{signal:a.signal}).then((e=>{if(ot(jt))return Qt.debug.log("worker","request abort and run res.body.cancel()"),Qt.fetchStatus=Le,void e.body.cancel();if(!function(e){return e.ok&&e.status>=200&&e.status<=299}(e))return Qt.debug.warn("worker",`fetch response status is ${e.status} and ok is ${e.ok} and emit error and next abort()`),qt(),void postMessage({cmd:L,type:ve.fetchError,value:`fetch response status is ${e.status} and ok is ${e.ok}`});if(postMessage({cmd:L,type:me}),"undefined"!=typeof WritableStream)Qt.writableStream=new WritableStream({write:e=>a&&a.signal&&a.signal.aborted?(Qt.debug.log("worker","writableStream write() and abortController.signal.aborted is true so return"),void(Qt.fetchStatus=ze)):ot(jt)?(Qt.debug.log("worker","writableStream write() and requestAbort is true so return"),void(Qt.fetchStatus=ze)):(Qt.fetchStatus=Re,l(e.byteLength),void(t.isFlv?g.write(e):t.isFmp4?Qt.demuxFmp4(e):t.isMpeg4?Qt.demuxMpeg4(e):t.isTs&&Qt.demuxTs(e))),close:()=>{Qt.fetchStatus=ze,g=null,qt(),postMessage({cmd:L,type:ue,value:f,msg:"fetch done"})},abort:e=>{if(a&&a.signal&&a.signal.aborted)return Qt.debug.log("worker","writableStream abort() and abortController.signal.aborted is true so return"),void(Qt.fetchStatus=ze);g=null,e.name!==De&&(qt(),postMessage({cmd:L,type:ve.fetchError,value:e.toString()}))}}),e.body.pipeTo(Qt.writableStream);else{const r=e.body.getReader(),i=()=>{r.read().then((({done:e,value:r})=>e?(Qt.fetchStatus=ze,g=null,qt(),void postMessage({cmd:L,type:ue,value:f,msg:"fetch done"})):a&&a.signal&&a.signal.aborted?(Qt.debug.log("worker","fetchNext().then() and abortController.signal.aborted is true so return"),void(Qt.fetchStatus=ze)):ot(jt)?(Qt.debug.log("worker","fetchNext().then() and requestAbort is true so return"),void(Qt.fetchStatus=ze)):(Qt.fetchStatus=Re,l(r.byteLength),t.isFlv?g.write(r):t.isFmp4?Qt.demuxFmp4(r):t.isMpeg4&&Qt.demuxMpeg4(r),void i()))).catch((e=>{if(a&&a.signal&&a.signal.aborted)return Qt.debug.log("worker","fetchNext().catch() and abortController.signal.aborted is true so return"),void(Qt.fetchStatus=ze);g=null,e.name!==De&&(qt(),postMessage({cmd:L,type:ve.fetchError,value:e.toString()}))}))};i()}})).catch((e=>{a&&a.signal&&a.signal.aborted?Qt.debug.log("worker","fetch().catch() and abortController.signal.aborted is true so return"):e.name!==De&&(qt(),postMessage({cmd:L,type:ve.fetchError,value:e.toString()}),g=null)}))):t.protocol===c&&(t.isFlv&&(g=new ft(Qt.demuxFlv())),o=new WebSocket(e),o.binaryType="arraybuffer",o.onopen=()=>{Qt.debug.log("worker","fetchStream, WebsocketStream socket open"),postMessage({cmd:L,type:me}),postMessage({cmd:L,type:ge})},o.onclose=e=>{Qt.debug.log("worker",`fetchStream, WebsocketStream socket close and code is ${e.code}`),1006===e.code&&Qt.debug.error("worker",`fetchStream, WebsocketStream socket close abnormally and code is ${e.code}`),ot(jt)?Qt.debug.log("worker","fetchStream, WebsocketStream socket close and requestAbort is true so return"):(g=null,postMessage({cmd:L,type:ue,value:p,msg:e.code}))},o.onerror=e=>{Qt.debug.error("worker","fetchStream, WebsocketStream socket error",e),g=null,postMessage({cmd:L,type:ve.websocketError,value:e.isTrusted?"websocket user aborted":"websocket error"})},o.onmessage=e=>{l(e.data.byteLength),t.isFlv?g.write(e.data):t.isFmp4?Qt.demuxFmp4(e.data):t.isMpeg4?Qt.demuxMpeg4(e.data):Qt._opt.isNakedFlow?Qt.demuxNakedFlow(e.data):Qt.demuxM7s(e.data)})},demuxFlv:function*(){yield 9;const e=new ArrayBuffer(4),t=new Uint8Array(e),r=new Uint32Array(e);for(;;){t[3]=0;const e=yield 15,i=e[4];t[0]=e[7],t[1]=e[6],t[2]=e[5];const n=r[0];t[0]=e[10],t[1]=e[9],t[2]=e[8],t[3]=e[11];let s=r[0];const a=(yield n).slice();switch(i){case J:if(a.byteLength>0){let e=a;ot(Qt._opt.m7sCryptoAudio)&&(e=Qt.cryptoPayloadAudio(a)),Qt.decode(e,{type:X,ts:s})}else Qt.debug.warn("worker",`demuxFlv() type is audio and payload.byteLength is ${a.byteLength} and return`);break;case Q:if(a.byteLength>=6){const e=a[0];if(Qt._isEnhancedH265Header(e))Qt._decodeEnhancedH265Video(a,s);else{a[0];const e=a[0]>>4===Ie;if(e&&at(a)&&null===Ht){const e=15&a[0];Ht=e===Se,Vt=Ft(a,Ht),Qt.debug.log("worker",`demuxFlv() isVideoSequenceHeader is true and isHevc is ${Ht} and nalUnitSize is ${Vt}`)}e&&Qt.calcIframeIntervalTimestamp(s),Qt.isPlayer&&Qt.calcNetworkDelay(s),r[0]=a[4],r[1]=a[3],r[2]=a[2],r[3]=0;let t=r[0],i=Qt.cryptoPayload(a,e);Qt.decode(i,{type:Z,ts:s,isIFrame:e,cts:t})}}else Qt.debug.warn("worker",`demuxFlv() type is video and payload.byteLength is ${a.byteLength} and return`);break;case ee:postMessage({cmd:W,buffer:a},[a.buffer]);break;default:Qt.debug.log("worker",`demuxFlv() type is ${i}`)}}},decode:function(e,t){t.type===X?Qt._opt.hasAudio&&(postMessage({cmd:L,type:he,value:e.byteLength}),Qt.isPlayer?Qt.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts}):Qt.isPlayback&&(Qt.isPlaybackOnlyDecodeIFrame()||(Qt.isPlaybackCacheBeforeDecodeForFpsRender(),Qt.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts})))):t.type===Z&&Qt._opt.hasVideo&&(postMessage({cmd:L,type:fe,value:e.byteLength}),postMessage({cmd:L,type:pe,value:t.ts}),Qt.isPlayer?Qt.pushBuffer(e,{type:t.type,ts:t.ts,isIFrame:t.isIFrame,cts:t.cts}):Qt.isPlayback&&(Qt.isPlaybackOnlyDecodeIFrame()?t.isIFrame&&Qt.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts,isIFrame:t.isIFrame}):(Qt.isPlaybackCacheBeforeDecodeForFpsRender(),Qt.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts,isIFrame:t.isIFrame}))))},cryptoPayload:function(e,t){let r=e;return Qt._opt.isM7sCrypto?Qt._opt.cryptoIV&&Qt._opt.cryptoIV.byteLength>0&&Qt._opt.cryptoKey&&Qt._opt.cryptoKey.byteLength>0?r=function(e,t,r,i=!1){t=new Uint8Array(t),r=new Uint8Array(r);const n=e.byteLength;let s=5;for(;sn)break;let l=e[s+4],d=!1;if(i?(l=l>>>1&63,d=[0,1,2,3,4,5,6,7,8,9,16,17,18,19,20,21].includes(l)):(l&=31,d=1===l||5===l),d){const i=e.slice(s+4+2,s+4+o);let n=new gr.ModeOfOperation.ctr(t,new gr.Counter(r));const a=n.decrypt(i);n=null,e.set(a,s+4+2)}s=s+4+o}var a;return e}(e,Qt._opt.cryptoKey,Qt._opt.cryptoIV,Ht):Qt.debug.error("worker",`isM7sCrypto cryptoKey.length is ${Qt._opt.cryptoKey&&Qt._opt.cryptoKey.byteLength} or cryptoIV.length is ${Qt._opt.cryptoIV&&Qt._opt.cryptoIV.byteLength} null`):Qt._opt.isSm4Crypto?Qt._opt.sm4CryptoKey&&t?r=function(e,t,r=!1){const i=e.byteLength;let n=5;for(;ni)break;let o=e[n+4],l=!1;if(r?(o=o>>>1&63,l=[0,1,2,3,4,5,6,7,8,9,16,17,18,19,20,21].includes(o)):(o&=31,l=1===o||5===o),l){const r=Ir(e.slice(n+4+2,n+4+a),t,0,{padding:"none",output:"array"});e.set(r,n+4+2)}n=n+4+a}var s;return e}(e,Qt._opt.sm4CryptoKey):Qt._opt.sm4CryptoKey||Qt.debug.error("worker","isSm4Crypto opt.sm4CryptoKey is null"):Qt._opt.isXorCrypto&&(Qt._opt.cryptoIV&&Qt._opt.cryptoIV.byteLength>0&&Qt._opt.cryptoKey&&Qt._opt.cryptoKey.byteLength>0?r=function(e,t,r,i=!1){const n=e.byteLength;let s=5;for(;sn)break;let l=e[s+4],d=!1;if(i?(l=l>>>1&63,d=[0,1,2,3,4,5,6,7,8,9,16,17,18,19,20,21].includes(l)):(l&=31,d=1===l||5===l),d){const i=Mr(e.slice(s+4,s+4+o),t,r);e.set(i,s+4)}s=s+4+o}var a;return e}(e,Qt._opt.cryptoKey,Qt._opt.cryptoIV,Ht):Qt.debug.error("worker",`isXorCrypto cryptoKey.length is ${Qt._opt.cryptoKey&&Qt._opt.cryptoKey.byteLength} or cryptoIV.length is ${Qt._opt.cryptoIV&&Qt._opt.cryptoIV.byteLength} null`)),r},cryptoPayloadAudio:function(e){let t=e;if(Qt._opt.isM7sCrypto)if(Qt._opt.cryptoIV&&Qt._opt.cryptoIV.byteLength>0&&Qt._opt.cryptoKey&&Qt._opt.cryptoKey.byteLength>0){e[0]>>4===xe.AAC&&(t=function(e,t,r){if(e.byteLength<=30)return e;const i=e.slice(32);let n=new gr.ModeOfOperation.ctr(t,new gr.Counter(r));const s=n.decrypt(i);return n=null,e.set(s,32),e}(e,Qt._opt.cryptoKey,Qt._opt.cryptoIV))}else Qt.debug.error("worker",`isM7sCrypto cryptoKey.length is ${Qt._opt.cryptoKey&&Qt._opt.cryptoKey.byteLength} or cryptoIV.length is ${Qt._opt.cryptoIV&&Qt._opt.cryptoIV.byteLength} null`);return t},setCodecAudio:function(e,t){const r=e[0]>>4,i=e[0]>>1&1;if(Wt=r===xe.AAC?i?16:8:0===i?8:16,er&&er.setCodec)if(je(e)||r===xe.ALAW||r===xe.MULAW||r===xe.MP3){Qt.debug.log("worker",`setCodecAudio: init audio codec, codeId is ${r}`);const i=r===xe.AAC?e.slice(2):new Uint8Array(0);er.setCodec(r,Qt._opt.sampleRate,i),r===xe.AAC&&postMessage({cmd:C,buffer:i},[i.buffer]),Fe=!0,r!==xe.AAC&&(r===xe.MP3?(Qt.mp3Demuxer||(Qt.mp3Demuxer=new zr(Qt),Qt.mp3Demuxer.on("data",((e,t)=>{er.decode(e,t)}))),Qt.mp3Demuxer.dispatch(e.slice(1),t)):er.decode(e.slice(1),t))}else Qt.debug.warn("worker","setCodecAudio: hasInitAudioCodec is false, codecId is ",r);else Qt.debug.error("worker","setCodecAudio: audioDecoder or audioDecoder.setCodec is null")},decodeAudio:function(e,t){if(Qt.isDestroyed)Qt.debug.log("worker","decodeAudio, decoder is destroyed and return");else if(ot(r)&&ot(Qt._opt.mseDecodeAudio))postMessage({cmd:I,payload:e,ts:t,cts:t},[e.buffer]);else{const r=e[0]>>4;Fe?r===xe.MP3?Qt.mp3Demuxer.dispatch(e.slice(1),t):er.decode(r===xe.AAC?e.slice(2):e.slice(1),t):Qt.setCodecAudio(e,t)}},setCodecVideo:function(e){const t=15&e[0];if(tr&&tr.setCodec)if(at(e))if(t===we||t===Se){Qt.debug.log("worker",`setCodecVideo: init video codec , codecId is ${t}`);const r=e.slice(5);if(t===we&&Qt._opt.useSIMD){const e=gt(r);if(e.codecWidth>4080||e.codecHeight>4080)return postMessage({cmd:$}),void Qt.debug.warn("worker",`setCodecVideo: SIMD H264 decode video width is too large, width is ${e.codecWidth}, height is ${e.codecHeight}`)}const i=new Uint8Array(e);Pe=!0,tr.setCodec(t,r),postMessage({cmd:B,code:t}),postMessage({cmd:D,buffer:i,codecId:t},[i.buffer])}else Qt.debug.warn("worker",`setCodecVideo: hasInitVideoCodec is false, codecId is ${t} is not H264 or H265`);else Qt.debug.warn("worker",`decodeVideo: hasInitVideoCodec is false, codecId is ${t} and frameType is ${e[0]>>4} and packetType is ${e[1]}`);else Qt.debug.error("worker","setCodecVideo: videoDecoder or videoDecoder.setCodec is null")},decodeVideo:function(e,t,i,n=0){if(Qt.isDestroyed)Qt.debug.log("worker","decodeVideo, decoder is destroyed and return");else if(ot(r))postMessage({cmd:F,payload:e,isIFrame:i,ts:t,cts:n,delay:Qt.delay},[e.buffer]);else if(Pe)if(!Ve&&i&&(Ve=!0),Ve){if(i&&at(e)){const t=15&e[0];let r={};if(t===we){r=gt(e.slice(5))}else t===Se&&(r=function(e){let t={codecWidth:0,codecHeight:0,videoType:Be.h265,width:0,height:0,profile:0,level:0};e=e.slice(5);do{let r={};if(e.length<23){console.warn("parseHEVCDecoderConfigurationRecord$2",`arrayBuffer.length ${e.length} < 23`);break}if(r.configurationVersion=e[0],1!=r.configurationVersion)break;r.general_profile_space=e[1]>>6&3,r.general_tier_flag=e[1]>>5&1,r.general_profile_idc=31&e[1],r.general_profile_compatibility_flags=e[2]<<24|e[3]<<16|e[4]<<8|e[5],r.general_constraint_indicator_flags=e[6]<<24|e[7]<<16|e[8]<<8|e[9],r.general_constraint_indicator_flags=r.general_constraint_indicator_flags<<16|e[10]<<8|e[11],r.general_level_idc=e[12],r.min_spatial_segmentation_idc=(15&e[13])<<8|e[14],r.parallelismType=3&e[15],r.chromaFormat=3&e[16],r.bitDepthLumaMinus8=7&e[17],r.bitDepthChromaMinus8=7&e[18],r.avgFrameRate=e[19]<<8|e[20],r.constantFrameRate=e[21]>>6&3,r.numTemporalLayers=e[21]>>3&7,r.temporalIdNested=e[21]>>2&1,r.lengthSizeMinusOne=3&e[21];let i=e[22],n=e.slice(23);for(let e=0;e0){let e=i.findIndex((e=>ot(e.isIFrame)&&e.type===Z));if(Qt.isAllIframeInBufferList())for(let t=0;t=Qt.getNotDroppingDelayTs()){Qt.debug.log("worker",`dropBuffer$2() isAllIframeInBufferList() is true, and index is ${t} and tempDelay is ${n} and notDroppingDelayTs is ${Qt.getNotDroppingDelayTs()}`),e=t;break}}if(e>=0){Qt.isPushDropping=!0,postMessage({cmd:z});const t=i.length;i=i.slice(e);const r=i.shift();Qt.resetAllDelay(),Qt.getDelay(r.ts,r.type),Qt.doDecode(r),Qt.isPushDropping=!1,Qt.debug.log("worker",`dropBuffer$2() iFrameIndex is ${e},and old bufferList length is ${t} ,new bufferList is ${i.length} and new delay is ${Qt.delay} `)}else Qt.isPushDropping=!1}0===i.length&&(Qt.isPushDropping=!1)},demuxM7s:function(e){const t=new DataView(e),r=t.getUint32(1,!1),i=t.getUint8(0),n=new ArrayBuffer(4),s=new Uint32Array(n);switch(i){case X:Qt.decode(new Uint8Array(e,5),{type:X,ts:r});break;case Z:if(t.byteLength>=11){const i=new Uint8Array(e,5),n=i[0];if(Qt._isEnhancedH265Header(n))Qt._decodeEnhancedH265Video(i,r);else{const e=t.getUint8(5)>>4==1;if(e&&(Qt.calcIframeIntervalTimestamp(r),at(i)&&null===Ht)){const e=15&i[0];Ht=e===Se}Qt.isPlayer&&Qt.calcNetworkDelay(r),s[0]=i[4],s[1]=i[3],s[2]=i[2],s[3]=0;let n=s[0],a=Qt.cryptoPayload(i,e);Qt.decode(a,{type:Z,ts:r,isIFrame:e,cts:n})}}else Qt.debug.warn("worker",`demuxM7s() type is video and arrayBuffer length is ${e.byteLength} and return`)}},demuxNakedFlow:function(e){Kt.dispatch(e)},demuxFmp4:function(e){const t=new Uint8Array(e);Xt.dispatch(t)},demuxMpeg4:function(e){Zt.dispatch(e)},demuxTs:function(e){Jt.dispatch(e)},_decodeEnhancedH265Video:function(e,t){const r=e[0],i=48&r,n=15&r,s=e.slice(1,5),a=new ArrayBuffer(4),o=new Uint32Array(a),l="a"==String.fromCharCode(s[0]);if(Ht=lt(l),n===Me){if(i===$e){const r=e.slice(5);if(l);else{const i=new Uint8Array(5+r.length);i.set([28,0,0,0,0],0),i.set(r,5),Vt=Ft(e,Ht),Qt.debug.log("worker",`demuxFlv() isVideoSequenceHeader(enhancedH265) is true and isHevc is ${Ht} and nalUnitSize is ${Vt}`),Qt.decode(i,{type:Z,ts:t,isIFrame:!0,cts:0})}}}else if(n===Oe){let r=e,n=0;const s=i===$e;if(s&&Qt.calcIframeIntervalTimestamp(t),l);else{o[0]=e[4],o[1]=e[3],o[2]=e[2],o[3]=0,n=o[0];r=Rt(e.slice(8),s),r=Qt.cryptoPayload(r,s),Qt.decode(r,{type:Z,ts:t,isIFrame:s,cts:n})}}else if(n===Ne){const r=i===$e;r&&Qt.calcIframeIntervalTimestamp(t);let n=Rt(e.slice(5),r);n=Qt.cryptoPayload(n,r),Qt.decode(n,{type:Z,ts:t,isIFrame:r,cts:0})}},_isEnhancedH265Header:function(e){return!(128&~e)},findSei:function(e,t){let r=4;rt(Vt)||(r=Vt);Dt(e.slice(5),r).forEach((e=>{const r=Ht?e[0]>>>1&63:31&e[0];(Ht&&(r===Te.suffixSei||r===Te.prefixSei)||lt(Ht)&&r===Ae.kSliceSEI)&&postMessage({cmd:V,buffer:e,ts:t},[e.buffer])}))},flvHasUnitTypeIDR(e,t){const r=Dt(e.slice(5));let i=!1;return r.forEach((e=>{const r=t?e[0]>>>1&63:31&e[0];(t&&(r===Te.iFrame||r===Te.nLp)||lt(t)&&r===Ae.iFrame)&&(i=!0)})),i},calcNetworkDelay:function(e){if(!(Ve&&e>0))return;null===ut?(ut=e,ct=Je()):et?r-t:0;Qt.networkDelay=i,i>Qt._opt.networkDelay&&Qt._opt.playType===m&&(Qt.debug.warn("worker",`calcNetworkDelay now dts:${e}, start dts is ${ut} vs start is ${t},local diff is ${r} ,delay is ${i}`),postMessage({cmd:L,type:ye,value:i}))},calcIframeIntervalTimestamp:function(e){null===Tt?Tt=e:Tt=Qt._opt.playbackForwardMaxRateDecodeIFrame},isPlayUseMSE:function(){return Qt.isPlayer&&Qt._opt.useMSE&&ot(r)},isPlayUseMSEAndDecoderInWorker:function(){return Qt.isPlayUseMSE()&&Qt._opt.mseDecoderUseWorker},playbackUpdatePlaybackRate:function(){Qt.clearBuffer(!0)},onOffscreenCanvasWebglContextLost:function(e){Qt.debug.error("worker","handleOffscreenCanvasWebglContextLost and next try to create webgl"),e.preventDefault(),Nt=!0,Qt.webglObj.destroy(),Qt.webglObj=null,Qt.offscreenCanvasGL=null,setTimeout((()=>{Qt.offscreenCanvasGL=Qt.offscreenCanvas.getContext("webgl"),Qt.offscreenCanvasGL&&Qt.offscreenCanvasGL.getContextAttributes().stencil?(Qt.webglObj=u(Qt.offscreenCanvasGL,Qt._opt.openWebglAlignment),Nt=!1):Qt.debug.error("worker","handleOffscreenCanvasWebglContextLost, stencil is false")}),500)},onOffscreenCanvasWebglContextRestored:function(e){Qt.debug.log("worker","handleOffscreenCanvasWebglContextRestored"),e.preventDefault()},videoInfo:function(e,t,r){postMessage({cmd:B,code:e}),postMessage({cmd:E,w:t,h:r}),v=t,w=r,Qt.useOffscreen()&&(Qt.offscreenCanvas=new OffscreenCanvas(t,r),Qt.offscreenCanvasGL=Qt.offscreenCanvas.getContext("webgl"),Qt.webglObj=u(Qt.offscreenCanvasGL,Qt._opt.openWebglAlignment),Qt.offscreenCanvas.addEventListener("webglcontextlost",Qt.onOffscreenCanvasWebglContextLost,!1),Qt.offscreenCanvas.addEventListener("webglcontextrestored",Qt.onOffscreenCanvasWebglContextRestored,!1))},audioInfo:function(e,t,r){postMessage({cmd:T,code:e}),postMessage({cmd:A,sampleRate:t,channels:r,depth:Wt}),At=r},yuvData:function(t,r){if(Qt.isDestroyed)return void Qt.debug.log("worker","yuvData, decoder is destroyed and return");const i=v*w*3/2;let n=e.HEAPU8.subarray(t,t+i),s=new Uint8Array(n);if(mt=null,Qt.useOffscreen())try{if(Nt)return;Qt.webglObj.renderYUV(v,w,s);let e=Qt.offscreenCanvas.transferToImageBitmap();postMessage({cmd:U,buffer:e,delay:Qt.delay,ts:r},[e])}catch(e){Qt.debug.error("worker","yuvData, transferToImageBitmap error is",e)}else postMessage({cmd:U,output:s,delay:Qt.delay,ts:r},[s.buffer])},pcmData:function(e,r,i){if(Qt.isDestroyed)return void Qt.debug.log("worker","pcmData, decoder is destroyed and return");let s=r,a=[],o=0,l=Qt._opt.audioBufferSize;for(let r=0;r<2;r++){let i=t.HEAPU32[(e>>2)+r]>>2;a[r]=t.HEAPF32.subarray(i,i+s)}if(xt){if(!(s>=(r=l-xt)))return xt+=s,n[0]=Float32Array.of(...n[0],...a[0]),void(2==At&&(n[1]=Float32Array.of(...n[1],...a[1])));ht[0]=Float32Array.of(...n[0],...a[0].subarray(0,r)),2==At&&(ht[1]=Float32Array.of(...n[1],...a[1].subarray(0,r))),postMessage({cmd:x,buffer:ht,ts:i},ht.map((e=>e.buffer))),o=r,s-=r}for(xt=s;xt>=l;xt-=l)ht[0]=a[0].slice(o,o+=l),2==At&&(ht[1]=a[1].slice(o-l,o)),postMessage({cmd:x,buffer:ht,ts:i},ht.map((e=>e.buffer)));xt&&(n[0]=a[0].slice(o),2==At&&(n[1]=a[1].slice(o)))},errorInfo:function(e){null===mt&&(mt=Je());const t=Je(),r=(i=yt>0?2*yt:5e3,n=1e3,s=5e3,Math.max(Math.min(i,Math.max(n,s)),Math.min(n,s)));var i,n,s;const a=t-mt;a>r&&(Qt.debug.warn("worker",`errorInfo() emit simdDecodeError and\n iframeIntervalTimestamp is ${yt} and diff is ${a} and maxDiff is ${r}\n and replay`),Gt=!0,postMessage({cmd:N}))},sendWebsocketMessage:function(e){o?o.readyState===be?o.send(e):Qt.debug.error("worker","socket is not open"):Qt.debug.error("worker","socket is null")},timeEnd:function(){},postStreamToMain(e,t){postMessage({cmd:H,type:t,buffer:e},[e.buffer])}};Qt.debug=new pt(Qt);let er=null;t.AudioDecoder&&(er=new t.AudioDecoder(Qt));let tr=null;e.VideoDecoder&&(tr=new e.VideoDecoder(Qt)),postMessage({cmd:S}),self.onmessage=function(e){let t=e.data;switch(t.cmd){case te:try{Qt._opt=Object.assign(Qt._opt,JSON.parse(t.opt))}catch(e){}Qt.init();break;case re:Qt.pushBuffer(t.buffer,t.options);break;case ie:Qt.decodeAudio(t.buffer,t.ts);break;case ne:Qt.decodeVideo(t.buffer,t.ts,t.isIFrame);break;case oe:Qt.clearBuffer(t.needClear);break;case le:Qt.fetchStream(t.url,JSON.parse(t.opt));break;case se:Qt.close();break;case ae:Qt.debug.log("worker","updateConfig",t.key,t.value),Qt._opt[t.key]=t.value,"playbackRate"===t.key&&(Qt.playbackUpdatePlaybackRate(),Qt.isPlaybackCacheBeforeDecodeForFpsRender()&&Qt.playbackCacheLoop());break;case de:Qt.sendWebsocketMessage(t.message)}}}Nr.init(),Date.now||(Date.now=function(){return(new Date).getTime()});const Gr=[];Gr.push(r({printErr:function(e){console.warn("EasyPro[❌❌❌][worker]:",e)}}),t({printErr:function(e){console.warn("EasyPro[❌❌❌][worker]:",e)}})),Promise.all(Gr).then((e=>{const t=e[0];$r(e[1],t)}))})); diff --git a/demo/js/decoder-pro-simd.wasm b/html-demo/js/decoder-pro-simd.wasm similarity index 100% rename from demo/js/decoder-pro-simd.wasm rename to html-demo/js/decoder-pro-simd.wasm diff --git a/html-demo/js/decoder-pro.js b/html-demo/js/decoder-pro.js new file mode 100644 index 0000000..984c34e --- /dev/null +++ b/html-demo/js/decoder-pro.js @@ -0,0 +1 @@ +!function(e){"function"==typeof define&&define.amd?define(e):e()}((function(){"use strict";var e,t=(e="undefined"==typeof document&&"undefined"==typeof location?new(require("url").URL)("file:"+__filename).href:"undefined"==typeof document?location.href:document.currentScript&&document.currentScript.src||new URL("decoder-pro.js",document.baseURI).href,function(t){var r,i;(t=void 0!==(t=t||{})?t:{}).ready=new Promise((function(e,t){r=e,i=t})),(t=void 0!==t?t:{}).locateFile=function(e){return"decoder-pro.wasm"==e&&"undefined"!=typeof EASYPLAYER_PRO_WASM_URL&&""!=EASYPLAYER_PRO_WASM_URL?EASYPLAYER_PRO_WASM_URL:e};var n,s,o,a,l,d,u=Object.assign({},t),c="./this.program",f="object"==typeof window,h="function"==typeof importScripts,p="object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node,m="";p?(m=h?require("path").dirname(m)+"/":__dirname+"/",d=()=>{l||(a=require("fs"),l=require("path"))},n=function(e,t){return d(),e=l.normalize(e),a.readFileSync(e,t?void 0:"utf8")},o=e=>{var t=n(e,!0);return t.buffer||(t=new Uint8Array(t)),t},s=(e,t,r)=>{d(),e=l.normalize(e),a.readFile(e,(function(e,i){e?r(e):t(i.buffer)}))},process.argv.length>1&&(c=process.argv[1].replace(/\\/g,"/")),process.argv.slice(2),process.on("uncaughtException",(function(e){if(!(e instanceof ee))throw e})),process.on("unhandledRejection",(function(e){throw e})),t.inspect=function(){return"[Emscripten Module object]"}):(f||h)&&(h?m=self.location.href:"undefined"!=typeof document&&document.currentScript&&(m=document.currentScript.src),e&&(m=e),m=0!==m.indexOf("blob:")?m.substr(0,m.replace(/[?#].*/,"").lastIndexOf("/")+1):"",n=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.send(null),t.responseText},h&&(o=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.responseType="arraybuffer",t.send(null),new Uint8Array(t.response)}),s=(e,t,r)=>{var i=new XMLHttpRequest;i.open("GET",e,!0),i.responseType="arraybuffer",i.onload=()=>{200==i.status||0==i.status&&i.response?t(i.response):r()},i.onerror=r,i.send(null)});var _=t.print||console.log.bind(console),y=t.printErr||console.warn.bind(console);Object.assign(t,u),u=null,t.arguments&&t.arguments,t.thisProgram&&(c=t.thisProgram),t.quit&&t.quit;var g,v,b=4;t.wasmBinary&&(g=t.wasmBinary),t.noExitRuntime,"object"!=typeof WebAssembly&&j("no native wasm support detected");var w=!1;function E(e,t){e||j(t)}var S,U,x,A,k,T,B,C,D,F,P="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0;function I(e,t,r){for(var i=t+r,n=t;e[n]&&!(n>=i);)++n;if(n-t>16&&e.buffer&&P)return P.decode(e.subarray(t,n));for(var s="";t>10,56320|1023&d)}}else s+=String.fromCharCode((31&o)<<6|a)}else s+=String.fromCharCode(o)}return s}function L(e,t){return e?I(x,e,t):""}function R(e,t,r,i){if(!(i>0))return 0;for(var n=r,s=r+i-1,o=0;o=55296&&a<=57343&&(a=65536+((1023&a)<<10)|1023&e.charCodeAt(++o)),a<=127){if(r>=s)break;t[r++]=a}else if(a<=2047){if(r+1>=s)break;t[r++]=192|a>>6,t[r++]=128|63&a}else if(a<=65535){if(r+2>=s)break;t[r++]=224|a>>12,t[r++]=128|a>>6&63,t[r++]=128|63&a}else{if(r+3>=s)break;t[r++]=240|a>>18,t[r++]=128|a>>12&63,t[r++]=128|a>>6&63,t[r++]=128|63&a}}return t[r]=0,r-n}function M(e){for(var t=0,r=0;r=55296&&i<=57343?(t+=4,++r):t+=3}return t}t.INITIAL_MEMORY;var z=[],N=[],O=[],$=0,G=null;function H(e){$++,t.monitorRunDependencies&&t.monitorRunDependencies($)}function V(e){if($--,t.monitorRunDependencies&&t.monitorRunDependencies($),0==$&&G){var r=G;G=null,r()}}function j(e){t.onAbort&&t.onAbort(e),y(e="Aborted("+e+")"),w=!0,e+=". Build with -sASSERTIONS for more info.";var r=new WebAssembly.RuntimeError(e);throw i(r),r}var W,Y,q,K,X="data:application/octet-stream;base64,";function Z(e){return e.startsWith(X)}function J(e){return e.startsWith("file://")}function Q(e){try{if(e==W&&g)return new Uint8Array(g);if(o)return o(e);throw"both async and sync fetching of the wasm failed"}catch(e){j(e)}}function ee(e){this.name="ExitStatus",this.message="Program terminated with exit("+e+")",this.status=e}function te(e){for(;e.length>0;)e.shift()(t)}function re(e){this.excPtr=e,this.ptr=e-24,this.set_type=function(e){B[this.ptr+4>>2]=e},this.get_type=function(){return B[this.ptr+4>>2]},this.set_destructor=function(e){B[this.ptr+8>>2]=e},this.get_destructor=function(){return B[this.ptr+8>>2]},this.set_refcount=function(e){T[this.ptr>>2]=e},this.set_caught=function(e){e=e?1:0,U[this.ptr+12|0]=e},this.get_caught=function(){return 0!=U[this.ptr+12|0]},this.set_rethrown=function(e){e=e?1:0,U[this.ptr+13|0]=e},this.get_rethrown=function(){return 0!=U[this.ptr+13|0]},this.init=function(e,t){this.set_adjusted_ptr(0),this.set_type(e),this.set_destructor(t),this.set_refcount(0),this.set_caught(!1),this.set_rethrown(!1)},this.add_ref=function(){var e=T[this.ptr>>2];T[this.ptr>>2]=e+1},this.release_ref=function(){var e=T[this.ptr>>2];return T[this.ptr>>2]=e-1,1===e},this.set_adjusted_ptr=function(e){B[this.ptr+16>>2]=e},this.get_adjusted_ptr=function(){return B[this.ptr+16>>2]},this.get_exception_ptr=function(){if(Xt(this.get_type()))return B[this.excPtr>>2];var e=this.get_adjusted_ptr();return 0!==e?e:this.excPtr}}t.locateFile?Z(W="decoder-pro.wasm")||(Y=W,W=t.locateFile?t.locateFile(Y,m):m+Y):W=new URL("decoder-pro.wasm","undefined"==typeof document&&"undefined"==typeof location?new(require("url").URL)("file:"+__filename).href:"undefined"==typeof document?location.href:document.currentScript&&document.currentScript.src||new URL("decoder-pro.js",document.baseURI).href).toString();var ie={isAbs:e=>"/"===e.charAt(0),splitPath:e=>/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(e).slice(1),normalizeArray:(e,t)=>{for(var r=0,i=e.length-1;i>=0;i--){var n=e[i];"."===n?e.splice(i,1):".."===n?(e.splice(i,1),r++):r&&(e.splice(i,1),r--)}if(t)for(;r;r--)e.unshift("..");return e},normalize:e=>{var t=ie.isAbs(e),r="/"===e.substr(-1);return(e=ie.normalizeArray(e.split("/").filter((e=>!!e)),!t).join("/"))||t||(e="."),e&&r&&(e+="/"),(t?"/":"")+e},dirname:e=>{var t=ie.splitPath(e),r=t[0],i=t[1];return r||i?(i&&(i=i.substr(0,i.length-1)),r+i):"."},basename:e=>{if("/"===e)return"/";var t=(e=(e=ie.normalize(e)).replace(/\/$/,"")).lastIndexOf("/");return-1===t?e:e.substr(t+1)},join:function(){var e=Array.prototype.slice.call(arguments,0);return ie.normalize(e.join("/"))},join2:(e,t)=>ie.normalize(e+"/"+t)},ne={resolve:function(){for(var e="",t=!1,r=arguments.length-1;r>=-1&&!t;r--){var i=r>=0?arguments[r]:de.cwd();if("string"!=typeof i)throw new TypeError("Arguments to path.resolve must be strings");if(!i)return"";e=i+"/"+e,t=ie.isAbs(i)}return(t?"/":"")+(e=ie.normalizeArray(e.split("/").filter((e=>!!e)),!t).join("/"))||"."},relative:(e,t)=>{function r(e){for(var t=0;t=0&&""===e[r];r--);return t>r?[]:e.slice(t,r-t+1)}e=ne.resolve(e).substr(1),t=ne.resolve(t).substr(1);for(var i=r(e.split("/")),n=r(t.split("/")),s=Math.min(i.length,n.length),o=s,a=0;a0?r:M(e)+1,n=new Array(i),s=R(e,n,0,n.length);return t&&(n.length=s),n}var oe={ttys:[],init:function(){},shutdown:function(){},register:function(e,t){oe.ttys[e]={input:[],output:[],ops:t},de.registerDevice(e,oe.stream_ops)},stream_ops:{open:function(e){var t=oe.ttys[e.node.rdev];if(!t)throw new de.ErrnoError(43);e.tty=t,e.seekable=!1},close:function(e){e.tty.ops.flush(e.tty)},flush:function(e){e.tty.ops.flush(e.tty)},read:function(e,t,r,i,n){if(!e.tty||!e.tty.ops.get_char)throw new de.ErrnoError(60);for(var s=0,o=0;o0?r.slice(0,i).toString("utf-8"):null}else"undefined"!=typeof window&&"function"==typeof window.prompt?null!==(t=window.prompt("Input: "))&&(t+="\n"):"function"==typeof readline&&null!==(t=readline())&&(t+="\n");if(!t)return null;e.input=se(t,!0)}return e.input.shift()},put_char:function(e,t){null===t||10===t?(_(I(e.output,0)),e.output=[]):0!=t&&e.output.push(t)},flush:function(e){e.output&&e.output.length>0&&(_(I(e.output,0)),e.output=[])}},default_tty1_ops:{put_char:function(e,t){null===t||10===t?(y(I(e.output,0)),e.output=[]):0!=t&&e.output.push(t)},flush:function(e){e.output&&e.output.length>0&&(y(I(e.output,0)),e.output=[])}}};function ae(e){e=function(e,t){return Math.ceil(e/t)*t}(e,65536);var t=Kt(65536,e);return t?(function(e,t){x.fill(0,e,e+t)}(t,e),t):0}var le={ops_table:null,mount:function(e){return le.createNode(null,"/",16895,0)},createNode:function(e,t,r,i){if(de.isBlkdev(r)||de.isFIFO(r))throw new de.ErrnoError(63);le.ops_table||(le.ops_table={dir:{node:{getattr:le.node_ops.getattr,setattr:le.node_ops.setattr,lookup:le.node_ops.lookup,mknod:le.node_ops.mknod,rename:le.node_ops.rename,unlink:le.node_ops.unlink,rmdir:le.node_ops.rmdir,readdir:le.node_ops.readdir,symlink:le.node_ops.symlink},stream:{llseek:le.stream_ops.llseek}},file:{node:{getattr:le.node_ops.getattr,setattr:le.node_ops.setattr},stream:{llseek:le.stream_ops.llseek,read:le.stream_ops.read,write:le.stream_ops.write,allocate:le.stream_ops.allocate,mmap:le.stream_ops.mmap,msync:le.stream_ops.msync}},link:{node:{getattr:le.node_ops.getattr,setattr:le.node_ops.setattr,readlink:le.node_ops.readlink},stream:{}},chrdev:{node:{getattr:le.node_ops.getattr,setattr:le.node_ops.setattr},stream:de.chrdev_stream_ops}});var n=de.createNode(e,t,r,i);return de.isDir(n.mode)?(n.node_ops=le.ops_table.dir.node,n.stream_ops=le.ops_table.dir.stream,n.contents={}):de.isFile(n.mode)?(n.node_ops=le.ops_table.file.node,n.stream_ops=le.ops_table.file.stream,n.usedBytes=0,n.contents=null):de.isLink(n.mode)?(n.node_ops=le.ops_table.link.node,n.stream_ops=le.ops_table.link.stream):de.isChrdev(n.mode)&&(n.node_ops=le.ops_table.chrdev.node,n.stream_ops=le.ops_table.chrdev.stream),n.timestamp=Date.now(),e&&(e.contents[t]=n,e.timestamp=n.timestamp),n},getFileDataAsTypedArray:function(e){return e.contents?e.contents.subarray?e.contents.subarray(0,e.usedBytes):new Uint8Array(e.contents):new Uint8Array(0)},expandFileStorage:function(e,t){var r=e.contents?e.contents.length:0;if(!(r>=t)){t=Math.max(t,r*(r<1048576?2:1.125)>>>0),0!=r&&(t=Math.max(t,256));var i=e.contents;e.contents=new Uint8Array(t),e.usedBytes>0&&e.contents.set(i.subarray(0,e.usedBytes),0)}},resizeFileStorage:function(e,t){if(e.usedBytes!=t)if(0==t)e.contents=null,e.usedBytes=0;else{var r=e.contents;e.contents=new Uint8Array(t),r&&e.contents.set(r.subarray(0,Math.min(t,e.usedBytes))),e.usedBytes=t}},node_ops:{getattr:function(e){var t={};return t.dev=de.isChrdev(e.mode)?e.id:1,t.ino=e.id,t.mode=e.mode,t.nlink=1,t.uid=0,t.gid=0,t.rdev=e.rdev,de.isDir(e.mode)?t.size=4096:de.isFile(e.mode)?t.size=e.usedBytes:de.isLink(e.mode)?t.size=e.link.length:t.size=0,t.atime=new Date(e.timestamp),t.mtime=new Date(e.timestamp),t.ctime=new Date(e.timestamp),t.blksize=4096,t.blocks=Math.ceil(t.size/t.blksize),t},setattr:function(e,t){void 0!==t.mode&&(e.mode=t.mode),void 0!==t.timestamp&&(e.timestamp=t.timestamp),void 0!==t.size&&le.resizeFileStorage(e,t.size)},lookup:function(e,t){throw de.genericErrors[44]},mknod:function(e,t,r,i){return le.createNode(e,t,r,i)},rename:function(e,t,r){if(de.isDir(e.mode)){var i;try{i=de.lookupNode(t,r)}catch(e){}if(i)for(var n in i.contents)throw new de.ErrnoError(55)}delete e.parent.contents[e.name],e.parent.timestamp=Date.now(),e.name=r,t.contents[r]=e,t.timestamp=e.parent.timestamp,e.parent=t},unlink:function(e,t){delete e.contents[t],e.timestamp=Date.now()},rmdir:function(e,t){var r=de.lookupNode(e,t);for(var i in r.contents)throw new de.ErrnoError(55);delete e.contents[t],e.timestamp=Date.now()},readdir:function(e){var t=[".",".."];for(var r in e.contents)e.contents.hasOwnProperty(r)&&t.push(r);return t},symlink:function(e,t,r){var i=le.createNode(e,t,41471,0);return i.link=r,i},readlink:function(e){if(!de.isLink(e.mode))throw new de.ErrnoError(28);return e.link}},stream_ops:{read:function(e,t,r,i,n){var s=e.node.contents;if(n>=e.node.usedBytes)return 0;var o=Math.min(e.node.usedBytes-n,i);if(o>8&&s.subarray)t.set(s.subarray(n,n+o),r);else for(var a=0;a0||r+t{if(!(e=ne.resolve(de.cwd(),e)))return{path:"",node:null};if((t=Object.assign({follow_mount:!0,recurse_count:0},t)).recurse_count>8)throw new de.ErrnoError(32);for(var r=ie.normalizeArray(e.split("/").filter((e=>!!e)),!1),i=de.root,n="/",s=0;s40)throw new de.ErrnoError(32)}}return{path:n,node:i}},getPath:e=>{for(var t;;){if(de.isRoot(e)){var r=e.mount.mountpoint;return t?"/"!==r[r.length-1]?r+"/"+t:r+t:r}t=t?e.name+"/"+t:e.name,e=e.parent}},hashName:(e,t)=>{for(var r=0,i=0;i>>0)%de.nameTable.length},hashAddNode:e=>{var t=de.hashName(e.parent.id,e.name);e.name_next=de.nameTable[t],de.nameTable[t]=e},hashRemoveNode:e=>{var t=de.hashName(e.parent.id,e.name);if(de.nameTable[t]===e)de.nameTable[t]=e.name_next;else for(var r=de.nameTable[t];r;){if(r.name_next===e){r.name_next=e.name_next;break}r=r.name_next}},lookupNode:(e,t)=>{var r=de.mayLookup(e);if(r)throw new de.ErrnoError(r,e);for(var i=de.hashName(e.id,t),n=de.nameTable[i];n;n=n.name_next){var s=n.name;if(n.parent.id===e.id&&s===t)return n}return de.lookup(e,t)},createNode:(e,t,r,i)=>{var n=new de.FSNode(e,t,r,i);return de.hashAddNode(n),n},destroyNode:e=>{de.hashRemoveNode(e)},isRoot:e=>e===e.parent,isMountpoint:e=>!!e.mounted,isFile:e=>32768==(61440&e),isDir:e=>16384==(61440&e),isLink:e=>40960==(61440&e),isChrdev:e=>8192==(61440&e),isBlkdev:e=>24576==(61440&e),isFIFO:e=>4096==(61440&e),isSocket:e=>!(49152&~e),flagModes:{r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090},modeStringToFlags:e=>{var t=de.flagModes[e];if(void 0===t)throw new Error("Unknown file open mode: "+e);return t},flagsToPermissionString:e=>{var t=["r","w","rw"][3&e];return 512&e&&(t+="w"),t},nodePermissions:(e,t)=>de.ignorePermissions||(!t.includes("r")||292&e.mode)&&(!t.includes("w")||146&e.mode)&&(!t.includes("x")||73&e.mode)?0:2,mayLookup:e=>{var t=de.nodePermissions(e,"x");return t||(e.node_ops.lookup?0:2)},mayCreate:(e,t)=>{try{return de.lookupNode(e,t),20}catch(e){}return de.nodePermissions(e,"wx")},mayDelete:(e,t,r)=>{var i;try{i=de.lookupNode(e,t)}catch(e){return e.errno}var n=de.nodePermissions(e,"wx");if(n)return n;if(r){if(!de.isDir(i.mode))return 54;if(de.isRoot(i)||de.getPath(i)===de.cwd())return 10}else if(de.isDir(i.mode))return 31;return 0},mayOpen:(e,t)=>e?de.isLink(e.mode)?32:de.isDir(e.mode)&&("r"!==de.flagsToPermissionString(t)||512&t)?31:de.nodePermissions(e,de.flagsToPermissionString(t)):44,MAX_OPEN_FDS:4096,nextfd:(e=0,t=de.MAX_OPEN_FDS)=>{for(var r=e;r<=t;r++)if(!de.streams[r])return r;throw new de.ErrnoError(33)},getStream:e=>de.streams[e],createStream:(e,t,r)=>{de.FSStream||(de.FSStream=function(){this.shared={}},de.FSStream.prototype={},Object.defineProperties(de.FSStream.prototype,{object:{get:function(){return this.node},set:function(e){this.node=e}},isRead:{get:function(){return 1!=(2097155&this.flags)}},isWrite:{get:function(){return!!(2097155&this.flags)}},isAppend:{get:function(){return 1024&this.flags}},flags:{get:function(){return this.shared.flags},set:function(e){this.shared.flags=e}},position:{get:function(){return this.shared.position},set:function(e){this.shared.position=e}}})),e=Object.assign(new de.FSStream,e);var i=de.nextfd(t,r);return e.fd=i,de.streams[i]=e,e},closeStream:e=>{de.streams[e]=null},chrdev_stream_ops:{open:e=>{var t=de.getDevice(e.node.rdev);e.stream_ops=t.stream_ops,e.stream_ops.open&&e.stream_ops.open(e)},llseek:()=>{throw new de.ErrnoError(70)}},major:e=>e>>8,minor:e=>255&e,makedev:(e,t)=>e<<8|t,registerDevice:(e,t)=>{de.devices[e]={stream_ops:t}},getDevice:e=>de.devices[e],getMounts:e=>{for(var t=[],r=[e];r.length;){var i=r.pop();t.push(i),r.push.apply(r,i.mounts)}return t},syncfs:(e,t)=>{"function"==typeof e&&(t=e,e=!1),de.syncFSRequests++,de.syncFSRequests>1&&y("warning: "+de.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work");var r=de.getMounts(de.root.mount),i=0;function n(e){return de.syncFSRequests--,t(e)}function s(e){if(e)return s.errored?void 0:(s.errored=!0,n(e));++i>=r.length&&n(null)}r.forEach((t=>{if(!t.type.syncfs)return s(null);t.type.syncfs(t,e,s)}))},mount:(e,t,r)=>{var i,n="/"===r,s=!r;if(n&&de.root)throw new de.ErrnoError(10);if(!n&&!s){var o=de.lookupPath(r,{follow_mount:!1});if(r=o.path,i=o.node,de.isMountpoint(i))throw new de.ErrnoError(10);if(!de.isDir(i.mode))throw new de.ErrnoError(54)}var a={type:e,opts:t,mountpoint:r,mounts:[]},l=e.mount(a);return l.mount=a,a.root=l,n?de.root=l:i&&(i.mounted=a,i.mount&&i.mount.mounts.push(a)),l},unmount:e=>{var t=de.lookupPath(e,{follow_mount:!1});if(!de.isMountpoint(t.node))throw new de.ErrnoError(28);var r=t.node,i=r.mounted,n=de.getMounts(i);Object.keys(de.nameTable).forEach((e=>{for(var t=de.nameTable[e];t;){var r=t.name_next;n.includes(t.mount)&&de.destroyNode(t),t=r}})),r.mounted=null;var s=r.mount.mounts.indexOf(i);r.mount.mounts.splice(s,1)},lookup:(e,t)=>e.node_ops.lookup(e,t),mknod:(e,t,r)=>{var i=de.lookupPath(e,{parent:!0}).node,n=ie.basename(e);if(!n||"."===n||".."===n)throw new de.ErrnoError(28);var s=de.mayCreate(i,n);if(s)throw new de.ErrnoError(s);if(!i.node_ops.mknod)throw new de.ErrnoError(63);return i.node_ops.mknod(i,n,t,r)},create:(e,t)=>(t=void 0!==t?t:438,t&=4095,t|=32768,de.mknod(e,t,0)),mkdir:(e,t)=>(t=void 0!==t?t:511,t&=1023,t|=16384,de.mknod(e,t,0)),mkdirTree:(e,t)=>{for(var r=e.split("/"),i="",n=0;n(void 0===r&&(r=t,t=438),t|=8192,de.mknod(e,t,r)),symlink:(e,t)=>{if(!ne.resolve(e))throw new de.ErrnoError(44);var r=de.lookupPath(t,{parent:!0}).node;if(!r)throw new de.ErrnoError(44);var i=ie.basename(t),n=de.mayCreate(r,i);if(n)throw new de.ErrnoError(n);if(!r.node_ops.symlink)throw new de.ErrnoError(63);return r.node_ops.symlink(r,i,e)},rename:(e,t)=>{var r,i,n=ie.dirname(e),s=ie.dirname(t),o=ie.basename(e),a=ie.basename(t);if(r=de.lookupPath(e,{parent:!0}).node,i=de.lookupPath(t,{parent:!0}).node,!r||!i)throw new de.ErrnoError(44);if(r.mount!==i.mount)throw new de.ErrnoError(75);var l,d=de.lookupNode(r,o),u=ne.relative(e,s);if("."!==u.charAt(0))throw new de.ErrnoError(28);if("."!==(u=ne.relative(t,n)).charAt(0))throw new de.ErrnoError(55);try{l=de.lookupNode(i,a)}catch(e){}if(d!==l){var c=de.isDir(d.mode),f=de.mayDelete(r,o,c);if(f)throw new de.ErrnoError(f);if(f=l?de.mayDelete(i,a,c):de.mayCreate(i,a))throw new de.ErrnoError(f);if(!r.node_ops.rename)throw new de.ErrnoError(63);if(de.isMountpoint(d)||l&&de.isMountpoint(l))throw new de.ErrnoError(10);if(i!==r&&(f=de.nodePermissions(r,"w")))throw new de.ErrnoError(f);de.hashRemoveNode(d);try{r.node_ops.rename(d,i,a)}catch(e){throw e}finally{de.hashAddNode(d)}}},rmdir:e=>{var t=de.lookupPath(e,{parent:!0}).node,r=ie.basename(e),i=de.lookupNode(t,r),n=de.mayDelete(t,r,!0);if(n)throw new de.ErrnoError(n);if(!t.node_ops.rmdir)throw new de.ErrnoError(63);if(de.isMountpoint(i))throw new de.ErrnoError(10);t.node_ops.rmdir(t,r),de.destroyNode(i)},readdir:e=>{var t=de.lookupPath(e,{follow:!0}).node;if(!t.node_ops.readdir)throw new de.ErrnoError(54);return t.node_ops.readdir(t)},unlink:e=>{var t=de.lookupPath(e,{parent:!0}).node;if(!t)throw new de.ErrnoError(44);var r=ie.basename(e),i=de.lookupNode(t,r),n=de.mayDelete(t,r,!1);if(n)throw new de.ErrnoError(n);if(!t.node_ops.unlink)throw new de.ErrnoError(63);if(de.isMountpoint(i))throw new de.ErrnoError(10);t.node_ops.unlink(t,r),de.destroyNode(i)},readlink:e=>{var t=de.lookupPath(e).node;if(!t)throw new de.ErrnoError(44);if(!t.node_ops.readlink)throw new de.ErrnoError(28);return ne.resolve(de.getPath(t.parent),t.node_ops.readlink(t))},stat:(e,t)=>{var r=de.lookupPath(e,{follow:!t}).node;if(!r)throw new de.ErrnoError(44);if(!r.node_ops.getattr)throw new de.ErrnoError(63);return r.node_ops.getattr(r)},lstat:e=>de.stat(e,!0),chmod:(e,t,r)=>{var i;if(!(i="string"==typeof e?de.lookupPath(e,{follow:!r}).node:e).node_ops.setattr)throw new de.ErrnoError(63);i.node_ops.setattr(i,{mode:4095&t|-4096&i.mode,timestamp:Date.now()})},lchmod:(e,t)=>{de.chmod(e,t,!0)},fchmod:(e,t)=>{var r=de.getStream(e);if(!r)throw new de.ErrnoError(8);de.chmod(r.node,t)},chown:(e,t,r,i)=>{var n;if(!(n="string"==typeof e?de.lookupPath(e,{follow:!i}).node:e).node_ops.setattr)throw new de.ErrnoError(63);n.node_ops.setattr(n,{timestamp:Date.now()})},lchown:(e,t,r)=>{de.chown(e,t,r,!0)},fchown:(e,t,r)=>{var i=de.getStream(e);if(!i)throw new de.ErrnoError(8);de.chown(i.node,t,r)},truncate:(e,t)=>{if(t<0)throw new de.ErrnoError(28);var r;if(!(r="string"==typeof e?de.lookupPath(e,{follow:!0}).node:e).node_ops.setattr)throw new de.ErrnoError(63);if(de.isDir(r.mode))throw new de.ErrnoError(31);if(!de.isFile(r.mode))throw new de.ErrnoError(28);var i=de.nodePermissions(r,"w");if(i)throw new de.ErrnoError(i);r.node_ops.setattr(r,{size:t,timestamp:Date.now()})},ftruncate:(e,t)=>{var r=de.getStream(e);if(!r)throw new de.ErrnoError(8);if(!(2097155&r.flags))throw new de.ErrnoError(28);de.truncate(r.node,t)},utime:(e,t,r)=>{var i=de.lookupPath(e,{follow:!0}).node;i.node_ops.setattr(i,{timestamp:Math.max(t,r)})},open:(e,r,i)=>{if(""===e)throw new de.ErrnoError(44);var n;if(i=void 0===i?438:i,i=64&(r="string"==typeof r?de.modeStringToFlags(r):r)?4095&i|32768:0,"object"==typeof e)n=e;else{e=ie.normalize(e);try{n=de.lookupPath(e,{follow:!(131072&r)}).node}catch(e){}}var s=!1;if(64&r)if(n){if(128&r)throw new de.ErrnoError(20)}else n=de.mknod(e,i,0),s=!0;if(!n)throw new de.ErrnoError(44);if(de.isChrdev(n.mode)&&(r&=-513),65536&r&&!de.isDir(n.mode))throw new de.ErrnoError(54);if(!s){var o=de.mayOpen(n,r);if(o)throw new de.ErrnoError(o)}512&r&&!s&&de.truncate(n,0),r&=-131713;var a=de.createStream({node:n,path:de.getPath(n),flags:r,seekable:!0,position:0,stream_ops:n.stream_ops,ungotten:[],error:!1});return a.stream_ops.open&&a.stream_ops.open(a),!t.logReadFiles||1&r||(de.readFiles||(de.readFiles={}),e in de.readFiles||(de.readFiles[e]=1)),a},close:e=>{if(de.isClosed(e))throw new de.ErrnoError(8);e.getdents&&(e.getdents=null);try{e.stream_ops.close&&e.stream_ops.close(e)}catch(e){throw e}finally{de.closeStream(e.fd)}e.fd=null},isClosed:e=>null===e.fd,llseek:(e,t,r)=>{if(de.isClosed(e))throw new de.ErrnoError(8);if(!e.seekable||!e.stream_ops.llseek)throw new de.ErrnoError(70);if(0!=r&&1!=r&&2!=r)throw new de.ErrnoError(28);return e.position=e.stream_ops.llseek(e,t,r),e.ungotten=[],e.position},read:(e,t,r,i,n)=>{if(i<0||n<0)throw new de.ErrnoError(28);if(de.isClosed(e))throw new de.ErrnoError(8);if(1==(2097155&e.flags))throw new de.ErrnoError(8);if(de.isDir(e.node.mode))throw new de.ErrnoError(31);if(!e.stream_ops.read)throw new de.ErrnoError(28);var s=void 0!==n;if(s){if(!e.seekable)throw new de.ErrnoError(70)}else n=e.position;var o=e.stream_ops.read(e,t,r,i,n);return s||(e.position+=o),o},write:(e,t,r,i,n,s)=>{if(i<0||n<0)throw new de.ErrnoError(28);if(de.isClosed(e))throw new de.ErrnoError(8);if(!(2097155&e.flags))throw new de.ErrnoError(8);if(de.isDir(e.node.mode))throw new de.ErrnoError(31);if(!e.stream_ops.write)throw new de.ErrnoError(28);e.seekable&&1024&e.flags&&de.llseek(e,0,2);var o=void 0!==n;if(o){if(!e.seekable)throw new de.ErrnoError(70)}else n=e.position;var a=e.stream_ops.write(e,t,r,i,n,s);return o||(e.position+=a),a},allocate:(e,t,r)=>{if(de.isClosed(e))throw new de.ErrnoError(8);if(t<0||r<=0)throw new de.ErrnoError(28);if(!(2097155&e.flags))throw new de.ErrnoError(8);if(!de.isFile(e.node.mode)&&!de.isDir(e.node.mode))throw new de.ErrnoError(43);if(!e.stream_ops.allocate)throw new de.ErrnoError(138);e.stream_ops.allocate(e,t,r)},mmap:(e,t,r,i,n)=>{if(2&i&&!(2&n)&&2!=(2097155&e.flags))throw new de.ErrnoError(2);if(1==(2097155&e.flags))throw new de.ErrnoError(2);if(!e.stream_ops.mmap)throw new de.ErrnoError(43);return e.stream_ops.mmap(e,t,r,i,n)},msync:(e,t,r,i,n)=>e&&e.stream_ops.msync?e.stream_ops.msync(e,t,r,i,n):0,munmap:e=>0,ioctl:(e,t,r)=>{if(!e.stream_ops.ioctl)throw new de.ErrnoError(59);return e.stream_ops.ioctl(e,t,r)},readFile:(e,t={})=>{if(t.flags=t.flags||0,t.encoding=t.encoding||"binary","utf8"!==t.encoding&&"binary"!==t.encoding)throw new Error('Invalid encoding type "'+t.encoding+'"');var r,i=de.open(e,t.flags),n=de.stat(e).size,s=new Uint8Array(n);return de.read(i,s,0,n,0),"utf8"===t.encoding?r=I(s,0):"binary"===t.encoding&&(r=s),de.close(i),r},writeFile:(e,t,r={})=>{r.flags=r.flags||577;var i=de.open(e,r.flags,r.mode);if("string"==typeof t){var n=new Uint8Array(M(t)+1),s=R(t,n,0,n.length);de.write(i,n,0,s,void 0,r.canOwn)}else{if(!ArrayBuffer.isView(t))throw new Error("Unsupported data type");de.write(i,t,0,t.byteLength,void 0,r.canOwn)}de.close(i)},cwd:()=>de.currentPath,chdir:e=>{var t=de.lookupPath(e,{follow:!0});if(null===t.node)throw new de.ErrnoError(44);if(!de.isDir(t.node.mode))throw new de.ErrnoError(54);var r=de.nodePermissions(t.node,"x");if(r)throw new de.ErrnoError(r);de.currentPath=t.path},createDefaultDirectories:()=>{de.mkdir("/tmp"),de.mkdir("/home"),de.mkdir("/home/web_user")},createDefaultDevices:()=>{de.mkdir("/dev"),de.registerDevice(de.makedev(1,3),{read:()=>0,write:(e,t,r,i,n)=>i}),de.mkdev("/dev/null",de.makedev(1,3)),oe.register(de.makedev(5,0),oe.default_tty_ops),oe.register(de.makedev(6,0),oe.default_tty1_ops),de.mkdev("/dev/tty",de.makedev(5,0)),de.mkdev("/dev/tty1",de.makedev(6,0));var e=function(){if("object"==typeof crypto&&"function"==typeof crypto.getRandomValues){var e=new Uint8Array(1);return()=>(crypto.getRandomValues(e),e[0])}if(p)try{var t=require("crypto");return()=>t.randomBytes(1)[0]}catch(e){}return()=>j("randomDevice")}();de.createDevice("/dev","random",e),de.createDevice("/dev","urandom",e),de.mkdir("/dev/shm"),de.mkdir("/dev/shm/tmp")},createSpecialDirectories:()=>{de.mkdir("/proc");var e=de.mkdir("/proc/self");de.mkdir("/proc/self/fd"),de.mount({mount:()=>{var t=de.createNode(e,"fd",16895,73);return t.node_ops={lookup:(e,t)=>{var r=+t,i=de.getStream(r);if(!i)throw new de.ErrnoError(8);var n={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>i.path}};return n.parent=n,n}},t}},{},"/proc/self/fd")},createStandardStreams:()=>{t.stdin?de.createDevice("/dev","stdin",t.stdin):de.symlink("/dev/tty","/dev/stdin"),t.stdout?de.createDevice("/dev","stdout",null,t.stdout):de.symlink("/dev/tty","/dev/stdout"),t.stderr?de.createDevice("/dev","stderr",null,t.stderr):de.symlink("/dev/tty1","/dev/stderr"),de.open("/dev/stdin",0),de.open("/dev/stdout",1),de.open("/dev/stderr",1)},ensureErrnoError:()=>{de.ErrnoError||(de.ErrnoError=function(e,t){this.node=t,this.setErrno=function(e){this.errno=e},this.setErrno(e),this.message="FS error"},de.ErrnoError.prototype=new Error,de.ErrnoError.prototype.constructor=de.ErrnoError,[44].forEach((e=>{de.genericErrors[e]=new de.ErrnoError(e),de.genericErrors[e].stack=""})))},staticInit:()=>{de.ensureErrnoError(),de.nameTable=new Array(4096),de.mount(le,{},"/"),de.createDefaultDirectories(),de.createDefaultDevices(),de.createSpecialDirectories(),de.filesystems={MEMFS:le}},init:(e,r,i)=>{de.init.initialized=!0,de.ensureErrnoError(),t.stdin=e||t.stdin,t.stdout=r||t.stdout,t.stderr=i||t.stderr,de.createStandardStreams()},quit:()=>{de.init.initialized=!1;for(var e=0;e{var r=0;return e&&(r|=365),t&&(r|=146),r},findObject:(e,t)=>{var r=de.analyzePath(e,t);return r.exists?r.object:null},analyzePath:(e,t)=>{try{e=(i=de.lookupPath(e,{follow:!t})).path}catch(e){}var r={isRoot:!1,exists:!1,error:0,name:null,path:null,object:null,parentExists:!1,parentPath:null,parentObject:null};try{var i=de.lookupPath(e,{parent:!0});r.parentExists=!0,r.parentPath=i.path,r.parentObject=i.node,r.name=ie.basename(e),i=de.lookupPath(e,{follow:!t}),r.exists=!0,r.path=i.path,r.object=i.node,r.name=i.node.name,r.isRoot="/"===i.path}catch(e){r.error=e.errno}return r},createPath:(e,t,r,i)=>{e="string"==typeof e?e:de.getPath(e);for(var n=t.split("/").reverse();n.length;){var s=n.pop();if(s){var o=ie.join2(e,s);try{de.mkdir(o)}catch(e){}e=o}}return o},createFile:(e,t,r,i,n)=>{var s=ie.join2("string"==typeof e?e:de.getPath(e),t),o=de.getMode(i,n);return de.create(s,o)},createDataFile:(e,t,r,i,n,s)=>{var o=t;e&&(e="string"==typeof e?e:de.getPath(e),o=t?ie.join2(e,t):e);var a=de.getMode(i,n),l=de.create(o,a);if(r){if("string"==typeof r){for(var d=new Array(r.length),u=0,c=r.length;u{var n=ie.join2("string"==typeof e?e:de.getPath(e),t),s=de.getMode(!!r,!!i);de.createDevice.major||(de.createDevice.major=64);var o=de.makedev(de.createDevice.major++,0);return de.registerDevice(o,{open:e=>{e.seekable=!1},close:e=>{i&&i.buffer&&i.buffer.length&&i(10)},read:(e,t,i,n,s)=>{for(var o=0,a=0;a{for(var o=0;o{if(e.isDevice||e.isFolder||e.link||e.contents)return!0;if("undefined"!=typeof XMLHttpRequest)throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.");if(!n)throw new Error("Cannot load without read() or XMLHttpRequest.");try{e.contents=se(n(e.url),!0),e.usedBytes=e.contents.length}catch(e){throw new de.ErrnoError(29)}},createLazyFile:(e,t,r,i,n)=>{function s(){this.lengthKnown=!1,this.chunks=[]}if(s.prototype.get=function(e){if(!(e>this.length-1||e<0)){var t=e%this.chunkSize,r=e/this.chunkSize|0;return this.getter(r)[t]}},s.prototype.setDataGetter=function(e){this.getter=e},s.prototype.cacheLength=function(){var e=new XMLHttpRequest;if(e.open("HEAD",r,!1),e.send(null),!(e.status>=200&&e.status<300||304===e.status))throw new Error("Couldn't load "+r+". Status: "+e.status);var t,i=Number(e.getResponseHeader("Content-length")),n=(t=e.getResponseHeader("Accept-Ranges"))&&"bytes"===t,s=(t=e.getResponseHeader("Content-Encoding"))&&"gzip"===t,o=1048576;n||(o=i);var a=this;a.setDataGetter((e=>{var t=e*o,n=(e+1)*o-1;if(n=Math.min(n,i-1),void 0===a.chunks[e]&&(a.chunks[e]=((e,t)=>{if(e>t)throw new Error("invalid range ("+e+", "+t+") or no bytes requested!");if(t>i-1)throw new Error("only "+i+" bytes available! programmer error!");var n=new XMLHttpRequest;if(n.open("GET",r,!1),i!==o&&n.setRequestHeader("Range","bytes="+e+"-"+t),n.responseType="arraybuffer",n.overrideMimeType&&n.overrideMimeType("text/plain; charset=x-user-defined"),n.send(null),!(n.status>=200&&n.status<300||304===n.status))throw new Error("Couldn't load "+r+". Status: "+n.status);return void 0!==n.response?new Uint8Array(n.response||[]):se(n.responseText||"",!0)})(t,n)),void 0===a.chunks[e])throw new Error("doXHR failed!");return a.chunks[e]})),!s&&i||(o=i=1,i=this.getter(0).length,o=i,_("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=i,this._chunkSize=o,this.lengthKnown=!0},"undefined"!=typeof XMLHttpRequest){if(!h)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var o=new s;Object.defineProperties(o,{length:{get:function(){return this.lengthKnown||this.cacheLength(),this._length}},chunkSize:{get:function(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}});var a={isDevice:!1,contents:o}}else a={isDevice:!1,url:r};var l=de.createFile(e,t,a,i,n);a.contents?l.contents=a.contents:a.url&&(l.contents=null,l.url=a.url),Object.defineProperties(l,{usedBytes:{get:function(){return this.contents.length}}});var d={};function u(e,t,r,i,n){var s=e.node.contents;if(n>=s.length)return 0;var o=Math.min(s.length-n,i);if(s.slice)for(var a=0;a{var t=l.stream_ops[e];d[e]=function(){return de.forceLoadFile(l),t.apply(null,arguments)}})),d.read=(e,t,r,i,n)=>(de.forceLoadFile(l),u(e,t,r,i,n)),d.mmap=(e,t,r,i,n)=>{de.forceLoadFile(l);var s=ae(t);if(!s)throw new de.ErrnoError(48);return u(e,U,s,t,r),{ptr:s,allocated:!0}},l.stream_ops=d,l},createPreloadedFile:(e,t,r,i,n,o,a,l,d,u)=>{var c=t?ne.resolve(ie.join2(e,t)):e;function f(r){function s(r){u&&u(),l||de.createDataFile(e,t,r,i,n,d),o&&o(),V()}Browser.handledByPreloadPlugin(r,c,s,(()=>{a&&a(),V()}))||s(r)}H(),"string"==typeof r?function(e,t,r,i){var n=i?"":"al "+e;s(e,(r=>{E(r,'Loading data file "'+e+'" failed (no arrayBuffer).'),t(new Uint8Array(r)),n&&V()}),(t=>{if(!r)throw'Loading data file "'+e+'" failed.';r()})),n&&H()}(r,(e=>f(e)),a):f(r)},indexedDB:()=>window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB,DB_NAME:()=>"EM_FS_"+window.location.pathname,DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:(e,t,r)=>{t=t||(()=>{}),r=r||(()=>{});var i=de.indexedDB();try{var n=i.open(de.DB_NAME(),de.DB_VERSION)}catch(e){return r(e)}n.onupgradeneeded=()=>{_("creating db"),n.result.createObjectStore(de.DB_STORE_NAME)},n.onsuccess=()=>{var i=n.result.transaction([de.DB_STORE_NAME],"readwrite"),s=i.objectStore(de.DB_STORE_NAME),o=0,a=0,l=e.length;function d(){0==a?t():r()}e.forEach((e=>{var t=s.put(de.analyzePath(e).object.contents,e);t.onsuccess=()=>{++o+a==l&&d()},t.onerror=()=>{a++,o+a==l&&d()}})),i.onerror=r},n.onerror=r},loadFilesFromDB:(e,t,r)=>{t=t||(()=>{}),r=r||(()=>{});var i=de.indexedDB();try{var n=i.open(de.DB_NAME(),de.DB_VERSION)}catch(e){return r(e)}n.onupgradeneeded=r,n.onsuccess=()=>{var i=n.result;try{var s=i.transaction([de.DB_STORE_NAME],"readonly")}catch(e){return void r(e)}var o=s.objectStore(de.DB_STORE_NAME),a=0,l=0,d=e.length;function u(){0==l?t():r()}e.forEach((e=>{var t=o.get(e);t.onsuccess=()=>{de.analyzePath(e).exists&&de.unlink(e),de.createDataFile(ie.dirname(e),ie.basename(e),t.result,!0,!0,!0),++a+l==d&&u()},t.onerror=()=>{l++,a+l==d&&u()}})),s.onerror=r},n.onerror=r}},ue={DEFAULT_POLLMASK:5,calculateAt:function(e,t,r){if(ie.isAbs(t))return t;var i;if(-100===e)i=de.cwd();else{var n=de.getStream(e);if(!n)throw new de.ErrnoError(8);i=n.path}if(0==t.length){if(!r)throw new de.ErrnoError(44);return i}return ie.join2(i,t)},doStat:function(e,t,r){try{var i=e(t)}catch(e){if(e&&e.node&&ie.normalize(t)!==ie.normalize(de.getPath(e.node)))return-54;throw e}return T[r>>2]=i.dev,T[r+4>>2]=0,T[r+8>>2]=i.ino,T[r+12>>2]=i.mode,T[r+16>>2]=i.nlink,T[r+20>>2]=i.uid,T[r+24>>2]=i.gid,T[r+28>>2]=i.rdev,T[r+32>>2]=0,K=[i.size>>>0,(q=i.size,+Math.abs(q)>=1?q>0?(0|Math.min(+Math.floor(q/4294967296),4294967295))>>>0:~~+Math.ceil((q-+(~~q>>>0))/4294967296)>>>0:0)],T[r+40>>2]=K[0],T[r+44>>2]=K[1],T[r+48>>2]=4096,T[r+52>>2]=i.blocks,K=[Math.floor(i.atime.getTime()/1e3)>>>0,(q=Math.floor(i.atime.getTime()/1e3),+Math.abs(q)>=1?q>0?(0|Math.min(+Math.floor(q/4294967296),4294967295))>>>0:~~+Math.ceil((q-+(~~q>>>0))/4294967296)>>>0:0)],T[r+56>>2]=K[0],T[r+60>>2]=K[1],T[r+64>>2]=0,K=[Math.floor(i.mtime.getTime()/1e3)>>>0,(q=Math.floor(i.mtime.getTime()/1e3),+Math.abs(q)>=1?q>0?(0|Math.min(+Math.floor(q/4294967296),4294967295))>>>0:~~+Math.ceil((q-+(~~q>>>0))/4294967296)>>>0:0)],T[r+72>>2]=K[0],T[r+76>>2]=K[1],T[r+80>>2]=0,K=[Math.floor(i.ctime.getTime()/1e3)>>>0,(q=Math.floor(i.ctime.getTime()/1e3),+Math.abs(q)>=1?q>0?(0|Math.min(+Math.floor(q/4294967296),4294967295))>>>0:~~+Math.ceil((q-+(~~q>>>0))/4294967296)>>>0:0)],T[r+88>>2]=K[0],T[r+92>>2]=K[1],T[r+96>>2]=0,K=[i.ino>>>0,(q=i.ino,+Math.abs(q)>=1?q>0?(0|Math.min(+Math.floor(q/4294967296),4294967295))>>>0:~~+Math.ceil((q-+(~~q>>>0))/4294967296)>>>0:0)],T[r+104>>2]=K[0],T[r+108>>2]=K[1],0},doMsync:function(e,t,r,i,n){var s=x.slice(e,e+r);de.msync(t,s,n,r,i)},varargs:void 0,get:function(){return ue.varargs+=4,T[ue.varargs-4>>2]},getStr:function(e){return L(e)},getStreamFromFD:function(e){var t=de.getStream(e);if(!t)throw new de.ErrnoError(8);return t}};function ce(e){switch(e){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+e)}}var fe=void 0;function he(e){for(var t="",r=e;x[r];)t+=fe[x[r++]];return t}var pe={},me={},_e={},ye=48,ge=57;function ve(e){if(void 0===e)return"_unknown";var t=(e=e.replace(/[^a-zA-Z0-9_]/g,"$")).charCodeAt(0);return t>=ye&&t<=ge?"_"+e:e}function be(e,t){return e=ve(e),new Function("body","return function "+e+'() {\n "use strict"; return body.apply(this, arguments);\n};\n')(t)}function we(e,t){var r=be(t,(function(e){this.name=t,this.message=e;var r=new Error(e).stack;void 0!==r&&(this.stack=this.toString()+"\n"+r.replace(/^Error(:[^\n]*)?\n/,""))}));return r.prototype=Object.create(e.prototype),r.prototype.constructor=r,r.prototype.toString=function(){return void 0===this.message?this.name:this.name+": "+this.message},r}var Ee=void 0;function Se(e){throw new Ee(e)}var Ue=void 0;function xe(e){throw new Ue(e)}function Ae(e,t,r){function i(t){var i=r(t);i.length!==e.length&&xe("Mismatched type converter count");for(var n=0;n{me.hasOwnProperty(e)?n[t]=me[e]:(s.push(e),pe.hasOwnProperty(e)||(pe[e]=[]),pe[e].push((()=>{n[t]=me[e],++o===s.length&&i(n)})))})),0===s.length&&i(n)}function ke(e,t,r={}){if(!("argPackAdvance"in t))throw new TypeError("registerType registeredInstance requires argPackAdvance");var i=t.name;if(e||Se('type "'+i+'" must have a positive integer typeid pointer'),me.hasOwnProperty(e)){if(r.ignoreDuplicateRegistrations)return;Se("Cannot register type '"+i+"' twice")}if(me[e]=t,delete _e[e],pe.hasOwnProperty(e)){var n=pe[e];delete pe[e],n.forEach((e=>e()))}}function Te(e){if(!(this instanceof Xe))return!1;if(!(e instanceof Xe))return!1;for(var t=this.$$.ptrType.registeredClass,r=this.$$.ptr,i=e.$$.ptrType.registeredClass,n=e.$$.ptr;t.baseClass;)r=t.upcast(r),t=t.baseClass;for(;i.baseClass;)n=i.upcast(n),i=i.baseClass;return t===i&&r===n}function Be(e){Se(e.$$.ptrType.registeredClass.name+" instance already deleted")}var Ce=!1;function De(e){}function Fe(e){e.count.value-=1,0===e.count.value&&function(e){e.smartPtr?e.smartPtrType.rawDestructor(e.smartPtr):e.ptrType.registeredClass.rawDestructor(e.ptr)}(e)}function Pe(e,t,r){if(t===r)return e;if(void 0===r.baseClass)return null;var i=Pe(e,t,r.baseClass);return null===i?null:r.downcast(i)}var Ie={};function Le(){return Object.keys($e).length}function Re(){var e=[];for(var t in $e)$e.hasOwnProperty(t)&&e.push($e[t]);return e}var Me=[];function ze(){for(;Me.length;){var e=Me.pop();e.$$.deleteScheduled=!1,e.delete()}}var Ne=void 0;function Oe(e){Ne=e,Me.length&&Ne&&Ne(ze)}var $e={};function Ge(e,t){return t=function(e,t){for(void 0===t&&Se("ptr should not be undefined");e.baseClass;)t=e.upcast(t),e=e.baseClass;return t}(e,t),$e[t]}function He(e,t){return t.ptrType&&t.ptr||xe("makeClassHandle requires ptr and ptrType"),!!t.smartPtrType!=!!t.smartPtr&&xe("Both smartPtrType and smartPtr must be specified"),t.count={value:1},je(Object.create(e,{$$:{value:t}}))}function Ve(e){var t=this.getPointee(e);if(!t)return this.destructor(e),null;var r=Ge(this.registeredClass,t);if(void 0!==r){if(0===r.$$.count.value)return r.$$.ptr=t,r.$$.smartPtr=e,r.clone();var i=r.clone();return this.destructor(e),i}function n(){return this.isSmartPointer?He(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:t,smartPtrType:this,smartPtr:e}):He(this.registeredClass.instancePrototype,{ptrType:this,ptr:e})}var s,o=this.registeredClass.getActualType(t),a=Ie[o];if(!a)return n.call(this);s=this.isConst?a.constPointerType:a.pointerType;var l=Pe(t,this.registeredClass,s.registeredClass);return null===l?n.call(this):this.isSmartPointer?He(s.registeredClass.instancePrototype,{ptrType:s,ptr:l,smartPtrType:this,smartPtr:e}):He(s.registeredClass.instancePrototype,{ptrType:s,ptr:l})}function je(e){return"undefined"==typeof FinalizationRegistry?(je=e=>e,e):(Ce=new FinalizationRegistry((e=>{Fe(e.$$)})),je=e=>{var t=e.$$;if(t.smartPtr){var r={$$:t};Ce.register(e,r,e)}return e},De=e=>Ce.unregister(e),je(e))}function We(){if(this.$$.ptr||Be(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var e,t=je(Object.create(Object.getPrototypeOf(this),{$$:{value:(e=this.$$,{count:e.count,deleteScheduled:e.deleteScheduled,preservePointerOnDelete:e.preservePointerOnDelete,ptr:e.ptr,ptrType:e.ptrType,smartPtr:e.smartPtr,smartPtrType:e.smartPtrType})}}));return t.$$.count.value+=1,t.$$.deleteScheduled=!1,t}function Ye(){this.$$.ptr||Be(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&Se("Object already scheduled for deletion"),De(this),Fe(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)}function qe(){return!this.$$.ptr}function Ke(){return this.$$.ptr||Be(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&Se("Object already scheduled for deletion"),Me.push(this),1===Me.length&&Ne&&Ne(ze),this.$$.deleteScheduled=!0,this}function Xe(){}function Ze(e,t,r){if(void 0===e[t].overloadTable){var i=e[t];e[t]=function(){return e[t].overloadTable.hasOwnProperty(arguments.length)||Se("Function '"+r+"' called with an invalid number of arguments ("+arguments.length+") - expects one of ("+e[t].overloadTable+")!"),e[t].overloadTable[arguments.length].apply(this,arguments)},e[t].overloadTable=[],e[t].overloadTable[i.argCount]=i}}function Je(e,t,r,i,n,s,o,a){this.name=e,this.constructor=t,this.instancePrototype=r,this.rawDestructor=i,this.baseClass=n,this.getActualType=s,this.upcast=o,this.downcast=a,this.pureVirtualFunctions=[]}function Qe(e,t,r){for(;t!==r;)t.upcast||Se("Expected null or instance of "+r.name+", got an instance of "+t.name),e=t.upcast(e),t=t.baseClass;return e}function et(e,t){if(null===t)return this.isReference&&Se("null is not a valid "+this.name),0;t.$$||Se('Cannot pass "'+xt(t)+'" as a '+this.name),t.$$.ptr||Se("Cannot pass deleted object as a pointer of type "+this.name);var r=t.$$.ptrType.registeredClass;return Qe(t.$$.ptr,r,this.registeredClass)}function tt(e,t){var r;if(null===t)return this.isReference&&Se("null is not a valid "+this.name),this.isSmartPointer?(r=this.rawConstructor(),null!==e&&e.push(this.rawDestructor,r),r):0;t.$$||Se('Cannot pass "'+xt(t)+'" as a '+this.name),t.$$.ptr||Se("Cannot pass deleted object as a pointer of type "+this.name),!this.isConst&&t.$$.ptrType.isConst&&Se("Cannot convert argument of type "+(t.$$.smartPtrType?t.$$.smartPtrType.name:t.$$.ptrType.name)+" to parameter type "+this.name);var i=t.$$.ptrType.registeredClass;if(r=Qe(t.$$.ptr,i,this.registeredClass),this.isSmartPointer)switch(void 0===t.$$.smartPtr&&Se("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:t.$$.smartPtrType===this?r=t.$$.smartPtr:Se("Cannot convert argument of type "+(t.$$.smartPtrType?t.$$.smartPtrType.name:t.$$.ptrType.name)+" to parameter type "+this.name);break;case 1:r=t.$$.smartPtr;break;case 2:if(t.$$.smartPtrType===this)r=t.$$.smartPtr;else{var n=t.clone();r=this.rawShare(r,Ut.toHandle((function(){n.delete()}))),null!==e&&e.push(this.rawDestructor,r)}break;default:Se("Unsupporting sharing policy")}return r}function rt(e,t){if(null===t)return this.isReference&&Se("null is not a valid "+this.name),0;t.$$||Se('Cannot pass "'+xt(t)+'" as a '+this.name),t.$$.ptr||Se("Cannot pass deleted object as a pointer of type "+this.name),t.$$.ptrType.isConst&&Se("Cannot convert argument of type "+t.$$.ptrType.name+" to parameter type "+this.name);var r=t.$$.ptrType.registeredClass;return Qe(t.$$.ptr,r,this.registeredClass)}function it(e){return this.fromWireType(T[e>>2])}function nt(e){return this.rawGetPointee&&(e=this.rawGetPointee(e)),e}function st(e){this.rawDestructor&&this.rawDestructor(e)}function ot(e){null!==e&&e.delete()}function at(e,t,r,i,n,s,o,a,l,d,u){this.name=e,this.registeredClass=t,this.isReference=r,this.isConst=i,this.isSmartPointer=n,this.pointeeType=s,this.sharingPolicy=o,this.rawGetPointee=a,this.rawConstructor=l,this.rawShare=d,this.rawDestructor=u,n||void 0!==t.baseClass?this.toWireType=tt:i?(this.toWireType=et,this.destructorFunction=null):(this.toWireType=rt,this.destructorFunction=null)}var lt=[];function dt(e){var t=lt[e];return t||(e>=lt.length&&(lt.length=e+1),lt[e]=t=F.get(e)),t}function ut(e,r,i){return e.includes("j")?function(e,r,i){var n=t["dynCall_"+e];return i&&i.length?n.apply(null,[r].concat(i)):n.call(null,r)}(e,r,i):dt(r).apply(null,i)}function ct(e,t){var r,i,n,s=(e=he(e)).includes("j")?(r=e,i=t,n=[],function(){return n.length=0,Object.assign(n,arguments),ut(r,i,n)}):dt(t);return"function"!=typeof s&&Se("unknown function pointer with signature "+e+": "+t),s}var ft=void 0;function ht(e){var t=Yt(e),r=he(t);return Vt(t),r}function pt(e,t){var r=[],i={};throw t.forEach((function e(t){i[t]||me[t]||(_e[t]?_e[t].forEach(e):(r.push(t),i[t]=!0))})),new ft(e+": "+r.map(ht).join([", "]))}function mt(e,t){for(var r=[],i=0;i>2]);return r}function _t(e){for(;e.length;){var t=e.pop();e.pop()(t)}}function yt(e,t){if(!(e instanceof Function))throw new TypeError("new_ called with constructor type "+typeof e+" which is not a function");var r=be(e.name||"unknownFunctionName",(function(){}));r.prototype=e.prototype;var i=new r,n=e.apply(i,t);return n instanceof Object?n:i}function gt(e,t,r,i,n){var s=t.length;s<2&&Se("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var o=null!==t[1]&&null!==r,a=!1,l=1;l0?", ":"")+c),f+=(d?"var rv = ":"")+"invoker(fn"+(c.length>0?", ":"")+c+");\n",a)f+="runDestructors(destructors);\n";else for(l=o?1:2;l4&&0==--bt[e].refcount&&(bt[e]=void 0,vt.push(e))}function Et(){for(var e=0,t=5;t(e||Se("Cannot use deleted val. handle = "+e),bt[e].value),toHandle:e=>{switch(e){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:var t=vt.length?vt.pop():bt.length;return bt[t]={refcount:1,value:e},t}}};function xt(e){if(null===e)return"null";var t=typeof e;return"object"===t||"array"===t||"function"===t?e.toString():""+e}function At(e,t){switch(t){case 2:return function(e){return this.fromWireType(C[e>>2])};case 3:return function(e){return this.fromWireType(D[e>>3])};default:throw new TypeError("Unknown float type: "+e)}}function kt(e,t,r){switch(t){case 0:return r?function(e){return U[e]}:function(e){return x[e]};case 1:return r?function(e){return A[e>>1]}:function(e){return k[e>>1]};case 2:return r?function(e){return T[e>>2]}:function(e){return B[e>>2]};default:throw new TypeError("Unknown integer type: "+e)}}var Tt="undefined"!=typeof TextDecoder?new TextDecoder("utf-16le"):void 0;function Bt(e,t){for(var r=e,i=r>>1,n=i+t/2;!(i>=n)&&k[i];)++i;if((r=i<<1)-e>32&&Tt)return Tt.decode(x.subarray(e,r));for(var s="",o=0;!(o>=t/2);++o){var a=A[e+2*o>>1];if(0==a)break;s+=String.fromCharCode(a)}return s}function Ct(e,t,r){if(void 0===r&&(r=2147483647),r<2)return 0;for(var i=t,n=(r-=2)<2*e.length?r/2:e.length,s=0;s>1]=o,t+=2}return A[t>>1]=0,t-i}function Dt(e){return 2*e.length}function Ft(e,t){for(var r=0,i="";!(r>=t/4);){var n=T[e+4*r>>2];if(0==n)break;if(++r,n>=65536){var s=n-65536;i+=String.fromCharCode(55296|s>>10,56320|1023&s)}else i+=String.fromCharCode(n)}return i}function Pt(e,t,r){if(void 0===r&&(r=2147483647),r<4)return 0;for(var i=t,n=i+r-4,s=0;s=55296&&o<=57343&&(o=65536+((1023&o)<<10)|1023&e.charCodeAt(++s)),T[t>>2]=o,(t+=4)+4>n)break}return T[t>>2]=0,t-i}function It(e){for(var t=0,r=0;r=55296&&i<=57343&&++r,t+=4}return t}var Lt={},Rt=[],Mt=[],zt={};function Nt(){if(!Nt.strings){var e={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:("object"==typeof navigator&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:c||"./this.program"};for(var t in zt)void 0===zt[t]?delete e[t]:e[t]=zt[t];var r=[];for(var t in e)r.push(t+"="+e[t]);Nt.strings=r}return Nt.strings}var Ot=function(e,t,r,i){e||(e=this),this.parent=e,this.mount=e.mount,this.mounted=null,this.id=de.nextInode++,this.name=t,this.mode=r,this.node_ops={},this.stream_ops={},this.rdev=i},$t=365,Gt=146;Object.defineProperties(Ot.prototype,{read:{get:function(){return(this.mode&$t)===$t},set:function(e){e?this.mode|=$t:this.mode&=-366}},write:{get:function(){return(this.mode&Gt)===Gt},set:function(e){e?this.mode|=Gt:this.mode&=-147}},isFolder:{get:function(){return de.isDir(this.mode)}},isDevice:{get:function(){return de.isChrdev(this.mode)}}}),de.FSNode=Ot,de.staticInit(),function(){for(var e=new Array(256),t=0;t<256;++t)e[t]=String.fromCharCode(t);fe=e}(),Ee=t.BindingError=we(Error,"BindingError"),Ue=t.InternalError=we(Error,"InternalError"),Xe.prototype.isAliasOf=Te,Xe.prototype.clone=We,Xe.prototype.delete=Ye,Xe.prototype.isDeleted=qe,Xe.prototype.deleteLater=Ke,t.getInheritedInstanceCount=Le,t.getLiveInheritedInstances=Re,t.flushPendingDeletes=ze,t.setDelayFunction=Oe,at.prototype.getPointee=nt,at.prototype.destructor=st,at.prototype.argPackAdvance=8,at.prototype.readValueFromPointer=it,at.prototype.deleteObject=ot,at.prototype.fromWireType=Ve,ft=t.UnboundTypeError=we(Error,"UnboundTypeError"),t.count_emval_handles=Et,t.get_first_emval=St;var Ht={p:function(e){return jt(e+24)+24},o:function(e,t,r){throw new re(e).init(t,r),e},C:function(e,t,r){ue.varargs=r;try{var i=ue.getStreamFromFD(e);switch(t){case 0:return(n=ue.get())<0?-28:de.createStream(i,n).fd;case 1:case 2:case 6:case 7:return 0;case 3:return i.flags;case 4:var n=ue.get();return i.flags|=n,0;case 5:return n=ue.get(),A[n+0>>1]=2,0;case 16:case 8:default:return-28;case 9:return s=28,T[Wt()>>2]=s,-1}}catch(e){if(void 0===de||!(e instanceof de.ErrnoError))throw e;return-e.errno}var s},w:function(e,t,r,i){ue.varargs=i;try{t=ue.getStr(t),t=ue.calculateAt(e,t);var n=i?ue.get():0;return de.open(t,r,n).fd}catch(e){if(void 0===de||!(e instanceof de.ErrnoError))throw e;return-e.errno}},t:function(e,t,r,i,n){},E:function(e,t,r,i,n){var s=ce(r);ke(e,{name:t=he(t),fromWireType:function(e){return!!e},toWireType:function(e,t){return t?i:n},argPackAdvance:8,readValueFromPointer:function(e){var i;if(1===r)i=U;else if(2===r)i=A;else{if(4!==r)throw new TypeError("Unknown boolean type size: "+t);i=T}return this.fromWireType(i[e>>s])},destructorFunction:null})},s:function(e,r,i,n,s,o,a,l,d,u,c,f,h){c=he(c),o=ct(s,o),l&&(l=ct(a,l)),u&&(u=ct(d,u)),h=ct(f,h);var p=ve(c);!function(e,r,i){t.hasOwnProperty(e)?((void 0===i||void 0!==t[e].overloadTable&&void 0!==t[e].overloadTable[i])&&Se("Cannot register public name '"+e+"' twice"),Ze(t,e,e),t.hasOwnProperty(i)&&Se("Cannot register multiple overloads of a function with the same number of arguments ("+i+")!"),t[e].overloadTable[i]=r):(t[e]=r,void 0!==i&&(t[e].numArguments=i))}(p,(function(){pt("Cannot construct "+c+" due to unbound types",[n])})),Ae([e,r,i],n?[n]:[],(function(r){var i,s;r=r[0],s=n?(i=r.registeredClass).instancePrototype:Xe.prototype;var a=be(p,(function(){if(Object.getPrototypeOf(this)!==d)throw new Ee("Use 'new' to construct "+c);if(void 0===f.constructor_body)throw new Ee(c+" has no accessible constructor");var e=f.constructor_body[arguments.length];if(void 0===e)throw new Ee("Tried to invoke ctor of "+c+" with invalid number of parameters ("+arguments.length+") - expected ("+Object.keys(f.constructor_body).toString()+") parameters instead!");return e.apply(this,arguments)})),d=Object.create(s,{constructor:{value:a}});a.prototype=d;var f=new Je(c,a,d,h,i,o,l,u),m=new at(c,f,!0,!1,!1),_=new at(c+"*",f,!1,!1,!1),y=new at(c+" const*",f,!1,!0,!1);return Ie[e]={pointerType:_,constPointerType:y},function(e,r,i){t.hasOwnProperty(e)||xe("Replacing nonexistant public symbol"),void 0!==t[e].overloadTable&&void 0!==i?t[e].overloadTable[i]=r:(t[e]=r,t[e].argCount=i)}(p,a),[m,_,y]}))},q:function(e,t,r,i,n,s){E(t>0);var o=mt(t,r);n=ct(i,n),Ae([],[e],(function(e){var r="constructor "+(e=e[0]).name;if(void 0===e.registeredClass.constructor_body&&(e.registeredClass.constructor_body=[]),void 0!==e.registeredClass.constructor_body[t-1])throw new Ee("Cannot register multiple constructors with identical number of parameters ("+(t-1)+") for class '"+e.name+"'! Overload resolution is currently only performed using the parameter count, not actual type info!");return e.registeredClass.constructor_body[t-1]=()=>{pt("Cannot construct "+e.name+" due to unbound types",o)},Ae([],o,(function(i){return i.splice(1,0,null),e.registeredClass.constructor_body[t-1]=gt(r,i,null,n,s),[]})),[]}))},d:function(e,t,r,i,n,s,o,a){var l=mt(r,i);t=he(t),s=ct(n,s),Ae([],[e],(function(e){var i=(e=e[0]).name+"."+t;function n(){pt("Cannot call "+i+" due to unbound types",l)}t.startsWith("@@")&&(t=Symbol[t.substring(2)]),a&&e.registeredClass.pureVirtualFunctions.push(t);var d=e.registeredClass.instancePrototype,u=d[t];return void 0===u||void 0===u.overloadTable&&u.className!==e.name&&u.argCount===r-2?(n.argCount=r-2,n.className=e.name,d[t]=n):(Ze(d,t,i),d[t].overloadTable[r-2]=n),Ae([],l,(function(n){var a=gt(i,n,e,s,o);return void 0===d[t].overloadTable?(a.argCount=r-2,d[t]=a):d[t].overloadTable[r-2]=a,[]})),[]}))},D:function(e,t){ke(e,{name:t=he(t),fromWireType:function(e){var t=Ut.toValue(e);return wt(e),t},toWireType:function(e,t){return Ut.toHandle(t)},argPackAdvance:8,readValueFromPointer:it,destructorFunction:null})},l:function(e,t,r){var i=ce(r);ke(e,{name:t=he(t),fromWireType:function(e){return e},toWireType:function(e,t){return t},argPackAdvance:8,readValueFromPointer:At(t,i),destructorFunction:null})},c:function(e,t,r,i,n){t=he(t);var s=ce(r),o=e=>e;if(0===i){var a=32-8*r;o=e=>e<>>a}var l=t.includes("unsigned");ke(e,{name:t,fromWireType:o,toWireType:l?function(e,t){return this.name,t>>>0}:function(e,t){return this.name,t},argPackAdvance:8,readValueFromPointer:kt(t,s,0!==i),destructorFunction:null})},b:function(e,t,r){var i=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][t];function n(e){var t=B,r=t[e>>=2],n=t[e+1];return new i(S,n,r)}ke(e,{name:r=he(r),fromWireType:n,argPackAdvance:8,readValueFromPointer:n},{ignoreDuplicateRegistrations:!0})},k:function(e,t){var r="std::string"===(t=he(t));ke(e,{name:t,fromWireType:function(e){var t,i=B[e>>2],n=e+4;if(r)for(var s=n,o=0;o<=i;++o){var a=n+o;if(o==i||0==x[a]){var l=L(s,a-s);void 0===t?t=l:(t+=String.fromCharCode(0),t+=l),s=a+1}}else{var d=new Array(i);for(o=0;o>2]=i,r&&n)R(t,x,o,i+1);else if(n)for(var a=0;a255&&(Vt(o),Se("String has UTF-16 code units that do not fit in 8 bits")),x[o+a]=l}else for(a=0;ak,a=1):4===t&&(i=Ft,n=Pt,o=It,s=()=>B,a=2),ke(e,{name:r,fromWireType:function(e){for(var r,n=B[e>>2],o=s(),l=e+4,d=0;d<=n;++d){var u=e+4+d*t;if(d==n||0==o[u>>a]){var c=i(l,u-l);void 0===r?r=c:(r+=String.fromCharCode(0),r+=c),l=u+t}}return Vt(e),r},toWireType:function(e,i){"string"!=typeof i&&Se("Cannot pass non-string to C++ string type "+r);var s=o(i),l=jt(4+s+t);return B[l>>2]=s>>a,n(i,l+4,s+t),null!==e&&e.push(Vt,l),l},argPackAdvance:8,readValueFromPointer:it,destructorFunction:function(e){Vt(e)}})},n:function(e,t){ke(e,{isVoid:!0,name:t=he(t),argPackAdvance:0,fromWireType:function(){},toWireType:function(e,t){}})},e:function(){return Date.now()},i:function(e,t,r,i){var n,s;(e=Rt[e])(t=Ut.toValue(t),r=void 0===(s=Lt[n=r])?he(n):s,null,i)},g:wt,m:function(e,t){var r=function(e,t){for(var r,i,n,s=new Array(e),o=0;o>2],i="parameter "+o,n=void 0,void 0===(n=me[r])&&Se(i+" has unknown type "+ht(r)),n);return s}(e,t),i=r[0],n=i.name+"_$"+r.slice(1).map((function(e){return e.name})).join("_")+"$",s=Mt[n];if(void 0!==s)return s;for(var o=["retType"],a=[i],l="",d=0;d>2]=s,function(e,t,r){for(var i=0;i>2]=r.length;var i=0;return r.forEach((function(e){i+=e.length+1})),B[t>>2]=i,0},j:function(e){try{var t=ue.getStreamFromFD(e);return de.close(t),0}catch(e){if(void 0===de||!(e instanceof de.ErrnoError))throw e;return e.errno}},x:function(e,t){try{var r=ue.getStreamFromFD(e),i=r.tty?2:de.isDir(r.mode)?3:de.isLink(r.mode)?7:4;return U[0|t]=i,0}catch(e){if(void 0===de||!(e instanceof de.ErrnoError))throw e;return e.errno}},B:function(e,t,r,i){try{var n=function(e,t,r,i){for(var n=0,s=0;s>2],a=B[t+4>>2];t+=8;var l=de.read(e,U,o,a,i);if(l<0)return-1;if(n+=l,l>2]=n,0}catch(e){if(void 0===de||!(e instanceof de.ErrnoError))throw e;return e.errno}},r:function(e,t,r,i,n){try{var s=(l=r)+2097152>>>0<4194305-!!(a=t)?(a>>>0)+4294967296*l:NaN;if(isNaN(s))return 61;var o=ue.getStreamFromFD(e);return de.llseek(o,s,i),K=[o.position>>>0,(q=o.position,+Math.abs(q)>=1?q>0?(0|Math.min(+Math.floor(q/4294967296),4294967295))>>>0:~~+Math.ceil((q-+(~~q>>>0))/4294967296)>>>0:0)],T[n>>2]=K[0],T[n+4>>2]=K[1],o.getdents&&0===s&&0===i&&(o.getdents=null),0}catch(e){if(void 0===de||!(e instanceof de.ErrnoError))throw e;return e.errno}var a,l},h:function(e,t,r,i){try{var n=function(e,t,r,i){for(var n=0,s=0;s>2],a=B[t+4>>2];t+=8;var l=de.write(e,U,o,a,i);if(l<0)return-1;n+=l}return n}(ue.getStreamFromFD(e),t,r);return B[i>>2]=n,0}catch(e){if(void 0===de||!(e instanceof de.ErrnoError))throw e;return e.errno}},u:function(e){}};!function(){var e={a:Ht};function r(e,r){var i,n,s=e.exports;t.asm=s,v=t.asm.F,i=v.buffer,S=i,t.HEAP8=U=new Int8Array(i),t.HEAP16=A=new Int16Array(i),t.HEAP32=T=new Int32Array(i),t.HEAPU8=x=new Uint8Array(i),t.HEAPU16=k=new Uint16Array(i),t.HEAPU32=B=new Uint32Array(i),t.HEAPF32=C=new Float32Array(i),t.HEAPF64=D=new Float64Array(i),F=t.asm.J,n=t.asm.G,N.unshift(n),V()}function n(e){r(e.instance)}function o(t){return function(){if(!g&&(f||h)){if("function"==typeof fetch&&!J(W))return fetch(W,{credentials:"same-origin"}).then((function(e){if(!e.ok)throw"failed to load wasm binary file at '"+W+"'";return e.arrayBuffer()})).catch((function(){return Q(W)}));if(s)return new Promise((function(e,t){s(W,(function(t){e(new Uint8Array(t))}),t)}))}return Promise.resolve().then((function(){return Q(W)}))}().then((function(t){return WebAssembly.instantiate(t,e)})).then((function(e){return e})).then(t,(function(e){y("failed to asynchronously prepare wasm: "+e),j(e)}))}if(H(),t.instantiateWasm)try{return t.instantiateWasm(e,r)}catch(e){return y("Module.instantiateWasm callback failed with error: "+e),!1}(g||"function"!=typeof WebAssembly.instantiateStreaming||Z(W)||J(W)||p||"function"!=typeof fetch?o(n):fetch(W,{credentials:"same-origin"}).then((function(t){return WebAssembly.instantiateStreaming(t,e).then(n,(function(e){return y("wasm streaming compile failed: "+e),y("falling back to ArrayBuffer instantiation"),o(n)}))}))).catch(i)}(),t.___wasm_call_ctors=function(){return(t.___wasm_call_ctors=t.asm.G).apply(null,arguments)};var Vt=t._free=function(){return(Vt=t._free=t.asm.H).apply(null,arguments)},jt=t._malloc=function(){return(jt=t._malloc=t.asm.I).apply(null,arguments)},Wt=t.___errno_location=function(){return(Wt=t.___errno_location=t.asm.K).apply(null,arguments)},Yt=t.___getTypeName=function(){return(Yt=t.___getTypeName=t.asm.L).apply(null,arguments)};t.___embind_register_native_and_builtin_types=function(){return(t.___embind_register_native_and_builtin_types=t.asm.M).apply(null,arguments)};var qt,Kt=t._emscripten_builtin_memalign=function(){return(Kt=t._emscripten_builtin_memalign=t.asm.N).apply(null,arguments)},Xt=t.___cxa_is_pointer_type=function(){return(Xt=t.___cxa_is_pointer_type=t.asm.O).apply(null,arguments)};function Zt(e){function i(){qt||(qt=!0,t.calledRun=!0,w||(t.noFSInit||de.init.initialized||de.init(),de.ignorePermissions=!1,te(N),r(t),t.onRuntimeInitialized&&t.onRuntimeInitialized(),function(){if(t.postRun)for("function"==typeof t.postRun&&(t.postRun=[t.postRun]);t.postRun.length;)e=t.postRun.shift(),O.unshift(e);var e;te(O)}()))}$>0||(function(){if(t.preRun)for("function"==typeof t.preRun&&(t.preRun=[t.preRun]);t.preRun.length;)e=t.preRun.shift(),z.unshift(e);var e;te(z)}(),$>0||(t.setStatus?(t.setStatus("Running..."),setTimeout((function(){setTimeout((function(){t.setStatus("")}),1),i()}),1)):i()))}if(t.dynCall_jiji=function(){return(t.dynCall_jiji=t.asm.P).apply(null,arguments)},t._ff_h264_cabac_tables=74748,G=function e(){qt||Zt(),qt||(G=e)},t.preInit)for("function"==typeof t.preInit&&(t.preInit=[t.preInit]);t.preInit.length>0;)t.preInit.pop()();return Zt(),t.ready}),r=(()=>{var e="undefined"==typeof document&&"undefined"==typeof location?new(require("url").URL)("file:"+__filename).href:"undefined"==typeof document?location.href:document.currentScript&&document.currentScript.src||new URL("decoder-pro.js",document.baseURI).href;return function(t){var r,i;(t=void 0!==(t=t||{})?t:{}).ready=new Promise((function(e,t){r=e,i=t})),(t=void 0!==t?t:{}).locateFile=function(e){return"decoder-pro-audio.wasm"==e&&"undefined"!=typeof EASYPLAYER_PRO_AUDIO_WASM_URL&&""!=EASYPLAYER_PRO_AUDIO_WASM_URL?EASYPLAYER_PRO_AUDIO_WASM_URL:e};var n,s,o,a,l,d,u=Object.assign({},t),c="./this.program",f="object"==typeof window,h="function"==typeof importScripts,p="object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node,m="";p?(m=h?require("path").dirname(m)+"/":__dirname+"/",d=()=>{l||(a=require("fs"),l=require("path"))},n=function(e,t){return d(),e=l.normalize(e),a.readFileSync(e,t?void 0:"utf8")},o=e=>{var t=n(e,!0);return t.buffer||(t=new Uint8Array(t)),t},s=(e,t,r)=>{d(),e=l.normalize(e),a.readFile(e,(function(e,i){e?r(e):t(i.buffer)}))},process.argv.length>1&&(c=process.argv[1].replace(/\\/g,"/")),process.argv.slice(2),process.on("uncaughtException",(function(e){if(!(e instanceof ee))throw e})),process.on("unhandledRejection",(function(e){throw e})),t.inspect=function(){return"[Emscripten Module object]"}):(f||h)&&(h?m=self.location.href:"undefined"!=typeof document&&document.currentScript&&(m=document.currentScript.src),e&&(m=e),m=0!==m.indexOf("blob:")?m.substr(0,m.replace(/[?#].*/,"").lastIndexOf("/")+1):"",n=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.send(null),t.responseText},h&&(o=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.responseType="arraybuffer",t.send(null),new Uint8Array(t.response)}),s=(e,t,r)=>{var i=new XMLHttpRequest;i.open("GET",e,!0),i.responseType="arraybuffer",i.onload=()=>{200==i.status||0==i.status&&i.response?t(i.response):r()},i.onerror=r,i.send(null)});var _=t.print||console.log.bind(console),y=t.printErr||console.warn.bind(console);Object.assign(t,u),u=null,t.arguments&&t.arguments,t.thisProgram&&(c=t.thisProgram),t.quit&&t.quit;var g,v,b=4;t.wasmBinary&&(g=t.wasmBinary),t.noExitRuntime,"object"!=typeof WebAssembly&&j("no native wasm support detected");var w=!1;function E(e,t){e||j(t)}var S,U,x,A,k,T,B,C,D,F,P="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0;function I(e,t,r){for(var i=t+r,n=t;e[n]&&!(n>=i);)++n;if(n-t>16&&e.buffer&&P)return P.decode(e.subarray(t,n));for(var s="";t>10,56320|1023&d)}}else s+=String.fromCharCode((31&o)<<6|a)}else s+=String.fromCharCode(o)}return s}function L(e,t){return e?I(x,e,t):""}function R(e,t,r,i){if(!(i>0))return 0;for(var n=r,s=r+i-1,o=0;o=55296&&a<=57343)a=65536+((1023&a)<<10)|1023&e.charCodeAt(++o);if(a<=127){if(r>=s)break;t[r++]=a}else if(a<=2047){if(r+1>=s)break;t[r++]=192|a>>6,t[r++]=128|63&a}else if(a<=65535){if(r+2>=s)break;t[r++]=224|a>>12,t[r++]=128|a>>6&63,t[r++]=128|63&a}else{if(r+3>=s)break;t[r++]=240|a>>18,t[r++]=128|a>>12&63,t[r++]=128|a>>6&63,t[r++]=128|63&a}}return t[r]=0,r-n}function M(e){for(var t=0,r=0;r=55296&&i<=57343?(t+=4,++r):t+=3}return t}t.INITIAL_MEMORY;var z=[],N=[],O=[];var $=0,G=null;function H(e){$++,t.monitorRunDependencies&&t.monitorRunDependencies($)}function V(e){if($--,t.monitorRunDependencies&&t.monitorRunDependencies($),0==$&&G){var r=G;G=null,r()}}function j(e){t.onAbort&&t.onAbort(e),y(e="Aborted("+e+")"),w=!0,e+=". Build with -sASSERTIONS for more info.";var r=new WebAssembly.RuntimeError(e);throw i(r),r}var W,Y,q,K,X="data:application/octet-stream;base64,";function Z(e){return e.startsWith(X)}function J(e){return e.startsWith("file://")}function Q(e){try{if(e==W&&g)return new Uint8Array(g);if(o)return o(e);throw"both async and sync fetching of the wasm failed"}catch(e){j(e)}}function ee(e){this.name="ExitStatus",this.message="Program terminated with exit("+e+")",this.status=e}function te(e){for(;e.length>0;)e.shift()(t)}function re(e){this.excPtr=e,this.ptr=e-24,this.set_type=function(e){B[this.ptr+4>>2]=e},this.get_type=function(){return B[this.ptr+4>>2]},this.set_destructor=function(e){B[this.ptr+8>>2]=e},this.get_destructor=function(){return B[this.ptr+8>>2]},this.set_refcount=function(e){T[this.ptr>>2]=e},this.set_caught=function(e){e=e?1:0,U[this.ptr+12|0]=e},this.get_caught=function(){return 0!=U[this.ptr+12|0]},this.set_rethrown=function(e){e=e?1:0,U[this.ptr+13|0]=e},this.get_rethrown=function(){return 0!=U[this.ptr+13|0]},this.init=function(e,t){this.set_adjusted_ptr(0),this.set_type(e),this.set_destructor(t),this.set_refcount(0),this.set_caught(!1),this.set_rethrown(!1)},this.add_ref=function(){var e=T[this.ptr>>2];T[this.ptr>>2]=e+1},this.release_ref=function(){var e=T[this.ptr>>2];return T[this.ptr>>2]=e-1,1===e},this.set_adjusted_ptr=function(e){B[this.ptr+16>>2]=e},this.get_adjusted_ptr=function(){return B[this.ptr+16>>2]},this.get_exception_ptr=function(){if(Xt(this.get_type()))return B[this.excPtr>>2];var e=this.get_adjusted_ptr();return 0!==e?e:this.excPtr}}t.locateFile?Z(W="decoder-pro-audio.wasm")||(Y=W,W=t.locateFile?t.locateFile(Y,m):m+Y):W=new URL("decoder-pro-audio.wasm","undefined"==typeof document&&"undefined"==typeof location?new(require("url").URL)("file:"+__filename).href:"undefined"==typeof document?location.href:document.currentScript&&document.currentScript.src||new URL("decoder-pro.js",document.baseURI).href).toString();var ie={isAbs:e=>"/"===e.charAt(0),splitPath:e=>/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(e).slice(1),normalizeArray:(e,t)=>{for(var r=0,i=e.length-1;i>=0;i--){var n=e[i];"."===n?e.splice(i,1):".."===n?(e.splice(i,1),r++):r&&(e.splice(i,1),r--)}if(t)for(;r;r--)e.unshift("..");return e},normalize:e=>{var t=ie.isAbs(e),r="/"===e.substr(-1);return(e=ie.normalizeArray(e.split("/").filter((e=>!!e)),!t).join("/"))||t||(e="."),e&&r&&(e+="/"),(t?"/":"")+e},dirname:e=>{var t=ie.splitPath(e),r=t[0],i=t[1];return r||i?(i&&(i=i.substr(0,i.length-1)),r+i):"."},basename:e=>{if("/"===e)return"/";var t=(e=(e=ie.normalize(e)).replace(/\/$/,"")).lastIndexOf("/");return-1===t?e:e.substr(t+1)},join:function(){var e=Array.prototype.slice.call(arguments,0);return ie.normalize(e.join("/"))},join2:(e,t)=>ie.normalize(e+"/"+t)};var ne={resolve:function(){for(var e="",t=!1,r=arguments.length-1;r>=-1&&!t;r--){var i=r>=0?arguments[r]:de.cwd();if("string"!=typeof i)throw new TypeError("Arguments to path.resolve must be strings");if(!i)return"";e=i+"/"+e,t=ie.isAbs(i)}return(t?"/":"")+(e=ie.normalizeArray(e.split("/").filter((e=>!!e)),!t).join("/"))||"."},relative:(e,t)=>{function r(e){for(var t=0;t=0&&""===e[r];r--);return t>r?[]:e.slice(t,r-t+1)}e=ne.resolve(e).substr(1),t=ne.resolve(t).substr(1);for(var i=r(e.split("/")),n=r(t.split("/")),s=Math.min(i.length,n.length),o=s,a=0;a0?r:M(e)+1,n=new Array(i),s=R(e,n,0,n.length);return t&&(n.length=s),n}var oe={ttys:[],init:function(){},shutdown:function(){},register:function(e,t){oe.ttys[e]={input:[],output:[],ops:t},de.registerDevice(e,oe.stream_ops)},stream_ops:{open:function(e){var t=oe.ttys[e.node.rdev];if(!t)throw new de.ErrnoError(43);e.tty=t,e.seekable=!1},close:function(e){e.tty.ops.flush(e.tty)},flush:function(e){e.tty.ops.flush(e.tty)},read:function(e,t,r,i,n){if(!e.tty||!e.tty.ops.get_char)throw new de.ErrnoError(60);for(var s=0,o=0;o0?r.slice(0,i).toString("utf-8"):null}else"undefined"!=typeof window&&"function"==typeof window.prompt?null!==(t=window.prompt("Input: "))&&(t+="\n"):"function"==typeof readline&&null!==(t=readline())&&(t+="\n");if(!t)return null;e.input=se(t,!0)}return e.input.shift()},put_char:function(e,t){null===t||10===t?(_(I(e.output,0)),e.output=[]):0!=t&&e.output.push(t)},flush:function(e){e.output&&e.output.length>0&&(_(I(e.output,0)),e.output=[])}},default_tty1_ops:{put_char:function(e,t){null===t||10===t?(y(I(e.output,0)),e.output=[]):0!=t&&e.output.push(t)},flush:function(e){e.output&&e.output.length>0&&(y(I(e.output,0)),e.output=[])}}};function ae(e){e=function(e,t){return Math.ceil(e/t)*t}(e,65536);var t=Kt(65536,e);return t?(function(e,t){x.fill(0,e,e+t)}(t,e),t):0}var le={ops_table:null,mount:function(e){return le.createNode(null,"/",16895,0)},createNode:function(e,t,r,i){if(de.isBlkdev(r)||de.isFIFO(r))throw new de.ErrnoError(63);le.ops_table||(le.ops_table={dir:{node:{getattr:le.node_ops.getattr,setattr:le.node_ops.setattr,lookup:le.node_ops.lookup,mknod:le.node_ops.mknod,rename:le.node_ops.rename,unlink:le.node_ops.unlink,rmdir:le.node_ops.rmdir,readdir:le.node_ops.readdir,symlink:le.node_ops.symlink},stream:{llseek:le.stream_ops.llseek}},file:{node:{getattr:le.node_ops.getattr,setattr:le.node_ops.setattr},stream:{llseek:le.stream_ops.llseek,read:le.stream_ops.read,write:le.stream_ops.write,allocate:le.stream_ops.allocate,mmap:le.stream_ops.mmap,msync:le.stream_ops.msync}},link:{node:{getattr:le.node_ops.getattr,setattr:le.node_ops.setattr,readlink:le.node_ops.readlink},stream:{}},chrdev:{node:{getattr:le.node_ops.getattr,setattr:le.node_ops.setattr},stream:de.chrdev_stream_ops}});var n=de.createNode(e,t,r,i);return de.isDir(n.mode)?(n.node_ops=le.ops_table.dir.node,n.stream_ops=le.ops_table.dir.stream,n.contents={}):de.isFile(n.mode)?(n.node_ops=le.ops_table.file.node,n.stream_ops=le.ops_table.file.stream,n.usedBytes=0,n.contents=null):de.isLink(n.mode)?(n.node_ops=le.ops_table.link.node,n.stream_ops=le.ops_table.link.stream):de.isChrdev(n.mode)&&(n.node_ops=le.ops_table.chrdev.node,n.stream_ops=le.ops_table.chrdev.stream),n.timestamp=Date.now(),e&&(e.contents[t]=n,e.timestamp=n.timestamp),n},getFileDataAsTypedArray:function(e){return e.contents?e.contents.subarray?e.contents.subarray(0,e.usedBytes):new Uint8Array(e.contents):new Uint8Array(0)},expandFileStorage:function(e,t){var r=e.contents?e.contents.length:0;if(!(r>=t)){t=Math.max(t,r*(r<1048576?2:1.125)>>>0),0!=r&&(t=Math.max(t,256));var i=e.contents;e.contents=new Uint8Array(t),e.usedBytes>0&&e.contents.set(i.subarray(0,e.usedBytes),0)}},resizeFileStorage:function(e,t){if(e.usedBytes!=t)if(0==t)e.contents=null,e.usedBytes=0;else{var r=e.contents;e.contents=new Uint8Array(t),r&&e.contents.set(r.subarray(0,Math.min(t,e.usedBytes))),e.usedBytes=t}},node_ops:{getattr:function(e){var t={};return t.dev=de.isChrdev(e.mode)?e.id:1,t.ino=e.id,t.mode=e.mode,t.nlink=1,t.uid=0,t.gid=0,t.rdev=e.rdev,de.isDir(e.mode)?t.size=4096:de.isFile(e.mode)?t.size=e.usedBytes:de.isLink(e.mode)?t.size=e.link.length:t.size=0,t.atime=new Date(e.timestamp),t.mtime=new Date(e.timestamp),t.ctime=new Date(e.timestamp),t.blksize=4096,t.blocks=Math.ceil(t.size/t.blksize),t},setattr:function(e,t){void 0!==t.mode&&(e.mode=t.mode),void 0!==t.timestamp&&(e.timestamp=t.timestamp),void 0!==t.size&&le.resizeFileStorage(e,t.size)},lookup:function(e,t){throw de.genericErrors[44]},mknod:function(e,t,r,i){return le.createNode(e,t,r,i)},rename:function(e,t,r){if(de.isDir(e.mode)){var i;try{i=de.lookupNode(t,r)}catch(e){}if(i)for(var n in i.contents)throw new de.ErrnoError(55)}delete e.parent.contents[e.name],e.parent.timestamp=Date.now(),e.name=r,t.contents[r]=e,t.timestamp=e.parent.timestamp,e.parent=t},unlink:function(e,t){delete e.contents[t],e.timestamp=Date.now()},rmdir:function(e,t){var r=de.lookupNode(e,t);for(var i in r.contents)throw new de.ErrnoError(55);delete e.contents[t],e.timestamp=Date.now()},readdir:function(e){var t=[".",".."];for(var r in e.contents)e.contents.hasOwnProperty(r)&&t.push(r);return t},symlink:function(e,t,r){var i=le.createNode(e,t,41471,0);return i.link=r,i},readlink:function(e){if(!de.isLink(e.mode))throw new de.ErrnoError(28);return e.link}},stream_ops:{read:function(e,t,r,i,n){var s=e.node.contents;if(n>=e.node.usedBytes)return 0;var o=Math.min(e.node.usedBytes-n,i);if(o>8&&s.subarray)t.set(s.subarray(n,n+o),r);else for(var a=0;a0||r+t{if(!(e=ne.resolve(de.cwd(),e)))return{path:"",node:null};if((t=Object.assign({follow_mount:!0,recurse_count:0},t)).recurse_count>8)throw new de.ErrnoError(32);for(var r=ie.normalizeArray(e.split("/").filter((e=>!!e)),!1),i=de.root,n="/",s=0;s40)throw new de.ErrnoError(32)}}return{path:n,node:i}},getPath:e=>{for(var t;;){if(de.isRoot(e)){var r=e.mount.mountpoint;return t?"/"!==r[r.length-1]?r+"/"+t:r+t:r}t=t?e.name+"/"+t:e.name,e=e.parent}},hashName:(e,t)=>{for(var r=0,i=0;i>>0)%de.nameTable.length},hashAddNode:e=>{var t=de.hashName(e.parent.id,e.name);e.name_next=de.nameTable[t],de.nameTable[t]=e},hashRemoveNode:e=>{var t=de.hashName(e.parent.id,e.name);if(de.nameTable[t]===e)de.nameTable[t]=e.name_next;else for(var r=de.nameTable[t];r;){if(r.name_next===e){r.name_next=e.name_next;break}r=r.name_next}},lookupNode:(e,t)=>{var r=de.mayLookup(e);if(r)throw new de.ErrnoError(r,e);for(var i=de.hashName(e.id,t),n=de.nameTable[i];n;n=n.name_next){var s=n.name;if(n.parent.id===e.id&&s===t)return n}return de.lookup(e,t)},createNode:(e,t,r,i)=>{var n=new de.FSNode(e,t,r,i);return de.hashAddNode(n),n},destroyNode:e=>{de.hashRemoveNode(e)},isRoot:e=>e===e.parent,isMountpoint:e=>!!e.mounted,isFile:e=>32768==(61440&e),isDir:e=>16384==(61440&e),isLink:e=>40960==(61440&e),isChrdev:e=>8192==(61440&e),isBlkdev:e=>24576==(61440&e),isFIFO:e=>4096==(61440&e),isSocket:e=>!(49152&~e),flagModes:{r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090},modeStringToFlags:e=>{var t=de.flagModes[e];if(void 0===t)throw new Error("Unknown file open mode: "+e);return t},flagsToPermissionString:e=>{var t=["r","w","rw"][3&e];return 512&e&&(t+="w"),t},nodePermissions:(e,t)=>de.ignorePermissions||(!t.includes("r")||292&e.mode)&&(!t.includes("w")||146&e.mode)&&(!t.includes("x")||73&e.mode)?0:2,mayLookup:e=>{var t=de.nodePermissions(e,"x");return t||(e.node_ops.lookup?0:2)},mayCreate:(e,t)=>{try{de.lookupNode(e,t);return 20}catch(e){}return de.nodePermissions(e,"wx")},mayDelete:(e,t,r)=>{var i;try{i=de.lookupNode(e,t)}catch(e){return e.errno}var n=de.nodePermissions(e,"wx");if(n)return n;if(r){if(!de.isDir(i.mode))return 54;if(de.isRoot(i)||de.getPath(i)===de.cwd())return 10}else if(de.isDir(i.mode))return 31;return 0},mayOpen:(e,t)=>e?de.isLink(e.mode)?32:de.isDir(e.mode)&&("r"!==de.flagsToPermissionString(t)||512&t)?31:de.nodePermissions(e,de.flagsToPermissionString(t)):44,MAX_OPEN_FDS:4096,nextfd:(e=0,t=de.MAX_OPEN_FDS)=>{for(var r=e;r<=t;r++)if(!de.streams[r])return r;throw new de.ErrnoError(33)},getStream:e=>de.streams[e],createStream:(e,t,r)=>{de.FSStream||(de.FSStream=function(){this.shared={}},de.FSStream.prototype={},Object.defineProperties(de.FSStream.prototype,{object:{get:function(){return this.node},set:function(e){this.node=e}},isRead:{get:function(){return 1!=(2097155&this.flags)}},isWrite:{get:function(){return!!(2097155&this.flags)}},isAppend:{get:function(){return 1024&this.flags}},flags:{get:function(){return this.shared.flags},set:function(e){this.shared.flags=e}},position:{get:function(){return this.shared.position},set:function(e){this.shared.position=e}}})),e=Object.assign(new de.FSStream,e);var i=de.nextfd(t,r);return e.fd=i,de.streams[i]=e,e},closeStream:e=>{de.streams[e]=null},chrdev_stream_ops:{open:e=>{var t=de.getDevice(e.node.rdev);e.stream_ops=t.stream_ops,e.stream_ops.open&&e.stream_ops.open(e)},llseek:()=>{throw new de.ErrnoError(70)}},major:e=>e>>8,minor:e=>255&e,makedev:(e,t)=>e<<8|t,registerDevice:(e,t)=>{de.devices[e]={stream_ops:t}},getDevice:e=>de.devices[e],getMounts:e=>{for(var t=[],r=[e];r.length;){var i=r.pop();t.push(i),r.push.apply(r,i.mounts)}return t},syncfs:(e,t)=>{"function"==typeof e&&(t=e,e=!1),de.syncFSRequests++,de.syncFSRequests>1&&y("warning: "+de.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work");var r=de.getMounts(de.root.mount),i=0;function n(e){return de.syncFSRequests--,t(e)}function s(e){if(e)return s.errored?void 0:(s.errored=!0,n(e));++i>=r.length&&n(null)}r.forEach((t=>{if(!t.type.syncfs)return s(null);t.type.syncfs(t,e,s)}))},mount:(e,t,r)=>{var i,n="/"===r,s=!r;if(n&&de.root)throw new de.ErrnoError(10);if(!n&&!s){var o=de.lookupPath(r,{follow_mount:!1});if(r=o.path,i=o.node,de.isMountpoint(i))throw new de.ErrnoError(10);if(!de.isDir(i.mode))throw new de.ErrnoError(54)}var a={type:e,opts:t,mountpoint:r,mounts:[]},l=e.mount(a);return l.mount=a,a.root=l,n?de.root=l:i&&(i.mounted=a,i.mount&&i.mount.mounts.push(a)),l},unmount:e=>{var t=de.lookupPath(e,{follow_mount:!1});if(!de.isMountpoint(t.node))throw new de.ErrnoError(28);var r=t.node,i=r.mounted,n=de.getMounts(i);Object.keys(de.nameTable).forEach((e=>{for(var t=de.nameTable[e];t;){var r=t.name_next;n.includes(t.mount)&&de.destroyNode(t),t=r}})),r.mounted=null;var s=r.mount.mounts.indexOf(i);r.mount.mounts.splice(s,1)},lookup:(e,t)=>e.node_ops.lookup(e,t),mknod:(e,t,r)=>{var i=de.lookupPath(e,{parent:!0}).node,n=ie.basename(e);if(!n||"."===n||".."===n)throw new de.ErrnoError(28);var s=de.mayCreate(i,n);if(s)throw new de.ErrnoError(s);if(!i.node_ops.mknod)throw new de.ErrnoError(63);return i.node_ops.mknod(i,n,t,r)},create:(e,t)=>(t=void 0!==t?t:438,t&=4095,t|=32768,de.mknod(e,t,0)),mkdir:(e,t)=>(t=void 0!==t?t:511,t&=1023,t|=16384,de.mknod(e,t,0)),mkdirTree:(e,t)=>{for(var r=e.split("/"),i="",n=0;n(void 0===r&&(r=t,t=438),t|=8192,de.mknod(e,t,r)),symlink:(e,t)=>{if(!ne.resolve(e))throw new de.ErrnoError(44);var r=de.lookupPath(t,{parent:!0}).node;if(!r)throw new de.ErrnoError(44);var i=ie.basename(t),n=de.mayCreate(r,i);if(n)throw new de.ErrnoError(n);if(!r.node_ops.symlink)throw new de.ErrnoError(63);return r.node_ops.symlink(r,i,e)},rename:(e,t)=>{var r,i,n=ie.dirname(e),s=ie.dirname(t),o=ie.basename(e),a=ie.basename(t);if(r=de.lookupPath(e,{parent:!0}).node,i=de.lookupPath(t,{parent:!0}).node,!r||!i)throw new de.ErrnoError(44);if(r.mount!==i.mount)throw new de.ErrnoError(75);var l,d=de.lookupNode(r,o),u=ne.relative(e,s);if("."!==u.charAt(0))throw new de.ErrnoError(28);if("."!==(u=ne.relative(t,n)).charAt(0))throw new de.ErrnoError(55);try{l=de.lookupNode(i,a)}catch(e){}if(d!==l){var c=de.isDir(d.mode),f=de.mayDelete(r,o,c);if(f)throw new de.ErrnoError(f);if(f=l?de.mayDelete(i,a,c):de.mayCreate(i,a))throw new de.ErrnoError(f);if(!r.node_ops.rename)throw new de.ErrnoError(63);if(de.isMountpoint(d)||l&&de.isMountpoint(l))throw new de.ErrnoError(10);if(i!==r&&(f=de.nodePermissions(r,"w")))throw new de.ErrnoError(f);de.hashRemoveNode(d);try{r.node_ops.rename(d,i,a)}catch(e){throw e}finally{de.hashAddNode(d)}}},rmdir:e=>{var t=de.lookupPath(e,{parent:!0}).node,r=ie.basename(e),i=de.lookupNode(t,r),n=de.mayDelete(t,r,!0);if(n)throw new de.ErrnoError(n);if(!t.node_ops.rmdir)throw new de.ErrnoError(63);if(de.isMountpoint(i))throw new de.ErrnoError(10);t.node_ops.rmdir(t,r),de.destroyNode(i)},readdir:e=>{var t=de.lookupPath(e,{follow:!0}).node;if(!t.node_ops.readdir)throw new de.ErrnoError(54);return t.node_ops.readdir(t)},unlink:e=>{var t=de.lookupPath(e,{parent:!0}).node;if(!t)throw new de.ErrnoError(44);var r=ie.basename(e),i=de.lookupNode(t,r),n=de.mayDelete(t,r,!1);if(n)throw new de.ErrnoError(n);if(!t.node_ops.unlink)throw new de.ErrnoError(63);if(de.isMountpoint(i))throw new de.ErrnoError(10);t.node_ops.unlink(t,r),de.destroyNode(i)},readlink:e=>{var t=de.lookupPath(e).node;if(!t)throw new de.ErrnoError(44);if(!t.node_ops.readlink)throw new de.ErrnoError(28);return ne.resolve(de.getPath(t.parent),t.node_ops.readlink(t))},stat:(e,t)=>{var r=de.lookupPath(e,{follow:!t}).node;if(!r)throw new de.ErrnoError(44);if(!r.node_ops.getattr)throw new de.ErrnoError(63);return r.node_ops.getattr(r)},lstat:e=>de.stat(e,!0),chmod:(e,t,r)=>{var i;"string"==typeof e?i=de.lookupPath(e,{follow:!r}).node:i=e;if(!i.node_ops.setattr)throw new de.ErrnoError(63);i.node_ops.setattr(i,{mode:4095&t|-4096&i.mode,timestamp:Date.now()})},lchmod:(e,t)=>{de.chmod(e,t,!0)},fchmod:(e,t)=>{var r=de.getStream(e);if(!r)throw new de.ErrnoError(8);de.chmod(r.node,t)},chown:(e,t,r,i)=>{var n;"string"==typeof e?n=de.lookupPath(e,{follow:!i}).node:n=e;if(!n.node_ops.setattr)throw new de.ErrnoError(63);n.node_ops.setattr(n,{timestamp:Date.now()})},lchown:(e,t,r)=>{de.chown(e,t,r,!0)},fchown:(e,t,r)=>{var i=de.getStream(e);if(!i)throw new de.ErrnoError(8);de.chown(i.node,t,r)},truncate:(e,t)=>{if(t<0)throw new de.ErrnoError(28);var r;"string"==typeof e?r=de.lookupPath(e,{follow:!0}).node:r=e;if(!r.node_ops.setattr)throw new de.ErrnoError(63);if(de.isDir(r.mode))throw new de.ErrnoError(31);if(!de.isFile(r.mode))throw new de.ErrnoError(28);var i=de.nodePermissions(r,"w");if(i)throw new de.ErrnoError(i);r.node_ops.setattr(r,{size:t,timestamp:Date.now()})},ftruncate:(e,t)=>{var r=de.getStream(e);if(!r)throw new de.ErrnoError(8);if(!(2097155&r.flags))throw new de.ErrnoError(28);de.truncate(r.node,t)},utime:(e,t,r)=>{var i=de.lookupPath(e,{follow:!0}).node;i.node_ops.setattr(i,{timestamp:Math.max(t,r)})},open:(e,r,i)=>{if(""===e)throw new de.ErrnoError(44);var n;if(i=void 0===i?438:i,i=64&(r="string"==typeof r?de.modeStringToFlags(r):r)?4095&i|32768:0,"object"==typeof e)n=e;else{e=ie.normalize(e);try{n=de.lookupPath(e,{follow:!(131072&r)}).node}catch(e){}}var s=!1;if(64&r)if(n){if(128&r)throw new de.ErrnoError(20)}else n=de.mknod(e,i,0),s=!0;if(!n)throw new de.ErrnoError(44);if(de.isChrdev(n.mode)&&(r&=-513),65536&r&&!de.isDir(n.mode))throw new de.ErrnoError(54);if(!s){var o=de.mayOpen(n,r);if(o)throw new de.ErrnoError(o)}512&r&&!s&&de.truncate(n,0),r&=-131713;var a=de.createStream({node:n,path:de.getPath(n),flags:r,seekable:!0,position:0,stream_ops:n.stream_ops,ungotten:[],error:!1});return a.stream_ops.open&&a.stream_ops.open(a),!t.logReadFiles||1&r||(de.readFiles||(de.readFiles={}),e in de.readFiles||(de.readFiles[e]=1)),a},close:e=>{if(de.isClosed(e))throw new de.ErrnoError(8);e.getdents&&(e.getdents=null);try{e.stream_ops.close&&e.stream_ops.close(e)}catch(e){throw e}finally{de.closeStream(e.fd)}e.fd=null},isClosed:e=>null===e.fd,llseek:(e,t,r)=>{if(de.isClosed(e))throw new de.ErrnoError(8);if(!e.seekable||!e.stream_ops.llseek)throw new de.ErrnoError(70);if(0!=r&&1!=r&&2!=r)throw new de.ErrnoError(28);return e.position=e.stream_ops.llseek(e,t,r),e.ungotten=[],e.position},read:(e,t,r,i,n)=>{if(i<0||n<0)throw new de.ErrnoError(28);if(de.isClosed(e))throw new de.ErrnoError(8);if(1==(2097155&e.flags))throw new de.ErrnoError(8);if(de.isDir(e.node.mode))throw new de.ErrnoError(31);if(!e.stream_ops.read)throw new de.ErrnoError(28);var s=void 0!==n;if(s){if(!e.seekable)throw new de.ErrnoError(70)}else n=e.position;var o=e.stream_ops.read(e,t,r,i,n);return s||(e.position+=o),o},write:(e,t,r,i,n,s)=>{if(i<0||n<0)throw new de.ErrnoError(28);if(de.isClosed(e))throw new de.ErrnoError(8);if(!(2097155&e.flags))throw new de.ErrnoError(8);if(de.isDir(e.node.mode))throw new de.ErrnoError(31);if(!e.stream_ops.write)throw new de.ErrnoError(28);e.seekable&&1024&e.flags&&de.llseek(e,0,2);var o=void 0!==n;if(o){if(!e.seekable)throw new de.ErrnoError(70)}else n=e.position;var a=e.stream_ops.write(e,t,r,i,n,s);return o||(e.position+=a),a},allocate:(e,t,r)=>{if(de.isClosed(e))throw new de.ErrnoError(8);if(t<0||r<=0)throw new de.ErrnoError(28);if(!(2097155&e.flags))throw new de.ErrnoError(8);if(!de.isFile(e.node.mode)&&!de.isDir(e.node.mode))throw new de.ErrnoError(43);if(!e.stream_ops.allocate)throw new de.ErrnoError(138);e.stream_ops.allocate(e,t,r)},mmap:(e,t,r,i,n)=>{if(2&i&&!(2&n)&&2!=(2097155&e.flags))throw new de.ErrnoError(2);if(1==(2097155&e.flags))throw new de.ErrnoError(2);if(!e.stream_ops.mmap)throw new de.ErrnoError(43);return e.stream_ops.mmap(e,t,r,i,n)},msync:(e,t,r,i,n)=>e&&e.stream_ops.msync?e.stream_ops.msync(e,t,r,i,n):0,munmap:e=>0,ioctl:(e,t,r)=>{if(!e.stream_ops.ioctl)throw new de.ErrnoError(59);return e.stream_ops.ioctl(e,t,r)},readFile:(e,t={})=>{if(t.flags=t.flags||0,t.encoding=t.encoding||"binary","utf8"!==t.encoding&&"binary"!==t.encoding)throw new Error('Invalid encoding type "'+t.encoding+'"');var r,i=de.open(e,t.flags),n=de.stat(e).size,s=new Uint8Array(n);return de.read(i,s,0,n,0),"utf8"===t.encoding?r=I(s,0):"binary"===t.encoding&&(r=s),de.close(i),r},writeFile:(e,t,r={})=>{r.flags=r.flags||577;var i=de.open(e,r.flags,r.mode);if("string"==typeof t){var n=new Uint8Array(M(t)+1),s=R(t,n,0,n.length);de.write(i,n,0,s,void 0,r.canOwn)}else{if(!ArrayBuffer.isView(t))throw new Error("Unsupported data type");de.write(i,t,0,t.byteLength,void 0,r.canOwn)}de.close(i)},cwd:()=>de.currentPath,chdir:e=>{var t=de.lookupPath(e,{follow:!0});if(null===t.node)throw new de.ErrnoError(44);if(!de.isDir(t.node.mode))throw new de.ErrnoError(54);var r=de.nodePermissions(t.node,"x");if(r)throw new de.ErrnoError(r);de.currentPath=t.path},createDefaultDirectories:()=>{de.mkdir("/tmp"),de.mkdir("/home"),de.mkdir("/home/web_user")},createDefaultDevices:()=>{de.mkdir("/dev"),de.registerDevice(de.makedev(1,3),{read:()=>0,write:(e,t,r,i,n)=>i}),de.mkdev("/dev/null",de.makedev(1,3)),oe.register(de.makedev(5,0),oe.default_tty_ops),oe.register(de.makedev(6,0),oe.default_tty1_ops),de.mkdev("/dev/tty",de.makedev(5,0)),de.mkdev("/dev/tty1",de.makedev(6,0));var e=function(){if("object"==typeof crypto&&"function"==typeof crypto.getRandomValues){var e=new Uint8Array(1);return()=>(crypto.getRandomValues(e),e[0])}if(p)try{var t=require("crypto");return()=>t.randomBytes(1)[0]}catch(e){}return()=>j("randomDevice")}();de.createDevice("/dev","random",e),de.createDevice("/dev","urandom",e),de.mkdir("/dev/shm"),de.mkdir("/dev/shm/tmp")},createSpecialDirectories:()=>{de.mkdir("/proc");var e=de.mkdir("/proc/self");de.mkdir("/proc/self/fd"),de.mount({mount:()=>{var t=de.createNode(e,"fd",16895,73);return t.node_ops={lookup:(e,t)=>{var r=+t,i=de.getStream(r);if(!i)throw new de.ErrnoError(8);var n={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>i.path}};return n.parent=n,n}},t}},{},"/proc/self/fd")},createStandardStreams:()=>{t.stdin?de.createDevice("/dev","stdin",t.stdin):de.symlink("/dev/tty","/dev/stdin"),t.stdout?de.createDevice("/dev","stdout",null,t.stdout):de.symlink("/dev/tty","/dev/stdout"),t.stderr?de.createDevice("/dev","stderr",null,t.stderr):de.symlink("/dev/tty1","/dev/stderr"),de.open("/dev/stdin",0),de.open("/dev/stdout",1),de.open("/dev/stderr",1)},ensureErrnoError:()=>{de.ErrnoError||(de.ErrnoError=function(e,t){this.node=t,this.setErrno=function(e){this.errno=e},this.setErrno(e),this.message="FS error"},de.ErrnoError.prototype=new Error,de.ErrnoError.prototype.constructor=de.ErrnoError,[44].forEach((e=>{de.genericErrors[e]=new de.ErrnoError(e),de.genericErrors[e].stack=""})))},staticInit:()=>{de.ensureErrnoError(),de.nameTable=new Array(4096),de.mount(le,{},"/"),de.createDefaultDirectories(),de.createDefaultDevices(),de.createSpecialDirectories(),de.filesystems={MEMFS:le}},init:(e,r,i)=>{de.init.initialized=!0,de.ensureErrnoError(),t.stdin=e||t.stdin,t.stdout=r||t.stdout,t.stderr=i||t.stderr,de.createStandardStreams()},quit:()=>{de.init.initialized=!1;for(var e=0;e{var r=0;return e&&(r|=365),t&&(r|=146),r},findObject:(e,t)=>{var r=de.analyzePath(e,t);return r.exists?r.object:null},analyzePath:(e,t)=>{try{e=(i=de.lookupPath(e,{follow:!t})).path}catch(e){}var r={isRoot:!1,exists:!1,error:0,name:null,path:null,object:null,parentExists:!1,parentPath:null,parentObject:null};try{var i=de.lookupPath(e,{parent:!0});r.parentExists=!0,r.parentPath=i.path,r.parentObject=i.node,r.name=ie.basename(e),i=de.lookupPath(e,{follow:!t}),r.exists=!0,r.path=i.path,r.object=i.node,r.name=i.node.name,r.isRoot="/"===i.path}catch(e){r.error=e.errno}return r},createPath:(e,t,r,i)=>{e="string"==typeof e?e:de.getPath(e);for(var n=t.split("/").reverse();n.length;){var s=n.pop();if(s){var o=ie.join2(e,s);try{de.mkdir(o)}catch(e){}e=o}}return o},createFile:(e,t,r,i,n)=>{var s=ie.join2("string"==typeof e?e:de.getPath(e),t),o=de.getMode(i,n);return de.create(s,o)},createDataFile:(e,t,r,i,n,s)=>{var o=t;e&&(e="string"==typeof e?e:de.getPath(e),o=t?ie.join2(e,t):e);var a=de.getMode(i,n),l=de.create(o,a);if(r){if("string"==typeof r){for(var d=new Array(r.length),u=0,c=r.length;u{var n=ie.join2("string"==typeof e?e:de.getPath(e),t),s=de.getMode(!!r,!!i);de.createDevice.major||(de.createDevice.major=64);var o=de.makedev(de.createDevice.major++,0);return de.registerDevice(o,{open:e=>{e.seekable=!1},close:e=>{i&&i.buffer&&i.buffer.length&&i(10)},read:(e,t,i,n,s)=>{for(var o=0,a=0;a{for(var o=0;o{if(e.isDevice||e.isFolder||e.link||e.contents)return!0;if("undefined"!=typeof XMLHttpRequest)throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.");if(!n)throw new Error("Cannot load without read() or XMLHttpRequest.");try{e.contents=se(n(e.url),!0),e.usedBytes=e.contents.length}catch(e){throw new de.ErrnoError(29)}},createLazyFile:(e,t,r,i,n)=>{function s(){this.lengthKnown=!1,this.chunks=[]}if(s.prototype.get=function(e){if(!(e>this.length-1||e<0)){var t=e%this.chunkSize,r=e/this.chunkSize|0;return this.getter(r)[t]}},s.prototype.setDataGetter=function(e){this.getter=e},s.prototype.cacheLength=function(){var e=new XMLHttpRequest;if(e.open("HEAD",r,!1),e.send(null),!(e.status>=200&&e.status<300||304===e.status))throw new Error("Couldn't load "+r+". Status: "+e.status);var t,i=Number(e.getResponseHeader("Content-length")),n=(t=e.getResponseHeader("Accept-Ranges"))&&"bytes"===t,s=(t=e.getResponseHeader("Content-Encoding"))&&"gzip"===t,o=1048576;n||(o=i);var a=this;a.setDataGetter((e=>{var t=e*o,n=(e+1)*o-1;if(n=Math.min(n,i-1),void 0===a.chunks[e]&&(a.chunks[e]=((e,t)=>{if(e>t)throw new Error("invalid range ("+e+", "+t+") or no bytes requested!");if(t>i-1)throw new Error("only "+i+" bytes available! programmer error!");var n=new XMLHttpRequest;if(n.open("GET",r,!1),i!==o&&n.setRequestHeader("Range","bytes="+e+"-"+t),n.responseType="arraybuffer",n.overrideMimeType&&n.overrideMimeType("text/plain; charset=x-user-defined"),n.send(null),!(n.status>=200&&n.status<300||304===n.status))throw new Error("Couldn't load "+r+". Status: "+n.status);return void 0!==n.response?new Uint8Array(n.response||[]):se(n.responseText||"",!0)})(t,n)),void 0===a.chunks[e])throw new Error("doXHR failed!");return a.chunks[e]})),!s&&i||(o=i=1,i=this.getter(0).length,o=i,_("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=i,this._chunkSize=o,this.lengthKnown=!0},"undefined"!=typeof XMLHttpRequest){if(!h)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var o=new s;Object.defineProperties(o,{length:{get:function(){return this.lengthKnown||this.cacheLength(),this._length}},chunkSize:{get:function(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}});var a={isDevice:!1,contents:o}}else a={isDevice:!1,url:r};var l=de.createFile(e,t,a,i,n);a.contents?l.contents=a.contents:a.url&&(l.contents=null,l.url=a.url),Object.defineProperties(l,{usedBytes:{get:function(){return this.contents.length}}});var d={};function u(e,t,r,i,n){var s=e.node.contents;if(n>=s.length)return 0;var o=Math.min(s.length-n,i);if(s.slice)for(var a=0;a{var t=l.stream_ops[e];d[e]=function(){return de.forceLoadFile(l),t.apply(null,arguments)}})),d.read=(e,t,r,i,n)=>(de.forceLoadFile(l),u(e,t,r,i,n)),d.mmap=(e,t,r,i,n)=>{de.forceLoadFile(l);var s=ae(t);if(!s)throw new de.ErrnoError(48);return u(e,U,s,t,r),{ptr:s,allocated:!0}},l.stream_ops=d,l},createPreloadedFile:(e,t,r,i,n,o,a,l,d,u)=>{var c=t?ne.resolve(ie.join2(e,t)):e;function f(r){function s(r){u&&u(),l||de.createDataFile(e,t,r,i,n,d),o&&o(),V()}Browser.handledByPreloadPlugin(r,c,s,(()=>{a&&a(),V()}))||s(r)}H(),"string"==typeof r?function(e,t,r,i){var n=i?"":"al "+e;s(e,(r=>{E(r,'Loading data file "'+e+'" failed (no arrayBuffer).'),t(new Uint8Array(r)),n&&V()}),(t=>{if(!r)throw'Loading data file "'+e+'" failed.';r()})),n&&H()}(r,(e=>f(e)),a):f(r)},indexedDB:()=>window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB,DB_NAME:()=>"EM_FS_"+window.location.pathname,DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:(e,t,r)=>{t=t||(()=>{}),r=r||(()=>{});var i=de.indexedDB();try{var n=i.open(de.DB_NAME(),de.DB_VERSION)}catch(e){return r(e)}n.onupgradeneeded=()=>{_("creating db"),n.result.createObjectStore(de.DB_STORE_NAME)},n.onsuccess=()=>{var i=n.result.transaction([de.DB_STORE_NAME],"readwrite"),s=i.objectStore(de.DB_STORE_NAME),o=0,a=0,l=e.length;function d(){0==a?t():r()}e.forEach((e=>{var t=s.put(de.analyzePath(e).object.contents,e);t.onsuccess=()=>{++o+a==l&&d()},t.onerror=()=>{a++,o+a==l&&d()}})),i.onerror=r},n.onerror=r},loadFilesFromDB:(e,t,r)=>{t=t||(()=>{}),r=r||(()=>{});var i=de.indexedDB();try{var n=i.open(de.DB_NAME(),de.DB_VERSION)}catch(e){return r(e)}n.onupgradeneeded=r,n.onsuccess=()=>{var i=n.result;try{var s=i.transaction([de.DB_STORE_NAME],"readonly")}catch(e){return void r(e)}var o=s.objectStore(de.DB_STORE_NAME),a=0,l=0,d=e.length;function u(){0==l?t():r()}e.forEach((e=>{var t=o.get(e);t.onsuccess=()=>{de.analyzePath(e).exists&&de.unlink(e),de.createDataFile(ie.dirname(e),ie.basename(e),t.result,!0,!0,!0),++a+l==d&&u()},t.onerror=()=>{l++,a+l==d&&u()}})),s.onerror=r},n.onerror=r}},ue={DEFAULT_POLLMASK:5,calculateAt:function(e,t,r){if(ie.isAbs(t))return t;var i;if(-100===e)i=de.cwd();else{var n=de.getStream(e);if(!n)throw new de.ErrnoError(8);i=n.path}if(0==t.length){if(!r)throw new de.ErrnoError(44);return i}return ie.join2(i,t)},doStat:function(e,t,r){try{var i=e(t)}catch(e){if(e&&e.node&&ie.normalize(t)!==ie.normalize(de.getPath(e.node)))return-54;throw e}return T[r>>2]=i.dev,T[r+4>>2]=0,T[r+8>>2]=i.ino,T[r+12>>2]=i.mode,T[r+16>>2]=i.nlink,T[r+20>>2]=i.uid,T[r+24>>2]=i.gid,T[r+28>>2]=i.rdev,T[r+32>>2]=0,K=[i.size>>>0,(q=i.size,+Math.abs(q)>=1?q>0?(0|Math.min(+Math.floor(q/4294967296),4294967295))>>>0:~~+Math.ceil((q-+(~~q>>>0))/4294967296)>>>0:0)],T[r+40>>2]=K[0],T[r+44>>2]=K[1],T[r+48>>2]=4096,T[r+52>>2]=i.blocks,K=[Math.floor(i.atime.getTime()/1e3)>>>0,(q=Math.floor(i.atime.getTime()/1e3),+Math.abs(q)>=1?q>0?(0|Math.min(+Math.floor(q/4294967296),4294967295))>>>0:~~+Math.ceil((q-+(~~q>>>0))/4294967296)>>>0:0)],T[r+56>>2]=K[0],T[r+60>>2]=K[1],T[r+64>>2]=0,K=[Math.floor(i.mtime.getTime()/1e3)>>>0,(q=Math.floor(i.mtime.getTime()/1e3),+Math.abs(q)>=1?q>0?(0|Math.min(+Math.floor(q/4294967296),4294967295))>>>0:~~+Math.ceil((q-+(~~q>>>0))/4294967296)>>>0:0)],T[r+72>>2]=K[0],T[r+76>>2]=K[1],T[r+80>>2]=0,K=[Math.floor(i.ctime.getTime()/1e3)>>>0,(q=Math.floor(i.ctime.getTime()/1e3),+Math.abs(q)>=1?q>0?(0|Math.min(+Math.floor(q/4294967296),4294967295))>>>0:~~+Math.ceil((q-+(~~q>>>0))/4294967296)>>>0:0)],T[r+88>>2]=K[0],T[r+92>>2]=K[1],T[r+96>>2]=0,K=[i.ino>>>0,(q=i.ino,+Math.abs(q)>=1?q>0?(0|Math.min(+Math.floor(q/4294967296),4294967295))>>>0:~~+Math.ceil((q-+(~~q>>>0))/4294967296)>>>0:0)],T[r+104>>2]=K[0],T[r+108>>2]=K[1],0},doMsync:function(e,t,r,i,n){var s=x.slice(e,e+r);de.msync(t,s,n,r,i)},varargs:void 0,get:function(){return ue.varargs+=4,T[ue.varargs-4>>2]},getStr:function(e){return L(e)},getStreamFromFD:function(e){var t=de.getStream(e);if(!t)throw new de.ErrnoError(8);return t}};function ce(e){switch(e){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+e)}}var fe=void 0;function he(e){for(var t="",r=e;x[r];)t+=fe[x[r++]];return t}var pe={},me={},_e={},ye=48,ge=57;function ve(e){if(void 0===e)return"_unknown";var t=(e=e.replace(/[^a-zA-Z0-9_]/g,"$")).charCodeAt(0);return t>=ye&&t<=ge?"_"+e:e}function be(e,t){return e=ve(e),new Function("body","return function "+e+'() {\n "use strict"; return body.apply(this, arguments);\n};\n')(t)}function we(e,t){var r=be(t,(function(e){this.name=t,this.message=e;var r=new Error(e).stack;void 0!==r&&(this.stack=this.toString()+"\n"+r.replace(/^Error(:[^\n]*)?\n/,""))}));return r.prototype=Object.create(e.prototype),r.prototype.constructor=r,r.prototype.toString=function(){return void 0===this.message?this.name:this.name+": "+this.message},r}var Ee=void 0;function Se(e){throw new Ee(e)}var Ue=void 0;function xe(e){throw new Ue(e)}function Ae(e,t,r){function i(t){var i=r(t);i.length!==e.length&&xe("Mismatched type converter count");for(var n=0;n{me.hasOwnProperty(e)?n[t]=me[e]:(s.push(e),pe.hasOwnProperty(e)||(pe[e]=[]),pe[e].push((()=>{n[t]=me[e],++o===s.length&&i(n)})))})),0===s.length&&i(n)}function ke(e,t,r={}){if(!("argPackAdvance"in t))throw new TypeError("registerType registeredInstance requires argPackAdvance");var i=t.name;if(e||Se('type "'+i+'" must have a positive integer typeid pointer'),me.hasOwnProperty(e)){if(r.ignoreDuplicateRegistrations)return;Se("Cannot register type '"+i+"' twice")}if(me[e]=t,delete _e[e],pe.hasOwnProperty(e)){var n=pe[e];delete pe[e],n.forEach((e=>e()))}}function Te(e){if(!(this instanceof Xe))return!1;if(!(e instanceof Xe))return!1;for(var t=this.$$.ptrType.registeredClass,r=this.$$.ptr,i=e.$$.ptrType.registeredClass,n=e.$$.ptr;t.baseClass;)r=t.upcast(r),t=t.baseClass;for(;i.baseClass;)n=i.upcast(n),i=i.baseClass;return t===i&&r===n}function Be(e){Se(e.$$.ptrType.registeredClass.name+" instance already deleted")}var Ce=!1;function De(e){}function Fe(e){e.count.value-=1,0===e.count.value&&function(e){e.smartPtr?e.smartPtrType.rawDestructor(e.smartPtr):e.ptrType.registeredClass.rawDestructor(e.ptr)}(e)}function Pe(e,t,r){if(t===r)return e;if(void 0===r.baseClass)return null;var i=Pe(e,t,r.baseClass);return null===i?null:r.downcast(i)}var Ie={};function Le(){return Object.keys($e).length}function Re(){var e=[];for(var t in $e)$e.hasOwnProperty(t)&&e.push($e[t]);return e}var Me=[];function ze(){for(;Me.length;){var e=Me.pop();e.$$.deleteScheduled=!1,e.delete()}}var Ne=void 0;function Oe(e){Ne=e,Me.length&&Ne&&Ne(ze)}var $e={};function Ge(e,t){return t=function(e,t){for(void 0===t&&Se("ptr should not be undefined");e.baseClass;)t=e.upcast(t),e=e.baseClass;return t}(e,t),$e[t]}function He(e,t){return t.ptrType&&t.ptr||xe("makeClassHandle requires ptr and ptrType"),!!t.smartPtrType!==!!t.smartPtr&&xe("Both smartPtrType and smartPtr must be specified"),t.count={value:1},je(Object.create(e,{$$:{value:t}}))}function Ve(e){var t=this.getPointee(e);if(!t)return this.destructor(e),null;var r=Ge(this.registeredClass,t);if(void 0!==r){if(0===r.$$.count.value)return r.$$.ptr=t,r.$$.smartPtr=e,r.clone();var i=r.clone();return this.destructor(e),i}function n(){return this.isSmartPointer?He(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:t,smartPtrType:this,smartPtr:e}):He(this.registeredClass.instancePrototype,{ptrType:this,ptr:e})}var s,o=this.registeredClass.getActualType(t),a=Ie[o];if(!a)return n.call(this);s=this.isConst?a.constPointerType:a.pointerType;var l=Pe(t,this.registeredClass,s.registeredClass);return null===l?n.call(this):this.isSmartPointer?He(s.registeredClass.instancePrototype,{ptrType:s,ptr:l,smartPtrType:this,smartPtr:e}):He(s.registeredClass.instancePrototype,{ptrType:s,ptr:l})}function je(e){return"undefined"==typeof FinalizationRegistry?(je=e=>e,e):(Ce=new FinalizationRegistry((e=>{Fe(e.$$)})),je=e=>{var t=e.$$;if(!!t.smartPtr){var r={$$:t};Ce.register(e,r,e)}return e},De=e=>Ce.unregister(e),je(e))}function We(){if(this.$$.ptr||Be(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var e,t=je(Object.create(Object.getPrototypeOf(this),{$$:{value:(e=this.$$,{count:e.count,deleteScheduled:e.deleteScheduled,preservePointerOnDelete:e.preservePointerOnDelete,ptr:e.ptr,ptrType:e.ptrType,smartPtr:e.smartPtr,smartPtrType:e.smartPtrType})}}));return t.$$.count.value+=1,t.$$.deleteScheduled=!1,t}function Ye(){this.$$.ptr||Be(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&Se("Object already scheduled for deletion"),De(this),Fe(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)}function qe(){return!this.$$.ptr}function Ke(){return this.$$.ptr||Be(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&Se("Object already scheduled for deletion"),Me.push(this),1===Me.length&&Ne&&Ne(ze),this.$$.deleteScheduled=!0,this}function Xe(){}function Ze(e,t,r){if(void 0===e[t].overloadTable){var i=e[t];e[t]=function(){return e[t].overloadTable.hasOwnProperty(arguments.length)||Se("Function '"+r+"' called with an invalid number of arguments ("+arguments.length+") - expects one of ("+e[t].overloadTable+")!"),e[t].overloadTable[arguments.length].apply(this,arguments)},e[t].overloadTable=[],e[t].overloadTable[i.argCount]=i}}function Je(e,t,r,i,n,s,o,a){this.name=e,this.constructor=t,this.instancePrototype=r,this.rawDestructor=i,this.baseClass=n,this.getActualType=s,this.upcast=o,this.downcast=a,this.pureVirtualFunctions=[]}function Qe(e,t,r){for(;t!==r;)t.upcast||Se("Expected null or instance of "+r.name+", got an instance of "+t.name),e=t.upcast(e),t=t.baseClass;return e}function et(e,t){if(null===t)return this.isReference&&Se("null is not a valid "+this.name),0;t.$$||Se('Cannot pass "'+xt(t)+'" as a '+this.name),t.$$.ptr||Se("Cannot pass deleted object as a pointer of type "+this.name);var r=t.$$.ptrType.registeredClass;return Qe(t.$$.ptr,r,this.registeredClass)}function tt(e,t){var r;if(null===t)return this.isReference&&Se("null is not a valid "+this.name),this.isSmartPointer?(r=this.rawConstructor(),null!==e&&e.push(this.rawDestructor,r),r):0;t.$$||Se('Cannot pass "'+xt(t)+'" as a '+this.name),t.$$.ptr||Se("Cannot pass deleted object as a pointer of type "+this.name),!this.isConst&&t.$$.ptrType.isConst&&Se("Cannot convert argument of type "+(t.$$.smartPtrType?t.$$.smartPtrType.name:t.$$.ptrType.name)+" to parameter type "+this.name);var i=t.$$.ptrType.registeredClass;if(r=Qe(t.$$.ptr,i,this.registeredClass),this.isSmartPointer)switch(void 0===t.$$.smartPtr&&Se("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:t.$$.smartPtrType===this?r=t.$$.smartPtr:Se("Cannot convert argument of type "+(t.$$.smartPtrType?t.$$.smartPtrType.name:t.$$.ptrType.name)+" to parameter type "+this.name);break;case 1:r=t.$$.smartPtr;break;case 2:if(t.$$.smartPtrType===this)r=t.$$.smartPtr;else{var n=t.clone();r=this.rawShare(r,Ut.toHandle((function(){n.delete()}))),null!==e&&e.push(this.rawDestructor,r)}break;default:Se("Unsupporting sharing policy")}return r}function rt(e,t){if(null===t)return this.isReference&&Se("null is not a valid "+this.name),0;t.$$||Se('Cannot pass "'+xt(t)+'" as a '+this.name),t.$$.ptr||Se("Cannot pass deleted object as a pointer of type "+this.name),t.$$.ptrType.isConst&&Se("Cannot convert argument of type "+t.$$.ptrType.name+" to parameter type "+this.name);var r=t.$$.ptrType.registeredClass;return Qe(t.$$.ptr,r,this.registeredClass)}function it(e){return this.fromWireType(T[e>>2])}function nt(e){return this.rawGetPointee&&(e=this.rawGetPointee(e)),e}function st(e){this.rawDestructor&&this.rawDestructor(e)}function ot(e){null!==e&&e.delete()}function at(e,t,r,i,n,s,o,a,l,d,u){this.name=e,this.registeredClass=t,this.isReference=r,this.isConst=i,this.isSmartPointer=n,this.pointeeType=s,this.sharingPolicy=o,this.rawGetPointee=a,this.rawConstructor=l,this.rawShare=d,this.rawDestructor=u,n||void 0!==t.baseClass?this.toWireType=tt:i?(this.toWireType=et,this.destructorFunction=null):(this.toWireType=rt,this.destructorFunction=null)}var lt=[];function dt(e){var t=lt[e];return t||(e>=lt.length&&(lt.length=e+1),lt[e]=t=F.get(e)),t}function ut(e,r,i){return e.includes("j")?function(e,r,i){var n=t["dynCall_"+e];return i&&i.length?n.apply(null,[r].concat(i)):n.call(null,r)}(e,r,i):dt(r).apply(null,i)}function ct(e,t){var r,i,n,s=(e=he(e)).includes("j")?(r=e,i=t,n=[],function(){return n.length=0,Object.assign(n,arguments),ut(r,i,n)}):dt(t);return"function"!=typeof s&&Se("unknown function pointer with signature "+e+": "+t),s}var ft=void 0;function ht(e){var t=Wt(e),r=he(t);return Vt(t),r}function pt(e,t){var r=[],i={};throw t.forEach((function e(t){i[t]||me[t]||(_e[t]?_e[t].forEach(e):(r.push(t),i[t]=!0))})),new ft(e+": "+r.map(ht).join([", "]))}function mt(e,t){for(var r=[],i=0;i>2]);return r}function _t(e){for(;e.length;){var t=e.pop();e.pop()(t)}}function yt(e,t){if(!(e instanceof Function))throw new TypeError("new_ called with constructor type "+typeof e+" which is not a function");var r=be(e.name||"unknownFunctionName",(function(){}));r.prototype=e.prototype;var i=new r,n=e.apply(i,t);return n instanceof Object?n:i}function gt(e,t,r,i,n){var s=t.length;s<2&&Se("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var o=null!==t[1]&&null!==r,a=!1,l=1;l0?", ":"")+c),f+=(d?"var rv = ":"")+"invoker(fn"+(c.length>0?", ":"")+c+");\n",a)f+="runDestructors(destructors);\n";else for(l=o?1:2;l4&&0==--bt[e].refcount&&(bt[e]=void 0,vt.push(e))}function Et(){for(var e=0,t=5;t(e||Se("Cannot use deleted val. handle = "+e),bt[e].value),toHandle:e=>{switch(e){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:var t=vt.length?vt.pop():bt.length;return bt[t]={refcount:1,value:e},t}}};function xt(e){if(null===e)return"null";var t=typeof e;return"object"===t||"array"===t||"function"===t?e.toString():""+e}function At(e,t){switch(t){case 2:return function(e){return this.fromWireType(C[e>>2])};case 3:return function(e){return this.fromWireType(D[e>>3])};default:throw new TypeError("Unknown float type: "+e)}}function kt(e,t,r){switch(t){case 0:return r?function(e){return U[e]}:function(e){return x[e]};case 1:return r?function(e){return A[e>>1]}:function(e){return k[e>>1]};case 2:return r?function(e){return T[e>>2]}:function(e){return B[e>>2]};default:throw new TypeError("Unknown integer type: "+e)}}var Tt="undefined"!=typeof TextDecoder?new TextDecoder("utf-16le"):void 0;function Bt(e,t){for(var r=e,i=r>>1,n=i+t/2;!(i>=n)&&k[i];)++i;if((r=i<<1)-e>32&&Tt)return Tt.decode(x.subarray(e,r));for(var s="",o=0;!(o>=t/2);++o){var a=A[e+2*o>>1];if(0==a)break;s+=String.fromCharCode(a)}return s}function Ct(e,t,r){if(void 0===r&&(r=2147483647),r<2)return 0;for(var i=t,n=(r-=2)<2*e.length?r/2:e.length,s=0;s>1]=o,t+=2}return A[t>>1]=0,t-i}function Dt(e){return 2*e.length}function Ft(e,t){for(var r=0,i="";!(r>=t/4);){var n=T[e+4*r>>2];if(0==n)break;if(++r,n>=65536){var s=n-65536;i+=String.fromCharCode(55296|s>>10,56320|1023&s)}else i+=String.fromCharCode(n)}return i}function Pt(e,t,r){if(void 0===r&&(r=2147483647),r<4)return 0;for(var i=t,n=i+r-4,s=0;s=55296&&o<=57343)o=65536+((1023&o)<<10)|1023&e.charCodeAt(++s);if(T[t>>2]=o,(t+=4)+4>n)break}return T[t>>2]=0,t-i}function It(e){for(var t=0,r=0;r=55296&&i<=57343&&++r,t+=4}return t}var Lt={};var Rt=[];var Mt=[];var zt={};function Nt(){if(!Nt.strings){var e={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:("object"==typeof navigator&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:c||"./this.program"};for(var t in zt)void 0===zt[t]?delete e[t]:e[t]=zt[t];var r=[];for(var t in e)r.push(t+"="+e[t]);Nt.strings=r}return Nt.strings}var Ot=function(e,t,r,i){e||(e=this),this.parent=e,this.mount=e.mount,this.mounted=null,this.id=de.nextInode++,this.name=t,this.mode=r,this.node_ops={},this.stream_ops={},this.rdev=i},$t=365,Gt=146;Object.defineProperties(Ot.prototype,{read:{get:function(){return(this.mode&$t)===$t},set:function(e){e?this.mode|=$t:this.mode&=-366}},write:{get:function(){return(this.mode&Gt)===Gt},set:function(e){e?this.mode|=Gt:this.mode&=-147}},isFolder:{get:function(){return de.isDir(this.mode)}},isDevice:{get:function(){return de.isChrdev(this.mode)}}}),de.FSNode=Ot,de.staticInit(),function(){for(var e=new Array(256),t=0;t<256;++t)e[t]=String.fromCharCode(t);fe=e}(),Ee=t.BindingError=we(Error,"BindingError"),Ue=t.InternalError=we(Error,"InternalError"),Xe.prototype.isAliasOf=Te,Xe.prototype.clone=We,Xe.prototype.delete=Ye,Xe.prototype.isDeleted=qe,Xe.prototype.deleteLater=Ke,t.getInheritedInstanceCount=Le,t.getLiveInheritedInstances=Re,t.flushPendingDeletes=ze,t.setDelayFunction=Oe,at.prototype.getPointee=nt,at.prototype.destructor=st,at.prototype.argPackAdvance=8,at.prototype.readValueFromPointer=it,at.prototype.deleteObject=ot,at.prototype.fromWireType=Ve,ft=t.UnboundTypeError=we(Error,"UnboundTypeError"),t.count_emval_handles=Et,t.get_first_emval=St;var Ht={q:function(e){return qt(e+24)+24},p:function(e,t,r){throw new re(e).init(t,r),e},C:function(e,t,r){ue.varargs=r;try{var i=ue.getStreamFromFD(e);switch(t){case 0:return(n=ue.get())<0?-28:de.createStream(i,n).fd;case 1:case 2:case 6:case 7:return 0;case 3:return i.flags;case 4:var n=ue.get();return i.flags|=n,0;case 5:n=ue.get();return A[n+0>>1]=2,0;case 16:case 8:default:return-28;case 9:return s=28,T[jt()>>2]=s,-1}}catch(e){if(void 0===de||!(e instanceof de.ErrnoError))throw e;return-e.errno}var s},w:function(e,t,r,i){ue.varargs=i;try{t=ue.getStr(t),t=ue.calculateAt(e,t);var n=i?ue.get():0;return de.open(t,r,n).fd}catch(e){if(void 0===de||!(e instanceof de.ErrnoError))throw e;return-e.errno}},u:function(e,t,r,i,n){},E:function(e,t,r,i,n){var s=ce(r);ke(e,{name:t=he(t),fromWireType:function(e){return!!e},toWireType:function(e,t){return t?i:n},argPackAdvance:8,readValueFromPointer:function(e){var i;if(1===r)i=U;else if(2===r)i=A;else{if(4!==r)throw new TypeError("Unknown boolean type size: "+t);i=T}return this.fromWireType(i[e>>s])},destructorFunction:null})},t:function(e,r,i,n,s,o,a,l,d,u,c,f,h){c=he(c),o=ct(s,o),l&&(l=ct(a,l)),u&&(u=ct(d,u)),h=ct(f,h);var p=ve(c);!function(e,r,i){t.hasOwnProperty(e)?((void 0===i||void 0!==t[e].overloadTable&&void 0!==t[e].overloadTable[i])&&Se("Cannot register public name '"+e+"' twice"),Ze(t,e,e),t.hasOwnProperty(i)&&Se("Cannot register multiple overloads of a function with the same number of arguments ("+i+")!"),t[e].overloadTable[i]=r):(t[e]=r,void 0!==i&&(t[e].numArguments=i))}(p,(function(){pt("Cannot construct "+c+" due to unbound types",[n])})),Ae([e,r,i],n?[n]:[],(function(r){var i,s;r=r[0],s=n?(i=r.registeredClass).instancePrototype:Xe.prototype;var a=be(p,(function(){if(Object.getPrototypeOf(this)!==d)throw new Ee("Use 'new' to construct "+c);if(void 0===f.constructor_body)throw new Ee(c+" has no accessible constructor");var e=f.constructor_body[arguments.length];if(void 0===e)throw new Ee("Tried to invoke ctor of "+c+" with invalid number of parameters ("+arguments.length+") - expected ("+Object.keys(f.constructor_body).toString()+") parameters instead!");return e.apply(this,arguments)})),d=Object.create(s,{constructor:{value:a}});a.prototype=d;var f=new Je(c,a,d,h,i,o,l,u),m=new at(c,f,!0,!1,!1),_=new at(c+"*",f,!1,!1,!1),y=new at(c+" const*",f,!1,!0,!1);return Ie[e]={pointerType:_,constPointerType:y},function(e,r,i){t.hasOwnProperty(e)||xe("Replacing nonexistant public symbol"),void 0!==t[e].overloadTable&&void 0!==i?t[e].overloadTable[i]=r:(t[e]=r,t[e].argCount=i)}(p,a),[m,_,y]}))},r:function(e,t,r,i,n,s){E(t>0);var o=mt(t,r);n=ct(i,n),Ae([],[e],(function(e){var r="constructor "+(e=e[0]).name;if(void 0===e.registeredClass.constructor_body&&(e.registeredClass.constructor_body=[]),void 0!==e.registeredClass.constructor_body[t-1])throw new Ee("Cannot register multiple constructors with identical number of parameters ("+(t-1)+") for class '"+e.name+"'! Overload resolution is currently only performed using the parameter count, not actual type info!");return e.registeredClass.constructor_body[t-1]=()=>{pt("Cannot construct "+e.name+" due to unbound types",o)},Ae([],o,(function(i){return i.splice(1,0,null),e.registeredClass.constructor_body[t-1]=gt(r,i,null,n,s),[]})),[]}))},d:function(e,t,r,i,n,s,o,a){var l=mt(r,i);t=he(t),s=ct(n,s),Ae([],[e],(function(e){var i=(e=e[0]).name+"."+t;function n(){pt("Cannot call "+i+" due to unbound types",l)}t.startsWith("@@")&&(t=Symbol[t.substring(2)]),a&&e.registeredClass.pureVirtualFunctions.push(t);var d=e.registeredClass.instancePrototype,u=d[t];return void 0===u||void 0===u.overloadTable&&u.className!==e.name&&u.argCount===r-2?(n.argCount=r-2,n.className=e.name,d[t]=n):(Ze(d,t,i),d[t].overloadTable[r-2]=n),Ae([],l,(function(n){var a=gt(i,n,e,s,o);return void 0===d[t].overloadTable?(a.argCount=r-2,d[t]=a):d[t].overloadTable[r-2]=a,[]})),[]}))},D:function(e,t){ke(e,{name:t=he(t),fromWireType:function(e){var t=Ut.toValue(e);return wt(e),t},toWireType:function(e,t){return Ut.toHandle(t)},argPackAdvance:8,readValueFromPointer:it,destructorFunction:null})},n:function(e,t,r){var i=ce(r);ke(e,{name:t=he(t),fromWireType:function(e){return e},toWireType:function(e,t){return t},argPackAdvance:8,readValueFromPointer:At(t,i),destructorFunction:null})},c:function(e,t,r,i,n){t=he(t);var s=ce(r),o=e=>e;if(0===i){var a=32-8*r;o=e=>e<>>a}var l=t.includes("unsigned");ke(e,{name:t,fromWireType:o,toWireType:l?function(e,t){return this.name,t>>>0}:function(e,t){return this.name,t},argPackAdvance:8,readValueFromPointer:kt(t,s,0!==i),destructorFunction:null})},b:function(e,t,r){var i=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][t];function n(e){var t=B,r=t[e>>=2],n=t[e+1];return new i(S,n,r)}ke(e,{name:r=he(r),fromWireType:n,argPackAdvance:8,readValueFromPointer:n},{ignoreDuplicateRegistrations:!0})},m:function(e,t){var r="std::string"===(t=he(t));ke(e,{name:t,fromWireType:function(e){var t,i=B[e>>2],n=e+4;if(r)for(var s=n,o=0;o<=i;++o){var a=n+o;if(o==i||0==x[a]){var l=L(s,a-s);void 0===t?t=l:(t+=String.fromCharCode(0),t+=l),s=a+1}}else{var d=new Array(i);for(o=0;o>2]=i,r&&n)R(t,x,o,i+1);else if(n)for(var a=0;a255&&(Vt(o),Se("String has UTF-16 code units that do not fit in 8 bits")),x[o+a]=l}else for(a=0;ak,a=1):4===t&&(i=Ft,n=Pt,o=It,s=()=>B,a=2),ke(e,{name:r,fromWireType:function(e){for(var r,n=B[e>>2],o=s(),l=e+4,d=0;d<=n;++d){var u=e+4+d*t;if(d==n||0==o[u>>a]){var c=i(l,u-l);void 0===r?r=c:(r+=String.fromCharCode(0),r+=c),l=u+t}}return Vt(e),r},toWireType:function(e,i){"string"!=typeof i&&Se("Cannot pass non-string to C++ string type "+r);var s=o(i),l=qt(4+s+t);return B[l>>2]=s>>a,n(i,l+4,s+t),null!==e&&e.push(Vt,l),l},argPackAdvance:8,readValueFromPointer:it,destructorFunction:function(e){Vt(e)}})},o:function(e,t){ke(e,{isVoid:!0,name:t=he(t),argPackAdvance:0,fromWireType:function(){},toWireType:function(e,t){}})},f:function(){return Date.now()},g:function(e,t,r,i){var n,s;(e=Rt[e])(t=Ut.toValue(t),r=void 0===(s=Lt[n=r])?he(n):s,null,i)},j:wt,i:function(e,t){var r=function(e,t){for(var r,i,n,s=new Array(e),o=0;o>2],i="parameter "+o,n=void 0,void 0===(n=me[r])&&Se(i+" has unknown type "+ht(r)),n);return s}(e,t),i=r[0],n=i.name+"_$"+r.slice(1).map((function(e){return e.name})).join("_")+"$",s=Mt[n];if(void 0!==s)return s;for(var o=["retType"],a=[i],l="",d=0;d>2]=s,function(e,t,r){for(var i=0;i>2]=r.length;var i=0;return r.forEach((function(e){i+=e.length+1})),B[t>>2]=i,0},l:function(e){try{var t=ue.getStreamFromFD(e);return de.close(t),0}catch(e){if(void 0===de||!(e instanceof de.ErrnoError))throw e;return e.errno}},x:function(e,t){try{var r=ue.getStreamFromFD(e),i=r.tty?2:de.isDir(r.mode)?3:de.isLink(r.mode)?7:4;return U[t|0]=i,0}catch(e){if(void 0===de||!(e instanceof de.ErrnoError))throw e;return e.errno}},B:function(e,t,r,i){try{var n=function(e,t,r,i){for(var n=0,s=0;s>2],a=B[t+4>>2];t+=8;var l=de.read(e,U,o,a,i);if(l<0)return-1;if(n+=l,l>2]=n,0}catch(e){if(void 0===de||!(e instanceof de.ErrnoError))throw e;return e.errno}},s:function(e,t,r,i,n){try{var s=(l=r)+2097152>>>0<4194305-!!(a=t)?(a>>>0)+4294967296*l:NaN;if(isNaN(s))return 61;var o=ue.getStreamFromFD(e);return de.llseek(o,s,i),K=[o.position>>>0,(q=o.position,+Math.abs(q)>=1?q>0?(0|Math.min(+Math.floor(q/4294967296),4294967295))>>>0:~~+Math.ceil((q-+(~~q>>>0))/4294967296)>>>0:0)],T[n>>2]=K[0],T[n+4>>2]=K[1],o.getdents&&0===s&&0===i&&(o.getdents=null),0}catch(e){if(void 0===de||!(e instanceof de.ErrnoError))throw e;return e.errno}var a,l},k:function(e,t,r,i){try{var n=function(e,t,r,i){for(var n=0,s=0;s>2],a=B[t+4>>2];t+=8;var l=de.write(e,U,o,a,i);if(l<0)return-1;n+=l}return n}(ue.getStreamFromFD(e),t,r);return B[i>>2]=n,0}catch(e){if(void 0===de||!(e instanceof de.ErrnoError))throw e;return e.errno}},e:function(e){}};!function(){var e={a:Ht};function r(e,r){var i,n,s=e.exports;t.asm=s,v=t.asm.F,i=v.buffer,S=i,t.HEAP8=U=new Int8Array(i),t.HEAP16=A=new Int16Array(i),t.HEAP32=T=new Int32Array(i),t.HEAPU8=x=new Uint8Array(i),t.HEAPU16=k=new Uint16Array(i),t.HEAPU32=B=new Uint32Array(i),t.HEAPF32=C=new Float32Array(i),t.HEAPF64=D=new Float64Array(i),F=t.asm.I,n=t.asm.G,N.unshift(n),V()}function n(e){r(e.instance)}function o(t){return function(){if(!g&&(f||h)){if("function"==typeof fetch&&!J(W))return fetch(W,{credentials:"same-origin"}).then((function(e){if(!e.ok)throw"failed to load wasm binary file at '"+W+"'";return e.arrayBuffer()})).catch((function(){return Q(W)}));if(s)return new Promise((function(e,t){s(W,(function(t){e(new Uint8Array(t))}),t)}))}return Promise.resolve().then((function(){return Q(W)}))}().then((function(t){return WebAssembly.instantiate(t,e)})).then((function(e){return e})).then(t,(function(e){y("failed to asynchronously prepare wasm: "+e),j(e)}))}if(H(),t.instantiateWasm)try{return t.instantiateWasm(e,r)}catch(e){return y("Module.instantiateWasm callback failed with error: "+e),!1}(g||"function"!=typeof WebAssembly.instantiateStreaming||Z(W)||J(W)||p||"function"!=typeof fetch?o(n):fetch(W,{credentials:"same-origin"}).then((function(t){return WebAssembly.instantiateStreaming(t,e).then(n,(function(e){return y("wasm streaming compile failed: "+e),y("falling back to ArrayBuffer instantiation"),o(n)}))}))).catch(i)}(),t.___wasm_call_ctors=function(){return(t.___wasm_call_ctors=t.asm.G).apply(null,arguments)};var Vt=t._free=function(){return(Vt=t._free=t.asm.H).apply(null,arguments)},jt=t.___errno_location=function(){return(jt=t.___errno_location=t.asm.J).apply(null,arguments)},Wt=t.___getTypeName=function(){return(Wt=t.___getTypeName=t.asm.K).apply(null,arguments)};t.___embind_register_native_and_builtin_types=function(){return(t.___embind_register_native_and_builtin_types=t.asm.L).apply(null,arguments)};var Yt,qt=t._malloc=function(){return(qt=t._malloc=t.asm.M).apply(null,arguments)},Kt=t._emscripten_builtin_memalign=function(){return(Kt=t._emscripten_builtin_memalign=t.asm.N).apply(null,arguments)},Xt=t.___cxa_is_pointer_type=function(){return(Xt=t.___cxa_is_pointer_type=t.asm.O).apply(null,arguments)};function Zt(e){function i(){Yt||(Yt=!0,t.calledRun=!0,w||(t.noFSInit||de.init.initialized||de.init(),de.ignorePermissions=!1,te(N),r(t),t.onRuntimeInitialized&&t.onRuntimeInitialized(),function(){if(t.postRun)for("function"==typeof t.postRun&&(t.postRun=[t.postRun]);t.postRun.length;)e=t.postRun.shift(),O.unshift(e);var e;te(O)}()))}$>0||(!function(){if(t.preRun)for("function"==typeof t.preRun&&(t.preRun=[t.preRun]);t.preRun.length;)e=t.preRun.shift(),z.unshift(e);var e;te(z)}(),$>0||(t.setStatus?(t.setStatus("Running..."),setTimeout((function(){setTimeout((function(){t.setStatus("")}),1),i()}),1)):i()))}if(t.dynCall_viiijj=function(){return(t.dynCall_viiijj=t.asm.P).apply(null,arguments)},t.dynCall_jij=function(){return(t.dynCall_jij=t.asm.Q).apply(null,arguments)},t.dynCall_jii=function(){return(t.dynCall_jii=t.asm.R).apply(null,arguments)},t.dynCall_jiji=function(){return(t.dynCall_jiji=t.asm.S).apply(null,arguments)},G=function e(){Yt||Zt(),Yt||(G=e)},t.preInit)for("function"==typeof t.preInit&&(t.preInit=[t.preInit]);t.preInit.length>0;)t.preInit.pop()();return Zt(),t.ready}})(),i=1e-6,n="undefined"!=typeof Float32Array?Float32Array:Array;function s(){var e=new n(16);return n!=Float32Array&&(e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=0,e[12]=0,e[13]=0,e[14]=0),e[0]=1,e[5]=1,e[10]=1,e[15]=1,e}function o(e){return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}Math.hypot||(Math.hypot=function(){for(var e=0,t=arguments.length;t--;)e+=arguments[t]*arguments[t];return Math.sqrt(e)});var a,l=function(e,t,r,i,n,s,o){var a=1/(t-r),l=1/(i-n),d=1/(s-o);return e[0]=-2*a,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=-2*l,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=2*d,e[11]=0,e[12]=(t+r)*a,e[13]=(n+i)*l,e[14]=(o+s)*d,e[15]=1,e};function d(e,t,r){var i=new n(3);return i[0]=e,i[1]=t,i[2]=r,i}a=new n(3),n!=Float32Array&&(a[0]=0,a[1]=0,a[2]=0);var u=(e,t)=>{t&&e.pixelStorei(e.UNPACK_ALIGNMENT,1);const r=function(){const t=m(e.VERTEX_SHADER,"\n attribute vec4 aVertexPosition;\n attribute vec2 aTexturePosition;\n uniform mat4 uModelMatrix;\n uniform mat4 uViewMatrix;\n uniform mat4 uProjectionMatrix;\n varying lowp vec2 vTexturePosition;\n void main(void) {\n gl_Position = uProjectionMatrix * uViewMatrix * uModelMatrix * aVertexPosition;\n vTexturePosition = aTexturePosition;\n }\n "),r=m(e.FRAGMENT_SHADER,"\n precision highp float;\n varying highp vec2 vTexturePosition;\n uniform int isyuv;\n uniform sampler2D rgbaTexture;\n uniform sampler2D yTexture;\n uniform sampler2D uTexture;\n uniform sampler2D vTexture;\n\n const mat4 YUV2RGB = mat4( 1.1643828125, 0, 1.59602734375, -.87078515625,\n 1.1643828125, -.39176171875, -.81296875, .52959375,\n 1.1643828125, 2.017234375, 0, -1.081390625,\n 0, 0, 0, 1);\n\n\n void main(void) {\n\n if (isyuv>0) {\n\n highp float y = texture2D(yTexture, vTexturePosition).r;\n highp float u = texture2D(uTexture, vTexturePosition).r;\n highp float v = texture2D(vTexture, vTexturePosition).r;\n gl_FragColor = vec4(y, u, v, 1) * YUV2RGB;\n\n } else {\n gl_FragColor = texture2D(rgbaTexture, vTexturePosition);\n }\n }\n "),i=e.createProgram();if(e.attachShader(i,t),e.attachShader(i,r),e.linkProgram(i),!e.getProgramParameter(i,e.LINK_STATUS))return console.log("Unable to initialize the shader program: "+e.getProgramInfoLog(i)),null;return i}();let n={program:r,attribLocations:{vertexPosition:e.getAttribLocation(r,"aVertexPosition"),texturePosition:e.getAttribLocation(r,"aTexturePosition")},uniformLocations:{projectionMatrix:e.getUniformLocation(r,"uProjectionMatrix"),modelMatrix:e.getUniformLocation(r,"uModelMatrix"),viewMatrix:e.getUniformLocation(r,"uViewMatrix"),rgbatexture:e.getUniformLocation(r,"rgbaTexture"),ytexture:e.getUniformLocation(r,"yTexture"),utexture:e.getUniformLocation(r,"uTexture"),vtexture:e.getUniformLocation(r,"vTexture"),isyuv:e.getUniformLocation(r,"isyuv")}},a=function(){const t=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,t);e.bufferData(e.ARRAY_BUFFER,new Float32Array([-1,-1,-1,1,-1,-1,1,1,-1,-1,1,-1]),e.STATIC_DRAW);var r=[];r=r.concat([0,1],[1,1],[1,0],[0,0]);const i=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,i),e.bufferData(e.ARRAY_BUFFER,new Float32Array(r),e.STATIC_DRAW);const n=e.createBuffer();e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,n);return e.bufferData(e.ELEMENT_ARRAY_BUFFER,new Uint16Array([0,1,2,0,2,3]),e.STATIC_DRAW),{position:t,texPosition:i,indices:n}}(),u=p(),c=p(),f=p(),h=p();function p(){let t=e.createTexture();return e.bindTexture(e.TEXTURE_2D,t),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),t}function m(t,r){const i=e.createShader(t);return e.shaderSource(i,r),e.compileShader(i),e.getShaderParameter(i,e.COMPILE_STATUS)?i:(console.log("An error occurred compiling the shaders: "+e.getShaderInfoLog(i)),e.deleteShader(i),null)}function _(t,r){e.viewport(0,0,t,r),e.clearColor(0,0,0,0),e.clearDepth(1),e.enable(e.DEPTH_TEST),e.depthFunc(e.LEQUAL),e.clear(e.COLOR_BUFFER_BIT|e.DEPTH_BUFFER_BIT);const u=s();l(u,-1,1,-1,1,.1,100);const p=s();o(p);const m=s();!function(e,t,r,n){var s,a,l,d,u,c,f,h,p,m,_=t[0],y=t[1],g=t[2],v=n[0],b=n[1],w=n[2],E=r[0],S=r[1],U=r[2];Math.abs(_-E)>1,(1&t)<<7|r<<3])}function We(e){return Ye(e)&&e[1]===Fe.sequenceHeader}function Ye(e){return e[0]>>4===xe.AAC}Ve((function(e){!function(){var t="undefined"!=typeof window&&void 0!==window.document?window.document:{},r=e.exports,i=function(){for(var e,r=[["requestFullscreen","exitFullscreen","fullscreenElement","fullscreenEnabled","fullscreenchange","fullscreenerror"],["webkitRequestFullscreen","webkitExitFullscreen","webkitFullscreenElement","webkitFullscreenEnabled","webkitfullscreenchange","webkitfullscreenerror"],["webkitRequestFullScreen","webkitCancelFullScreen","webkitCurrentFullScreenElement","webkitCancelFullScreen","webkitfullscreenchange","webkitfullscreenerror"],["mozRequestFullScreen","mozCancelFullScreen","mozFullScreenElement","mozFullScreenEnabled","mozfullscreenchange","mozfullscreenerror"],["msRequestFullscreen","msExitFullscreen","msFullscreenElement","msFullscreenEnabled","MSFullscreenChange","MSFullscreenError"]],i=0,n=r.length,s={};i{if(n=i,"[object Number]"!==Object.prototype.toString.call(n))return;var n;t+=i;const s=Qe(),o=s-r;o>=1e3&&(e(t/o*1e3),r=s,t=0)}}function tt(){const e=window.navigator.userAgent;return!e.match(/Chrome/gi)&&!!e.match(/Safari/gi)}function rt(e){return null==e}function it(e){e.close()}function nt(e,t){t&&(e=e.filter((e=>e.type&&e.type===t)));let r=e[0],i=null,n=1;if(e.length>0){let t=e[1];t&&t.ts-r.ts>1e5&&(r=t,n=2)}if(r)for(let s=n;s=1e3){e[s-1].ts-r.ts<1e3&&(i=s+1)}}}return i}function st(){return function(e){let t="";if("object"==typeof e)try{t=JSON.stringify(e),t=JSON.parse(t)}catch(r){t=e}else t=e;return t}(w)}function ot(e){return e[0]>>4===Pe.keyFrame&&e[1]===Fe.sequenceHeader}function at(e){return!0===e||"true"===e}function lt(e){return!0!==e&&"true"!==e}(()=>{try{if("object"==typeof WebAssembly&&"function"==typeof WebAssembly.instantiate){const e=new WebAssembly.Module(Uint8Array.of(0,97,115,109,1,0,0,0));if(e instanceof WebAssembly.Module)return new WebAssembly.Instance(e)instanceof WebAssembly.Instance}}catch(e){}})();var dt=function(e,t,r,i){return new(r||(r=Promise))((function(n,s){function o(e){try{l(i.next(e))}catch(e){s(e)}}function a(e){try{l(i.throw(e))}catch(e){s(e)}}function l(e){var t;e.done?n(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(o,a)}l((i=i.apply(e,t||[])).next())}))};const ut=Symbol(32),ct=Symbol(16),ft=Symbol(8);class ht{constructor(e){this.g=e,this.consumed=0,e&&(this.need=e.next().value)}setG(e){this.g=e,this.demand(e.next().value,!0)}consume(){this.buffer&&this.consumed&&(this.buffer.copyWithin(0,this.consumed),this.buffer=this.buffer.subarray(0,this.buffer.length-this.consumed),this.consumed=0)}demand(e,t){return t&&this.consume(),this.need=e,this.flush()}read(e){return dt(this,void 0,void 0,(function*(){return this.lastReadPromise&&(yield this.lastReadPromise),this.lastReadPromise=new Promise(((t,r)=>{var i;this.reject=r,this.resolve=e=>{delete this.lastReadPromise,delete this.resolve,delete this.need,t(e)};this.demand(e,!0)||null===(i=this.pull)||void 0===i||i.call(this,e)}))}))}readU32(){return this.read(ut)}readU16(){return this.read(ct)}readU8(){return this.read(ft)}close(){var e;this.g&&this.g.return(),this.buffer&&this.buffer.subarray(0,0),null===(e=this.reject)||void 0===e||e.call(this,new Error("EOF")),delete this.lastReadPromise}flush(){if(!this.buffer||!this.need)return;let e=null;const t=this.buffer.subarray(this.consumed);let r=0;const i=e=>t.length<(r=e);if("number"==typeof this.need){if(i(this.need))return;e=t.subarray(0,r)}else if(this.need===ut){if(i(4))return;e=t[0]<<24|t[1]<<16|t[2]<<8|t[3]}else if(this.need===ct){if(i(2))return;e=t[0]<<8|t[1]}else if(this.need===ft){if(i(1))return;e=t[0]}else if("buffer"in this.need){if("byteOffset"in this.need){if(i(this.need.byteLength-this.need.byteOffset))return;new Uint8Array(this.need.buffer,this.need.byteOffset).set(t.subarray(0,r)),e=this.need}else if(this.g)return void this.g.throw(new Error("Unsupported type"))}else{if(i(this.need.byteLength))return;new Uint8Array(this.need).set(t.subarray(0,r)),e=this.need}return this.consumed+=r,this.g?this.demand(this.g.next(e).value,!0):this.resolve&&this.resolve(e),e}write(e){if(e instanceof Uint8Array?this.malloc(e.length).set(e):"buffer"in e?this.malloc(e.byteLength).set(new Uint8Array(e.buffer,e.byteOffset,e.byteLength)):this.malloc(e.byteLength).set(new Uint8Array(e)),!this.g&&!this.resolve)return new Promise((e=>this.pull=e));this.flush()}writeU32(e){this.malloc(4).set([e>>24&255,e>>16&255,e>>8&255,255&e]),this.flush()}writeU16(e){this.malloc(2).set([e>>8&255,255&e]),this.flush()}writeU8(e){this.malloc(1)[0]=e,this.flush()}malloc(e){if(this.buffer){const t=this.buffer.length,r=t+e;if(r<=this.buffer.buffer.byteLength-this.buffer.byteOffset)this.buffer=new Uint8Array(this.buffer.buffer,this.buffer.byteOffset,r);else{const e=new Uint8Array(r);e.set(this.buffer),this.buffer=e}return this.buffer.subarray(t,r)}return this.buffer=new Uint8Array(e),this.buffer}}ht.U32=ut,ht.U16=ct,ht.U8=ft;class pt{constructor(e){this.log=(t,...r)=>{if(e._opt.debug&&e._opt.debugLevel==g){const i=e._opt.debugUuid?`[${e._opt.debugUuid}]`:"";console.log(`EasyPro${i}[✅✅✅][${t}]`,...r)}},this.warn=(t,...r)=>{if(e._opt.debug&&(e._opt.debugLevel==g||e._opt.debugLevel==v)){const i=e._opt.debugUuid?`[${e._opt.debugUuid}]`:"";console.log(`EasyPro${i}[❗❗❗][${t}]`,...r)}},this.error=(t,...r)=>{const i=e._opt.debugUuid?`[${e._opt.debugUuid}]`:"";console.error(`EasyPro${i}[❌❌❌][${t}]`,...r)}}}class mt{constructor(e){this._buffer=e,this._buffer_index=0,this._total_bytes=e.byteLength,this._total_bits=8*e.byteLength,this._current_word=0,this._current_word_bits_left=0}destroy(){this._buffer=null}_fillCurrentWord(){let e=this._total_bytes-this._buffer_index;if(e<=0)return void console.error("ExpGolomb: _fillCurrentWord() but no bytes available",this._total_bytes,this._buffer_index);let t=Math.min(4,e),r=new Uint8Array(4);r.set(this._buffer.subarray(this._buffer_index,this._buffer_index+t)),this._current_word=new DataView(r.buffer).getUint32(0,!1),this._buffer_index+=t,this._current_word_bits_left=8*t}readBits(e){if(e>32&&console.error("ExpGolomb: readBits() bits exceeded max 32bits!"),e<=this._current_word_bits_left){let t=this._current_word>>>32-e;return this._current_word<<=e,this._current_word_bits_left-=e,t}let t=this._current_word_bits_left?this._current_word:0;t>>>=32-this._current_word_bits_left;let r=e-this._current_word_bits_left;this._fillCurrentWord();let i=Math.min(r,this._current_word_bits_left),n=this._current_word>>>32-i;return this._current_word<<=i,this._current_word_bits_left-=i,t=t<>>e)return this._current_word<<=e,this._current_word_bits_left-=e,e;return this._fillCurrentWord(),e+this._skipLeadingZero()}readUEG(){let e=this._skipLeadingZero();return this.readBits(e+1)-1}readSEG(){let e=this.readUEG();return 1&e?e+1>>>1:-1*(e>>>1)}}class _t{static _ebsp2rbsp(e){let t=e,r=t.byteLength,i=new Uint8Array(r),n=0;for(let e=0;e=2&&3===t[e]&&0===t[e-1]&&0===t[e-2]||(i[n]=t[e],n++);return new Uint8Array(i.buffer,0,n)}static parseSPS(e){let t=_t._ebsp2rbsp(e),r=new mt(t);r.readByte();let i=r.readByte();r.readByte();let n=r.readByte();r.readUEG();let s=_t.getProfileString(i),o=_t.getLevelString(n),a=1,l=420,d=[0,420,422,444],u=8;if((100===i||110===i||122===i||244===i||44===i||83===i||86===i||118===i||128===i||138===i||144===i)&&(a=r.readUEG(),3===a&&r.readBits(1),a<=3&&(l=d[a]),u=r.readUEG()+8,r.readUEG(),r.readBits(1),r.readBool())){let e=3!==a?8:12;for(let t=0;t0&&e<16?(b=[1,12,10,16,40,24,20,32,80,18,15,64,160,4,3,2][e-1],w=[1,11,11,11,33,11,11,11,33,11,11,33,99,3,2,1][e-1]):255===e&&(b=r.readByte()<<8|r.readByte(),w=r.readByte()<<8|r.readByte())}if(r.readBool()&&r.readBool(),r.readBool()&&(r.readBits(4),r.readBool()&&r.readBits(24)),r.readBool()&&(r.readUEG(),r.readUEG()),r.readBool()){let e=r.readBits(32),t=r.readBits(32);S=r.readBool(),U=t,x=2*e,E=U/x}}let A=1;1===b&&1===w||(A=b/w);let k=0,T=0;if(0===a)k=1,T=2-m;else{k=3===a?1:2,T=(1===a?2:1)*(2-m)}let B=16*(h+1),C=16*(p+1)*(2-m);B-=(_+y)*k,C-=(g+v)*T;let D=Math.ceil(B*A);return r.destroy(),r=null,{profile_string:s,level_string:o,bit_depth:u,ref_frames:f,chroma_format:l,chroma_format_string:_t.getChromaFormatString(l),frame_rate:{fixed:S,fps:E,fps_den:x,fps_num:U},sar_ratio:{width:b,height:w},codec_size:{width:B,height:C},present_size:{width:D,height:C}}}static parseSPS$2(e){let t=e.subarray(1,4),r="avc1.";for(let e=0;e<3;e++){let i=t[e].toString(16);i.length<2&&(i="0"+i),r+=i}let i=_t._ebsp2rbsp(e),n=new mt(i);n.readByte();let s=n.readByte();n.readByte();let o=n.readByte();n.readUEG();let a=_t.getProfileString(s),l=_t.getLevelString(o),d=1,u=420,c=[0,420,422,444],f=8,h=8;if((100===s||110===s||122===s||244===s||44===s||83===s||86===s||118===s||128===s||138===s||144===s)&&(d=n.readUEG(),3===d&&n.readBits(1),d<=3&&(u=c[d]),f=n.readUEG()+8,h=n.readUEG()+8,n.readBits(1),n.readBool())){let e=3!==d?8:12;for(let t=0;t0&&e<16?(S=[1,12,10,16,40,24,20,32,80,18,15,64,160,4,3,2][e-1],U=[1,11,11,11,33,11,11,11,33,11,11,33,99,3,2,1][e-1]):255===e&&(S=n.readByte()<<8|n.readByte(),U=n.readByte()<<8|n.readByte())}if(n.readBool()&&n.readBool(),n.readBool()&&(n.readBits(4),n.readBool()&&n.readBits(24)),n.readBool()&&(n.readUEG(),n.readUEG()),n.readBool()){let e=n.readBits(32),t=n.readBits(32);A=n.readBool(),k=t,T=2*e,x=k/T}}let B=1;1===S&&1===U||(B=S/U);let C=0,D=0;if(0===d)C=1,D=2-g;else{C=3===d?1:2,D=(1===d?2:1)*(2-g)}let F=16*(_+1),P=16*(y+1)*(2-g);F-=(v+b)*C,P-=(w+E)*D;let I=Math.ceil(F*B);return n.destroy(),n=null,{codec_mimetype:r,profile_idc:s,level_idc:o,profile_string:a,level_string:l,chroma_format_idc:d,bit_depth:f,bit_depth_luma:f,bit_depth_chroma:h,ref_frames:m,chroma_format:u,chroma_format_string:_t.getChromaFormatString(u),frame_rate:{fixed:A,fps:x,fps_den:T,fps_num:k},sar_ratio:{width:S,height:U},codec_size:{width:F,height:P},present_size:{width:I,height:P}}}static _skipScalingList(e,t){let r=8,i=8,n=0;for(let s=0;s=this.buflen)return this.iserro=!0,0;this.iserro=!1,r=this.bufoff+e>8?8-this.bufoff:e,t<<=r,t+=this.buffer[this.bufpos]>>8-this.bufoff-r&255>>8-r,this.bufoff+=r,e-=r,8==this.bufoff&&(this.bufpos++,this.bufoff=0)}return t}look(e){let t=this.bufpos,r=this.bufoff,i=this.read(e);return this.bufpos=t,this.bufoff=r,i}read_golomb(){let e;for(e=0;0===this.read(1)&&!this.iserro;e++);return(1<>>24&255,e>>>16&255,e>>>8&255,255&e]),i=new Uint8Array(e+4);i.set(r,0),i.set(t.sps,4),t.sps=i}if(t.pps){const e=t.pps.byteLength,r=new Uint8Array([e>>>24&255,e>>>16&255,e>>>8&255,255&e]),i=new Uint8Array(e+4);i.set(r,0),i.set(t.pps,4),t.pps=i}return t}function vt({sps:e,pps:t}){const r=[23,0,0,0,0,1,66,0,30,255];r[0]=23,r[6]=e[1],r[7]=e[2],r[8]=e[3],r[10]=225,r[11]=e.byteLength>>8&255,r[12]=255&e.byteLength,r.push(...e,1,t.byteLength>>8&255,255&t.byteLength,...t);return new Uint8Array(r)}function bt(e,t){let r=[];r[0]=t?23:39,r[1]=1,r[2]=0,r[3]=0,r[4]=0;const i=new Uint8Array(r.length+e.byteLength);return i.set(r,0),i.set(e,r.length),i}function wt(e){return 31&e[0]}function Et(e){return e===Ae.kSliceSEI}function St(e){return!function(e){return e===Ae.sps||e===Ae.pps}(e)&&!Et(e)}function Ut(e){return e===Ae.iFrame}const xt=e=>{let t=e,r=t.byteLength,i=new Uint8Array(r),n=0;for(let e=0;e=2&&3===t[e]&&0===t[e-1]&&0===t[e-2]||(i[n]=t[e],n++);return new Uint8Array(i.buffer,0,n)},At=e=>{switch(e){case 0:return"4:0:0";case 1:return"4:2:0";case 2:return"4:2:2";case 3:return"4:4:4";default:return"Unknown"}},kt=e=>{let t=xt(e),r=new mt(t);r.readByte(),r.readByte();let i=0,n=0,s=0,o=0;r.readBits(4);let a=r.readBits(3);r.readBool();let l=r.readBits(2),d=r.readBool(),u=r.readBits(5),c=r.readByte(),f=r.readByte(),h=r.readByte(),p=r.readByte(),m=r.readByte(),_=r.readByte(),y=r.readByte(),g=r.readByte(),v=r.readByte(),b=r.readByte(),w=r.readByte(),E=[],S=[];for(let e=0;e0)for(let e=a;e<8;e++)r.readBits(2);for(let e=0;e1&&r.readSEG();for(let e=0;e0&&e<16?(I=[1,12,10,16,40,24,20,32,80,18,15,64,160,4,3,2][e-1],L=[1,11,11,11,33,11,11,11,33,11,11,33,99,3,2,1][e-1]):255===e&&(I=r.readBits(16),L=r.readBits(16))}if(r.readBool()&&r.readBool(),r.readBool()){r.readBits(3),r.readBool(),r.readBool()&&(r.readByte(),r.readByte(),r.readByte())}if(r.readBool()&&(r.readUEG(),r.readUEG()),r.readBool(),r.readBool(),r.readBool(),F=r.readBool(),F&&(i+=r.readUEG(),n+=r.readUEG(),s+=r.readUEG(),o+=r.readUEG()),r.readBool()){if(M=r.readBits(32),z=r.readBits(32),r.readBool()){if(r.readUEG(),r.readBool()){let e=!1,t=!1,i=!1;e=r.readBool(),t=r.readBool(),(e||t)&&(i=r.readBool(),i&&(r.readByte(),r.readBits(5),r.readBool(),r.readBits(5)),r.readBits(4),r.readBits(4),i&&r.readBits(4),r.readBits(5),r.readBits(5),r.readBits(5));for(let n=0;n<=a;n++){let n=r.readBool();R=n;let s=!1,o=1;n||(s=r.readBool());let a=!1;if(s?r.readSEG():a=r.readBool(),a||(cpbcnt=r.readUEG()+1),e)for(let e=0;e{let t=xt(e),r=new mt(t);return r.readByte(),r.readByte(),r.readBits(4),r.readBits(2),r.readBits(6),{num_temporal_layers:r.readBits(3)+1,temporal_id_nested:r.readBool()}},Bt=e=>{let t=xt(e),r=new mt(t);r.readByte(),r.readByte(),r.readUEG(),r.readUEG(),r.readBool(),r.readBool(),r.readBits(3),r.readBool(),r.readBool(),r.readUEG(),r.readUEG(),r.readSEG(),r.readBool(),r.readBool(),r.readBool()&&r.readUEG(),r.readSEG(),r.readSEG(),r.readBool(),r.readBool(),r.readBool(),r.readBool();let i=r.readBool(),n=r.readBool(),s=1;return n&&i?s=0:n?s=3:i&&(s=2),{parallelismType:s}};function Ct(e,t=0){return(e[t]<<24>>>0)+(e[t+1]<<16)+(e[t+2]<<8)+(e[t+3]||0)}function Dt(e,t=4){if(e.length<4)return;const r=e.length,i=[];let n,s=0;for(;s+t>>=8),s+=t,n){if(s+n>r)break;i.push(e.subarray(s,s+n)),s+=n}return i}function Ft(e){const t=e.byteLength,r=new Uint8Array(4);r[0]=t>>>24&255,r[1]=t>>>16&255,r[2]=t>>>8&255,r[3]=255&t;const i=new Uint8Array(t+4);return i.set(r,0),i.set(e,4),i}function Pt(e,t){let r=null;return t?e.length>=28&&(r=1+(3&e[26])):e.length>=12&&(r=1+(3&e[9])),r}function It(e,t){let r={},i=e.length,n=[],s=new yt(e);s.read(1),s.read(6),s.read(6),s.read(3);for(let e=2;e0)for(let t=r;t<8;t++)e.read(2);i.sub_layer_profile_space=[],i.sub_layer_tier_flag=[],i.sub_layer_profile_idc=[],i.sub_layer_profile_compatibility_flag=[],i.sub_layer_progressive_source_flag=[],i.sub_layer_interlaced_source_flag=[],i.sub_layer_non_packed_constraint_flag=[],i.sub_layer_frame_only_constraint_flag=[],i.sub_layer_level_idc=[];for(let t=0;t>8,l[14]=255&i.min_spatial_segmentation_idc,l[15]=252|3&i.parallelismType,l[16]=252|3&i.chroma_format_idc,l[17]=248|7&i.bit_depth_luma_minus8,l[18]=248|7&i.bit_depth_chroma_minus8,l[19]=0,l[20]=0,l[21]=(3&i.constant_frame_rate)<<6|(7&i.num_temporal_layers)<<3|(i.temporal_id_nested?1:0)<<2|3,l[22]=3,l[23]=128|ke.vps,l[24]=0,l[25]=1,l[26]=(65280&e.byteLength)>>8,l[27]=255&e.byteLength,l.set(e,28),l[23+(5+e.byteLength)+0]=128|ke.sps,l[23+(5+e.byteLength)+1]=0,l[23+(5+e.byteLength)+2]=1,l[23+(5+e.byteLength)+3]=(65280&r.byteLength)>>8,l[23+(5+e.byteLength)+4]=255&r.byteLength,l.set(r,23+(5+e.byteLength)+5),l[23+(5+e.byteLength+5+r.byteLength)+0]=128|ke.pps,l[23+(5+e.byteLength+5+r.byteLength)+1]=0,l[23+(5+e.byteLength+5+r.byteLength)+2]=1,l[23+(5+e.byteLength+5+r.byteLength)+3]=(65280&t.byteLength)>>8,l[23+(5+e.byteLength+5+r.byteLength)+4]=255&t.byteLength,l.set(t,23+(5+e.byteLength+5+r.byteLength)+5);const d=[28,0,0,0,0],u=new Uint8Array(d.length+l.byteLength);return u.set(d,0),u.set(l,d.length),u}function Rt(e,t){let r=[];r[0]=t?28:44,r[1]=1,r[2]=0,r[3]=0,r[4]=0;const i=new Uint8Array(r.length+e.byteLength);return i.set(r,0),i.set(e,r.length),i}function Mt(e){return(126&e[0])>>1}function zt(e){return!function(e){return e>=32&&e<=40}(e)}function Nt(e){return e>=16&&e<=21}function Ot(e){return parseInt(e)===e}function $t(e){if(!Ot(e.length))return!1;for(var t=0;t255)return!1;return!0}function Gt(e,t){if(e.buffer&&"Uint8Array"===e.name)return t&&(e=e.slice?e.slice():Array.prototype.slice.call(e)),e;if(Array.isArray(e)){if(!$t(e))throw new Error("Array contains invalid value: "+e);return new Uint8Array(e)}if(Ot(e.length)&&$t(e))return new Uint8Array(e);throw new Error("unsupported array-like object")}function Ht(e){return new Uint8Array(e)}function Vt(e,t,r,i,n){null==i&&null==n||(e=e.slice?e.slice(i,n):Array.prototype.slice.call(e,i,n)),t.set(e,r)}var jt,Wt={toBytes:function(e){var t=[],r=0;for(e=encodeURI(e);r191&&i<224?(t.push(String.fromCharCode((31&i)<<6|63&e[r+1])),r+=2):(t.push(String.fromCharCode((15&i)<<12|(63&e[r+1])<<6|63&e[r+2])),r+=3)}return t.join("")}},Yt=(jt="0123456789abcdef",{toBytes:function(e){for(var t=[],r=0;r>4]+jt[15&i])}return t.join("")}}),qt={16:10,24:12,32:14},Kt=[1,2,4,8,16,32,64,128,27,54,108,216,171,77,154,47,94,188,99,198,151,53,106,212,179,125,250,239,197,145],Xt=[99,124,119,123,242,107,111,197,48,1,103,43,254,215,171,118,202,130,201,125,250,89,71,240,173,212,162,175,156,164,114,192,183,253,147,38,54,63,247,204,52,165,229,241,113,216,49,21,4,199,35,195,24,150,5,154,7,18,128,226,235,39,178,117,9,131,44,26,27,110,90,160,82,59,214,179,41,227,47,132,83,209,0,237,32,252,177,91,106,203,190,57,74,76,88,207,208,239,170,251,67,77,51,133,69,249,2,127,80,60,159,168,81,163,64,143,146,157,56,245,188,182,218,33,16,255,243,210,205,12,19,236,95,151,68,23,196,167,126,61,100,93,25,115,96,129,79,220,34,42,144,136,70,238,184,20,222,94,11,219,224,50,58,10,73,6,36,92,194,211,172,98,145,149,228,121,231,200,55,109,141,213,78,169,108,86,244,234,101,122,174,8,186,120,37,46,28,166,180,198,232,221,116,31,75,189,139,138,112,62,181,102,72,3,246,14,97,53,87,185,134,193,29,158,225,248,152,17,105,217,142,148,155,30,135,233,206,85,40,223,140,161,137,13,191,230,66,104,65,153,45,15,176,84,187,22],Zt=[82,9,106,213,48,54,165,56,191,64,163,158,129,243,215,251,124,227,57,130,155,47,255,135,52,142,67,68,196,222,233,203,84,123,148,50,166,194,35,61,238,76,149,11,66,250,195,78,8,46,161,102,40,217,36,178,118,91,162,73,109,139,209,37,114,248,246,100,134,104,152,22,212,164,92,204,93,101,182,146,108,112,72,80,253,237,185,218,94,21,70,87,167,141,157,132,144,216,171,0,140,188,211,10,247,228,88,5,184,179,69,6,208,44,30,143,202,63,15,2,193,175,189,3,1,19,138,107,58,145,17,65,79,103,220,234,151,242,207,206,240,180,230,115,150,172,116,34,231,173,53,133,226,249,55,232,28,117,223,110,71,241,26,113,29,41,197,137,111,183,98,14,170,24,190,27,252,86,62,75,198,210,121,32,154,219,192,254,120,205,90,244,31,221,168,51,136,7,199,49,177,18,16,89,39,128,236,95,96,81,127,169,25,181,74,13,45,229,122,159,147,201,156,239,160,224,59,77,174,42,245,176,200,235,187,60,131,83,153,97,23,43,4,126,186,119,214,38,225,105,20,99,85,33,12,125],Jt=[3328402341,4168907908,4000806809,4135287693,4294111757,3597364157,3731845041,2445657428,1613770832,33620227,3462883241,1445669757,3892248089,3050821474,1303096294,3967186586,2412431941,528646813,2311702848,4202528135,4026202645,2992200171,2387036105,4226871307,1101901292,3017069671,1604494077,1169141738,597466303,1403299063,3832705686,2613100635,1974974402,3791519004,1033081774,1277568618,1815492186,2118074177,4126668546,2211236943,1748251740,1369810420,3521504564,4193382664,3799085459,2883115123,1647391059,706024767,134480908,2512897874,1176707941,2646852446,806885416,932615841,168101135,798661301,235341577,605164086,461406363,3756188221,3454790438,1311188841,2142417613,3933566367,302582043,495158174,1479289972,874125870,907746093,3698224818,3025820398,1537253627,2756858614,1983593293,3084310113,2108928974,1378429307,3722699582,1580150641,327451799,2790478837,3117535592,0,3253595436,1075847264,3825007647,2041688520,3059440621,3563743934,2378943302,1740553945,1916352843,2487896798,2555137236,2958579944,2244988746,3151024235,3320835882,1336584933,3992714006,2252555205,2588757463,1714631509,293963156,2319795663,3925473552,67240454,4269768577,2689618160,2017213508,631218106,1269344483,2723238387,1571005438,2151694528,93294474,1066570413,563977660,1882732616,4059428100,1673313503,2008463041,2950355573,1109467491,537923632,3858759450,4260623118,3218264685,2177748300,403442708,638784309,3287084079,3193921505,899127202,2286175436,773265209,2479146071,1437050866,4236148354,2050833735,3362022572,3126681063,840505643,3866325909,3227541664,427917720,2655997905,2749160575,1143087718,1412049534,999329963,193497219,2353415882,3354324521,1807268051,672404540,2816401017,3160301282,369822493,2916866934,3688947771,1681011286,1949973070,336202270,2454276571,201721354,1210328172,3093060836,2680341085,3184776046,1135389935,3294782118,965841320,831886756,3554993207,4068047243,3588745010,2345191491,1849112409,3664604599,26054028,2983581028,2622377682,1235855840,3630984372,2891339514,4092916743,3488279077,3395642799,4101667470,1202630377,268961816,1874508501,4034427016,1243948399,1546530418,941366308,1470539505,1941222599,2546386513,3421038627,2715671932,3899946140,1042226977,2521517021,1639824860,227249030,260737669,3765465232,2084453954,1907733956,3429263018,2420656344,100860677,4160157185,470683154,3261161891,1781871967,2924959737,1773779408,394692241,2579611992,974986535,664706745,3655459128,3958962195,731420851,571543859,3530123707,2849626480,126783113,865375399,765172662,1008606754,361203602,3387549984,2278477385,2857719295,1344809080,2782912378,59542671,1503764984,160008576,437062935,1707065306,3622233649,2218934982,3496503480,2185314755,697932208,1512910199,504303377,2075177163,2824099068,1841019862,739644986],Qt=[2781242211,2230877308,2582542199,2381740923,234877682,3184946027,2984144751,1418839493,1348481072,50462977,2848876391,2102799147,434634494,1656084439,3863849899,2599188086,1167051466,2636087938,1082771913,2281340285,368048890,3954334041,3381544775,201060592,3963727277,1739838676,4250903202,3930435503,3206782108,4149453988,2531553906,1536934080,3262494647,484572669,2923271059,1783375398,1517041206,1098792767,49674231,1334037708,1550332980,4098991525,886171109,150598129,2481090929,1940642008,1398944049,1059722517,201851908,1385547719,1699095331,1587397571,674240536,2704774806,252314885,3039795866,151914247,908333586,2602270848,1038082786,651029483,1766729511,3447698098,2682942837,454166793,2652734339,1951935532,775166490,758520603,3000790638,4004797018,4217086112,4137964114,1299594043,1639438038,3464344499,2068982057,1054729187,1901997871,2534638724,4121318227,1757008337,0,750906861,1614815264,535035132,3363418545,3988151131,3201591914,1183697867,3647454910,1265776953,3734260298,3566750796,3903871064,1250283471,1807470800,717615087,3847203498,384695291,3313910595,3617213773,1432761139,2484176261,3481945413,283769337,100925954,2180939647,4037038160,1148730428,3123027871,3813386408,4087501137,4267549603,3229630528,2315620239,2906624658,3156319645,1215313976,82966005,3747855548,3245848246,1974459098,1665278241,807407632,451280895,251524083,1841287890,1283575245,337120268,891687699,801369324,3787349855,2721421207,3431482436,959321879,1469301956,4065699751,2197585534,1199193405,2898814052,3887750493,724703513,2514908019,2696962144,2551808385,3516813135,2141445340,1715741218,2119445034,2872807568,2198571144,3398190662,700968686,3547052216,1009259540,2041044702,3803995742,487983883,1991105499,1004265696,1449407026,1316239930,504629770,3683797321,168560134,1816667172,3837287516,1570751170,1857934291,4014189740,2797888098,2822345105,2754712981,936633572,2347923833,852879335,1133234376,1500395319,3084545389,2348912013,1689376213,3533459022,3762923945,3034082412,4205598294,133428468,634383082,2949277029,2398386810,3913789102,403703816,3580869306,2297460856,1867130149,1918643758,607656988,4049053350,3346248884,1368901318,600565992,2090982877,2632479860,557719327,3717614411,3697393085,2249034635,2232388234,2430627952,1115438654,3295786421,2865522278,3633334344,84280067,33027830,303828494,2747425121,1600795957,4188952407,3496589753,2434238086,1486471617,658119965,3106381470,953803233,334231800,3005978776,857870609,3151128937,1890179545,2298973838,2805175444,3056442267,574365214,2450884487,550103529,1233637070,4289353045,2018519080,2057691103,2399374476,4166623649,2148108681,387583245,3664101311,836232934,3330556482,3100665960,3280093505,2955516313,2002398509,287182607,3413881008,4238890068,3597515707,975967766],er=[1671808611,2089089148,2006576759,2072901243,4061003762,1807603307,1873927791,3310653893,810573872,16974337,1739181671,729634347,4263110654,3613570519,2883997099,1989864566,3393556426,2191335298,3376449993,2106063485,4195741690,1508618841,1204391495,4027317232,2917941677,3563566036,2734514082,2951366063,2629772188,2767672228,1922491506,3227229120,3082974647,4246528509,2477669779,644500518,911895606,1061256767,4144166391,3427763148,878471220,2784252325,3845444069,4043897329,1905517169,3631459288,827548209,356461077,67897348,3344078279,593839651,3277757891,405286936,2527147926,84871685,2595565466,118033927,305538066,2157648768,3795705826,3945188843,661212711,2999812018,1973414517,152769033,2208177539,745822252,439235610,455947803,1857215598,1525593178,2700827552,1391895634,994932283,3596728278,3016654259,695947817,3812548067,795958831,2224493444,1408607827,3513301457,0,3979133421,543178784,4229948412,2982705585,1542305371,1790891114,3410398667,3201918910,961245753,1256100938,1289001036,1491644504,3477767631,3496721360,4012557807,2867154858,4212583931,1137018435,1305975373,861234739,2241073541,1171229253,4178635257,33948674,2139225727,1357946960,1011120188,2679776671,2833468328,1374921297,2751356323,1086357568,2408187279,2460827538,2646352285,944271416,4110742005,3168756668,3066132406,3665145818,560153121,271589392,4279952895,4077846003,3530407890,3444343245,202643468,322250259,3962553324,1608629855,2543990167,1154254916,389623319,3294073796,2817676711,2122513534,1028094525,1689045092,1575467613,422261273,1939203699,1621147744,2174228865,1339137615,3699352540,577127458,712922154,2427141008,2290289544,1187679302,3995715566,3100863416,339486740,3732514782,1591917662,186455563,3681988059,3762019296,844522546,978220090,169743370,1239126601,101321734,611076132,1558493276,3260915650,3547250131,2901361580,1655096418,2443721105,2510565781,3828863972,2039214713,3878868455,3359869896,928607799,1840765549,2374762893,3580146133,1322425422,2850048425,1823791212,1459268694,4094161908,3928346602,1706019429,2056189050,2934523822,135794696,3134549946,2022240376,628050469,779246638,472135708,2800834470,3032970164,3327236038,3894660072,3715932637,1956440180,522272287,1272813131,3185336765,2340818315,2323976074,1888542832,1044544574,3049550261,1722469478,1222152264,50660867,4127324150,236067854,1638122081,895445557,1475980887,3117443513,2257655686,3243809217,489110045,2662934430,3778599393,4162055160,2561878936,288563729,1773916777,3648039385,2391345038,2493985684,2612407707,505560094,2274497927,3911240169,3460925390,1442818645,678973480,3749357023,2358182796,2717407649,2306869641,219617805,3218761151,3862026214,1120306242,1756942440,1103331905,2578459033,762796589,252780047,2966125488,1425844308,3151392187,372911126],tr=[1667474886,2088535288,2004326894,2071694838,4075949567,1802223062,1869591006,3318043793,808472672,16843522,1734846926,724270422,4278065639,3621216949,2880169549,1987484396,3402253711,2189597983,3385409673,2105378810,4210693615,1499065266,1195886990,4042263547,2913856577,3570689971,2728590687,2947541573,2627518243,2762274643,1920112356,3233831835,3082273397,4261223649,2475929149,640051788,909531756,1061110142,4160160501,3435941763,875846760,2779116625,3857003729,4059105529,1903268834,3638064043,825316194,353713962,67374088,3351728789,589522246,3284360861,404236336,2526454071,84217610,2593830191,117901582,303183396,2155911963,3806477791,3958056653,656894286,2998062463,1970642922,151591698,2206440989,741110872,437923380,454765878,1852748508,1515908788,2694904667,1381168804,993742198,3604373943,3014905469,690584402,3823320797,791638366,2223281939,1398011302,3520161977,0,3991743681,538992704,4244381667,2981218425,1532751286,1785380564,3419096717,3200178535,960056178,1246420628,1280103576,1482221744,3486468741,3503319995,4025428677,2863326543,4227536621,1128514950,1296947098,859002214,2240123921,1162203018,4193849577,33687044,2139062782,1347481760,1010582648,2678045221,2829640523,1364325282,2745433693,1077985408,2408548869,2459086143,2644360225,943212656,4126475505,3166494563,3065430391,3671750063,555836226,269496352,4294908645,4092792573,3537006015,3452783745,202118168,320025894,3974901699,1600119230,2543297077,1145359496,387397934,3301201811,2812801621,2122220284,1027426170,1684319432,1566435258,421079858,1936954854,1616945344,2172753945,1330631070,3705438115,572679748,707427924,2425400123,2290647819,1179044492,4008585671,3099120491,336870440,3739122087,1583276732,185277718,3688593069,3772791771,842159716,976899700,168435220,1229577106,101059084,606366792,1549591736,3267517855,3553849021,2897014595,1650632388,2442242105,2509612081,3840161747,2038008818,3890688725,3368567691,926374254,1835907034,2374863873,3587531953,1313788572,2846482505,1819063512,1448540844,4109633523,3941213647,1701162954,2054852340,2930698567,134748176,3132806511,2021165296,623210314,774795868,471606328,2795958615,3031746419,3334885783,3907527627,3722280097,1953799400,522133822,1263263126,3183336545,2341176845,2324333839,1886425312,1044267644,3048588401,1718004428,1212733584,50529542,4143317495,235803164,1633788866,892690282,1465383342,3115962473,2256965911,3250673817,488449850,2661202215,3789633753,4177007595,2560144171,286339874,1768537042,3654906025,2391705863,2492770099,2610673197,505291324,2273808917,3924369609,3469625735,1431699370,673740880,3755965093,2358021891,2711746649,2307489801,218961690,3217021541,3873845719,1111672452,1751693520,1094828930,2576986153,757954394,252645662,2964376443,1414855848,3149649517,370555436],rr=[1374988112,2118214995,437757123,975658646,1001089995,530400753,2902087851,1273168787,540080725,2910219766,2295101073,4110568485,1340463100,3307916247,641025152,3043140495,3736164937,632953703,1172967064,1576976609,3274667266,2169303058,2370213795,1809054150,59727847,361929877,3211623147,2505202138,3569255213,1484005843,1239443753,2395588676,1975683434,4102977912,2572697195,666464733,3202437046,4035489047,3374361702,2110667444,1675577880,3843699074,2538681184,1649639237,2976151520,3144396420,4269907996,4178062228,1883793496,2403728665,2497604743,1383856311,2876494627,1917518562,3810496343,1716890410,3001755655,800440835,2261089178,3543599269,807962610,599762354,33778362,3977675356,2328828971,2809771154,4077384432,1315562145,1708848333,101039829,3509871135,3299278474,875451293,2733856160,92987698,2767645557,193195065,1080094634,1584504582,3178106961,1042385657,2531067453,3711829422,1306967366,2438237621,1908694277,67556463,1615861247,429456164,3602770327,2302690252,1742315127,2968011453,126454664,3877198648,2043211483,2709260871,2084704233,4169408201,0,159417987,841739592,504459436,1817866830,4245618683,260388950,1034867998,908933415,168810852,1750902305,2606453969,607530554,202008497,2472011535,3035535058,463180190,2160117071,1641816226,1517767529,470948374,3801332234,3231722213,1008918595,303765277,235474187,4069246893,766945465,337553864,1475418501,2943682380,4003061179,2743034109,4144047775,1551037884,1147550661,1543208500,2336434550,3408119516,3069049960,3102011747,3610369226,1113818384,328671808,2227573024,2236228733,3535486456,2935566865,3341394285,496906059,3702665459,226906860,2009195472,733156972,2842737049,294930682,1206477858,2835123396,2700099354,1451044056,573804783,2269728455,3644379585,2362090238,2564033334,2801107407,2776292904,3669462566,1068351396,742039012,1350078989,1784663195,1417561698,4136440770,2430122216,775550814,2193862645,2673705150,1775276924,1876241833,3475313331,3366754619,270040487,3902563182,3678124923,3441850377,1851332852,3969562369,2203032232,3868552805,2868897406,566021896,4011190502,3135740889,1248802510,3936291284,699432150,832877231,708780849,3332740144,899835584,1951317047,4236429990,3767586992,866637845,4043610186,1106041591,2144161806,395441711,1984812685,1139781709,3433712980,3835036895,2664543715,1282050075,3240894392,1181045119,2640243204,25965917,4203181171,4211818798,3009879386,2463879762,3910161971,1842759443,2597806476,933301370,1509430414,3943906441,3467192302,3076639029,3776767469,2051518780,2631065433,1441952575,404016761,1942435775,1408749034,1610459739,3745345300,2017778566,3400528769,3110650942,941896748,3265478751,371049330,3168937228,675039627,4279080257,967311729,135050206,3635733660,1683407248,2076935265,3576870512,1215061108,3501741890],ir=[1347548327,1400783205,3273267108,2520393566,3409685355,4045380933,2880240216,2471224067,1428173050,4138563181,2441661558,636813900,4233094615,3620022987,2149987652,2411029155,1239331162,1730525723,2554718734,3781033664,46346101,310463728,2743944855,3328955385,3875770207,2501218972,3955191162,3667219033,768917123,3545789473,692707433,1150208456,1786102409,2029293177,1805211710,3710368113,3065962831,401639597,1724457132,3028143674,409198410,2196052529,1620529459,1164071807,3769721975,2226875310,486441376,2499348523,1483753576,428819965,2274680428,3075636216,598438867,3799141122,1474502543,711349675,129166120,53458370,2592523643,2782082824,4063242375,2988687269,3120694122,1559041666,730517276,2460449204,4042459122,2706270690,3446004468,3573941694,533804130,2328143614,2637442643,2695033685,839224033,1973745387,957055980,2856345839,106852767,1371368976,4181598602,1033297158,2933734917,1179510461,3046200461,91341917,1862534868,4284502037,605657339,2547432937,3431546947,2003294622,3182487618,2282195339,954669403,3682191598,1201765386,3917234703,3388507166,0,2198438022,1211247597,2887651696,1315723890,4227665663,1443857720,507358933,657861945,1678381017,560487590,3516619604,975451694,2970356327,261314535,3535072918,2652609425,1333838021,2724322336,1767536459,370938394,182621114,3854606378,1128014560,487725847,185469197,2918353863,3106780840,3356761769,2237133081,1286567175,3152976349,4255350624,2683765030,3160175349,3309594171,878443390,1988838185,3704300486,1756818940,1673061617,3403100636,272786309,1075025698,545572369,2105887268,4174560061,296679730,1841768865,1260232239,4091327024,3960309330,3497509347,1814803222,2578018489,4195456072,575138148,3299409036,446754879,3629546796,4011996048,3347532110,3252238545,4270639778,915985419,3483825537,681933534,651868046,2755636671,3828103837,223377554,2607439820,1649704518,3270937875,3901806776,1580087799,4118987695,3198115200,2087309459,2842678573,3016697106,1003007129,2802849917,1860738147,2077965243,164439672,4100872472,32283319,2827177882,1709610350,2125135846,136428751,3874428392,3652904859,3460984630,3572145929,3593056380,2939266226,824852259,818324884,3224740454,930369212,2801566410,2967507152,355706840,1257309336,4148292826,243256656,790073846,2373340630,1296297904,1422699085,3756299780,3818836405,457992840,3099667487,2135319889,77422314,1560382517,1945798516,788204353,1521706781,1385356242,870912086,325965383,2358957921,2050466060,2388260884,2313884476,4006521127,901210569,3990953189,1014646705,1503449823,1062597235,2031621326,3212035895,3931371469,1533017514,350174575,2256028891,2177544179,1052338372,741876788,1606591296,1914052035,213705253,2334669897,1107234197,1899603969,3725069491,2631447780,2422494913,1635502980,1893020342,1950903388,1120974935],nr=[2807058932,1699970625,2764249623,1586903591,1808481195,1173430173,1487645946,59984867,4199882800,1844882806,1989249228,1277555970,3623636965,3419915562,1149249077,2744104290,1514790577,459744698,244860394,3235995134,1963115311,4027744588,2544078150,4190530515,1608975247,2627016082,2062270317,1507497298,2200818878,567498868,1764313568,3359936201,2305455554,2037970062,1047239e3,1910319033,1337376481,2904027272,2892417312,984907214,1243112415,830661914,861968209,2135253587,2011214180,2927934315,2686254721,731183368,1750626376,4246310725,1820824798,4172763771,3542330227,48394827,2404901663,2871682645,671593195,3254988725,2073724613,145085239,2280796200,2779915199,1790575107,2187128086,472615631,3029510009,4075877127,3802222185,4107101658,3201631749,1646252340,4270507174,1402811438,1436590835,3778151818,3950355702,3963161475,4020912224,2667994737,273792366,2331590177,104699613,95345982,3175501286,2377486676,1560637892,3564045318,369057872,4213447064,3919042237,1137477952,2658625497,1119727848,2340947849,1530455833,4007360968,172466556,266959938,516552836,0,2256734592,3980931627,1890328081,1917742170,4294704398,945164165,3575528878,958871085,3647212047,2787207260,1423022939,775562294,1739656202,3876557655,2530391278,2443058075,3310321856,547512796,1265195639,437656594,3121275539,719700128,3762502690,387781147,218828297,3350065803,2830708150,2848461854,428169201,122466165,3720081049,1627235199,648017665,4122762354,1002783846,2117360635,695634755,3336358691,4234721005,4049844452,3704280881,2232435299,574624663,287343814,612205898,1039717051,840019705,2708326185,793451934,821288114,1391201670,3822090177,376187827,3113855344,1224348052,1679968233,2361698556,1058709744,752375421,2431590963,1321699145,3519142200,2734591178,188127444,2177869557,3727205754,2384911031,3215212461,2648976442,2450346104,3432737375,1180849278,331544205,3102249176,4150144569,2952102595,2159976285,2474404304,766078933,313773861,2570832044,2108100632,1668212892,3145456443,2013908262,418672217,3070356634,2594734927,1852171925,3867060991,3473416636,3907448597,2614737639,919489135,164948639,2094410160,2997825956,590424639,2486224549,1723872674,3157750862,3399941250,3501252752,3625268135,2555048196,3673637356,1343127501,4130281361,3599595085,2957853679,1297403050,81781910,3051593425,2283490410,532201772,1367295589,3926170974,895287692,1953757831,1093597963,492483431,3528626907,1446242576,1192455638,1636604631,209336225,344873464,1015671571,669961897,3375740769,3857572124,2973530695,3747192018,1933530610,3464042516,935293895,3454686199,2858115069,1863638845,3683022916,4085369519,3292445032,875313188,1080017571,3279033885,621591778,1233856572,2504130317,24197544,3017672716,3835484340,3247465558,2220981195,3060847922,1551124588,1463996600],sr=[4104605777,1097159550,396673818,660510266,2875968315,2638606623,4200115116,3808662347,821712160,1986918061,3430322568,38544885,3856137295,718002117,893681702,1654886325,2975484382,3122358053,3926825029,4274053469,796197571,1290801793,1184342925,3556361835,2405426947,2459735317,1836772287,1381620373,3196267988,1948373848,3764988233,3385345166,3263785589,2390325492,1480485785,3111247143,3780097726,2293045232,548169417,3459953789,3746175075,439452389,1362321559,1400849762,1685577905,1806599355,2174754046,137073913,1214797936,1174215055,3731654548,2079897426,1943217067,1258480242,529487843,1437280870,3945269170,3049390895,3313212038,923313619,679998e3,3215307299,57326082,377642221,3474729866,2041877159,133361907,1776460110,3673476453,96392454,878845905,2801699524,777231668,4082475170,2330014213,4142626212,2213296395,1626319424,1906247262,1846563261,562755902,3708173718,1040559837,3871163981,1418573201,3294430577,114585348,1343618912,2566595609,3186202582,1078185097,3651041127,3896688048,2307622919,425408743,3371096953,2081048481,1108339068,2216610296,0,2156299017,736970802,292596766,1517440620,251657213,2235061775,2933202493,758720310,265905162,1554391400,1532285339,908999204,174567692,1474760595,4002861748,2610011675,3234156416,3693126241,2001430874,303699484,2478443234,2687165888,585122620,454499602,151849742,2345119218,3064510765,514443284,4044981591,1963412655,2581445614,2137062819,19308535,1928707164,1715193156,4219352155,1126790795,600235211,3992742070,3841024952,836553431,1669664834,2535604243,3323011204,1243905413,3141400786,4180808110,698445255,2653899549,2989552604,2253581325,3252932727,3004591147,1891211689,2487810577,3915653703,4237083816,4030667424,2100090966,865136418,1229899655,953270745,3399679628,3557504664,4118925222,2061379749,3079546586,2915017791,983426092,2022837584,1607244650,2118541908,2366882550,3635996816,972512814,3283088770,1568718495,3499326569,3576539503,621982671,2895723464,410887952,2623762152,1002142683,645401037,1494807662,2595684844,1335535747,2507040230,4293295786,3167684641,367585007,3885750714,1865862730,2668221674,2960971305,2763173681,1059270954,2777952454,2724642869,1320957812,2194319100,2429595872,2815956275,77089521,3973773121,3444575871,2448830231,1305906550,4021308739,2857194700,2516901860,3518358430,1787304780,740276417,1699839814,1592394909,2352307457,2272556026,188821243,1729977011,3687994002,274084841,3594982253,3613494426,2701949495,4162096729,322734571,2837966542,1640576439,484830689,1202797690,3537852828,4067639125,349075736,3342319475,4157467219,4255800159,1030690015,1155237496,2951971274,1757691577,607398968,2738905026,499347990,3794078908,1011452712,227885567,2818666809,213114376,3034881240,1455525988,3414450555,850817237,1817998408,3092726480],or=[0,235474187,470948374,303765277,941896748,908933415,607530554,708780849,1883793496,2118214995,1817866830,1649639237,1215061108,1181045119,1417561698,1517767529,3767586992,4003061179,4236429990,4069246893,3635733660,3602770327,3299278474,3400528769,2430122216,2664543715,2362090238,2193862645,2835123396,2801107407,3035535058,3135740889,3678124923,3576870512,3341394285,3374361702,3810496343,3977675356,4279080257,4043610186,2876494627,2776292904,3076639029,3110650942,2472011535,2640243204,2403728665,2169303058,1001089995,899835584,666464733,699432150,59727847,226906860,530400753,294930682,1273168787,1172967064,1475418501,1509430414,1942435775,2110667444,1876241833,1641816226,2910219766,2743034109,2976151520,3211623147,2505202138,2606453969,2302690252,2269728455,3711829422,3543599269,3240894392,3475313331,3843699074,3943906441,4178062228,4144047775,1306967366,1139781709,1374988112,1610459739,1975683434,2076935265,1775276924,1742315127,1034867998,866637845,566021896,800440835,92987698,193195065,429456164,395441711,1984812685,2017778566,1784663195,1683407248,1315562145,1080094634,1383856311,1551037884,101039829,135050206,437757123,337553864,1042385657,807962610,573804783,742039012,2531067453,2564033334,2328828971,2227573024,2935566865,2700099354,3001755655,3168937228,3868552805,3902563182,4203181171,4102977912,3736164937,3501741890,3265478751,3433712980,1106041591,1340463100,1576976609,1408749034,2043211483,2009195472,1708848333,1809054150,832877231,1068351396,766945465,599762354,159417987,126454664,361929877,463180190,2709260871,2943682380,3178106961,3009879386,2572697195,2538681184,2236228733,2336434550,3509871135,3745345300,3441850377,3274667266,3910161971,3877198648,4110568485,4211818798,2597806476,2497604743,2261089178,2295101073,2733856160,2902087851,3202437046,2968011453,3936291284,3835036895,4136440770,4169408201,3535486456,3702665459,3467192302,3231722213,2051518780,1951317047,1716890410,1750902305,1113818384,1282050075,1584504582,1350078989,168810852,67556463,371049330,404016761,841739592,1008918595,775550814,540080725,3969562369,3801332234,4035489047,4269907996,3569255213,3669462566,3366754619,3332740144,2631065433,2463879762,2160117071,2395588676,2767645557,2868897406,3102011747,3069049960,202008497,33778362,270040487,504459436,875451293,975658646,675039627,641025152,2084704233,1917518562,1615861247,1851332852,1147550661,1248802510,1484005843,1451044056,933301370,967311729,733156972,632953703,260388950,25965917,328671808,496906059,1206477858,1239443753,1543208500,1441952575,2144161806,1908694277,1675577880,1842759443,3610369226,3644379585,3408119516,3307916247,4011190502,3776767469,4077384432,4245618683,2809771154,2842737049,3144396420,3043140495,2673705150,2438237621,2203032232,2370213795],ar=[0,185469197,370938394,487725847,741876788,657861945,975451694,824852259,1483753576,1400783205,1315723890,1164071807,1950903388,2135319889,1649704518,1767536459,2967507152,3152976349,2801566410,2918353863,2631447780,2547432937,2328143614,2177544179,3901806776,3818836405,4270639778,4118987695,3299409036,3483825537,3535072918,3652904859,2077965243,1893020342,1841768865,1724457132,1474502543,1559041666,1107234197,1257309336,598438867,681933534,901210569,1052338372,261314535,77422314,428819965,310463728,3409685355,3224740454,3710368113,3593056380,3875770207,3960309330,4045380933,4195456072,2471224067,2554718734,2237133081,2388260884,3212035895,3028143674,2842678573,2724322336,4138563181,4255350624,3769721975,3955191162,3667219033,3516619604,3431546947,3347532110,2933734917,2782082824,3099667487,3016697106,2196052529,2313884476,2499348523,2683765030,1179510461,1296297904,1347548327,1533017514,1786102409,1635502980,2087309459,2003294622,507358933,355706840,136428751,53458370,839224033,957055980,605657339,790073846,2373340630,2256028891,2607439820,2422494913,2706270690,2856345839,3075636216,3160175349,3573941694,3725069491,3273267108,3356761769,4181598602,4063242375,4011996048,3828103837,1033297158,915985419,730517276,545572369,296679730,446754879,129166120,213705253,1709610350,1860738147,1945798516,2029293177,1239331162,1120974935,1606591296,1422699085,4148292826,4233094615,3781033664,3931371469,3682191598,3497509347,3446004468,3328955385,2939266226,2755636671,3106780840,2988687269,2198438022,2282195339,2501218972,2652609425,1201765386,1286567175,1371368976,1521706781,1805211710,1620529459,2105887268,1988838185,533804130,350174575,164439672,46346101,870912086,954669403,636813900,788204353,2358957921,2274680428,2592523643,2441661558,2695033685,2880240216,3065962831,3182487618,3572145929,3756299780,3270937875,3388507166,4174560061,4091327024,4006521127,3854606378,1014646705,930369212,711349675,560487590,272786309,457992840,106852767,223377554,1678381017,1862534868,1914052035,2031621326,1211247597,1128014560,1580087799,1428173050,32283319,182621114,401639597,486441376,768917123,651868046,1003007129,818324884,1503449823,1385356242,1333838021,1150208456,1973745387,2125135846,1673061617,1756818940,2970356327,3120694122,2802849917,2887651696,2637442643,2520393566,2334669897,2149987652,3917234703,3799141122,4284502037,4100872472,3309594171,3460984630,3545789473,3629546796,2050466060,1899603969,1814803222,1730525723,1443857720,1560382517,1075025698,1260232239,575138148,692707433,878443390,1062597235,243256656,91341917,409198410,325965383,3403100636,3252238545,3704300486,3620022987,3874428392,3990953189,4042459122,4227665663,2460449204,2578018489,2226875310,2411029155,3198115200,3046200461,2827177882,2743944855],lr=[0,218828297,437656594,387781147,875313188,958871085,775562294,590424639,1750626376,1699970625,1917742170,2135253587,1551124588,1367295589,1180849278,1265195639,3501252752,3720081049,3399941250,3350065803,3835484340,3919042237,4270507174,4085369519,3102249176,3051593425,2734591178,2952102595,2361698556,2177869557,2530391278,2614737639,3145456443,3060847922,2708326185,2892417312,2404901663,2187128086,2504130317,2555048196,3542330227,3727205754,3375740769,3292445032,3876557655,3926170974,4246310725,4027744588,1808481195,1723872674,1910319033,2094410160,1608975247,1391201670,1173430173,1224348052,59984867,244860394,428169201,344873464,935293895,984907214,766078933,547512796,1844882806,1627235199,2011214180,2062270317,1507497298,1423022939,1137477952,1321699145,95345982,145085239,532201772,313773861,830661914,1015671571,731183368,648017665,3175501286,2957853679,2807058932,2858115069,2305455554,2220981195,2474404304,2658625497,3575528878,3625268135,3473416636,3254988725,3778151818,3963161475,4213447064,4130281361,3599595085,3683022916,3432737375,3247465558,3802222185,4020912224,4172763771,4122762354,3201631749,3017672716,2764249623,2848461854,2331590177,2280796200,2431590963,2648976442,104699613,188127444,472615631,287343814,840019705,1058709744,671593195,621591778,1852171925,1668212892,1953757831,2037970062,1514790577,1463996600,1080017571,1297403050,3673637356,3623636965,3235995134,3454686199,4007360968,3822090177,4107101658,4190530515,2997825956,3215212461,2830708150,2779915199,2256734592,2340947849,2627016082,2443058075,172466556,122466165,273792366,492483431,1047239e3,861968209,612205898,695634755,1646252340,1863638845,2013908262,1963115311,1446242576,1530455833,1277555970,1093597963,1636604631,1820824798,2073724613,1989249228,1436590835,1487645946,1337376481,1119727848,164948639,81781910,331544205,516552836,1039717051,821288114,669961897,719700128,2973530695,3157750862,2871682645,2787207260,2232435299,2283490410,2667994737,2450346104,3647212047,3564045318,3279033885,3464042516,3980931627,3762502690,4150144569,4199882800,3070356634,3121275539,2904027272,2686254721,2200818878,2384911031,2570832044,2486224549,3747192018,3528626907,3310321856,3359936201,3950355702,3867060991,4049844452,4234721005,1739656202,1790575107,2108100632,1890328081,1402811438,1586903591,1233856572,1149249077,266959938,48394827,369057872,418672217,1002783846,919489135,567498868,752375421,209336225,24197544,376187827,459744698,945164165,895287692,574624663,793451934,1679968233,1764313568,2117360635,1933530610,1343127501,1560637892,1243112415,1192455638,3704280881,3519142200,3336358691,3419915562,3907448597,3857572124,4075877127,4294704398,3029510009,3113855344,2927934315,2744104290,2159976285,2377486676,2594734927,2544078150],dr=[0,151849742,303699484,454499602,607398968,758720310,908999204,1059270954,1214797936,1097159550,1517440620,1400849762,1817998408,1699839814,2118541908,2001430874,2429595872,2581445614,2194319100,2345119218,3034881240,3186202582,2801699524,2951971274,3635996816,3518358430,3399679628,3283088770,4237083816,4118925222,4002861748,3885750714,1002142683,850817237,698445255,548169417,529487843,377642221,227885567,77089521,1943217067,2061379749,1640576439,1757691577,1474760595,1592394909,1174215055,1290801793,2875968315,2724642869,3111247143,2960971305,2405426947,2253581325,2638606623,2487810577,3808662347,3926825029,4044981591,4162096729,3342319475,3459953789,3576539503,3693126241,1986918061,2137062819,1685577905,1836772287,1381620373,1532285339,1078185097,1229899655,1040559837,923313619,740276417,621982671,439452389,322734571,137073913,19308535,3871163981,4021308739,4104605777,4255800159,3263785589,3414450555,3499326569,3651041127,2933202493,2815956275,3167684641,3049390895,2330014213,2213296395,2566595609,2448830231,1305906550,1155237496,1607244650,1455525988,1776460110,1626319424,2079897426,1928707164,96392454,213114376,396673818,514443284,562755902,679998e3,865136418,983426092,3708173718,3557504664,3474729866,3323011204,4180808110,4030667424,3945269170,3794078908,2507040230,2623762152,2272556026,2390325492,2975484382,3092726480,2738905026,2857194700,3973773121,3856137295,4274053469,4157467219,3371096953,3252932727,3673476453,3556361835,2763173681,2915017791,3064510765,3215307299,2156299017,2307622919,2459735317,2610011675,2081048481,1963412655,1846563261,1729977011,1480485785,1362321559,1243905413,1126790795,878845905,1030690015,645401037,796197571,274084841,425408743,38544885,188821243,3613494426,3731654548,3313212038,3430322568,4082475170,4200115116,3780097726,3896688048,2668221674,2516901860,2366882550,2216610296,3141400786,2989552604,2837966542,2687165888,1202797690,1320957812,1437280870,1554391400,1669664834,1787304780,1906247262,2022837584,265905162,114585348,499347990,349075736,736970802,585122620,972512814,821712160,2595684844,2478443234,2293045232,2174754046,3196267988,3079546586,2895723464,2777952454,3537852828,3687994002,3234156416,3385345166,4142626212,4293295786,3841024952,3992742070,174567692,57326082,410887952,292596766,777231668,660510266,1011452712,893681702,1108339068,1258480242,1343618912,1494807662,1715193156,1865862730,1948373848,2100090966,2701949495,2818666809,3004591147,3122358053,2235061775,2352307457,2535604243,2653899549,3915653703,3764988233,4219352155,4067639125,3444575871,3294430577,3746175075,3594982253,836553431,953270745,600235211,718002117,367585007,484830689,133361907,251657213,2041877159,1891211689,1806599355,1654886325,1568718495,1418573201,1335535747,1184342925];function ur(e){for(var t=[],r=0;r>2,this._Ke[r][t%4]=s[t],this._Kd[e-r][t%4]=s[t];for(var o,a=0,l=n;l>16&255]<<24^Xt[o>>8&255]<<16^Xt[255&o]<<8^Xt[o>>24&255]^Kt[a]<<24,a+=1,8!=n)for(t=1;t>8&255]<<8^Xt[o>>16&255]<<16^Xt[o>>24&255]<<24;for(t=n/2+1;t>2,u=l%4,this._Ke[d][u]=s[t],this._Kd[e-d][u]=s[t++],l++}for(var d=1;d>24&255]^ar[o>>16&255]^lr[o>>8&255]^dr[255&o]},cr.prototype.encrypt=function(e){if(16!=e.length)throw new Error("invalid plaintext size (must be 16 bytes)");for(var t=this._Ke.length-1,r=[0,0,0,0],i=ur(e),n=0;n<4;n++)i[n]^=this._Ke[0][n];for(var s=1;s>24&255]^Qt[i[(n+1)%4]>>16&255]^er[i[(n+2)%4]>>8&255]^tr[255&i[(n+3)%4]]^this._Ke[s][n];i=r.slice()}var o,a=Ht(16);for(n=0;n<4;n++)o=this._Ke[t][n],a[4*n]=255&(Xt[i[n]>>24&255]^o>>24),a[4*n+1]=255&(Xt[i[(n+1)%4]>>16&255]^o>>16),a[4*n+2]=255&(Xt[i[(n+2)%4]>>8&255]^o>>8),a[4*n+3]=255&(Xt[255&i[(n+3)%4]]^o);return a},cr.prototype.decrypt=function(e){if(16!=e.length)throw new Error("invalid ciphertext size (must be 16 bytes)");for(var t=this._Kd.length-1,r=[0,0,0,0],i=ur(e),n=0;n<4;n++)i[n]^=this._Kd[0][n];for(var s=1;s>24&255]^ir[i[(n+3)%4]>>16&255]^nr[i[(n+2)%4]>>8&255]^sr[255&i[(n+1)%4]]^this._Kd[s][n];i=r.slice()}var o,a=Ht(16);for(n=0;n<4;n++)o=this._Kd[t][n],a[4*n]=255&(Zt[i[n]>>24&255]^o>>24),a[4*n+1]=255&(Zt[i[(n+3)%4]>>16&255]^o>>16),a[4*n+2]=255&(Zt[i[(n+2)%4]>>8&255]^o>>8),a[4*n+3]=255&(Zt[255&i[(n+1)%4]]^o);return a};var fr=function(e){if(!(this instanceof fr))throw Error("AES must be instanitated with `new`");this.description="Electronic Code Block",this.name="ecb",this._aes=new cr(e)};fr.prototype.encrypt=function(e){if((e=Gt(e)).length%16!=0)throw new Error("invalid plaintext size (must be multiple of 16 bytes)");for(var t=Ht(e.length),r=Ht(16),i=0;iNumber.MAX_SAFE_INTEGER)throw new Error("integer value out of safe range");for(var t=15;t>=0;--t)this._counter[t]=e%256,e=parseInt(e/256)},_r.prototype.setBytes=function(e){if(16!=(e=Gt(e,!0)).length)throw new Error("invalid counter bytes size (must be 16 bytes)");this._counter=e},_r.prototype.increment=function(){for(var e=15;e>=0;e--){if(255!==this._counter[e]){this._counter[e]++;break}this._counter[e]=0}};var yr=function(e,t){if(!(this instanceof yr))throw Error("AES must be instanitated with `new`");this.description="Counter",this.name="ctr",t instanceof _r||(t=new _r(t)),this._counter=t,this._remainingCounter=null,this._remainingCounterIndex=16,this._aes=new cr(e)};yr.prototype.encrypt=function(e){for(var t=Gt(e,!0),r=0;r16)throw new Error("PKCS#7 padding byte out of range");for(var r=e.length-t,i=0;i=i&&console.debug("["+s.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)},log:function(e,t){this.debug(e.msg)},info:function(e,t){2>=i&&console.info("["+s.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)},warn:function(e,t){3>=i&&console.warn("["+s.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)},error:function(e,t){4>=i&&console.error("["+s.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)}},n);s.getDurationString=function(e,t){var r;function i(e,t){for(var r=(""+e).split(".");r[0].length0){for(var r="",i=0;i0&&(r+=","),r+="["+s.getDurationString(e.start(i))+","+s.getDurationString(e.end(i))+"]";return r}return"(empty)"},t.Log=s;var o=function(e){if(!(e instanceof ArrayBuffer))throw"Needs an array buffer";this.buffer=e,this.dataview=new DataView(e),this.position=0};o.prototype.getPosition=function(){return this.position},o.prototype.getEndPosition=function(){return this.buffer.byteLength},o.prototype.getLength=function(){return this.buffer.byteLength},o.prototype.seek=function(e){var t=Math.max(0,Math.min(this.buffer.byteLength,e));return this.position=isNaN(t)||!isFinite(t)?0:t,!0},o.prototype.isEos=function(){return this.getPosition()>=this.getEndPosition()},o.prototype.readAnyInt=function(e,t){var r=0;if(this.position+e<=this.buffer.byteLength){switch(e){case 1:r=t?this.dataview.getInt8(this.position):this.dataview.getUint8(this.position);break;case 2:r=t?this.dataview.getInt16(this.position):this.dataview.getUint16(this.position);break;case 3:if(t)throw"No method for reading signed 24 bits values";r=this.dataview.getUint8(this.position)<<16,r|=this.dataview.getUint8(this.position+1)<<8,r|=this.dataview.getUint8(this.position+2);break;case 4:r=t?this.dataview.getInt32(this.position):this.dataview.getUint32(this.position);break;case 8:if(t)throw"No method for reading signed 64 bits values";r=this.dataview.getUint32(this.position)<<32,r|=this.dataview.getUint32(this.position+4);break;default:throw"readInt method not implemented for size: "+e}return this.position+=e,r}throw"Not enough bytes in buffer"},o.prototype.readUint8=function(){return this.readAnyInt(1,!1)},o.prototype.readUint16=function(){return this.readAnyInt(2,!1)},o.prototype.readUint24=function(){return this.readAnyInt(3,!1)},o.prototype.readUint32=function(){return this.readAnyInt(4,!1)},o.prototype.readUint64=function(){return this.readAnyInt(8,!1)},o.prototype.readString=function(e){if(this.position+e<=this.buffer.byteLength){for(var t="",r=0;rthis._byteLength&&(this._byteLength=t);else{for(r<1&&(r=1);t>r;)r*=2;var i=new ArrayBuffer(r),n=new Uint8Array(this._buffer);new Uint8Array(i,0,n.length).set(n),this.buffer=i,this._byteLength=t}}},a.prototype._trimAlloc=function(){if(this._byteLength!=this._buffer.byteLength){var e=new ArrayBuffer(this._byteLength),t=new Uint8Array(e),r=new Uint8Array(this._buffer,0,t.length);t.set(r),this.buffer=e}},a.BIG_ENDIAN=!1,a.LITTLE_ENDIAN=!0,a.prototype._byteLength=0,Object.defineProperty(a.prototype,"byteLength",{get:function(){return this._byteLength-this._byteOffset}}),Object.defineProperty(a.prototype,"buffer",{get:function(){return this._trimAlloc(),this._buffer},set:function(e){this._buffer=e,this._dataView=new DataView(this._buffer,this._byteOffset),this._byteLength=this._buffer.byteLength}}),Object.defineProperty(a.prototype,"byteOffset",{get:function(){return this._byteOffset},set:function(e){this._byteOffset=e,this._dataView=new DataView(this._buffer,this._byteOffset),this._byteLength=this._buffer.byteLength}}),Object.defineProperty(a.prototype,"dataView",{get:function(){return this._dataView},set:function(e){this._byteOffset=e.byteOffset,this._buffer=e.buffer,this._dataView=new DataView(this._buffer,this._byteOffset),this._byteLength=this._byteOffset+e.byteLength}}),a.prototype.seek=function(e){var t=Math.max(0,Math.min(this.byteLength,e));this.position=isNaN(t)||!isFinite(t)?0:t},a.prototype.isEof=function(){return this.position>=this._byteLength},a.prototype.mapUint8Array=function(e){this._realloc(1*e);var t=new Uint8Array(this._buffer,this.byteOffset+this.position,e);return this.position+=1*e,t},a.prototype.readInt32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var r=new Int32Array(e);return a.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),a.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},a.prototype.readInt16Array=function(e,t){e=null==e?this.byteLength-this.position/2:e;var r=new Int16Array(e);return a.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),a.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},a.prototype.readInt8Array=function(e){e=null==e?this.byteLength-this.position:e;var t=new Int8Array(e);return a.memcpy(t.buffer,0,this.buffer,this.byteOffset+this.position,e*t.BYTES_PER_ELEMENT),this.position+=t.byteLength,t},a.prototype.readUint32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var r=new Uint32Array(e);return a.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),a.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},a.prototype.readUint16Array=function(e,t){e=null==e?this.byteLength-this.position/2:e;var r=new Uint16Array(e);return a.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),a.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},a.prototype.readUint8Array=function(e){e=null==e?this.byteLength-this.position:e;var t=new Uint8Array(e);return a.memcpy(t.buffer,0,this.buffer,this.byteOffset+this.position,e*t.BYTES_PER_ELEMENT),this.position+=t.byteLength,t},a.prototype.readFloat64Array=function(e,t){e=null==e?this.byteLength-this.position/8:e;var r=new Float64Array(e);return a.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),a.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},a.prototype.readFloat32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var r=new Float32Array(e);return a.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),a.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},a.prototype.readInt32=function(e){var t=this._dataView.getInt32(this.position,null==e?this.endianness:e);return this.position+=4,t},a.prototype.readInt16=function(e){var t=this._dataView.getInt16(this.position,null==e?this.endianness:e);return this.position+=2,t},a.prototype.readInt8=function(){var e=this._dataView.getInt8(this.position);return this.position+=1,e},a.prototype.readUint32=function(e){var t=this._dataView.getUint32(this.position,null==e?this.endianness:e);return this.position+=4,t},a.prototype.readUint16=function(e){var t=this._dataView.getUint16(this.position,null==e?this.endianness:e);return this.position+=2,t},a.prototype.readUint8=function(){var e=this._dataView.getUint8(this.position);return this.position+=1,e},a.prototype.readFloat32=function(e){var t=this._dataView.getFloat32(this.position,null==e?this.endianness:e);return this.position+=4,t},a.prototype.readFloat64=function(e){var t=this._dataView.getFloat64(this.position,null==e?this.endianness:e);return this.position+=8,t},a.endianness=new Int8Array(new Int16Array([1]).buffer)[0]>0,a.memcpy=function(e,t,r,i,n){var s=new Uint8Array(e,t,n),o=new Uint8Array(r,i,n);s.set(o)},a.arrayToNative=function(e,t){return t==this.endianness?e:this.flipArrayEndianness(e)},a.nativeToEndian=function(e,t){return this.endianness==t?e:this.flipArrayEndianness(e)},a.flipArrayEndianness=function(e){for(var t=new Uint8Array(e.buffer,e.byteOffset,e.byteLength),r=0;rn;i--,n++){var s=t[n];t[n]=t[i],t[i]=s}return e},a.prototype.failurePosition=0,String.fromCharCodeUint8=function(e){for(var t=[],r=0;r>16),this.writeUint8((65280&e)>>8),this.writeUint8(255&e)},a.prototype.adjustUint32=function(e,t){var r=this.position;this.seek(e),this.writeUint32(t),this.seek(r)},a.prototype.mapInt32Array=function(e,t){this._realloc(4*e);var r=new Int32Array(this._buffer,this.byteOffset+this.position,e);return a.arrayToNative(r,null==t?this.endianness:t),this.position+=4*e,r},a.prototype.mapInt16Array=function(e,t){this._realloc(2*e);var r=new Int16Array(this._buffer,this.byteOffset+this.position,e);return a.arrayToNative(r,null==t?this.endianness:t),this.position+=2*e,r},a.prototype.mapInt8Array=function(e){this._realloc(1*e);var t=new Int8Array(this._buffer,this.byteOffset+this.position,e);return this.position+=1*e,t},a.prototype.mapUint32Array=function(e,t){this._realloc(4*e);var r=new Uint32Array(this._buffer,this.byteOffset+this.position,e);return a.arrayToNative(r,null==t?this.endianness:t),this.position+=4*e,r},a.prototype.mapUint16Array=function(e,t){this._realloc(2*e);var r=new Uint16Array(this._buffer,this.byteOffset+this.position,e);return a.arrayToNative(r,null==t?this.endianness:t),this.position+=2*e,r},a.prototype.mapFloat64Array=function(e,t){this._realloc(8*e);var r=new Float64Array(this._buffer,this.byteOffset+this.position,e);return a.arrayToNative(r,null==t?this.endianness:t),this.position+=8*e,r},a.prototype.mapFloat32Array=function(e,t){this._realloc(4*e);var r=new Float32Array(this._buffer,this.byteOffset+this.position,e);return a.arrayToNative(r,null==t?this.endianness:t),this.position+=4*e,r};var d=function(e){this.buffers=[],this.bufferIndex=-1,e&&(this.insertBuffer(e),this.bufferIndex=0)};(d.prototype=new a(new ArrayBuffer,0,a.BIG_ENDIAN)).initialized=function(){var e;return this.bufferIndex>-1||(this.buffers.length>0?0===(e=this.buffers[0]).fileStart?(this.buffer=e,this.bufferIndex=0,s.debug("MultiBufferStream","Stream ready for parsing"),!0):(s.warn("MultiBufferStream","The first buffer should have a fileStart of 0"),this.logBufferLevel(),!1):(s.warn("MultiBufferStream","No buffer to start parsing from"),this.logBufferLevel(),!1))},ArrayBuffer.concat=function(e,t){s.debug("ArrayBuffer","Trying to create a new buffer of size: "+(e.byteLength+t.byteLength));var r=new Uint8Array(e.byteLength+t.byteLength);return r.set(new Uint8Array(e),0),r.set(new Uint8Array(t),e.byteLength),r.buffer},d.prototype.reduceBuffer=function(e,t,r){var i;return(i=new Uint8Array(r)).set(new Uint8Array(e,t,r)),i.buffer.fileStart=e.fileStart+t,i.buffer.usedBytes=0,i.buffer},d.prototype.insertBuffer=function(e){for(var t=!0,r=0;ri.byteLength){this.buffers.splice(r,1),r--;continue}s.warn("MultiBufferStream","Buffer (fileStart: "+e.fileStart+" - Length: "+e.byteLength+") already appended, ignoring")}else e.fileStart+e.byteLength<=i.fileStart||(e=this.reduceBuffer(e,0,i.fileStart-e.fileStart)),s.debug("MultiBufferStream","Appending new buffer (fileStart: "+e.fileStart+" - Length: "+e.byteLength+")"),this.buffers.splice(r,0,e),0===r&&(this.buffer=e);t=!1;break}if(e.fileStart0)){t=!1;break}e=this.reduceBuffer(e,n,o)}}t&&(s.debug("MultiBufferStream","Appending new buffer (fileStart: "+e.fileStart+" - Length: "+e.byteLength+")"),this.buffers.push(e),0===r&&(this.buffer=e))},d.prototype.logBufferLevel=function(e){var t,r,i,n,o,a=[],l="";for(i=0,n=0,t=0;t0&&(l+=o.end-1+"]");var d=e?s.info:s.debug;0===this.buffers.length?d("MultiBufferStream","No more buffer in memory"):d("MultiBufferStream",this.buffers.length+" stored buffer(s) ("+i+"/"+n+" bytes), continuous ranges: "+l)},d.prototype.cleanBuffers=function(){var e,t;for(e=0;e"+this.buffer.byteLength+")"),!0}return!1}return!1},d.prototype.findPosition=function(e,t,r){var i,n=null,o=-1;for(i=!0===e?0:this.bufferIndex;i=t?(s.debug("MultiBufferStream","Found position in existing buffer #"+o),o):-1},d.prototype.findEndContiguousBuf=function(e){var t,r,i,n=void 0!==e?e:this.bufferIndex;if(r=this.buffers[n],this.buffers.length>n+1)for(t=n+1;t>3;return 31===i&&r.data.length>=2&&(i=32+((7&r.data[0])<<3)+((224&r.data[1])>>5)),i}return null},r.DecoderConfigDescriptor=function(e){r.Descriptor.call(this,4,e)},r.DecoderConfigDescriptor.prototype=new r.Descriptor,r.DecoderConfigDescriptor.prototype.parse=function(e){this.oti=e.readUint8(),this.streamType=e.readUint8(),this.bufferSize=e.readUint24(),this.maxBitrate=e.readUint32(),this.avgBitrate=e.readUint32(),this.size-=13,this.parseRemainingDescriptors(e)},r.DecoderSpecificInfo=function(e){r.Descriptor.call(this,5,e)},r.DecoderSpecificInfo.prototype=new r.Descriptor,r.SLConfigDescriptor=function(e){r.Descriptor.call(this,6,e)},r.SLConfigDescriptor.prototype=new r.Descriptor,this};t.MPEG4DescriptorParser=u;var c={ERR_INVALID_DATA:-1,ERR_NOT_ENOUGH_DATA:0,OK:1,BASIC_BOXES:["mdat","idat","free","skip","meco","strk"],FULL_BOXES:["hmhd","nmhd","iods","xml ","bxml","ipro","mere"],CONTAINER_BOXES:[["moov",["trak","pssh"]],["trak"],["edts"],["mdia"],["minf"],["dinf"],["stbl",["sgpd","sbgp"]],["mvex",["trex"]],["moof",["traf"]],["traf",["trun","sgpd","sbgp"]],["vttc"],["tref"],["iref"],["mfra",["tfra"]],["meco"],["hnti"],["hinf"],["strk"],["strd"],["sinf"],["rinf"],["schi"],["trgr"],["udta",["kind"]],["iprp",["ipma"]],["ipco"]],boxCodes:[],fullBoxCodes:[],containerBoxCodes:[],sampleEntryCodes:{},sampleGroupEntryCodes:[],trackGroupTypes:[],UUIDBoxes:{},UUIDs:[],initialize:function(){c.FullBox.prototype=new c.Box,c.ContainerBox.prototype=new c.Box,c.SampleEntry.prototype=new c.Box,c.TrackGroupTypeBox.prototype=new c.FullBox,c.BASIC_BOXES.forEach((function(e){c.createBoxCtor(e)})),c.FULL_BOXES.forEach((function(e){c.createFullBoxCtor(e)})),c.CONTAINER_BOXES.forEach((function(e){c.createContainerBoxCtor(e[0],null,e[1])}))},Box:function(e,t,r){this.type=e,this.size=t,this.uuid=r},FullBox:function(e,t,r){c.Box.call(this,e,t,r),this.flags=0,this.version=0},ContainerBox:function(e,t,r){c.Box.call(this,e,t,r),this.boxes=[]},SampleEntry:function(e,t,r,i){c.ContainerBox.call(this,e,t),this.hdr_size=r,this.start=i},SampleGroupEntry:function(e){this.grouping_type=e},TrackGroupTypeBox:function(e,t){c.FullBox.call(this,e,t)},createBoxCtor:function(e,t){c.boxCodes.push(e),c[e+"Box"]=function(t){c.Box.call(this,e,t)},c[e+"Box"].prototype=new c.Box,t&&(c[e+"Box"].prototype.parse=t)},createFullBoxCtor:function(e,t){c[e+"Box"]=function(t){c.FullBox.call(this,e,t)},c[e+"Box"].prototype=new c.FullBox,c[e+"Box"].prototype.parse=function(e){this.parseFullHeader(e),t&&t.call(this,e)}},addSubBoxArrays:function(e){if(e){this.subBoxNames=e;for(var t=e.length,r=0;rr?(s.error("BoxParser","Box of type '"+u+"' has a size "+d+" greater than its container size "+r),{code:c.ERR_NOT_ENOUGH_DATA,type:u,size:d,hdr_size:l,start:a}):0!==d&&a+d>e.getEndPosition()?(e.seek(a),s.info("BoxParser","Not enough data in stream to parse the entire '"+u+"' box"),{code:c.ERR_NOT_ENOUGH_DATA,type:u,size:d,hdr_size:l,start:a}):t?{code:c.OK,type:u,size:d,hdr_size:l,start:a}:(c[u+"Box"]?i=new c[u+"Box"](d):"uuid"!==u?(s.warn("BoxParser","Unknown box type: '"+u+"'"),(i=new c.Box(u,d)).has_unparsed_data=!0):c.UUIDBoxes[o]?i=new c.UUIDBoxes[o](d):(s.warn("BoxParser","Unknown uuid type: '"+o+"'"),(i=new c.Box(u,d)).uuid=o,i.has_unparsed_data=!0),i.hdr_size=l,i.start=a,i.write===c.Box.prototype.write&&"mdat"!==i.type&&(s.info("BoxParser","'"+f+"' box writing not yet implemented, keeping unparsed data in memory for later write"),i.parseDataAndRewind(e)),i.parse(e),(n=e.getPosition()-(i.start+i.size))<0?(s.warn("BoxParser","Parsing of box '"+f+"' did not read the entire indicated box data size (missing "+-n+" bytes), seeking forward"),e.seek(i.start+i.size)):n>0&&(s.error("BoxParser","Parsing of box '"+f+"' read "+n+" more bytes than the indicated box data size, seeking backwards"),0!==i.size&&e.seek(i.start+i.size)),{code:c.OK,box:i,size:i.size})},c.Box.prototype.parse=function(e){"mdat"!=this.type?this.data=e.readUint8Array(this.size-this.hdr_size):0===this.size?e.seek(e.getEndPosition()):e.seek(this.start+this.size)},c.Box.prototype.parseDataAndRewind=function(e){this.data=e.readUint8Array(this.size-this.hdr_size),e.position-=this.size-this.hdr_size},c.FullBox.prototype.parseDataAndRewind=function(e){this.parseFullHeader(e),this.data=e.readUint8Array(this.size-this.hdr_size),this.hdr_size-=4,e.position-=this.size-this.hdr_size},c.FullBox.prototype.parseFullHeader=function(e){this.version=e.readUint8(),this.flags=e.readUint24(),this.hdr_size+=4},c.FullBox.prototype.parse=function(e){this.parseFullHeader(e),this.data=e.readUint8Array(this.size-this.hdr_size)},c.ContainerBox.prototype.parse=function(e){for(var t,r;e.getPosition()>10&31,t[1]=this.language>>5&31,t[2]=31&this.language,this.languageString=String.fromCharCode(t[0]+96,t[1]+96,t[2]+96)},c.SAMPLE_ENTRY_TYPE_VISUAL="Visual",c.SAMPLE_ENTRY_TYPE_AUDIO="Audio",c.SAMPLE_ENTRY_TYPE_HINT="Hint",c.SAMPLE_ENTRY_TYPE_METADATA="Metadata",c.SAMPLE_ENTRY_TYPE_SUBTITLE="Subtitle",c.SAMPLE_ENTRY_TYPE_SYSTEM="System",c.SAMPLE_ENTRY_TYPE_TEXT="Text",c.SampleEntry.prototype.parseHeader=function(e){e.readUint8Array(6),this.data_reference_index=e.readUint16(),this.hdr_size+=8},c.SampleEntry.prototype.parse=function(e){this.parseHeader(e),this.data=e.readUint8Array(this.size-this.hdr_size)},c.SampleEntry.prototype.parseDataAndRewind=function(e){this.parseHeader(e),this.data=e.readUint8Array(this.size-this.hdr_size),this.hdr_size-=8,e.position-=this.size-this.hdr_size},c.SampleEntry.prototype.parseFooter=function(e){c.ContainerBox.prototype.parse.call(this,e)},c.createMediaSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_HINT),c.createMediaSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_METADATA),c.createMediaSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_SUBTITLE),c.createMediaSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_SYSTEM),c.createMediaSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_TEXT),c.createMediaSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_VISUAL,(function(e){var t;this.parseHeader(e),e.readUint16(),e.readUint16(),e.readUint32Array(3),this.width=e.readUint16(),this.height=e.readUint16(),this.horizresolution=e.readUint32(),this.vertresolution=e.readUint32(),e.readUint32(),this.frame_count=e.readUint16(),t=Math.min(31,e.readUint8()),this.compressorname=e.readString(t),t<31&&e.readString(31-t),this.depth=e.readUint16(),e.readUint16(),this.parseFooter(e)})),c.createMediaSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_AUDIO,(function(e){this.parseHeader(e),e.readUint32Array(2),this.channel_count=e.readUint16(),this.samplesize=e.readUint16(),e.readUint16(),e.readUint16(),this.samplerate=e.readUint32()/65536,this.parseFooter(e)})),c.createSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_VISUAL,"avc1"),c.createSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_VISUAL,"avc2"),c.createSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_VISUAL,"avc3"),c.createSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_VISUAL,"avc4"),c.createSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_VISUAL,"av01"),c.createSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_VISUAL,"hvc1"),c.createSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_VISUAL,"hev1"),c.createSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_VISUAL,"vvc1"),c.createSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_VISUAL,"vvi1"),c.createSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_VISUAL,"vvs1"),c.createSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_VISUAL,"vvcN"),c.createSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_VISUAL,"vp08"),c.createSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_VISUAL,"vp09"),c.createSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_AUDIO,"mp4a"),c.createSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_AUDIO,"ac-3"),c.createSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_AUDIO,"ec-3"),c.createSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_AUDIO,"Opus"),c.createEncryptedSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_VISUAL,"encv"),c.createEncryptedSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_AUDIO,"enca"),c.createEncryptedSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_SUBTITLE,"encu"),c.createEncryptedSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_SYSTEM,"encs"),c.createEncryptedSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_TEXT,"enct"),c.createEncryptedSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_METADATA,"encm"),c.createBoxCtor("a1lx",(function(e){var t=16*(1+(1&(1&e.readUint8())));this.layer_size=[];for(var r=0;r<3;r++)this.layer_size[r]=16==t?e.readUint16():e.readUint32()})),c.createBoxCtor("a1op",(function(e){this.op_index=e.readUint8()})),c.createFullBoxCtor("auxC",(function(e){this.aux_type=e.readCString();var t=this.size-this.hdr_size-(this.aux_type.length+1);this.aux_subtype=e.readUint8Array(t)})),c.createBoxCtor("av1C",(function(e){var t=e.readUint8();if(t>>7&!1)s.error("av1C marker problem");else if(this.version=127&t,1===this.version)if(t=e.readUint8(),this.seq_profile=t>>5&7,this.seq_level_idx_0=31&t,t=e.readUint8(),this.seq_tier_0=t>>7&1,this.high_bitdepth=t>>6&1,this.twelve_bit=t>>5&1,this.monochrome=t>>4&1,this.chroma_subsampling_x=t>>3&1,this.chroma_subsampling_y=t>>2&1,this.chroma_sample_position=3&t,t=e.readUint8(),this.reserved_1=t>>5&7,0===this.reserved_1){if(this.initial_presentation_delay_present=t>>4&1,1===this.initial_presentation_delay_present)this.initial_presentation_delay_minus_one=15&t;else if(this.reserved_2=15&t,0!==this.reserved_2)return void s.error("av1C reserved_2 parsing problem");var r=this.size-this.hdr_size-4;this.configOBUs=e.readUint8Array(r)}else s.error("av1C reserved_1 parsing problem");else s.error("av1C version "+this.version+" not supported")})),c.createBoxCtor("avcC",(function(e){var t,r;for(this.configurationVersion=e.readUint8(),this.AVCProfileIndication=e.readUint8(),this.profile_compatibility=e.readUint8(),this.AVCLevelIndication=e.readUint8(),this.lengthSizeMinusOne=3&e.readUint8(),this.nb_SPS_nalus=31&e.readUint8(),r=this.size-this.hdr_size-6,this.SPS=[],t=0;t0&&(this.ext=e.readUint8Array(r))})),c.createBoxCtor("btrt",(function(e){this.bufferSizeDB=e.readUint32(),this.maxBitrate=e.readUint32(),this.avgBitrate=e.readUint32()})),c.createBoxCtor("clap",(function(e){this.cleanApertureWidthN=e.readUint32(),this.cleanApertureWidthD=e.readUint32(),this.cleanApertureHeightN=e.readUint32(),this.cleanApertureHeightD=e.readUint32(),this.horizOffN=e.readUint32(),this.horizOffD=e.readUint32(),this.vertOffN=e.readUint32(),this.vertOffD=e.readUint32()})),c.createBoxCtor("clli",(function(e){this.max_content_light_level=e.readUint16(),this.max_pic_average_light_level=e.readUint16()})),c.createFullBoxCtor("co64",(function(e){var t,r;if(t=e.readUint32(),this.chunk_offsets=[],0===this.version)for(r=0;r>7}else("rICC"===this.colour_type||"prof"===this.colour_type)&&(this.ICC_profile=e.readUint8Array(this.size-4))})),c.createFullBoxCtor("cprt",(function(e){this.parseLanguage(e),this.notice=e.readCString()})),c.createFullBoxCtor("cslg",(function(e){0===this.version&&(this.compositionToDTSShift=e.readInt32(),this.leastDecodeToDisplayDelta=e.readInt32(),this.greatestDecodeToDisplayDelta=e.readInt32(),this.compositionStartTime=e.readInt32(),this.compositionEndTime=e.readInt32())})),c.createFullBoxCtor("ctts",(function(e){var t,r;if(t=e.readUint32(),this.sample_counts=[],this.sample_offsets=[],0===this.version)for(r=0;r>6,this.bsid=t>>1&31,this.bsmod=(1&t)<<2|r>>6&3,this.acmod=r>>3&7,this.lfeon=r>>2&1,this.bit_rate_code=3&r|i>>5&7})),c.createBoxCtor("dec3",(function(e){var t=e.readUint16();this.data_rate=t>>3,this.num_ind_sub=7&t,this.ind_subs=[];for(var r=0;r>6,i.bsid=n>>1&31,i.bsmod=(1&n)<<4|s>>4&15,i.acmod=s>>1&7,i.lfeon=1&s,i.num_dep_sub=o>>1&15,i.num_dep_sub>0&&(i.chan_loc=(1&o)<<8|e.readUint8())}})),c.createFullBoxCtor("dfLa",(function(e){var t=[],r=["STREAMINFO","PADDING","APPLICATION","SEEKTABLE","VORBIS_COMMENT","CUESHEET","PICTURE","RESERVED"];for(this.parseFullHeader(e);;){var i=e.readUint8(),n=Math.min(127&i,r.length-1);if(n?e.readUint8Array(e.readUint24()):(e.readUint8Array(13),this.samplerate=e.readUint32()>>12,e.readUint8Array(20)),t.push(r[n]),128&i)break}this.numMetadataBlocks=t.length+" ("+t.join(", ")+")"})),c.createBoxCtor("dimm",(function(e){this.bytessent=e.readUint64()})),c.createBoxCtor("dmax",(function(e){this.time=e.readUint32()})),c.createBoxCtor("dmed",(function(e){this.bytessent=e.readUint64()})),c.createBoxCtor("dOps",(function(e){if(this.Version=e.readUint8(),this.OutputChannelCount=e.readUint8(),this.PreSkip=e.readUint16(),this.InputSampleRate=e.readUint32(),this.OutputGain=e.readInt16(),this.ChannelMappingFamily=e.readUint8(),0!==this.ChannelMappingFamily){this.StreamCount=e.readUint8(),this.CoupledCount=e.readUint8(),this.ChannelMapping=[];for(var t=0;t=4;)this.compatible_brands[r]=e.readString(4),t-=4,r++})),c.createFullBoxCtor("hdlr",(function(e){0===this.version&&(e.readUint32(),this.handler=e.readString(4),e.readUint32Array(3),this.name=e.readString(this.size-this.hdr_size-20),"\0"===this.name[this.name.length-1]&&(this.name=this.name.slice(0,-1)))})),c.createBoxCtor("hvcC",(function(e){var t,r,i,n;this.configurationVersion=e.readUint8(),n=e.readUint8(),this.general_profile_space=n>>6,this.general_tier_flag=(32&n)>>5,this.general_profile_idc=31&n,this.general_profile_compatibility=e.readUint32(),this.general_constraint_indicator=e.readUint8Array(6),this.general_level_idc=e.readUint8(),this.min_spatial_segmentation_idc=4095&e.readUint16(),this.parallelismType=3&e.readUint8(),this.chroma_format_idc=3&e.readUint8(),this.bit_depth_luma_minus8=7&e.readUint8(),this.bit_depth_chroma_minus8=7&e.readUint8(),this.avgFrameRate=e.readUint16(),n=e.readUint8(),this.constantFrameRate=n>>6,this.numTemporalLayers=(13&n)>>3,this.temporalIdNested=(4&n)>>2,this.lengthSizeMinusOne=3&n,this.nalu_arrays=[];var s=e.readUint8();for(t=0;t>7,o.nalu_type=63&n;var a=e.readUint16();for(r=0;r>4&15,this.length_size=15&t,t=e.readUint8(),this.base_offset_size=t>>4&15,1===this.version||2===this.version?this.index_size=15&t:this.index_size=0,this.items=[];var r=0;if(this.version<2)r=e.readUint16();else{if(2!==this.version)throw"version of iloc box not supported";r=e.readUint32()}for(var i=0;i>7,this.axis=1&t})),c.createFullBoxCtor("infe",(function(e){if(0!==this.version&&1!==this.version||(this.item_ID=e.readUint16(),this.item_protection_index=e.readUint16(),this.item_name=e.readCString(),this.content_type=e.readCString(),this.content_encoding=e.readCString()),1===this.version)return this.extension_type=e.readString(4),s.warn("BoxParser","Cannot parse extension type"),void e.seek(this.start+this.size);this.version>=2&&(2===this.version?this.item_ID=e.readUint16():3===this.version&&(this.item_ID=e.readUint32()),this.item_protection_index=e.readUint16(),this.item_type=e.readString(4),this.item_name=e.readCString(),"mime"===this.item_type?(this.content_type=e.readCString(),this.content_encoding=e.readCString()):"uri "===this.item_type&&(this.item_uri_type=e.readCString()))})),c.createFullBoxCtor("ipma",(function(e){var t,r;for(entry_count=e.readUint32(),this.associations=[],t=0;t>7==1,1&this.flags?o.property_index=(127&s)<<8|e.readUint8():o.property_index=127&s}}})),c.createFullBoxCtor("iref",(function(e){var t,r;for(this.references=[];e.getPosition()>7,i.assignment_type=127&n,i.assignment_type){case 0:i.grouping_type=e.readString(4);break;case 1:i.grouping_type=e.readString(4),i.grouping_type_parameter=e.readUint32();break;case 2:case 3:break;case 4:i.sub_track_id=e.readUint32();break;default:s.warn("BoxParser","Unknown leva assignement type")}}})),c.createBoxCtor("lsel",(function(e){this.layer_id=e.readUint16()})),c.createBoxCtor("maxr",(function(e){this.period=e.readUint32(),this.bytes=e.readUint32()})),c.createBoxCtor("mdcv",(function(e){this.display_primaries=[],this.display_primaries[0]={},this.display_primaries[0].x=e.readUint16(),this.display_primaries[0].y=e.readUint16(),this.display_primaries[1]={},this.display_primaries[1].x=e.readUint16(),this.display_primaries[1].y=e.readUint16(),this.display_primaries[2]={},this.display_primaries[2].x=e.readUint16(),this.display_primaries[2].y=e.readUint16(),this.white_point={},this.white_point.x=e.readUint16(),this.white_point.y=e.readUint16(),this.max_display_mastering_luminance=e.readUint32(),this.min_display_mastering_luminance=e.readUint32()})),c.createFullBoxCtor("mdhd",(function(e){1==this.version?(this.creation_time=e.readUint64(),this.modification_time=e.readUint64(),this.timescale=e.readUint32(),this.duration=e.readUint64()):(this.creation_time=e.readUint32(),this.modification_time=e.readUint32(),this.timescale=e.readUint32(),this.duration=e.readUint32()),this.parseLanguage(e),e.readUint16()})),c.createFullBoxCtor("mehd",(function(e){1&this.flags&&(s.warn("BoxParser","mehd box incorrectly uses flags set to 1, converting version to 1"),this.version=1),1==this.version?this.fragment_duration=e.readUint64():this.fragment_duration=e.readUint32()})),c.createFullBoxCtor("meta",(function(e){this.boxes=[],c.ContainerBox.prototype.parse.call(this,e)})),c.createFullBoxCtor("mfhd",(function(e){this.sequence_number=e.readUint32()})),c.createFullBoxCtor("mfro",(function(e){this._size=e.readUint32()})),c.createFullBoxCtor("mvhd",(function(e){1==this.version?(this.creation_time=e.readUint64(),this.modification_time=e.readUint64(),this.timescale=e.readUint32(),this.duration=e.readUint64()):(this.creation_time=e.readUint32(),this.modification_time=e.readUint32(),this.timescale=e.readUint32(),this.duration=e.readUint32()),this.rate=e.readUint32(),this.volume=e.readUint16()>>8,e.readUint16(),e.readUint32Array(2),this.matrix=e.readUint32Array(9),e.readUint32Array(6),this.next_track_id=e.readUint32()})),c.createBoxCtor("npck",(function(e){this.packetssent=e.readUint32()})),c.createBoxCtor("nump",(function(e){this.packetssent=e.readUint64()})),c.createFullBoxCtor("padb",(function(e){var t=e.readUint32();this.padbits=[];for(var r=0;r0){var t=e.readUint32();this.kid=[];for(var r=0;r0&&(this.data=e.readUint8Array(i))})),c.createFullBoxCtor("clef",(function(e){this.width=e.readUint32(),this.height=e.readUint32()})),c.createFullBoxCtor("enof",(function(e){this.width=e.readUint32(),this.height=e.readUint32()})),c.createFullBoxCtor("prof",(function(e){this.width=e.readUint32(),this.height=e.readUint32()})),c.createContainerBoxCtor("tapt",null,["clef","prof","enof"]),c.createBoxCtor("rtp ",(function(e){this.descriptionformat=e.readString(4),this.sdptext=e.readString(this.size-this.hdr_size-4)})),c.createFullBoxCtor("saio",(function(e){1&this.flags&&(this.aux_info_type=e.readUint32(),this.aux_info_type_parameter=e.readUint32());var t=e.readUint32();this.offset=[];for(var r=0;r>7,this.avgRateFlag=t>>6&1,this.durationFlag&&(this.duration=e.readUint32()),this.avgRateFlag&&(this.accurateStatisticsFlag=e.readUint8(),this.avgBitRate=e.readUint16(),this.avgFrameRate=e.readUint16()),this.dependency=[];for(var r=e.readUint8(),i=0;i>7,this.num_leading_samples=127&t})),c.createSampleGroupCtor("rash",(function(e){if(this.operation_point_count=e.readUint16(),this.description_length!==2+(1===this.operation_point_count?2:6*this.operation_point_count)+9)s.warn("BoxParser","Mismatch in "+this.grouping_type+" sample group length"),this.data=e.readUint8Array(this.description_length-2);else{if(1===this.operation_point_count)this.target_rate_share=e.readUint16();else{this.target_rate_share=[],this.available_bitrate=[];for(var t=0;t>4,this.skip_byte_block=15&t,this.isProtected=e.readUint8(),this.Per_Sample_IV_Size=e.readUint8(),this.KID=c.parseHex16(e),this.constant_IV_size=0,this.constant_IV=0,1===this.isProtected&&0===this.Per_Sample_IV_Size&&(this.constant_IV_size=e.readUint8(),this.constant_IV=e.readUint8Array(this.constant_IV_size))})),c.createSampleGroupCtor("stsa",(function(e){s.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),c.createSampleGroupCtor("sync",(function(e){var t=e.readUint8();this.NAL_unit_type=63&t})),c.createSampleGroupCtor("tele",(function(e){var t=e.readUint8();this.level_independently_decodable=t>>7})),c.createSampleGroupCtor("tsas",(function(e){s.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),c.createSampleGroupCtor("tscl",(function(e){s.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),c.createSampleGroupCtor("vipr",(function(e){s.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),c.createFullBoxCtor("sbgp",(function(e){this.grouping_type=e.readString(4),1===this.version?this.grouping_type_parameter=e.readUint32():this.grouping_type_parameter=0,this.entries=[];for(var t=e.readUint32(),r=0;r>6,this.sample_depends_on[i]=t>>4&3,this.sample_is_depended_on[i]=t>>2&3,this.sample_has_redundancy[i]=3&t})),c.createFullBoxCtor("senc"),c.createFullBoxCtor("sgpd",(function(e){this.grouping_type=e.readString(4),s.debug("BoxParser","Found Sample Groups of type "+this.grouping_type),1===this.version?this.default_length=e.readUint32():this.default_length=0,this.version>=2&&(this.default_group_description_index=e.readUint32()),this.entries=[];for(var t=e.readUint32(),r=0;r>31&1,i.referenced_size=2147483647&n,i.subsegment_duration=e.readUint32(),n=e.readUint32(),i.starts_with_SAP=n>>31&1,i.SAP_type=n>>28&7,i.SAP_delta_time=268435455&n}})),c.SingleItemTypeReferenceBox=function(e,t,r,i){c.Box.call(this,e,t),this.hdr_size=r,this.start=i},c.SingleItemTypeReferenceBox.prototype=new c.Box,c.SingleItemTypeReferenceBox.prototype.parse=function(e){this.from_item_ID=e.readUint16();var t=e.readUint16();this.references=[];for(var r=0;r>4&15,this.sample_sizes[t+1]=15&i}else if(8===this.field_size)for(t=0;t0)for(r=0;r>4&15,this.default_skip_byte_block=15&t}this.default_isProtected=e.readUint8(),this.default_Per_Sample_IV_Size=e.readUint8(),this.default_KID=c.parseHex16(e),1===this.default_isProtected&&0===this.default_Per_Sample_IV_Size&&(this.default_constant_IV_size=e.readUint8(),this.default_constant_IV=e.readUint8Array(this.default_constant_IV_size))})),c.createFullBoxCtor("tfdt",(function(e){1==this.version?this.baseMediaDecodeTime=e.readUint64():this.baseMediaDecodeTime=e.readUint32()})),c.createFullBoxCtor("tfhd",(function(e){var t=0;this.track_id=e.readUint32(),this.size-this.hdr_size>t&&this.flags&c.TFHD_FLAG_BASE_DATA_OFFSET?(this.base_data_offset=e.readUint64(),t+=8):this.base_data_offset=0,this.size-this.hdr_size>t&&this.flags&c.TFHD_FLAG_SAMPLE_DESC?(this.default_sample_description_index=e.readUint32(),t+=4):this.default_sample_description_index=0,this.size-this.hdr_size>t&&this.flags&c.TFHD_FLAG_SAMPLE_DUR?(this.default_sample_duration=e.readUint32(),t+=4):this.default_sample_duration=0,this.size-this.hdr_size>t&&this.flags&c.TFHD_FLAG_SAMPLE_SIZE?(this.default_sample_size=e.readUint32(),t+=4):this.default_sample_size=0,this.size-this.hdr_size>t&&this.flags&c.TFHD_FLAG_SAMPLE_FLAGS?(this.default_sample_flags=e.readUint32(),t+=4):this.default_sample_flags=0})),c.createFullBoxCtor("tfra",(function(e){this.track_ID=e.readUint32(),e.readUint24();var t=e.readUint8();this.length_size_of_traf_num=t>>4&3,this.length_size_of_trun_num=t>>2&3,this.length_size_of_sample_num=3&t,this.entries=[];for(var r=e.readUint32(),i=0;i>8,e.readUint16(),this.matrix=e.readInt32Array(9),this.width=e.readUint32(),this.height=e.readUint32()})),c.createBoxCtor("tmax",(function(e){this.time=e.readUint32()})),c.createBoxCtor("tmin",(function(e){this.time=e.readUint32()})),c.createBoxCtor("totl",(function(e){this.bytessent=e.readUint32()})),c.createBoxCtor("tpay",(function(e){this.bytessent=e.readUint32()})),c.createBoxCtor("tpyl",(function(e){this.bytessent=e.readUint64()})),c.TrackGroupTypeBox.prototype.parse=function(e){this.parseFullHeader(e),this.track_group_id=e.readUint32()},c.createTrackGroupCtor("msrc"),c.TrackReferenceTypeBox=function(e,t,r,i){c.Box.call(this,e,t),this.hdr_size=r,this.start=i},c.TrackReferenceTypeBox.prototype=new c.Box,c.TrackReferenceTypeBox.prototype.parse=function(e){this.track_ids=e.readUint32Array((this.size-this.hdr_size)/4)},c.trefBox.prototype.parse=function(e){for(var t,r;e.getPosition()t&&this.flags&c.TRUN_FLAGS_DATA_OFFSET?(this.data_offset=e.readInt32(),t+=4):this.data_offset=0,this.size-this.hdr_size>t&&this.flags&c.TRUN_FLAGS_FIRST_FLAG?(this.first_sample_flags=e.readUint32(),t+=4):this.first_sample_flags=0,this.sample_duration=[],this.sample_size=[],this.sample_flags=[],this.sample_composition_time_offset=[],this.size-this.hdr_size>t)for(var r=0;r0&&(this.location=e.readCString())})),c.createUUIDBox("a5d40b30e81411ddba2f0800200c9a66",!0,!1,(function(e){this.LiveServerManifest=e.readString(this.size-this.hdr_size).replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")})),c.createUUIDBox("d08a4f1810f34a82b6c832d8aba183d3",!0,!1,(function(e){this.system_id=c.parseHex16(e);var t=e.readUint32();t>0&&(this.data=e.readUint8Array(t))})),c.createUUIDBox("a2394f525a9b4f14a2446c427c648df4",!0,!1),c.createUUIDBox("8974dbce7be74c5184f97148f9882554",!0,!1,(function(e){this.default_AlgorithmID=e.readUint24(),this.default_IV_size=e.readUint8(),this.default_KID=c.parseHex16(e)})),c.createUUIDBox("d4807ef2ca3946958e5426cb9e46a79f",!0,!1,(function(e){this.fragment_count=e.readUint8(),this.entries=[];for(var t=0;t>4,this.chromaSubsampling=t>>1&7,this.videoFullRangeFlag=1&t,this.colourPrimaries=e.readUint8(),this.transferCharacteristics=e.readUint8(),this.matrixCoefficients=e.readUint8(),this.codecIntializationDataSize=e.readUint16(),this.codecIntializationData=e.readUint8Array(this.codecIntializationDataSize)):(this.profile=e.readUint8(),this.level=e.readUint8(),t=e.readUint8(),this.bitDepth=t>>4&15,this.colorSpace=15&t,t=e.readUint8(),this.chromaSubsampling=t>>4&15,this.transferFunction=t>>1&7,this.videoFullRangeFlag=1&t,this.codecIntializationDataSize=e.readUint16(),this.codecIntializationData=e.readUint8Array(this.codecIntializationDataSize))})),c.createBoxCtor("vttC",(function(e){this.text=e.readString(this.size-this.hdr_size)})),c.createFullBoxCtor("vvcC",(function(e){var t,r,i={held_bits:void 0,num_held_bits:0,stream_read_1_bytes:function(e){this.held_bits=e.readUint8(),this.num_held_bits=8},stream_read_2_bytes:function(e){this.held_bits=e.readUint16(),this.num_held_bits=16},extract_bits:function(e){var t=this.held_bits>>this.num_held_bits-e&(1<=0;--r){var o=i.extract_bits(1);this.ptl_sublayer_present_mask|=o<1;++r)i.extract_bits(1);for(r=this.num_sublayers-2;r>=0;--r)this.ptl_sublayer_present_mask&1<>=1;t+=c.decimalToHex(i,0),t+=".",0===this.hvcC.general_tier_flag?t+="L":t+="H",t+=this.hvcC.general_level_idc;var n=!1,s="";for(e=5;e>=0;e--)(this.hvcC.general_constraint_indicator[e]||n)&&(s="."+c.decimalToHex(this.hvcC.general_constraint_indicator[e],0)+s,n=!0);t+=s}return t},c.vvc1SampleEntry.prototype.getCodec=c.vvi1SampleEntry.prototype.getCodec=function(){var e,t=c.SampleEntry.prototype.getCodec.call(this);if(this.vvcC){t+="."+this.vvcC.general_profile_idc,this.vvcC.general_tier_flag?t+=".H":t+=".L",t+=this.vvcC.general_level_idc;var r="";if(this.vvcC.general_constraint_info){var i,n=[],s=0;for(s|=this.vvcC.ptl_frame_only_constraint<<7,s|=this.vvcC.ptl_multilayer_enabled<<6,e=0;e>2&63,n.push(s),s&&(i=e),s=this.vvcC.general_constraint_info[e]>>2&3;if(void 0===i)r=".CA";else{r=".C";var o="ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",a=0,l=0;for(e=0;e<=i;++e)for(a=a<<8|n[e],l+=8;l>=5;){r+=o[a>>l-5&31],a&=(1<<(l-=5))-1}l&&(r+=o[31&(a<<=5-l)])}}t+=r}return t},c.mp4aSampleEntry.prototype.getCodec=function(){var e=c.SampleEntry.prototype.getCodec.call(this);if(this.esds&&this.esds.esd){var t=this.esds.esd.getOTI(),r=this.esds.esd.getAudioConfig();return e+"."+c.decimalToHex(t)+(r?"."+r:"")}return e},c.stxtSampleEntry.prototype.getCodec=function(){var e=c.SampleEntry.prototype.getCodec.call(this);return this.mime_format?e+"."+this.mime_format:e},c.vp08SampleEntry.prototype.getCodec=c.vp09SampleEntry.prototype.getCodec=function(){var e=c.SampleEntry.prototype.getCodec.call(this),t=this.vpcC.level;0==t&&(t="00");var r=this.vpcC.bitDepth;return 8==r&&(r="08"),e+".0"+this.vpcC.profile+"."+t+"."+r},c.av01SampleEntry.prototype.getCodec=function(){var e,t=c.SampleEntry.prototype.getCodec.call(this),r=this.av1C.seq_level_idx_0;return r<10&&(r="0"+r),2===this.av1C.seq_profile&&1===this.av1C.high_bitdepth?e=1===this.av1C.twelve_bit?"12":"10":this.av1C.seq_profile<=2&&(e=1===this.av1C.high_bitdepth?"10":"08"),t+"."+this.av1C.seq_profile+"."+r+(this.av1C.seq_tier_0?"H":"M")+"."+e},c.Box.prototype.writeHeader=function(e,t){this.size+=8,this.size>l&&(this.size+=8),"uuid"===this.type&&(this.size+=16),s.debug("BoxWriter","Writing box "+this.type+" of size: "+this.size+" at position "+e.getPosition()+(t||"")),this.size>l?e.writeUint32(1):(this.sizePosition=e.getPosition(),e.writeUint32(this.size)),e.writeString(this.type,null,4),"uuid"===this.type&&e.writeUint8Array(this.uuid),this.size>l&&e.writeUint64(this.size)},c.FullBox.prototype.writeHeader=function(e){this.size+=4,c.Box.prototype.writeHeader.call(this,e," v="+this.version+" f="+this.flags),e.writeUint8(this.version),e.writeUint24(this.flags)},c.Box.prototype.write=function(e){"mdat"===this.type?this.data&&(this.size=this.data.length,this.writeHeader(e),e.writeUint8Array(this.data)):(this.size=this.data?this.data.length:0,this.writeHeader(e),this.data&&e.writeUint8Array(this.data))},c.ContainerBox.prototype.write=function(e){this.size=0,this.writeHeader(e);for(var t=0;t=2&&e.writeUint32(this.default_sample_description_index),e.writeUint32(this.entries.length),t=0;t0)for(t=0;t+1t?1:0,this.flags=0,this.size=4,1===this.version&&(this.size+=4),this.writeHeader(e),1===this.version?e.writeUint64(this.baseMediaDecodeTime):e.writeUint32(this.baseMediaDecodeTime)},c.tfhdBox.prototype.write=function(e){this.version=0,this.size=4,this.flags&c.TFHD_FLAG_BASE_DATA_OFFSET&&(this.size+=8),this.flags&c.TFHD_FLAG_SAMPLE_DESC&&(this.size+=4),this.flags&c.TFHD_FLAG_SAMPLE_DUR&&(this.size+=4),this.flags&c.TFHD_FLAG_SAMPLE_SIZE&&(this.size+=4),this.flags&c.TFHD_FLAG_SAMPLE_FLAGS&&(this.size+=4),this.writeHeader(e),e.writeUint32(this.track_id),this.flags&c.TFHD_FLAG_BASE_DATA_OFFSET&&e.writeUint64(this.base_data_offset),this.flags&c.TFHD_FLAG_SAMPLE_DESC&&e.writeUint32(this.default_sample_description_index),this.flags&c.TFHD_FLAG_SAMPLE_DUR&&e.writeUint32(this.default_sample_duration),this.flags&c.TFHD_FLAG_SAMPLE_SIZE&&e.writeUint32(this.default_sample_size),this.flags&c.TFHD_FLAG_SAMPLE_FLAGS&&e.writeUint32(this.default_sample_flags)},c.tkhdBox.prototype.write=function(e){this.version=0,this.size=80,this.writeHeader(e),e.writeUint32(this.creation_time),e.writeUint32(this.modification_time),e.writeUint32(this.track_id),e.writeUint32(0),e.writeUint32(this.duration),e.writeUint32(0),e.writeUint32(0),e.writeInt16(this.layer),e.writeInt16(this.alternate_group),e.writeInt16(this.volume<<8),e.writeUint16(0),e.writeInt32Array(this.matrix),e.writeUint32(this.width),e.writeUint32(this.height)},c.trexBox.prototype.write=function(e){this.version=0,this.flags=0,this.size=20,this.writeHeader(e),e.writeUint32(this.track_id),e.writeUint32(this.default_sample_description_index),e.writeUint32(this.default_sample_duration),e.writeUint32(this.default_sample_size),e.writeUint32(this.default_sample_flags)},c.trunBox.prototype.write=function(e){this.version=0,this.size=4,this.flags&c.TRUN_FLAGS_DATA_OFFSET&&(this.size+=4),this.flags&c.TRUN_FLAGS_FIRST_FLAG&&(this.size+=4),this.flags&c.TRUN_FLAGS_DURATION&&(this.size+=4*this.sample_duration.length),this.flags&c.TRUN_FLAGS_SIZE&&(this.size+=4*this.sample_size.length),this.flags&c.TRUN_FLAGS_FLAGS&&(this.size+=4*this.sample_flags.length),this.flags&c.TRUN_FLAGS_CTS_OFFSET&&(this.size+=4*this.sample_composition_time_offset.length),this.writeHeader(e),e.writeUint32(this.sample_count),this.flags&c.TRUN_FLAGS_DATA_OFFSET&&(this.data_offset_position=e.getPosition(),e.writeInt32(this.data_offset)),this.flags&c.TRUN_FLAGS_FIRST_FLAG&&e.writeUint32(this.first_sample_flags);for(var t=0;t-1||e[r]instanceof c.Box||t[r]instanceof c.Box||void 0===e[r]||void 0===t[r]||"function"==typeof e[r]||"function"==typeof t[r]||e.subBoxNames&&e.subBoxNames.indexOf(r.slice(0,4))>-1||t.subBoxNames&&t.subBoxNames.indexOf(r.slice(0,4))>-1||"data"===r||"start"===r||"size"===r||"creation_time"===r||"modification_time"===r||c.DIFF_PRIMITIVE_ARRAY_PROP_NAMES.indexOf(r)>-1||e[r]===t[r]))return!1;return!0},c.boxEqual=function(e,t){if(!c.boxEqualFields(e,t))return!1;for(var r=0;r1)for(t=1;t-1&&this.fragmentedTracks.splice(t,1)},p.prototype.setExtractionOptions=function(e,t,r){var i=this.getTrackById(e);if(i){var n={};this.extractedTracks.push(n),n.id=e,n.user=t,n.trak=i,i.nextSample=0,n.nb_samples=1e3,n.samples=[],r&&r.nbSamples&&(n.nb_samples=r.nbSamples)}},p.prototype.unsetExtractionOptions=function(e){for(var t=-1,r=0;r-1&&this.extractedTracks.splice(t,1)},p.prototype.parse=function(){var e,t;if(!this.restoreParsePosition||this.restoreParsePosition())for(;;){if(this.hasIncompleteMdat&&this.hasIncompleteMdat()){if(this.processIncompleteMdat())continue;return}if(this.saveParsePosition&&this.saveParsePosition(),(e=c.parseOneBox(this.stream,false)).code===c.ERR_NOT_ENOUGH_DATA){if(this.processIncompleteBox){if(this.processIncompleteBox(e))continue;return}return}var r;switch(r="uuid"!==(t=e.box).type?t.type:t.uuid,this.boxes.push(t),r){case"mdat":this.mdats.push(t);break;case"moof":this.moofs.push(t);break;case"moov":this.moovStartFound=!0,0===this.mdats.length&&(this.isProgressive=!0);default:void 0!==this[r]&&s.warn("ISOFile","Duplicate Box of type: "+r+", overriding previous occurrence"),this[r]=t}this.updateUsedBytes&&this.updateUsedBytes(t,e)}},p.prototype.checkBuffer=function(e){if(null==e)throw"Buffer must be defined and non empty";if(void 0===e.fileStart)throw"Buffer must have a fileStart property";return 0===e.byteLength?(s.warn("ISOFile","Ignoring empty buffer (fileStart: "+e.fileStart+")"),this.stream.logBufferLevel(),!1):(s.info("ISOFile","Processing buffer (fileStart: "+e.fileStart+")"),e.usedBytes=0,this.stream.insertBuffer(e),this.stream.logBufferLevel(),!!this.stream.initialized()||(s.warn("ISOFile","Not ready to start parsing"),!1))},p.prototype.appendBuffer=function(e,t){var r;if(this.checkBuffer(e))return this.parse(),this.moovStartFound&&!this.moovStartSent&&(this.moovStartSent=!0,this.onMoovStart&&this.onMoovStart()),this.moov?(this.sampleListBuilt||(this.buildSampleLists(),this.sampleListBuilt=!0),this.updateSampleLists(),this.onReady&&!this.readySent&&(this.readySent=!0,this.onReady(this.getInfo())),this.processSamples(t),this.nextSeekPosition?(r=this.nextSeekPosition,this.nextSeekPosition=void 0):r=this.nextParsePosition,this.stream.getEndFilePositionAfter&&(r=this.stream.getEndFilePositionAfter(r))):r=this.nextParsePosition?this.nextParsePosition:0,this.sidx&&this.onSidx&&!this.sidxSent&&(this.onSidx(this.sidx),this.sidxSent=!0),this.meta&&(this.flattenItemInfo&&!this.itemListBuilt&&(this.flattenItemInfo(),this.itemListBuilt=!0),this.processItems&&this.processItems(this.onItem)),this.stream.cleanBuffers&&(s.info("ISOFile","Done processing buffer (fileStart: "+e.fileStart+") - next buffer to fetch should have a fileStart position of "+r),this.stream.logBufferLevel(),this.stream.cleanBuffers(),this.stream.logBufferLevel(!0),s.info("ISOFile","Sample data size in memory: "+this.getAllocatedSampleDataSize())),r},p.prototype.getInfo=function(){var e,t,r,i,n,s,o={},a=new Date("1904-01-01T00:00:00Z").getTime();if(this.moov)for(o.hasMoov=!0,o.duration=this.moov.mvhd.duration,o.timescale=this.moov.mvhd.timescale,o.isFragmented=null!=this.moov.mvex,o.isFragmented&&this.moov.mvex.mehd&&(o.fragment_duration=this.moov.mvex.mehd.fragment_duration),o.isProgressive=this.isProgressive,o.hasIOD=null!=this.moov.iods,o.brands=[],o.brands.push(this.ftyp.major_brand),o.brands=o.brands.concat(this.ftyp.compatible_brands),o.created=new Date(a+1e3*this.moov.mvhd.creation_time),o.modified=new Date(a+1e3*this.moov.mvhd.modification_time),o.tracks=[],o.audioTracks=[],o.videoTracks=[],o.subtitleTracks=[],o.metadataTracks=[],o.hintTracks=[],o.otherTracks=[],e=0;e0?o.mime+='video/mp4; codecs="':o.audioTracks&&o.audioTracks.length>0?o.mime+='audio/mp4; codecs="':o.mime+='application/mp4; codecs="',e=0;e=r.samples.length)&&(s.info("ISOFile","Sending fragmented data on track #"+i.id+" for samples ["+Math.max(0,r.nextSample-i.nb_samples)+","+(r.nextSample-1)+"]"),s.info("ISOFile","Sample data size in memory: "+this.getAllocatedSampleDataSize()),this.onSegment&&this.onSegment(i.id,i.user,i.segmentStream.buffer,r.nextSample,e||r.nextSample>=r.samples.length),i.segmentStream=null,i!==this.fragmentedTracks[t]))break}}if(null!==this.onSamples)for(t=0;t=r.samples.length)&&(s.debug("ISOFile","Sending samples on track #"+o.id+" for sample "+r.nextSample),this.onSamples&&this.onSamples(o.id,o.user,o.samples),o.samples=[],o!==this.extractedTracks[t]))break}}}},p.prototype.getBox=function(e){var t=this.getBoxes(e,!0);return t.length?t[0]:null},p.prototype.getBoxes=function(e,t){var r=[];return p._sweep.call(this,e,r,t),r},p._sweep=function(e,t,r){for(var i in this.type&&this.type==e&&t.push(this),this.boxes){if(t.length&&r)return;p._sweep.call(this.boxes[i],e,t,r)}},p.prototype.getTrackSamplesInfo=function(e){var t=this.getTrackById(e);return t?t.samples:void 0},p.prototype.getTrackSample=function(e,t){var r=this.getTrackById(e);return this.getSample(r,t)},p.prototype.releaseUsedSamples=function(e,t){var r=0,i=this.getTrackById(e);i.lastValidSample||(i.lastValidSample=0);for(var n=i.lastValidSample;ne*n.timescale){d=i-1;break}t&&n.is_sync&&(l=i)}for(t&&(d=l),e=r.samples[d].cts,r.nextSample=d;r.samples[d].alreadyRead===r.samples[d].size&&r.samples[d+1];)d++;return o=r.samples[d].offset+r.samples[d].alreadyRead,s.info("ISOFile","Seeking to "+(t?"RAP":"")+" sample #"+r.nextSample+" on track "+r.tkhd.track_id+", time "+s.getDurationString(e,a)+" and offset: "+o),{offset:o,time:e/a}},p.prototype.seek=function(e,t){var r,i,n,o=this.moov,a={offset:1/0,time:1/0};if(this.moov){for(n=0;n-1){a=l;break}switch(a){case"Visual":if(n.add("vmhd").set("graphicsmode",0).set("opcolor",[0,0,0]),s.set("width",t.width).set("height",t.height).set("horizresolution",72<<16).set("vertresolution",72<<16).set("frame_count",1).set("compressorname",t.type+" Compressor").set("depth",24),t.avcDecoderConfigRecord){var f=new c.avcCBox,h=new o(t.avcDecoderConfigRecord);f.parse(h),s.addBox(f)}break;case"Audio":n.add("smhd").set("balance",t.balance||0),s.set("channel_count",t.channel_count||2).set("samplesize",t.samplesize||16).set("samplerate",t.samplerate||65536);break;case"Hint":n.add("hmhd");break;case"Subtitle":if(n.add("sthd"),"stpp"===t.type)s.set("namespace",t.namespace||"nonamespace").set("schema_location",t.schema_location||"").set("auxiliary_mime_types",t.auxiliary_mime_types||"");break;default:n.add("nmhd")}t.description&&s.addBox(t.description),t.description_boxes&&t.description_boxes.forEach((function(e){s.addBox(e)})),n.add("dinf").add("dref").addEntry((new c["url Box"]).set("flags",1));var p=n.add("stbl");return p.add("stsd").addEntry(s),p.add("stts").set("sample_counts",[]).set("sample_deltas",[]),p.add("stsc").set("first_chunk",[]).set("samples_per_chunk",[]).set("sample_description_index",[]),p.add("stco").set("chunk_offsets",[]),p.add("stsz").set("sample_sizes",[]),this.moov.mvex.add("trex").set("track_id",t.id).set("default_sample_description_index",t.default_sample_description_index||1).set("default_sample_duration",t.default_sample_duration||0).set("default_sample_size",t.default_sample_size||0).set("default_sample_flags",t.default_sample_flags||0),this.buildTrakSampleLists(r),t.id}},c.Box.prototype.computeSize=function(e){var t=e||new a;t.endianness=a.BIG_ENDIAN,this.write(t)},p.prototype.addSample=function(e,t,r){var i=r||{},n={},s=this.getTrackById(e);if(null!==s){n.number=s.samples.length,n.track_id=s.tkhd.track_id,n.timescale=s.mdia.mdhd.timescale,n.description_index=i.sample_description_index?i.sample_description_index-1:0,n.description=s.mdia.minf.stbl.stsd.entries[n.description_index],n.data=t,n.size=t.byteLength,n.alreadyRead=n.size,n.duration=i.duration||1,n.cts=i.cts||0,n.dts=i.dts||0,n.is_sync=i.is_sync||!1,n.is_leading=i.is_leading||0,n.depends_on=i.depends_on||0,n.is_depended_on=i.is_depended_on||0,n.has_redundancy=i.has_redundancy||0,n.degradation_priority=i.degradation_priority||0,n.offset=0,n.subsamples=i.subsamples,s.samples.push(n),s.samples_size+=n.size,s.samples_duration+=n.duration,s.first_dts||(s.first_dts=i.dts),this.processSamples();var o=this.createSingleSampleMoof(n);return this.addBox(o),o.computeSize(),o.trafs[0].truns[0].data_offset=o.size+8,this.add("mdat").data=new Uint8Array(t),n}},p.prototype.createSingleSampleMoof=function(e){var t=0;t=e.is_sync?1<<25:65536;var r=new c.moofBox;r.add("mfhd").set("sequence_number",this.nextMoofNumber),this.nextMoofNumber++;var i=r.add("traf"),n=this.getTrackById(e.track_id);return i.add("tfhd").set("track_id",e.track_id).set("flags",c.TFHD_FLAG_DEFAULT_BASE_IS_MOOF),i.add("tfdt").set("baseMediaDecodeTime",e.dts-(n.first_dts||0)),i.add("trun").set("flags",c.TRUN_FLAGS_DATA_OFFSET|c.TRUN_FLAGS_DURATION|c.TRUN_FLAGS_SIZE|c.TRUN_FLAGS_FLAGS|c.TRUN_FLAGS_CTS_OFFSET).set("data_offset",0).set("first_sample_flags",0).set("sample_count",1).set("sample_duration",[e.duration]).set("sample_size",[e.size]).set("sample_flags",[t]).set("sample_composition_time_offset",[e.cts-e.dts]),r},p.prototype.lastMoofIndex=0,p.prototype.samplesDataSize=0,p.prototype.resetTables=function(){var e,t,r,i,n,s;for(this.initial_duration=this.moov.mvhd.duration,this.moov.mvhd.duration=0,e=0;e=2&&(l=n[o].grouping_type+"/0",(a=new d(n[o].grouping_type,0)).is_fragment=!0,t.sample_groups_info[l]||(t.sample_groups_info[l]=a))}else for(o=0;o=2&&(l=i[o].grouping_type+"/0",a=new d(i[o].grouping_type,0),e.sample_groups_info[l]||(e.sample_groups_info[l]=a))},p.setSampleGroupProperties=function(e,t,r,i){var n,s;for(n in t.sample_groups=[],i){var o;if(t.sample_groups[n]={},t.sample_groups[n].grouping_type=i[n].grouping_type,t.sample_groups[n].grouping_type_parameter=i[n].grouping_type_parameter,r>=i[n].last_sample_in_run&&(i[n].last_sample_in_run<0&&(i[n].last_sample_in_run=0),i[n].entry_index++,i[n].entry_index<=i[n].sbgp.entries.length-1&&(i[n].last_sample_in_run+=i[n].sbgp.entries[i[n].entry_index].sample_count)),i[n].entry_index<=i[n].sbgp.entries.length-1?t.sample_groups[n].group_description_index=i[n].sbgp.entries[i[n].entry_index].group_description_index:t.sample_groups[n].group_description_index=-1,0!==t.sample_groups[n].group_description_index)o=i[n].fragment_description?i[n].fragment_description:i[n].description,t.sample_groups[n].group_description_index>0?(s=t.sample_groups[n].group_description_index>65535?(t.sample_groups[n].group_description_index>>16)-1:t.sample_groups[n].group_description_index-1,o&&s>=0&&(t.sample_groups[n].description=o.entries[s])):o&&o.version>=2&&o.default_group_description_index>0&&(t.sample_groups[n].description=o.entries[o.default_group_description_index-1])}},p.process_sdtp=function(e,t,r){t&&(e?(t.is_leading=e.is_leading[r],t.depends_on=e.sample_depends_on[r],t.is_depended_on=e.sample_is_depended_on[r],t.has_redundancy=e.sample_has_redundancy[r]):(t.is_leading=0,t.depends_on=0,t.is_depended_on=0,t.has_redundancy=0))},p.prototype.buildSampleLists=function(){var e,t;for(e=0;ev&&(b++,v<0&&(v=0),v+=s.sample_counts[b]),t>0?(e.samples[t-1].duration=s.sample_deltas[b],e.samples_duration+=e.samples[t-1].duration,A.dts=e.samples[t-1].dts+e.samples[t-1].duration):A.dts=0,o?(t>=w&&(E++,w<0&&(w=0),w+=o.sample_counts[E]),A.cts=e.samples[t].dts+o.sample_offsets[E]):A.cts=A.dts,a?(t==a.sample_numbers[S]-1?(A.is_sync=!0,S++):(A.is_sync=!1,A.degradation_priority=0),d&&d.entries[U].sample_delta+x==t+1&&(A.subsamples=d.entries[U].subsamples,x+=d.entries[U].sample_delta,U++)):A.is_sync=!0,p.process_sdtp(e.mdia.minf.stbl.sdtp,A,A.number),A.degradation_priority=f?f.priority[t]:0,d&&d.entries[U].sample_delta+x==t&&(A.subsamples=d.entries[U].subsamples,x+=d.entries[U].sample_delta),(u.length>0||c.length>0)&&p.setSampleGroupProperties(e,A,t,e.sample_groups_info)}t>0&&(e.samples[t-1].duration=Math.max(e.mdia.mdhd.duration-e.samples[t-1].dts,0),e.samples_duration+=e.samples[t-1].duration)}},p.prototype.updateSampleLists=function(){var e,t,r,i,n,s,o,a,l,d,u,f,h,m,_;if(void 0!==this.moov)for(;this.lastMoofIndex0&&p.initSampleGroups(f,u,u.sbgps,f.mdia.minf.stbl.sgpds,u.sgpds),t=0;t0?m.dts=f.samples[f.samples.length-2].dts+f.samples[f.samples.length-2].duration:(u.tfdt?m.dts=u.tfdt.baseMediaDecodeTime:m.dts=0,f.first_traf_merged=!0),m.cts=m.dts,y.flags&c.TRUN_FLAGS_CTS_OFFSET&&(m.cts=m.dts+y.sample_composition_time_offset[r]),_=o,y.flags&c.TRUN_FLAGS_FLAGS?_=y.sample_flags[r]:0===r&&y.flags&c.TRUN_FLAGS_FIRST_FLAG&&(_=y.first_sample_flags),m.is_sync=!(_>>16&1),m.is_leading=_>>26&3,m.depends_on=_>>24&3,m.is_depended_on=_>>22&3,m.has_redundancy=_>>20&3,m.degradation_priority=65535&_;var g=!!(u.tfhd.flags&c.TFHD_FLAG_BASE_DATA_OFFSET),v=!!(u.tfhd.flags&c.TFHD_FLAG_DEFAULT_BASE_IS_MOOF),b=!!(y.flags&c.TRUN_FLAGS_DATA_OFFSET),w=0;w=g?u.tfhd.base_data_offset:v||0===t?d.start:a,m.offset=0===t&&0===r?b?w+y.data_offset:w:a,a=m.offset+m.size,(u.sbgps.length>0||u.sgpds.length>0||f.mdia.minf.stbl.sbgps.length>0||f.mdia.minf.stbl.sgpds.length>0)&&p.setSampleGroupProperties(f,m,m.number_in_traf,u.sample_groups_info)}}if(u.subs){f.has_fragment_subsamples=!0;var E=u.first_sample_index;for(t=0;t-1))return null;var o=(r=this.stream.buffers[n]).byteLength-(i.offset+i.alreadyRead-r.fileStart);if(i.size-i.alreadyRead<=o)return s.debug("ISOFile","Getting sample #"+t+" data (alreadyRead: "+i.alreadyRead+" offset: "+(i.offset+i.alreadyRead-r.fileStart)+" read size: "+(i.size-i.alreadyRead)+" full size: "+i.size+")"),a.memcpy(i.data.buffer,i.alreadyRead,r,i.offset+i.alreadyRead-r.fileStart,i.size-i.alreadyRead),r.usedBytes+=i.size-i.alreadyRead,this.stream.logBufferLevel(),i.alreadyRead=i.size,i;if(0===o)return null;s.debug("ISOFile","Getting sample #"+t+" partial data (alreadyRead: "+i.alreadyRead+" offset: "+(i.offset+i.alreadyRead-r.fileStart)+" read size: "+o+" full size: "+i.size+")"),a.memcpy(i.data.buffer,i.alreadyRead,r,i.offset+i.alreadyRead-r.fileStart,o),i.alreadyRead+=o,r.usedBytes+=o,this.stream.logBufferLevel()}},p.prototype.releaseSample=function(e,t){var r=e.samples[t];return r.data?(this.samplesDataSize-=r.size,r.data=null,r.alreadyRead=0,r.size):0},p.prototype.getAllocatedSampleDataSize=function(){return this.samplesDataSize},p.prototype.getCodecs=function(){var e,t="";for(e=0;e0&&(t+=","),t+=this.moov.traks[e].mdia.minf.stbl.stsd.entries[0].getCodec()}return t},p.prototype.getTrexById=function(e){var t;if(!this.moov||!this.moov.mvex)return null;for(t=0;t0&&(r.protection=n.ipro.protections[n.iinf.item_infos[e].protection_index-1]),n.iinf.item_infos[e].item_type?r.type=n.iinf.item_infos[e].item_type:r.type="mime",r.content_type=n.iinf.item_infos[e].content_type,r.content_encoding=n.iinf.item_infos[e].content_encoding;if(n.iloc)for(e=0;e0&&c.property_index-1-1))return null;var l=(t=this.stream.buffers[o]).byteLength-(n.offset+n.alreadyRead-t.fileStart);if(!(n.length-n.alreadyRead<=l))return s.debug("ISOFile","Getting item #"+e+" extent #"+i+" partial data (alreadyRead: "+n.alreadyRead+" offset: "+(n.offset+n.alreadyRead-t.fileStart)+" read size: "+l+" full extent size: "+n.length+" full item size: "+r.size+")"),a.memcpy(r.data.buffer,r.alreadyRead,t,n.offset+n.alreadyRead-t.fileStart,l),n.alreadyRead+=l,r.alreadyRead+=l,t.usedBytes+=l,this.stream.logBufferLevel(),null;s.debug("ISOFile","Getting item #"+e+" extent #"+i+" data (alreadyRead: "+n.alreadyRead+" offset: "+(n.offset+n.alreadyRead-t.fileStart)+" read size: "+(n.length-n.alreadyRead)+" full extent size: "+n.length+" full item size: "+r.size+")"),a.memcpy(r.data.buffer,r.alreadyRead,t,n.offset+n.alreadyRead-t.fileStart,n.length-n.alreadyRead),t.usedBytes+=n.length-n.alreadyRead,this.stream.logBufferLevel(),r.alreadyRead+=n.length-n.alreadyRead,n.alreadyRead=n.length}}return r.alreadyRead===r.size?r:null},p.prototype.releaseItem=function(e){var t=this.items[e];if(t.data){this.itemsDataSize-=t.size,t.data=null,t.alreadyRead=0;for(var r=0;r0?this.moov.traks[e].samples[0].duration:0),t.push(i)}return t},c.Box.prototype.printHeader=function(e){this.size+=8,this.size>l&&(this.size+=8),"uuid"===this.type&&(this.size+=16),e.log(e.indent+"size:"+this.size),e.log(e.indent+"type:"+this.type)},c.FullBox.prototype.printHeader=function(e){this.size+=4,c.Box.prototype.printHeader.call(this,e),e.log(e.indent+"version:"+this.version),e.log(e.indent+"flags:"+this.flags)},c.Box.prototype.print=function(e){this.printHeader(e)},c.ContainerBox.prototype.print=function(e){this.printHeader(e);for(var t=0;t>8)),e.log(e.indent+"matrix: "+this.matrix.join(", ")),e.log(e.indent+"next_track_id: "+this.next_track_id)},c.tkhdBox.prototype.print=function(e){c.FullBox.prototype.printHeader.call(this,e),e.log(e.indent+"creation_time: "+this.creation_time),e.log(e.indent+"modification_time: "+this.modification_time),e.log(e.indent+"track_id: "+this.track_id),e.log(e.indent+"duration: "+this.duration),e.log(e.indent+"volume: "+(this.volume>>8)),e.log(e.indent+"matrix: "+this.matrix.join(", ")),e.log(e.indent+"layer: "+this.layer),e.log(e.indent+"alternate_group: "+this.alternate_group),e.log(e.indent+"width: "+this.width),e.log(e.indent+"height: "+this.height)};var m={createFile:function(e,t){var r=void 0===e||e,i=new p(t);return i.discardMdatData=!r,i}};t.createFile=m.createFile}));function br(e){return e.reduce(((e,t)=>256*e+t))}function wr(e){const t=[101,103,119,99],r=e.length-28,i=e.slice(r,r+t.length);return t.every(((e,t)=>e===i[t]))}vr.Log,vr.MP4BoxStream,vr.DataStream,vr.MultiBufferStream,vr.MPEG4DescriptorParser,vr.BoxParser,vr.XMLSubtitlein4Parser,vr.Textin4Parser,vr.ISOFile,vr.createFile;class Er{constructor(){this.s=null,this.a=null,this.l=0,this.c=0,this.u=1/0,this.A=!1,this.d=!1,this.r=4194304,this.n=new Uint8Array([30,158,90,33,244,57,83,165,2,70,35,87,215,231,226,108]),this.t=this.n.slice().reverse()}destroy(){this.s=null,this.a=null,this.l=0,this.c=0,this.u=1/0,this.A=!1,this.d=!1,this.r=4194304,this.n=null,this.t=null}transport(e){if(!this.s&&this.l>50)return e;if(this.l++,this.d)return e;const t=new Uint8Array(e);if(this.A){if(!(this.c~e))}(e.slice(r+32,r+32+t))]}return null}(t,this.t);if(!r)return e;const i=function(e){try{if("object"!=typeof WebAssembly||"function"!=typeof WebAssembly.instantiate)throw null;{const e=new WebAssembly.Module(Uint8Array.of(0,97,115,109,1,0,0,0));if(!(e instanceof WebAssembly.Module&&new WebAssembly.Instance(e)instanceof WebAssembly.Instance))throw null}}catch(e){return new Error("video_error_4")}let t;try{t={env:{__handle_stack_overflow:()=>e(new Error("video_error_1")),memory:new WebAssembly.Memory({initial:256,maximum:256})}}}catch(e){return new Error("video_error_5")}return t}(e);if(i instanceof Error)return console.error(i.message),this.d=!0,e;this.A=!0,this.u=r[1],wr(t)&&this.c++,WebAssembly.instantiate(r[2],i).then((e=>{if("function"!=typeof(t=e.instance.exports).parse||"object"!=typeof t.memory)return this.d=!0,void console.error("video_error_3");var t;this.s=e.instance.exports,this.a=new Uint8Array(this.s.memory.buffer)})).catch((e=>{this.d=!0,console.error("video_error_6")}))}return e}}const Sr=0,Ur=32,xr=16,Ar=[214,144,233,254,204,225,61,183,22,182,20,194,40,251,44,5,43,103,154,118,42,190,4,195,170,68,19,38,73,134,6,153,156,66,80,244,145,239,152,122,51,84,11,67,237,207,172,98,228,179,28,169,201,8,232,149,128,223,148,250,117,143,63,166,71,7,167,252,243,115,23,186,131,89,60,25,230,133,79,168,104,107,129,178,113,100,218,139,248,235,15,75,112,86,157,53,30,36,14,94,99,88,209,162,37,34,124,59,1,33,120,135,212,0,70,87,159,211,39,82,76,54,2,231,160,196,200,158,234,191,138,210,64,199,56,181,163,247,242,206,249,97,21,161,224,174,93,164,155,52,26,85,173,147,50,48,245,140,177,227,29,246,226,46,130,102,202,96,192,41,35,171,13,83,78,111,213,219,55,69,222,253,142,47,3,255,106,114,109,108,91,81,141,27,175,146,187,221,188,127,17,217,92,65,31,16,90,216,10,193,49,136,165,205,123,189,45,116,208,18,184,229,180,176,137,105,151,74,12,150,119,126,101,185,241,9,197,110,198,132,24,240,125,236,58,220,77,32,121,238,95,62,215,203,57,72],kr=[462357,472066609,943670861,1415275113,1886879365,2358483617,2830087869,3301692121,3773296373,4228057617,404694573,876298825,1347903077,1819507329,2291111581,2762715833,3234320085,3705924337,4177462797,337322537,808926789,1280531041,1752135293,2223739545,2695343797,3166948049,3638552301,4110090761,269950501,741554753,1213159005,1684763257];function Tr(e){const t=[];for(let r=0,i=e.length;r>>32-r}function Cr(e){return(255&Ar[e>>>24&255])<<24|(255&Ar[e>>>16&255])<<16|(255&Ar[e>>>8&255])<<8|255&Ar[255&e]}function Dr(e){return e^Br(e,2)^Br(e,10)^Br(e,18)^Br(e,24)}function Fr(e){return e^Br(e,13)^Br(e,23)}function Pr(e,t,r){const i=new Array(4),n=new Array(4);for(let t=0;t<4;t++)n[0]=255&e[4*t],n[1]=255&e[4*t+1],n[2]=255&e[4*t+2],n[3]=255&e[4*t+3],i[t]=n[0]<<24|n[1]<<16|n[2]<<8|n[3];for(let e,t=0;t<32;t+=4)e=i[1]^i[2]^i[3]^r[t+0],i[0]^=Dr(Cr(e)),e=i[2]^i[3]^i[0]^r[t+1],i[1]^=Dr(Cr(e)),e=i[3]^i[0]^i[1]^r[t+2],i[2]^=Dr(Cr(e)),e=i[0]^i[1]^i[2]^r[t+3],i[3]^=Dr(Cr(e));for(let e=0;e<16;e+=4)t[e]=i[3-e/4]>>>24&255,t[e+1]=i[3-e/4]>>>16&255,t[e+2]=i[3-e/4]>>>8&255,t[e+3]=255&i[3-e/4]}function Ir(e,t,r,{padding:i="pkcs#7",mode:n,iv:s=[],output:o="string"}={}){if("cbc"===n&&("string"==typeof s&&(s=Tr(s)),16!==s.length))throw new Error("iv is invalid");if("string"==typeof t&&(t=Tr(t)),16!==t.length)throw new Error("key is invalid");if(e="string"==typeof e?r!==Sr?function(e){const t=[];for(let r=0,i=e.length;r>>6),t.push(128|63&i);else if(i<=55295||i>=57344&&i<=65535)t.push(224|i>>>12),t.push(128|i>>>6&63),t.push(128|63&i);else{if(!(i>=65536&&i<=1114111))throw t.push(i),new Error("input is not supported");r++,t.push(240|i>>>18&28),t.push(128|i>>>12&63),t.push(128|i>>>6&63),t.push(128|63&i)}}return t}(e):Tr(e):[...e],("pkcs#5"===i||"pkcs#7"===i)&&r!==Sr){const t=xr-e.length%xr;for(let r=0;r=xr;){const t=e.slice(c,c+16),i=new Array(16);if("cbc"===n)for(let e=0;e1===(e=e.toString(16)).length?"0"+e:e)).join(""):function(e){const t=[];for(let r=0,i=e.length;r=240&&e[r]<=247?(t.push(String.fromCodePoint(((7&e[r])<<18)+((63&e[r+1])<<12)+((63&e[r+2])<<6)+(63&e[r+3]))),r+=3):e[r]>=224&&e[r]<=239?(t.push(String.fromCodePoint(((15&e[r])<<12)+((63&e[r+1])<<6)+(63&e[r+2]))),r+=2):e[r]>=192&&e[r]<=223?(t.push(String.fromCodePoint(((31&e[r])<<6)+(63&e[r+1]))),r++):t.push(String.fromCodePoint(e[r]));return t.join("")}(l):l}class Lr{on(e,t,r){const i=this.e||(this.e={});return(i[e]||(i[e]=[])).push({fn:t,ctx:r}),this}once(e,t,r){const i=this;function n(...s){i.off(e,n),t.apply(r,s)}return n._=t,this.on(e,n,r)}emit(e,...t){const r=((this.e||(this.e={}))[e]||[]).slice();for(let e=0;e{delete r[e]})),void delete this.e;const i=r[e],n=[];if(i&&t)for(let e=0,r=i.length;e=2&&!this.isDestroyed;)if(255==this.tempBuffer[this.parsedOffset]){if(!(!1&this.tempBuffer[this.parsedOffset+1])){this.versionLayer=this.tempBuffer[this.parsedOffset+1],this.state=Rr.findFirstStartCode,this.fisrtStartCodeOffset=this.parsedOffset,this.parsedOffset+=2,e=!0;break}this.parsedOffset++}else this.parsedOffset++;if(e)continue;break}if(this.state==Rr.findFirstStartCode){let e=!1;for(;this.tempBuffer.length-this.parsedOffset>=2&&!this.isDestroyed;)if(255==this.tempBuffer[this.parsedOffset]){if(this.tempBuffer[this.parsedOffset+1]==this.versionLayer){this.state=Rr.findSecondStartCode,this.secondStartCodeOffset=this.parsedOffset,this.parsedOffset+=2,e=!0;break}this.parsedOffset++}else this.parsedOffset++;if(e)continue;break}if(this.state==Rr.findSecondStartCode){let e=this.tempBuffer.slice(this.fisrtStartCodeOffset,this.secondStartCodeOffset);this.emit("data",e,t),this.tempBuffer=this.tempBuffer.slice(this.secondStartCodeOffset),this.fisrtStartCodeOffset=0,this.parsedOffset=2,this.state=Rr.findFirstStartCode}}}}function zr(e,t,r){for(let i=2;ie+t.byteLength),0));let r=0;return e.forEach((e=>{t.set(e,r),r+=e.byteLength})),t}class Or{static init(){Or.types={avc1:[],avcC:[],hvc1:[],hvcC:[],av01:[],av1C:[],btrt:[],dinf:[],dref:[],esds:[],ftyp:[],hdlr:[],mdat:[],mdhd:[],mdia:[],mfhd:[],minf:[],moof:[],moov:[],mp4a:[],mvex:[],mvhd:[],sdtp:[],stbl:[],stco:[],stsc:[],stsd:[],stsz:[],stts:[],tfdt:[],tfhd:[],traf:[],trak:[],trun:[],trex:[],tkhd:[],vmhd:[],smhd:[],".mp3":[],Opus:[],dOps:[],"ac-3":[],dac3:[],"ec-3":[],dec3:[]};for(let e in Or.types)Or.types.hasOwnProperty(e)&&(Or.types[e]=[e.charCodeAt(0),e.charCodeAt(1),e.charCodeAt(2),e.charCodeAt(3)]);let e=Or.constants={};e.FTYP=new Uint8Array([105,115,111,109,0,0,0,1,105,115,111,109,97,118,99,49]),e.STSD_PREFIX=new Uint8Array([0,0,0,0,0,0,0,1]),e.STTS=new Uint8Array([0,0,0,0,0,0,0,0]),e.STSC=e.STCO=e.STTS,e.STSZ=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0]),e.HDLR_VIDEO=new Uint8Array([0,0,0,0,0,0,0,0,118,105,100,101,0,0,0,0,0,0,0,0,0,0,0,0,86,105,100,101,111,72,97,110,100,108,101,114,0]),e.HDLR_AUDIO=new Uint8Array([0,0,0,0,0,0,0,0,115,111,117,110,0,0,0,0,0,0,0,0,0,0,0,0,83,111,117,110,100,72,97,110,100,108,101,114,0]),e.DREF=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,12,117,114,108,32,0,0,0,1]),e.SMHD=new Uint8Array([0,0,0,0,0,0,0,0]),e.VMHD=new Uint8Array([0,0,0,1,0,0,0,0,0,0,0,0])}static box(e){let t=8,r=null,i=Array.prototype.slice.call(arguments,1),n=i.length;for(let e=0;e>>24&255,r[1]=t>>>16&255,r[2]=t>>>8&255,r[3]=255&t,r.set(e,4);let s=8;for(let e=0;e>>24&255,e>>>16&255,e>>>8&255,255&e,t>>>24&255,t>>>16&255,t>>>8&255,255&t,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255]))}static trak(e){return Or.box(Or.types.trak,Or.tkhd(e),Or.mdia(e))}static tkhd(e){let t=e.id,r=e.duration,i=e.presentWidth,n=e.presentHeight;return Or.box(Or.types.tkhd,new Uint8Array([0,0,0,7,0,0,0,0,0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t,0,0,0,0,r>>>24&255,r>>>16&255,r>>>8&255,255&r,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,i>>>8&255,255&i,0,0,n>>>8&255,255&n,0,0]))}static mdia(e){return Or.box(Or.types.mdia,Or.mdhd(e),Or.hdlr(e),Or.minf(e))}static mdhd(e){let t=e.timescale,r=e.duration;return Or.box(Or.types.mdhd,new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t,r>>>24&255,r>>>16&255,r>>>8&255,255&r,85,196,0,0]))}static hdlr(e){let t=null;return t="audio"===e.type?Or.constants.HDLR_AUDIO:Or.constants.HDLR_VIDEO,Or.box(Or.types.hdlr,t)}static minf(e){let t=null;return t="audio"===e.type?Or.box(Or.types.smhd,Or.constants.SMHD):Or.box(Or.types.vmhd,Or.constants.VMHD),Or.box(Or.types.minf,t,Or.dinf(),Or.stbl(e))}static dinf(){return Or.box(Or.types.dinf,Or.box(Or.types.dref,Or.constants.DREF))}static stbl(e){return Or.box(Or.types.stbl,Or.stsd(e),Or.box(Or.types.stts,Or.constants.STTS),Or.box(Or.types.stsc,Or.constants.STSC),Or.box(Or.types.stsz,Or.constants.STSZ),Or.box(Or.types.stco,Or.constants.STCO))}static stsd(e){return"audio"===e.type?"mp3"===e.audioType?Or.box(Or.types.stsd,Or.constants.STSD_PREFIX,Or.mp3(e)):Or.box(Or.types.stsd,Or.constants.STSD_PREFIX,Or.mp4a(e)):"avc"===e.videoType?Or.box(Or.types.stsd,Or.constants.STSD_PREFIX,Or.avc1(e)):Or.box(Or.types.stsd,Or.constants.STSD_PREFIX,Or.hvc1(e))}static mp3(e){let t=e.channelCount,r=e.audioSampleRate,i=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,t,0,16,0,0,0,0,r>>>8&255,255&r,0,0]);return Or.box(Or.types[".mp3"],i)}static mp4a(e){let t=e.channelCount,r=e.audioSampleRate,i=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,t,0,16,0,0,0,0,r>>>8&255,255&r,0,0]);return Or.box(Or.types.mp4a,i,Or.esds(e))}static esds(e){let t=e.config||[],r=t.length,i=new Uint8Array([0,0,0,0,3,23+r,0,1,0,4,15+r,64,21,0,0,0,0,0,0,0,0,0,0,0,5].concat([r]).concat(t).concat([6,1,2]));return Or.box(Or.types.esds,i)}static avc1(e){let t=e.avcc;const r=e.codecWidth,i=e.codecHeight;let n=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,r>>>8&255,255&r,i>>>8&255,255&i,0,72,0,0,0,72,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,255,255]);return Or.box(Or.types.avc1,n,Or.box(Or.types.avcC,t))}static hvc1(e){let t=e.avcc;const r=e.codecWidth,i=e.codecHeight;let n=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,r>>>8&255,255&r,i>>>8&255,255&i,0,72,0,0,0,72,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,255,255]);return Or.box(Or.types.hvc1,n,Or.box(Or.types.hvcC,t))}static mvex(e){return Or.box(Or.types.mvex,Or.trex(e))}static trex(e){let t=e.id,r=new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1]);return Or.box(Or.types.trex,r)}static moof(e,t){return Or.box(Or.types.moof,Or.mfhd(e.sequenceNumber),Or.traf(e,t))}static mfhd(e){let t=new Uint8Array([0,0,0,0,e>>>24&255,e>>>16&255,e>>>8&255,255&e]);return Or.box(Or.types.mfhd,t)}static traf(e,t){let r=e.id,i=Or.box(Or.types.tfhd,new Uint8Array([0,0,0,0,r>>>24&255,r>>>16&255,r>>>8&255,255&r])),n=Or.box(Or.types.tfdt,new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t])),s=Or.sdtp(e),o=Or.trun(e,s.byteLength+16+16+8+16+8+8);return Or.box(Or.types.traf,i,n,o,s)}static sdtp(e){let t=new Uint8Array(5),r=e.flags;return t[4]=r.isLeading<<6|r.dependsOn<<4|r.isDependedOn<<2|r.hasRedundancy,Or.box(Or.types.sdtp,t)}static trun(e,t){let r=new Uint8Array(28);t+=36,r.set([0,0,15,1,0,0,0,1,t>>>24&255,t>>>16&255,t>>>8&255,255&t],0);let i=e.duration,n=e.size,s=e.flags,o=e.cts;return r.set([i>>>24&255,i>>>16&255,i>>>8&255,255&i,n>>>24&255,n>>>16&255,n>>>8&255,255&n,s.isLeading<<2|s.dependsOn,s.isDependedOn<<6|s.hasRedundancy<<4|s.isNonSync,0,0,o>>>24&255,o>>>16&255,o>>>8&255,255&o],12),Or.box(Or.types.trun,r)}static mdat(e){return Or.box(Or.types.mdat,e)}}function $r(e={},t={},r=!1){let i=[],n=[],s={},o=new AbortController,a=null,l=null,d=null,g=null,v=null,w=null,Fe=!1,Pe=!1,Ve=!!at(r),Qe=!1,dt=null,ut=null,ct=null,ft=[],mt=null,yt=null,xt=0,At=0,kt=null,Tt=null,Bt=0,Ct=0,Ot=!1,$t=!1,Gt=!1,Ht=null,Vt=null,jt=null,Wt=!1,Yt=()=>{const e=st();return{debug:e.debug,debugLevel:e.debugLevel,debugUuid:e.debugUuid,useOffscreen:e.useOffscreen,useWCS:e.useWCS,useMSE:e.useMSE,videoBuffer:e.videoBuffer,videoBufferDelay:e.videoBufferDelay,openWebglAlignment:e.openWebglAlignment,playType:e.playType,hasAudio:e.hasAudio,hasVideo:e.hasVideo,playbackRate:1,playbackForwardMaxRateDecodeIFrame:e.playbackForwardMaxRateDecodeIFrame,playbackIsCacheBeforeDecodeForFpsRender:e.playbackConfig.isCacheBeforeDecodeForFpsRender,sampleRate:0,networkDelay:e.networkDelay,visibility:!0,useSIMD:e.useSIMD,isRecording:!1,recordType:e.recordType,isNakedFlow:e.isNakedFlow,checkFirstIFrame:e.checkFirstIFrame,audioBufferSize:1024,isM7sCrypto:e.isM7sCrypto,m7sCryptoAudio:e.m7sCryptoAudio,cryptoKey:e.cryptoKey,cryptoIV:e.cryptoIV,isSm4Crypto:e.isSm4Crypto,sm4CryptoKey:e.sm4CryptoKey,isXorCrypto:e.isXorCrypto,isHls265:!1,isFlv:e.isFlv,isFmp4:e.isFmp4,isMpeg4:e.isMpeg4,isTs:e.isTs,isFmp4Private:e.isFmp4Private,isEmitSEI:e.isEmitSEI,isRecordTypeFlv:!1,isWasmMp4:!1,isChrome:!1,isDropSameTimestampGop:e.isDropSameTimestampGop,mseDecodeAudio:e.mseDecodeAudio,nakedFlowH265DemuxUseNew:e.nakedFlowH265DemuxUseNew,mseDecoderUseWorker:e.mseDecoderUseWorker,mseAutoCleanupSourceBuffer:e.mseAutoCleanupSourceBuffer,mseAutoCleanupMaxBackwardDuration:e.mseAutoCleanupMaxBackwardDuration,mseAutoCleanupMinBackwardDuration:e.mseAutoCleanupMinBackwardDuration,mseCorrectTimeDuration:e.mseCorrectTimeDuration}};"VideoEncoder"in self&&(s={hasInit:!1,isEmitInfo:!1,offscreenCanvas:null,offscreenCanvasCtx:null,decoder:new VideoDecoder({output:function(e){if(s.isEmitInfo||(Qt.debug.log("worker","Webcodecs Video Decoder initSize"),postMessage({cmd:S,w:e.codedWidth,h:e.codedHeight}),s.isEmitInfo=!0,s.offscreenCanvas=new OffscreenCanvas(e.codedWidth,e.codedHeight),s.offscreenCanvasCtx=s.offscreenCanvas.getContext("2d")),"function"==typeof e.createImageBitmap)e.createImageBitmap().then((t=>{s.offscreenCanvasCtx.drawImage(t,0,0,e.codedWidth,e.codedHeight);let r=s.offscreenCanvas.transferToImageBitmap();postMessage({cmd:U,buffer:r,delay:Qt.delay,ts:0},[r]),it(e)}));else{s.offscreenCanvasCtx.drawImage(e,0,0,e.codedWidth,e.codedHeight);let t=s.offscreenCanvas.transferToImageBitmap();postMessage({cmd:U,buffer:t,delay:Qt.delay,ts:0},[t]),it(e)}},error:function(e){Qt.debug.error("worker","VideoDecoder error",e)}}),decode:function(e,t,r){const i=e[0]>>4==1;if(s.hasInit){const r=new EncodedVideoChunk({data:e.slice(5),timestamp:t,type:i?Te:Be});s.decoder.decode(r)}else if(i&&0===e[1]){const t=15&e[0];postMessage({cmd:C,code:t});const r=new Uint8Array(e);postMessage({cmd:D,buffer:r,codecId:t},[r.buffer]);const i=function(e){let t=e.subarray(1,4),r="avc1.";for(let e=0;e<3;e++){let i=t[e].toString(16);i.length<2&&(i="0"+i),r+=i}return{codec:r,description:e}}(e.slice(5));s.decoder.configure(i),s.hasInit=!0}},reset(){s.hasInit=!1,s.isEmitInfo=!1,s.offscreenCanvas=null,s.offscreenCanvasCtx=null}});let qt=function(){if(Wt=!0,Qt.fetchStatus!==Re||lt(Qt._opt.isChrome)){if(o)try{o.abort(),o=null}catch(e){Qt.debug.log("worker","abort catch",e)}}else o=null,Qt.debug.log("worker",`abort() and not abortController.abort() _status is ${Qt.fetchStatus} and _isChrome is ${Qt._opt.isChrome}`)},Kt={init(){Kt.lastBuf=null,Kt.vps=null,Kt.sps=null,Kt.pps=null,Kt.streamType=null,Kt.localDts=0,Kt.isSendSeqHeader=!1},destroy(){Kt.lastBuf=null,Kt.vps=null,Kt.sps=null,Kt.pps=null,Kt.streamType=null,Kt.localDts=0,Kt.isSendSeqHeader=!1},dispatch(e){const t=new Uint8Array(e);Kt.extractNALu$2(t)},getNaluDts(){let e=Kt.localDts;return Kt.localDts=Kt.localDts+40,e},getNaluAudioDts(){const e=Qt._opt.sampleRate,t=Qt._opt.audioBufferSize;return Kt.localDts+parseInt(t/e*1e3)},extractNALu(e){let t,r,i=0,n=e.byteLength,s=0,o=[];for(;i1)for(let e=0;e>1,r!==ke.vps&&r!==ke.sps&&r!==ke.pps||(t=Ue.h265)),t}(e),Ht=Kt.streamType===Ue.h265),Kt.streamType===Ue.h264){const t=Kt.handleAddNaluStartCode(e),r=Kt.extractNALu(t);if(0===r.length)return void Qt.debug.warn("worker","handleVideoNalu","h264 naluList.length === 0");const i=[];if(r.forEach((e=>{const t=wt(e);t===Ae.pps||t===Ae.sps?Kt.handleVideoH264Nalu(e):St(t)&&i.push(e)})),1===i.length)Kt.handleVideoH264Nalu(i[0]);else{const e=function(e){if(0===e.length)return!1;const t=wt(e[0]);for(let r=1;r{Kt.handleVideoH264Nalu(e)}))}}else if(Kt.streamType===Ue.h265)if(Qt._opt.nakedFlowH265DemuxUseNew){const t=Kt.handleAddNaluStartCode(e),r=Kt.extractNALu(t);if(0===r.length)return void Qt.debug.warn("worker","handleVideoNalu","h265 naluList.length === 0");const i=[];if(r.forEach((e=>{const t=Mt(e);t===ke.pps||t===ke.sps||t===ke.vps?Kt.handleVideoH265Nalu(e):zt(t)&&i.push(e)})),1===i.length)Kt.handleVideoH265Nalu(i[0]);else{const e=function(e){if(0===e.length)return!1;const t=Mt(e[0]);for(let r=1;r{Kt.handleVideoH265Nalu(e)}))}}else{Mt(e)===ke.pps?Kt.extractH265PPS(e):Kt.handleVideoH265Nalu(e)}},extractH264PPS(e){const t=Kt.handleAddNaluStartCode(e);Kt.extractNALu(t).forEach((e=>{Et(wt(e))?Kt.extractH264SEI(e):Kt.handleVideoH264Nalu(e)}))},extractH265PPS(e){const t=Kt.handleAddNaluStartCode(e);Kt.extractNALu(t).forEach((e=>{const t=Mt(e);t===ke.sei?Kt.extractH265SEI(e):Kt.handleVideoH265Nalu(e)}))},extractH264SEI(e){const t=Kt.handleAddNaluStartCode(e);Kt.extractNALu(t).forEach((e=>{Kt.handleVideoH264Nalu(e)}))},extractH265SEI(e){const t=Kt.handleAddNaluStartCode(e);Kt.extractNALu(t).forEach((e=>{Kt.handleVideoH265Nalu(e)}))},handleAddNaluStartCode(e){const t=[0,0,0,1],r=new Uint8Array(e.length+t.length);return r.set(t),r.set(e,t.length),r},handleVideoH264Nalu(e){const t=wt(e);switch(t){case Ae.sps:Kt.sps=e;break;case Ae.pps:Kt.pps=e}if(Kt.isSendSeqHeader){if(Kt.sps&&Kt.pps){const e=vt({sps:Kt.sps,pps:Kt.pps}),t=Kt.getNaluDts();Qt.decode(e,{type:Z,ts:t,isIFrame:!0,cts:0}),Kt.sps=null,Kt.pps=null}if(St(t)){const r=Ut(t),i=Kt.getNaluDts(),n=function(e,t){let r=[];r[0]=t?23:39,r[1]=1,r[2]=0,r[3]=0,r[4]=0,r[5]=e.byteLength>>24&255,r[6]=e.byteLength>>16&255,r[7]=e.byteLength>>8&255,r[8]=255&e.byteLength;const i=new Uint8Array(r.length+e.byteLength);return i.set(r,0),i.set(e,r.length),i}(e,r);Kt.doDecode(n,{type:Z,ts:i,isIFrame:r,cts:0})}else Qt.debug.warn("work",`handleVideoH264Nalu Avc Seq Head is ${t}`)}else if(Kt.sps&&Kt.pps){Kt.isSendSeqHeader=!0;const e=vt({sps:Kt.sps,pps:Kt.pps});Qt.decode(e,{type:Z,ts:0,isIFrame:!0,cts:0}),Kt.sps=null,Kt.pps=null}},handleVideoH264NaluList(e,t,r){if(Kt.isSendSeqHeader){const i=Kt.getNaluDts(),n=bt(e.reduce(((e,t)=>{const r=Ft(e),i=Ft(t),n=new Uint8Array(r.byteLength+i.byteLength);return n.set(r,0),n.set(i,r.byteLength),n})),t);Kt.doDecode(n,{type:Z,ts:i,isIFrame:t,cts:0}),Qt.debug.log("worker",`handleVideoH264NaluList list size is ${e.length} package length is ${n.byteLength} isIFrame is ${t},nalu type is ${r}, dts is ${i}`)}else Qt.debug.warn("worker","handleVideoH264NaluList isSendSeqHeader is false")},handleVideoH265Nalu(e){const t=Mt(e);switch(t){case ke.vps:Kt.vps=e;break;case ke.sps:Kt.sps=e;break;case ke.pps:Kt.pps=e}if(Kt.isSendSeqHeader){if(Kt.vps&&Kt.sps&&Kt.pps){const e=Lt({vps:Kt.vps,sps:Kt.sps,pps:Kt.pps}),t=Kt.getNaluDts();Qt.decode(e,{type:Z,ts:t,isIFrame:!0,cts:0}),Kt.vps=null,Kt.sps=null,Kt.pps=null}if(zt(t)){const r=Nt(t),i=Kt.getNaluDts(),n=function(e,t){let r=[];r[0]=t?28:44,r[1]=1,r[2]=0,r[3]=0,r[4]=0,r[5]=e.byteLength>>24&255,r[6]=e.byteLength>>16&255,r[7]=e.byteLength>>8&255,r[8]=255&e.byteLength;const i=new Uint8Array(r.length+e.byteLength);return i.set(r,0),i.set(e,r.length),i}(e,r);Kt.doDecode(n,{type:Z,ts:i,isIFrame:r,cts:0})}else Qt.debug.warn("work",`handleVideoH265Nalu HevcSeqHead is ${t}`)}else if(Kt.vps&&Kt.sps&&Kt.pps){Kt.isSendSeqHeader=!0;const e=Lt({vps:Kt.vps,sps:Kt.sps,pps:Kt.pps});Qt.decode(e,{type:Z,ts:0,isIFrame:!0,cts:0}),Kt.vps=null,Kt.sps=null,Kt.pps=null}},handleVideoH265NaluList(e,t,r){if(Kt.isSendSeqHeader){const i=Kt.getNaluDts(),n=Rt(e.reduce(((e,t)=>{const r=Ft(e),i=Ft(t),n=new Uint8Array(r.byteLength+i.byteLength);return n.set(r,0),n.set(i,r.byteLength),n})),t);Kt.doDecode(n,{type:Z,ts:i,isIFrame:t,cts:0}),Qt.debug.log("worker",`handleVideoH265NaluList list size is ${e.length} package length is ${n.byteLength} isIFrame is ${t},nalu type is ${r}, dts is ${i}`)}else Qt.debug.warn("worker","handleVideoH265NaluList isSendSeqHeader is false")},doDecode(e,t){Qt.calcNetworkDelay(t.ts),t.isIFrame&&Qt.calcIframeIntervalTimestamp(t.ts),postMessage({cmd:L,type:he,value:e.byteLength}),postMessage({cmd:L,type:pe,value:t.ts}),Qt.decode(e,t)}},Xt={LOG_NAME:"worker fmp4Demuxer",mp4Box:vr.createFile(),offset:0,videoTrackId:null,audioTrackId:null,isHevc:!1,listenMp4Box(){Xt.mp4Box.onReady=Xt.onReady,Xt.mp4Box.onError=Xt.onError,Xt.mp4Box.onSamples=Xt.onSamples},initTransportDescarmber(){Xt.transportDescarmber=new Er},_getSeqHeader(e){const t=Xt.mp4Box.getTrackById(e.id);for(const e of t.mdia.minf.stbl.stsd.entries)if(e.avcC||e.hvcC){const t=new vr.DataStream(void 0,0,vr.DataStream.BIG_ENDIAN);let r=[];e.avcC?(e.avcC.write(t),r=[23,0,0,0,0]):(Xt.isHevc=!0,Ht=!0,e.hvcC.write(t),r=[28,0,0,0,0]);const i=new Uint8Array(t.buffer,8),n=new Uint8Array(r.length+i.length);return n.set(r,0),n.set(i,r.length),n}return null},onReady(e){Qt.debug.log(Xt.LOG_NAME,"onReady()",e);const t=e.videoTracks[0],r=e.audioTracks[0];if(t){Xt.videoTrackId=t.id;const e=Xt._getSeqHeader(t);e&&(Qt.debug.log(Xt.LOG_NAME,"seqHeader"),Qt.decodeVideo(e,0,!0,0)),Xt.mp4Box.setExtractionOptions(t.id)}if(r&&Qt._opt.hasAudio){Xt.audioTrackId=r.id;const e=r.audio||{},t=Ke.indexOf(e.sample_rate),i=r.codec.replace("mp4a.40.","");Xt.mp4Box.setExtractionOptions(r.id);const n=je({profile:parseInt(i,10),sampleRate:t,channel:e.channel_count});Qt.debug.log(Xt.LOG_NAME,"aacADTSHeader"),Qt.decodeAudio(n,0)}Xt.mp4Box.start()},onError(e){Qt.debug.error(Xt.LOG_NAME,"mp4Box onError",e)},onSamples(e,t,r){if(e===Xt.videoTrackId)for(const e of r){const t=e.data,r=e.is_sync,i=1e3*e.cts/e.timescale;e.duration,e.timescale,r&&Qt.calcIframeIntervalTimestamp(i);let n=null;n=Xt.isHevc?Rt(t,r):bt(t,r),postMessage({cmd:L,type:he,value:n.byteLength}),postMessage({cmd:L,type:pe,value:i}),Qt.decode(n,{type:Z,ts:i,isIFrame:r,cts:0})}else if(e===Xt.audioTrackId){if(Qt._opt.hasAudio)for(const e of r){const t=e.data,r=1e3*e.cts/e.timescale;e.duration,e.timescale;const i=new Uint8Array(t.byteLength+2);i.set([175,1],0),i.set(t,2),postMessage({cmd:L,type:fe,value:i.byteLength}),Qt.decode(i,{type:X,ts:r,isIFrame:!1,cts:0})}}else Qt.debug.warn(Xt.LOG_NAME,"onSamples() trackId error",e)},dispatch(e){let t=e;"string"!=typeof e?"object"==typeof e?(Xt.transportDescarmber&&(t=Xt.transportDescarmber.transport(t)),t.buffer.fileStart=Xt.offset,Xt.offset+=t.byteLength,Xt.mp4Box.appendBuffer(t.buffer)):Qt.debug.warn(Xt.LOG_NAME,"dispatch()","data is not object",e):Qt.debug.warn(Xt.LOG_NAME,"dispatch()","data is string",e)},destroy(){Xt.mp4Box&&(Xt.mp4Box.flush(),Xt.mp4Box=null),Xt.transportDescarmber&&(Xt.transportDescarmber.destroy(),Xt.transportDescarmber=null),Xt.offset=0,Xt.videoTrackId=null,Xt.audioTrackId=null,Xt.isHevc=!1}},Zt={LOG_NAME:"worker mpeg4Demuxer",lastBuffer:new Uint8Array(0),parsedOffset:0,firstStartCodeOffset:0,secondStartCodeOffset:0,state:"init",hasInitVideoCodec:!1,localDts:0,dispatch(e){const t=new Uint8Array(e);Zt.extractNALu(t)},destroy(){Zt.lastBuffer=new Uint8Array(0),Zt.parsedOffset=0,Zt.firstStartCodeOffset=0,Zt.secondStartCodeOffset=0,Zt.state="init",Zt.hasInitVideoCodec=!1,Zt.localDts=0},extractNALu(e){if(!e||e.byteLength<1)return void Qt.debug.warn(Zt.LOG_NAME,"extractNALu() buffer error",e);const t=new Uint8Array(Zt.lastBuffer.length+e.length);for(t.set(Zt.lastBuffer,0),t.set(new Uint8Array(e),Zt.lastBuffer.length),Zt.lastBuffer=t;;){if("init"===Zt.state){let e=!1;for(;Zt.lastBuffer.length-Zt.parsedOffset>=4;)if(0===Zt.lastBuffer[Zt.parsedOffset])if(0===Zt.lastBuffer[Zt.parsedOffset+1])if(1===Zt.lastBuffer[Zt.parsedOffset+2]){if(182===Zt.lastBuffer[Zt.parsedOffset+3]){Zt.state="findFirstStartCode",Zt.firstStartCodeOffset=Zt.parsedOffset,Zt.parsedOffset+=4,e=!0;break}Zt.parsedOffset++}else Zt.parsedOffset++;else Zt.parsedOffset++;else Zt.parsedOffset++;if(e)continue;break}if("findFirstStartCode"===Zt.state){let e=!1;for(;Zt.lastBuffer.length-Zt.parsedOffset>=4;)if(0===Zt.lastBuffer[Zt.parsedOffset])if(0===Zt.lastBuffer[Zt.parsedOffset+1])if(1===Zt.lastBuffer[Zt.parsedOffset+2]){if(182===Zt.lastBuffer[Zt.parsedOffset+3]){Zt.state="findSecondStartCode",Zt.secondStartCodeOffset=Zt.parsedOffset,Zt.parsedOffset+=4,e=!0;break}Zt.parsedOffset++}else Zt.parsedOffset++;else Zt.parsedOffset++;else Zt.parsedOffset++;if(e)continue;break}if("findSecondStartCode"===Zt.state){if(!(Zt.lastBuffer.length-Zt.parsedOffset>0))break;{let e,t,r=192&Zt.lastBuffer[Zt.parsedOffset];e=0==r?Zt.secondStartCodeOffset-14:Zt.secondStartCodeOffset;let i=0==(192&Zt.lastBuffer[Zt.firstStartCodeOffset+4]);if(i){if(Zt.firstStartCodeOffset-14<0)return void Qt.debug.warn(Zt.LOG_NAME,"firstStartCodeOffset -14 is",Zt.firstStartCodeOffset-14);Zt.hasInitVideoCodec||(Zt.hasInitVideoCodec=!0,Qt.debug.log(Zt.LOG_NAME,"setCodec"),tr.setCodec(Se,"")),t=Zt.lastBuffer.subarray(Zt.firstStartCodeOffset-14,e)}else t=Zt.lastBuffer.subarray(Zt.firstStartCodeOffset,e);let n=Zt.getNaluDts();Zt.hasInitVideoCodec?(postMessage({cmd:L,type:he,value:t.byteLength}),postMessage({cmd:L,type:pe,value:n}),tr.decode(t,i?1:0,n)):Qt.debug.warn(Zt.LOG_NAME,"has not init video codec"),Zt.lastBuffer=Zt.lastBuffer.subarray(e),Zt.firstStartCodeOffset=0==r?14:0,Zt.parsedOffset=Zt.firstStartCodeOffset+4,Zt.state="findFirstStartCode"}}}},getNaluDts(){let e=Zt.localDts;return Zt.localDts=Zt.localDts+40,e}},Jt={isFirstDispatch:!0,_pmtId:-1,_remainingPacketData:null,_videoPesData:[],_audioPesData:[],_gopId:0,_videoPid:-1,_audioPid:-1,_codecType:we,_audioCodecType:xe.AAC,_vps:null,_sps:null,_pps:null,TAG_NAME:"worker TsDemuxer",videoTrack:{samples:[]},audioTrack:{samples:[]},_baseDts:-1,_audioNextPts:void 0,_videoNextDts:void 0,_audioTimestampBreak:!1,_videoTimestampBreak:!1,_lastAudioExceptionGapDot:0,_lastAudioExceptionOverlapDot:0,_lastAudioExceptionLargeGapDot:0,_isSendAACSeqHeader:!1,init(){},dispatch(e){const t=new Uint8Array(e);Jt.demuxAndFix(t,Jt.isFirstDispatch,!0,0),Jt.isFirstDispatch&&(Jt.isFirstDispatch=!1)},_probe:e=>!!e.length&&(71===e[0]&&71===e[188]&&71===e[376]),_parsePES(e){const t=e[8];if(null==t||e.lengthe.length-6)return;let i,n;const s=e[7];return 192&s&&(i=536870912*(14&e[9])+4194304*(255&e[10])+16384*(254&e[11])+128*(255&e[12])+(254&e[13])/2,64&s?(n=536870912*(14&e[14])+4194304*(255&e[15])+16384*(254&e[16])+128*(255&e[17])+(254&e[18])/2,i-n>54e5&&(i=n)):n=i),{data:e.subarray(9+t),pts:i,dts:n,originalPts:i,originalDts:n}},demuxAndFix(e,t,r,i){Jt._demux(e,t,r),Jt._fix(i,t,r)},_initVideoTrack:()=>({samples:[]}),_initAudioTrack:()=>({samples:[]}),_demux(e,t=!1,r=!0){t&&(Jt._pmtId=-1,Jt.videoTrack=Jt._initVideoTrack(),Jt.audioTrack=Jt._initAudioTrack()),!r||t?(Jt._remainingPacketData=null,Jt._videoPesData=[],Jt._audioPesData=[]):(Jt.videoTrack.samples=[],Jt.audioTrack.samples=[],Jt._remainingPacketData&&(e=Nr(Jt._remainingPacketData,e),Jt._remainingPacketData=null));let i=e.length;const n=i%188;n&&(Jt._remainingPacketData=e.subarray(i-n),i-=n);for(let t=0;t>4>1){if(n=t+5+e[t+4],n===t+188)continue}else n=t+4;switch(i){case 0:r&&(n+=e[n]+1),Jt._pmtId=(31&e[n+10])<<8|e[n+11];break;case Jt._pmtId:{r&&(n+=e[n]+1);const t=n+3+((15&e[n+1])<<8|e[n+2])-4;for(n+=12+((15&e[n+10])<<8|e[n+11]);n=t)return[];const n=[];for(;i=r)return;const n=i,s=[],o=(60&e[i+2])>>>2,a=qe[o];if(!a)throw new Error(`Invalid sampling index: ${o}`);const l=1+((192&e[i+2])>>>6),d=(1&e[i+2])<<2|(192&e[i+3])>>>6;let u,c,f=0;const h=Ze(a);for(;i+7>5,r-i=r?void 0:e.subarray(i),frames:s,samplingFrequencyIndex:o,sampleRate:a,objectType:l,channelCount:d,originCodec:`mp4a.40.${l}`}}(e.data,e.originalPts);if(t){if(Jt.audioTrack.codec=t.codec,Jt.audioTrack.sampleRate=t.sampleRate,Jt.audioTrack.channelCount=t.channelCount,!Jt._isSendAACSeqHeader){const e=je({profile:t.objectType,sampleRate:t.samplingFrequencyIndex,channel:t.channelCount});Jt._isSendAACSeqHeader=!0,Qt.debug.log(Jt.TAG_NAME,"aac seq header",`profile: ${t.objectType}, sampleRate:${t.sampleRate},sampleRateIndex: ${t.samplingFrequencyIndex}, channel: ${t.channelCount}`),Qt.decodeAudio(e,0)}if(Jt._isSendAACSeqHeader){const e=[];t.frames.forEach((t=>{const r=t.pts,i=new Uint8Array(t.data.length+2);i.set([175,1],0),i.set(t.data,2);const n={type:X,pts:r,dts:r,payload:i};e.push(n)})),Jt.audioTrack.samples=Jt.audioTrack.samples.concat(e)}else Qt.debug.warn(Jt.TAG_NAME,"aac seq header not send")}else Qt.debug.warn(Jt.TAG_NAME,"aac parseADTS error")}Jt._audioPesData=[]}}else Qt.debug.warn(Jt.TAG_NAME,"Cannot parse audio pes",Jt._audioPesData)},_fix(e=0,t=!1,r=!0){e=Math.round(9e4*e);const i=Jt.videoTrack,n=Jt.audioTrack,s=i.samples,o=n.samples;if(!s.length&&!o.length)return;const a=s[0],l=o[0];let d=0;if(s.length&&o.length&&(d=a.dts-l.pts),Jt._baseDtsInited||Jt._calculateBaseDts(),t&&(Jt._calculateBaseDts(),Jt._baseDts-=e),!r){Jt._videoNextDts=d>0?e+d:e,Jt._audioNextPts=d>0?e:e-d;const t=a?a.dts-Jt._baseDts-Jt._videoNextDts:0,r=l?l.pts-Jt._baseDts-Jt._audioNextPts:0;Math.abs(t||r)>MAX_VIDEO_FRAME_DURATION&&(Jt._calculateBaseDts(Jt.audioTrack,Jt.videoTrack),Jt._baseDts-=e)}Jt._resetBaseDtsWhenStreamBreaked(),Jt._fixAudio(n),Jt._fixVideo(i);let u=i.samples.concat(n.samples);u=u.map((e=>(e.dts=Math.round(e.dts/90),e.pts=Math.round(e.pts/90),e.cts=e.pts-e.dts,e))).sort(((e,t)=>e.dts-t.dts)),u.forEach((e=>{const t=new Uint8Array(e.payload);delete e.payload,e.type===Z?Jt._doDecodeVideo({...e,payload:t}):e.type===X&&Jt._doDecodeAudio({...e,payload:t})}))},_calculateBaseDts(){const e=Jt.audioTrack,t=Jt.videoTrack,r=e.samples,i=t.samples;if(!r.length&&!i.length)return!1;let n=1/0,s=1/0;r.length&&(e.baseDts=n=r[0].pts),i.length&&(t.baseDts=s=i[0].dts),Jt._baseDts=Math.min(n,s);const o=s-n;return Number.isFinite(o)&&Math.abs(o)>45e3&&Qt.debug.warn(Jt.TAG_NAME,`large av first frame gap,\n video pts: ${s},\n audio pts: ${n},\n base dts: ${Jt._baseDts},\n detect is: ${o}`),Jt._baseDtsInited=!0,!0},_resetBaseDtsWhenStreamBreaked(){if(Jt._baseDtsInited&&Jt._videoTimestampBreak&&Jt._audioTimestampBreak){if(!Jt._calculateBaseDts(Jt.audioTrack,Jt.videoTrack))return;Jt._baseDts-=Math.min(Jt._audioNextPts,Jt._videoNextDts),Jt._audioLastSample=null,Jt._videoLastSample=null,Jt._videoTimestampBreak=!1,Jt._audioTimestampBreak=!1}},_createVideoSample(e,t,r){if(!e.length)return;const i=Jt._codecType===Ee,n={isIFrame:!1,type:Z,isHevc:i,vps:null,sps:null,pps:null,pts:t,dts:r,payload:null};e.forEach((e=>{const t=i?e[0]>>>1&63:31&e[0];switch(t){case 5:case 16:case 17:case 18:case 19:case 20:case 21:case 22:case 23:if(!i&&5!==t||i&&5===t)break;n.isIFrame=!0,Jt._gopId++;break;case 6:case 39:case 40:if(!i&&6!==t||i&&6===t)break;return void function(e,t){const r=e.length;let i=t?2:1,n=0,s=0,o="";for(;255===e[i];)n+=255,i++;for(n+=e[i++];255===e[i];)s+=255,i++;if(s+=e[i++],5===n&&r>i+16)for(let t=0;t<16;t++)o+=e[i].toString(16),i++;e.subarray(i)}(function(e){const t=e.byteLength,r=[];let i=1;for(;i>>8,s[7]=255&o;let a=8;s.set(e,8),a+=o,s[a]=1;let l=t.byteLength;s[a+1]=l>>>8,s[a+2]=255&l,s.set(t,a+3),a+=3+l,i&&(s[a]=252|n.chroma_format_idc,s[a+1]=248|n.bit_depth_luma-8,s[a+2]=248|n.bit_depth_chroma-8,s[a+3]=0,a+=4);const d=[23,0,0,0,0],u=new Uint8Array(d.length+s.byteLength);return u.set(d,0),u.set(s,d.length),u}({sps:n.sps,pps:n.pps})),s&&(Qt.debug.log(Jt.TAG_NAME,"_createVideoSample","seqHeader"),Qt.decodeVideo(s,Z,Math.round(n.pts/90),!0,0)),n.isIFrame&&Qt.calcIframeIntervalTimestamp(Math.round(n.dts/90)),Jt.videoTrack.samples=Jt.videoTrack.samples.concat(n)},_fixAudio(e){const t=e.samples;t.length&&(t.forEach((e=>{e.pts-=Jt._baseDts,e.dts=e.pts})),Jt._doFixAudioInternal(e,t,9e4))},_fixVideo(e){const t=e.samples;if(!t.length)return;if(t.forEach((e=>{e.dts-=Jt._baseDts,e.pts-=Jt._baseDts})),void 0===Jt._videoNextDts){const e=t[0];Jt._videoNextDts=e.dts}const r=t.length;let i=0;const n=t[0],s=t[1],o=Jt._videoNextDts-n.dts;let a;Math.abs(o)>45e3&&(n.dts+=o,n.pts+=o,Qt.debug.warn(Jt.TAG_NAME,`large video gap between chunk,\n next dts is ${Jt._videoNextDts},\n first dts is ${n.dts},\n next dts is ${s.dts},\n duration is ${o}`),s&&Math.abs(s.dts-n.dts)>9e4&&(Jt._videoTimestampBreak=!0,t.forEach(((e,t)=>{0!==t&&(e.dts+=o,e.pts+=o)}))));const l=e.samples[0],d=e.samples[r-1];a=1===r?9e3:Math.floor((d.dts-l.dts)/(r-1));for(let n=0;n9e4||i<0){Jt._videoTimestampBreak=!0,i=Jt._audioTimestampBreak?a:Math.max(i,2700);const r=Jt._audioNextPts||0;o&&o.dts>r&&(i=a),Qt.debug.warn(Jt.TAG_NAME,`large video gap between frames,\n time is ${s/e.timescale},\n dts is ${s},\n origin dts is ${t[n].originalDts},\n next dts is ${Jt._videoNextDts},\n sample Duration is ${i} ,\n ref Sample DurationInt is ${a}`)}t[n].duration=i,Jt._videoNextDts+=i}},_doFixAudioInternal(e,t,r){e.sampleDuration||(e.sampleDuration=Ze(e.timescale,r));const i=e.sampleDuration;if(void 0===Jt._audioNextPts){const e=t[0];Jt._audioNextPts=e.pts}for(let r=0;r=3*i&&o<=Ge&&!tt()){Xe(e.codec,e.channelCount)||t[0].data.subarray();const a=Math.floor(o/i);Math.abs(s.pts-Jt._lastAudioExceptionGapDot)>AUDIO_EXCETION_LOG_EMIT_DURATION&&(Jt._lastAudioExceptionGapDot=s.pts),Qt.debug.warn(Jt.TAG_NAME,`audio gap detected,\n pts is ${t.pts},\n originPts is ${t.originalPts},\n count is ${a},\n nextPts is ${n},\n ref sample duration is ${i}`);for(let e=0;e=-9e4?(Math.abs(s.pts-Jt._lastAudioExceptionOverlapDot)>He&&(Jt._lastAudioExceptionOverlapDot=s.pts,Qt.debug.warn(Jt.TAG_NAME,`audio overlap detected,\n pts is ${s.pts},\n originPts is ${s.originalPts},\n nextPts is ${n},\n ref sample duration is ${i}`)),t.splice(r,1),r--):(Math.abs(o)>=Ge&&(Jt._audioTimestampBreak=!0,Math.abs(s.pts-Jt._lastAudioExceptionLargeGapDot)>He&&(Jt._lastAudioExceptionLargeGapDot=s.pts,Qt.debug.warn(Jt.TAG_NAME,`large audio gap detected,\n time is ${s.pts/1e3}\n pts is ${s.pts},\n originPts is ${s.originalPts},\n nextPts is ${n},\n sample duration is ${o}\n ref sample duration is ${i}`))),s.dts=s.pts=n,Jt._audioNextPts+=i)}},_doDecodeVideo(e){const t=new Uint8Array(e.payload);let r=null;r=e.isHevc?Rt(t,e.isIFrame):bt(t,e.isIFrame),postMessage({cmd:L,type:he,value:r.byteLength}),postMessage({cmd:L,type:pe,value:e.dts});const i=e.pts-e.dts;let n=Qt.cryptoPayload(r,e.isIFrame);Qt.decode(n,{type:Z,ts:e.dts,isIFrame:e.isIFrame,cts:i})},_doDecodeAudio(){const e=new Uint8Array(sample.payload);postMessage({cmd:L,type:fe,value:e.byteLength});let t=e;at(Qt._opt.m7sCryptoAudio)&&(t=Qt.cryptoPayloadAudio(e)),Qt.decode(t,{type:X,ts:sample.dts,isIFrame:!1,cts:0})},destroy(){Jt.videoTrack=null,Jt.audioTrack=null,Jt.tempSampleListInfo={},Jt._baseDts=-1,Jt._baseDtsInited=!1,Jt._basefps=50,Jt._hasCalcFps=!1,Jt._audioNextPts=void 0,Jt._videoNextDts=void 0,Jt._audioTimestampBreak=!1,Jt._videoTimestampBreak=!1,Jt._lastAudioExceptionGapDot=0,Jt._lastAudioExceptionOverlapDot=0,Jt._lastAudioExceptionLargeGapDot=0,Jt._isForHls=!0,Jt._isSendAACSeqHeader=!1,Qt.debug.log(Jt.TAG_NAME,"destroy")}},Qt={isPlayer:!0,isPlayback:!1,dropping:!1,isPushDropping:!1,isWorkerFetch:!1,isDestroyed:!1,fetchStatus:Le,_opt:Yt(),mp3Demuxer:null,delay:-1,pushLatestDelay:-1,firstTimestamp:null,startTimestamp:null,preDelayTimestamp:null,stopId:null,streamFps:null,streamAudioFps:null,streamVideoFps:null,writableStream:null,networkDelay:0,webglObj:null,startStreamRateAndStatsInterval:function(){Qt.stopStreamRateAndStatsInterval(),d=setInterval((()=>{l&&l(0);const e=JSON.stringify({demuxBufferDelay:Qt.getVideoBufferLength(),audioDemuxBufferDelay:Qt.getAudioBufferLength(),flvBufferByteLength:Qt.getFlvBufferLength(),netBuf:Qt.networkDelay||0,pushLatestDelay:Qt.pushLatestDelay||0,latestDelay:Qt.delay,isStreamTsMoreThanLocal:Qe});postMessage({cmd:L,type:_e,value:e})}),1e3)},stopStreamRateAndStatsInterval:function(){d&&(clearInterval(d),d=null)},useOffscreen:function(){return Qt._opt.useOffscreen&&"undefined"!=typeof OffscreenCanvas},getDelay:function(e,t){if(!e||Qt._opt.hasVideo&&!Ve)return-1;if(t===X)return Qt.delay;if(Qt.preDelayTimestamp&&Qt.preDelayTimestamp>e)return Qt.preDelayTimestamp-e>1e3&&Qt.debug.warn("worker",`getDelay() and preDelayTimestamp is ${Qt.preDelayTimestamp} > timestamp is ${e} more than ${Qt.preDelayTimestamp-e}ms and return ${Qt.delay}`),Qt.preDelayTimestamp=e,Qt.delay;if(Qt.firstTimestamp){if(e){const t=Date.now()-Qt.startTimestamp,r=e-Qt.firstTimestamp;t>=r?(Qe=!1,Qt.delay=t-r):(Qe=!0,Qt.delay=r-t)}}else Qt.firstTimestamp=e,Qt.startTimestamp=Date.now(),Qt.delay=-1;return Qt.preDelayTimestamp=e,Qt.delay},getDelayNotUpdateDelay:function(e,t){if(!e||Qt._opt.hasVideo&&!Ve)return-1;if(t===X)return Qt.pushLatestDelay;if(Qt.preDelayTimestamp&&Qt.preDelayTimestamp-e>1e3)return Qt.debug.warn("worker",`getDelayNotUpdateDelay() and preDelayTimestamp is ${Qt.preDelayTimestamp} > timestamp is ${e} more than ${Qt.preDelayTimestamp-e}ms and return -1`),-1;if(Qt.firstTimestamp){let t=-1;if(e){const r=Date.now()-Qt.startTimestamp,i=e-Qt.firstTimestamp;r>=i?(Qe=!1,t=r-i):(Qe=!0,t=i-r)}return t}return-1},resetDelay:function(){Qt.firstTimestamp=null,Qt.startTimestamp=null,Qt.delay=-1,Qt.dropping=!1},resetAllDelay:function(){Qt.resetDelay(),Qt.preDelayTimestamp=null},doDecode:function(e){Qt._opt.isEmitSEI&&e.type===Z&&Qt.isWorkerFetch&&Qt.findSei(e.payload,e.ts),Qt._opt.useWCS&&Qt.useOffscreen()&&e.type===Z&&s.decode?s.decode(e.payload,e.ts,e.cts):e.decoder.decode(e.payload,e.ts,e.isIFrame,e.cts)},decodeNext(e){if(0===i.length)return;const t=e.ts,n=i[0],s=e.type===Z&&ot(e.payload);if(lt(r))s&&(Qt.debug.log("worker",`decode data type is ${e.type} and\n ts is ${t} next data type is ${n.type} ts is ${n.ts}\n isVideoSqeHeader is ${s}`),i.shift(),Qt.doDecode(n));else{const r=n.ts-t,o=n.type===X&&e.type===Z;(r<=20||o||s)&&(Qt.debug.log("worker",`decode data type is ${e.type} and\n ts is ${t} next data type is ${n.type} ts is ${n.ts}\n diff is ${r} and isVideoAndNextAudio is ${o} and isVideoSqeHeader is ${s}`),i.shift(),Qt.doDecode(n))}},init:function(){Qt.debug.log("worker","init and opt is",JSON.stringify(Qt._opt));const e=Qt._opt.playType===m,t=Qt._opt.playType===_;if(Kt.init(),Qt.isPlayer=e,Qt.isPlayback=t,Qt.isPlaybackCacheBeforeDecodeForFpsRender())Qt.debug.log("worker","playback and playbackIsCacheBeforeDecodeForFpsRender is true");else{Qt.debug.log("worker","setInterval()");const t=Qt._opt.videoBuffer+Qt._opt.videoBufferDelay,r=()=>{let r=null;if(i.length){if(Qt.isPushDropping)return void Qt.debug.warn("worker",`loop() isPushDropping is true and bufferList length is ${i.length}`);if(Qt.dropping){for(r=i.shift(),Qt.debug.warn("worker",`loop() dropBuffer is dropping and isIFrame ${r.isIFrame} and delay is ${Qt.delay} and bufferlist is ${i.length}`);!r.isIFrame&&i.length;)r=i.shift();const e=Qt.getDelayNotUpdateDelay(r.ts,r.type);r.isIFrame&&e<=Qt.getNotDroppingDelayTs()&&(Qt.debug.log("worker","loop() is dropping = false, is iFrame"),Qt.dropping=!1,Qt.doDecode(r),Qt.decodeNext(r))}else if(Qt.isPlayback||Qt.isPlayUseMSE()||0===Qt._opt.videoBuffer)for(;i.length;)r=i.shift(),Qt.doDecode(r);else if(r=i[0],-1===Qt.getDelay(r.ts,r.type))Qt.debug.log("worker","loop() common dumex delay is -1 ,data.ts is",r.ts),i.shift(),Qt.doDecode(r),Qt.decodeNext(r);else if(Qt.delay>t&&e)Qt.hasIframeInBufferList()?(Qt.debug.log("worker",`delay is ${Qt.delay} > maxDelay ${t}, set dropping is true`),Qt.resetAllDelay(),Qt.dropping=!0,postMessage({cmd:M})):(i.shift(),Qt.doDecode(r),Qt.decodeNext(r));else for(;i.length;){if(r=i[0],!(Qt.getDelay(r.ts,r.type)>Qt._opt.videoBuffer)){Qt.delay<0&&Qt.debug.warn("worker",`loop() do not decode and delay is ${Qt.delay}, bufferList is ${i.length}`);break}i.shift(),Qt.doDecode(r)}}else-1!==Qt.delay&&Qt.debug.log("worker","loop() bufferList is empty and reset delay"),Qt.resetAllDelay()};Qt.stopId=setInterval((()=>{let e=(new Date).getTime();dt||(dt=e);const t=e-dt;t>100&&Qt.debug.warn("worker",`loop demux diff time is ${t}`),r(),dt=(new Date).getTime()}),20)}lt(Qt._opt.checkFirstIFrame)&&(Ve=!0)},playbackCacheLoop:function(){Qt.stopId&&(clearInterval(Qt.stopId),Qt.stopId=null);const e=()=>{let e=null;i.length&&(e=i.shift(),Qt.doDecode(e))};e();const t=Math.ceil(1e3/(Qt.streamFps*Qt._opt.playbackRate));Qt.debug.log("worker",`playbackCacheLoop fragDuration is ${t}, streamFps is ${Qt.streamFps}, streamAudioFps is ${Qt.streamAudioFps} ,streamVideoFps is ${Qt.streamVideoFps} playbackRate is ${Qt._opt.playbackRate}`),Qt.stopId=setInterval(e,t)},close:function(){if(Qt.debug.log("worker","close"),Qt.isDestroyed=!0,qt(),!a||1!==a.readyState&&2!==a.readyState?a&&Qt.debug.log("worker",`close() and socket.readyState is ${a.readyState}`):(Wt=!0,a.close(1e3,"Client disconnecting")),a=null,Qt.stopStreamRateAndStatsInterval(),Qt.stopId&&(clearInterval(Qt.stopId),Qt.stopId=null),Qt.mp3Demuxer&&(Qt.mp3Demuxer.destroy(),Qt.mp3Demuxer=null),Qt.writableStream&<(Qt.writableStream.locked)&&Qt.writableStream.close().catch((e=>{Qt.debug.log("worker","close() and writableStream.close() error",e)})),Qt.writableStream=null,er)try{er.clear&&er.clear(),er=null}catch(e){Qt.debug.warn("worker","close() and audioDecoder.clear error",e)}if(tr)try{tr.clear&&tr.clear(),tr=null}catch(e){Qt.debug.warn("worker","close() and videoDecoder.clear error",e)}l=null,dt=null,Qe=!1,s&&(s.reset&&s.reset(),s=null),Qt.firstTimestamp=null,Qt.startTimestamp=null,Qt.networkDelay=0,Qt.streamFps=null,Qt.streamAudioFps=null,Qt.streamVideoFps=null,Qt.delay=-1,Qt.pushLatestDelay=-1,Qt.preDelayTimestamp=null,Qt.dropping=!1,Qt.isPushDropping=!1,Qt.isPlayer=!0,Qt.isPlayback=!1,Qt.isWorkerFetch=!1,Qt._opt=Yt(),Qt.webglObj&&(Qt.webglObj.destroy(),Qt.offscreenCanvas.removeEventListener("webglcontextlost",Qt.onOffscreenCanvasWebglContextLost),Qt.offscreenCanvas.removeEventListener("webglcontextrestored",Qt.onOffscreenCanvasWebglContextRestored),Qt.offscreenCanvas=null,Qt.offscreenCanvasGL=null,Qt.offscreenCanvasCtx=null),i=[],n=[],g=null,v=null,w=null,Fe=!1,Pe=!1,Ve=!1,Ot=!1,$t=!1,Gt=!1,Ht=null,Vt=null,ft=[],xt=0,At=0,ut=null,ct=null,kt=null,Tt=null,jt=null,Bt=0,Ct=0,mt=null,yt=null,Qt.fetchStatus=Le,Kt.destroy(),Xt.destroy(),Zt.destroy(),Jt.destroy(),postMessage({cmd:G})},pushBuffer:function(e,t){if(t.type===X&&We(e)){if(Qt.debug.log("worker",`pushBuffer audio ts is ${t.ts}, isAacCodecPacket is true`),Qt._opt.isRecordTypeFlv){const t=new Uint8Array(e);postMessage({cmd:W,buffer:t},[t.buffer])}Qt.decodeAudio(e,t.ts)}else if(t.type===Z&&t.isIFrame&&ot(e)){if(Qt.debug.log("worker",`pushBuffer video ts is ${t.ts}, isVideoSequenceHeader is true`),Qt._opt.isRecordTypeFlv){const t=new Uint8Array(e);postMessage({cmd:Y,buffer:t},[t.buffer])}Qt.decodeVideo(e,t.ts,t.isIFrame,t.cts)}else{if(Qt._opt.isRecording)if(Qt._opt.isRecordTypeFlv){const r=new Uint8Array(e);postMessage({cmd:q,type:t.type,buffer:r,ts:t.ts},[r.buffer])}else if(Qt._opt.recordType===y)if(t.type===Z){const r=new Uint8Array(e).slice(5);postMessage({cmd:F,buffer:r,isIFrame:t.isIFrame,ts:t.ts,cts:t.cts},[r.buffer])}else if(t.type===X&&Qt._opt.isWasmMp4){const r=new Uint8Array(e),i=Ye(r)?r.slice(2):r.slice(1);postMessage({cmd:T,buffer:i,ts:t.ts},[i.buffer])}if(Qt.isPlayer&&Bt>0&&Tt>0&&t.type===Z){const e=t.ts-Tt,r=Bt+Bt/2;e>r&&Qt.debug.log("worker",`pushBuffer video\n ts is ${t.ts}, preTimestamp is ${Tt},\n diff is ${e} and preTimestampDuration is ${Bt} and maxDiff is ${r}\n maybe trigger black screen or flower screen\n `)}if(Qt.isPlayer&&Tt>0&&t.type===Z&&t.tsb&&(Qt.debug.warn("worker",`pushBuffer,\n preTimestamp is ${Tt}, options.ts is ${t.ts},\n diff is ${Tt-t.ts} more than 3600000,\n and resetAllDelay`),Qt.resetAllDelay(),Tt=null,Bt=0),Qt.isPlayer&&Tt>0&&t.ts<=Tt&&t.type===Z&&(Qt.debug.warn("worker",`pushBuffer,\n options.ts is ${t.ts} less than (or equal) preTimestamp is ${Tt} and\n payloadBufferSize is ${e.byteLength} and prevPayloadBufferSize is ${Ct}`),Qt._opt.isDropSameTimestampGop&&Ve)){const e=Qt.hasIframeInBufferList(),t=lt(Qt.isPushDropping);return Qt.debug.log("worker",`pushBuffer, isDropSameTimestampGop is true and\n hasIframe is ${e} and isNotPushDropping is ${t} and next dropBuffer`),void(e&&t?Qt.dropBuffer$2():(Qt.clearBuffer(!0),at(Qt._opt.checkFirstIFrame)&&at(r)&&postMessage({cmd:K})))}if(Qt.isPlayer&&Ve){const e=Qt._opt.videoBuffer+Qt._opt.videoBufferDelay,r=Qt.getDelayNotUpdateDelay(t.ts,t.type);Qt.pushLatestDelay=r,r>e&&Qt.delay0&&Qt.hasIframeInBufferList()&&!1===Qt.isPushDropping&&(Qt.debug.log("worker",`pushBuffer(), pushLatestDelay is ${r} more than ${e} and decoder.delay is ${Qt.delay} and has iIframe and next decoder.dropBuffer$2()`),Qt.dropBuffer$2())}if(Qt.isPlayer&&t.type===Z&&(Tt>0&&(Bt=t.ts-Tt),Ct=e.byteLength,Tt=t.ts),t.type===X?i.push({ts:t.ts,payload:e,decoder:{decode:Qt.decodeAudio},type:X,isIFrame:!1}):t.type===Z&&i.push({ts:t.ts,cts:t.cts,payload:e,decoder:{decode:Qt.decodeVideo},type:Z,isIFrame:t.isIFrame}),Qt.isPlaybackCacheBeforeDecodeForFpsRender()&&(rt(Qt.streamVideoFps)||rt(Qt.streamAudioFps))){let e=Qt.streamVideoFps,t=Qt.streamAudioFps;if(rt(Qt.streamVideoFps)&&(e=nt(i,Z),e&&(Qt.streamVideoFps=e,postMessage({cmd:z,value:Qt.streamVideoFps}),Qt.streamFps=t?e+t:e,lt(Qt._opt.hasAudio)&&(Qt.debug.log("worker","playbackCacheBeforeDecodeForFpsRender, _opt.hasAudio is false and set streamAudioFps is 0"),Qt.streamAudioFps=0),Qt.playbackCacheLoop())),rt(Qt.streamAudioFps)&&(t=nt(i,X),t&&(Qt.streamAudioFps=t,Qt.streamFps=e?e+t:t,Qt.playbackCacheLoop())),rt(Qt.streamVideoFps)&&rt(Qt.streamAudioFps)){const r=i.map((e=>({type:e.type,ts:e.ts})));Qt.debug.log("worker",`playbackCacheBeforeDecodeForFpsRender, calc streamAudioFps is ${t}, streamVideoFps is ${e}, bufferListLength is ${i.length}, and ts list is ${JSON.stringify(r)}`)}const r=Qt.getAudioBufferLength()>0,n=r?60:40;i.length>=n&&(Qt.debug.warn("worker",`playbackCacheBeforeDecodeForFpsRender, bufferListLength is ${i.length} more than ${n}, and hasAudio is ${r} an set streamFps is 25`),Qt.streamVideoFps=25,postMessage({cmd:z,value:Qt.streamVideoFps}),r?(Qt.streamAudioFps=25,Qt.streamFps=Qt.streamVideoFps+Qt.streamAudioFps):Qt.streamFps=Qt.streamVideoFps,Qt.playbackCacheLoop())}}},getVideoBufferLength(){let e=0;return i.forEach((t=>{t.type===Z&&(e+=1)})),e},hasIframeInBufferList:()=>i.some((e=>e.type===Z&&e.isIFrame)),isAllIframeInBufferList(){const e=Qt.getVideoBufferLength();let t=0;return i.forEach((e=>{e.type===Z&&e.isIFrame&&(t+=1)})),e===t},getNotDroppingDelayTs:()=>Qt._opt.videoBuffer+Qt._opt.videoBufferDelay/2,getAudioBufferLength(){let e=0;return i.forEach((t=>{t.type===X&&(e+=1)})),e},getFlvBufferLength(){let e=0;return g&&g.buffer&&(e=g.buffer.byteLength),Qt._opt.isNakedFlow&&Kt.lastBuf&&(e=Kt.lastBuf.byteLength),e},fetchStream:function(e,t){Qt.debug.log("worker","fetchStream, url is "+e,"options:",JSON.stringify(t)),Qt.isWorkerFetch=!0,t.isFlv?Qt._opt.isFlv=!0:t.isFmp4?Qt._opt.isFmp4=!0:t.isMpeg4?Qt._opt.isMpeg4=!0:t.isNakedFlow?Qt._opt.isNakedFlow=!0:t.isTs&&(Qt._opt.isTs=!0),l=et((e=>{postMessage({cmd:L,type:ce,value:e})})),Qt.startStreamRateAndStatsInterval(),t.isFmp4&&(Xt.listenMp4Box(),Qt._opt.isFmp4Private&&Xt.initTransportDescarmber()),t.protocol===f?(g=new ht(Qt.demuxFlv()),fetch(e,{signal:o.signal}).then((e=>{if(at(Wt))return Qt.debug.log("worker","request abort and run res.body.cancel()"),Qt.fetchStatus=Le,void e.body.cancel();if(!function(e){return e.ok&&e.status>=200&&e.status<=299}(e))return Qt.debug.warn("worker",`fetch response status is ${e.status} and ok is ${e.ok} and emit error and next abort()`),qt(),void postMessage({cmd:L,type:ve.fetchError,value:`fetch response status is ${e.status} and ok is ${e.ok}`});if(postMessage({cmd:L,type:me}),"undefined"!=typeof WritableStream)Qt.writableStream=new WritableStream({write:e=>o&&o.signal&&o.signal.aborted?(Qt.debug.log("worker","writableStream write() and abortController.signal.aborted is true so return"),void(Qt.fetchStatus=Me)):at(Wt)?(Qt.debug.log("worker","writableStream write() and requestAbort is true so return"),void(Qt.fetchStatus=Me)):(Qt.fetchStatus=Re,l(e.byteLength),void(t.isFlv?g.write(e):t.isFmp4?Qt.demuxFmp4(e):t.isMpeg4?Qt.demuxMpeg4(e):t.isTs&&Qt.demuxTs(e))),close:()=>{Qt.fetchStatus=Me,g=null,qt(),postMessage({cmd:L,type:ue,value:h,msg:"fetch done"})},abort:e=>{if(o&&o.signal&&o.signal.aborted)return Qt.debug.log("worker","writableStream abort() and abortController.signal.aborted is true so return"),void(Qt.fetchStatus=Me);g=null,e.name!==De&&(qt(),postMessage({cmd:L,type:ve.fetchError,value:e.toString()}))}}),e.body.pipeTo(Qt.writableStream);else{const r=e.body.getReader(),i=()=>{r.read().then((({done:e,value:r})=>e?(Qt.fetchStatus=Me,g=null,qt(),void postMessage({cmd:L,type:ue,value:h,msg:"fetch done"})):o&&o.signal&&o.signal.aborted?(Qt.debug.log("worker","fetchNext().then() and abortController.signal.aborted is true so return"),void(Qt.fetchStatus=Me)):at(Wt)?(Qt.debug.log("worker","fetchNext().then() and requestAbort is true so return"),void(Qt.fetchStatus=Me)):(Qt.fetchStatus=Re,l(r.byteLength),t.isFlv?g.write(r):t.isFmp4?Qt.demuxFmp4(r):t.isMpeg4&&Qt.demuxMpeg4(r),void i()))).catch((e=>{if(o&&o.signal&&o.signal.aborted)return Qt.debug.log("worker","fetchNext().catch() and abortController.signal.aborted is true so return"),void(Qt.fetchStatus=Me);g=null,e.name!==De&&(qt(),postMessage({cmd:L,type:ve.fetchError,value:e.toString()}))}))};i()}})).catch((e=>{o&&o.signal&&o.signal.aborted?Qt.debug.log("worker","fetch().catch() and abortController.signal.aborted is true so return"):e.name!==De&&(qt(),postMessage({cmd:L,type:ve.fetchError,value:e.toString()}),g=null)}))):t.protocol===c&&(t.isFlv&&(g=new ht(Qt.demuxFlv())),a=new WebSocket(e),a.binaryType="arraybuffer",a.onopen=()=>{Qt.debug.log("worker","fetchStream, WebsocketStream socket open"),postMessage({cmd:L,type:me}),postMessage({cmd:L,type:ge})},a.onclose=e=>{Qt.debug.log("worker",`fetchStream, WebsocketStream socket close and code is ${e.code}`),1006===e.code&&Qt.debug.error("worker",`fetchStream, WebsocketStream socket close abnormally and code is ${e.code}`),at(Wt)?Qt.debug.log("worker","fetchStream, WebsocketStream socket close and requestAbort is true so return"):(g=null,postMessage({cmd:L,type:ue,value:p,msg:e.code}))},a.onerror=e=>{Qt.debug.error("worker","fetchStream, WebsocketStream socket error",e),g=null,postMessage({cmd:L,type:ve.websocketError,value:e.isTrusted?"websocket user aborted":"websocket error"})},a.onmessage=e=>{l(e.data.byteLength),t.isFlv?g.write(e.data):t.isFmp4?Qt.demuxFmp4(e.data):t.isMpeg4?Qt.demuxMpeg4(e.data):Qt._opt.isNakedFlow?Qt.demuxNakedFlow(e.data):Qt.demuxM7s(e.data)})},demuxFlv:function*(){yield 9;const e=new ArrayBuffer(4),t=new Uint8Array(e),r=new Uint32Array(e);for(;;){t[3]=0;const e=yield 15,i=e[4];t[0]=e[7],t[1]=e[6],t[2]=e[5];const n=r[0];t[0]=e[10],t[1]=e[9],t[2]=e[8],t[3]=e[11];let s=r[0];const o=(yield n).slice();switch(i){case J:if(o.byteLength>0){let e=o;at(Qt._opt.m7sCryptoAudio)&&(e=Qt.cryptoPayloadAudio(o)),Qt.decode(e,{type:X,ts:s})}else Qt.debug.warn("worker",`demuxFlv() type is audio and payload.byteLength is ${o.byteLength} and return`);break;case Q:if(o.byteLength>=6){const e=o[0];if(Qt._isEnhancedH265Header(e))Qt._decodeEnhancedH265Video(o,s);else{o[0];const e=o[0]>>4===Ie;if(e&&ot(o)&&null===Ht){const e=15&o[0];Ht=e===Ee,Vt=Pt(o,Ht),Qt.debug.log("worker",`demuxFlv() isVideoSequenceHeader is true and isHevc is ${Ht} and nalUnitSize is ${Vt}`)}e&&Qt.calcIframeIntervalTimestamp(s),Qt.isPlayer&&Qt.calcNetworkDelay(s),r[0]=o[4],r[1]=o[3],r[2]=o[2],r[3]=0;let t=r[0],i=Qt.cryptoPayload(o,e);Qt.decode(i,{type:Z,ts:s,isIFrame:e,cts:t})}}else Qt.debug.warn("worker",`demuxFlv() type is video and payload.byteLength is ${o.byteLength} and return`);break;case ee:postMessage({cmd:j,buffer:o},[o.buffer]);break;default:Qt.debug.log("worker",`demuxFlv() type is ${i}`)}}},decode:function(e,t){t.type===X?Qt._opt.hasAudio&&(postMessage({cmd:L,type:fe,value:e.byteLength}),Qt.isPlayer?Qt.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts}):Qt.isPlayback&&(Qt.isPlaybackOnlyDecodeIFrame()||(Qt.isPlaybackCacheBeforeDecodeForFpsRender(),Qt.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts})))):t.type===Z&&Qt._opt.hasVideo&&(postMessage({cmd:L,type:he,value:e.byteLength}),postMessage({cmd:L,type:pe,value:t.ts}),Qt.isPlayer?Qt.pushBuffer(e,{type:t.type,ts:t.ts,isIFrame:t.isIFrame,cts:t.cts}):Qt.isPlayback&&(Qt.isPlaybackOnlyDecodeIFrame()?t.isIFrame&&Qt.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts,isIFrame:t.isIFrame}):(Qt.isPlaybackCacheBeforeDecodeForFpsRender(),Qt.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts,isIFrame:t.isIFrame}))))},cryptoPayload:function(e,t){let r=e;return Qt._opt.isM7sCrypto?Qt._opt.cryptoIV&&Qt._opt.cryptoIV.byteLength>0&&Qt._opt.cryptoKey&&Qt._opt.cryptoKey.byteLength>0?r=function(e,t,r,i=!1){t=new Uint8Array(t),r=new Uint8Array(r);const n=e.byteLength;let s=5;for(;sn)break;let l=e[s+4],d=!1;if(i?(l=l>>>1&63,d=[0,1,2,3,4,5,6,7,8,9,16,17,18,19,20,21].includes(l)):(l&=31,d=1===l||5===l),d){const i=e.slice(s+4+2,s+4+a);let n=new gr.ModeOfOperation.ctr(t,new gr.Counter(r));const o=n.decrypt(i);n=null,e.set(o,s+4+2)}s=s+4+a}var o;return e}(e,Qt._opt.cryptoKey,Qt._opt.cryptoIV,Ht):Qt.debug.error("worker",`isM7sCrypto cryptoKey.length is ${Qt._opt.cryptoKey&&Qt._opt.cryptoKey.byteLength} or cryptoIV.length is ${Qt._opt.cryptoIV&&Qt._opt.cryptoIV.byteLength} null`):Qt._opt.isSm4Crypto?Qt._opt.sm4CryptoKey&&t?r=function(e,t,r=!1){const i=e.byteLength;let n=5;for(;ni)break;let a=e[n+4],l=!1;if(r?(a=a>>>1&63,l=[0,1,2,3,4,5,6,7,8,9,16,17,18,19,20,21].includes(a)):(a&=31,l=1===a||5===a),l){const r=Ir(e.slice(n+4+2,n+4+o),t,0,{padding:"none",output:"array"});e.set(r,n+4+2)}n=n+4+o}var s;return e}(e,Qt._opt.sm4CryptoKey):Qt._opt.sm4CryptoKey||Qt.debug.error("worker","isSm4Crypto opt.sm4CryptoKey is null"):Qt._opt.isXorCrypto&&(Qt._opt.cryptoIV&&Qt._opt.cryptoIV.byteLength>0&&Qt._opt.cryptoKey&&Qt._opt.cryptoKey.byteLength>0?r=function(e,t,r,i=!1){const n=e.byteLength;let s=5;for(;sn)break;let l=e[s+4],d=!1;if(i?(l=l>>>1&63,d=[0,1,2,3,4,5,6,7,8,9,16,17,18,19,20,21].includes(l)):(l&=31,d=1===l||5===l),d){const i=zr(e.slice(s+4,s+4+a),t,r);e.set(i,s+4)}s=s+4+a}var o;return e}(e,Qt._opt.cryptoKey,Qt._opt.cryptoIV,Ht):Qt.debug.error("worker",`isXorCrypto cryptoKey.length is ${Qt._opt.cryptoKey&&Qt._opt.cryptoKey.byteLength} or cryptoIV.length is ${Qt._opt.cryptoIV&&Qt._opt.cryptoIV.byteLength} null`)),r},cryptoPayloadAudio:function(e){let t=e;if(Qt._opt.isM7sCrypto)if(Qt._opt.cryptoIV&&Qt._opt.cryptoIV.byteLength>0&&Qt._opt.cryptoKey&&Qt._opt.cryptoKey.byteLength>0){e[0]>>4===xe.AAC&&(t=function(e,t,r){if(e.byteLength<=30)return e;const i=e.slice(32);let n=new gr.ModeOfOperation.ctr(t,new gr.Counter(r));const s=n.decrypt(i);return n=null,e.set(s,32),e}(e,Qt._opt.cryptoKey,Qt._opt.cryptoIV))}else Qt.debug.error("worker",`isM7sCrypto cryptoKey.length is ${Qt._opt.cryptoKey&&Qt._opt.cryptoKey.byteLength} or cryptoIV.length is ${Qt._opt.cryptoIV&&Qt._opt.cryptoIV.byteLength} null`);return t},setCodecAudio:function(e,t){const r=e[0]>>4,i=e[0]>>1&1;if(jt=r===xe.AAC?i?16:8:0===i?8:16,er&&er.setCodec)if(We(e)||r===xe.ALAW||r===xe.MULAW||r===xe.MP3){Qt.debug.log("worker",`setCodecAudio: init audio codec, codeId is ${r}`);const i=r===xe.AAC?e.slice(2):new Uint8Array(0);er.setCodec(r,Qt._opt.sampleRate,i),r===xe.AAC&&postMessage({cmd:B,buffer:i},[i.buffer]),Pe=!0,r!==xe.AAC&&(r===xe.MP3?(Qt.mp3Demuxer||(Qt.mp3Demuxer=new Mr(Qt),Qt.mp3Demuxer.on("data",((e,t)=>{er.decode(e,t)}))),Qt.mp3Demuxer.dispatch(e.slice(1),t)):er.decode(e.slice(1),t))}else Qt.debug.warn("worker","setCodecAudio: hasInitAudioCodec is false, codecId is ",r);else Qt.debug.error("worker","setCodecAudio: audioDecoder or audioDecoder.setCodec is null")},decodeAudio:function(e,t){if(Qt.isDestroyed)Qt.debug.log("worker","decodeAudio, decoder is destroyed and return");else if(at(r)&&at(Qt._opt.mseDecodeAudio))postMessage({cmd:I,payload:e,ts:t,cts:t},[e.buffer]);else{const r=e[0]>>4;Pe?r===xe.MP3?Qt.mp3Demuxer.dispatch(e.slice(1),t):er.decode(r===xe.AAC?e.slice(2):e.slice(1),t):Qt.setCodecAudio(e,t)}},setCodecVideo:function(e){const t=15&e[0];if(tr&&tr.setCodec)if(ot(e))if(t===we||t===Ee){Qt.debug.log("worker",`setCodecVideo: init video codec , codecId is ${t}`);const r=e.slice(5);if(t===we&&Qt._opt.useSIMD){const e=gt(r);if(e.codecWidth>4080||e.codecHeight>4080)return postMessage({cmd:$}),void Qt.debug.warn("worker",`setCodecVideo: SIMD H264 decode video width is too large, width is ${e.codecWidth}, height is ${e.codecHeight}`)}const i=new Uint8Array(e);Fe=!0,tr.setCodec(t,r),postMessage({cmd:C,code:t}),postMessage({cmd:D,buffer:i,codecId:t},[i.buffer])}else Qt.debug.warn("worker",`setCodecVideo: hasInitVideoCodec is false, codecId is ${t} is not H264 or H265`);else Qt.debug.warn("worker",`decodeVideo: hasInitVideoCodec is false, codecId is ${t} and frameType is ${e[0]>>4} and packetType is ${e[1]}`);else Qt.debug.error("worker","setCodecVideo: videoDecoder or videoDecoder.setCodec is null")},decodeVideo:function(e,t,i,n=0){if(Qt.isDestroyed)Qt.debug.log("worker","decodeVideo, decoder is destroyed and return");else if(at(r))postMessage({cmd:P,payload:e,isIFrame:i,ts:t,cts:n,delay:Qt.delay},[e.buffer]);else if(Fe)if(!Ve&&i&&(Ve=!0),Ve){if(i&&ot(e)){const t=15&e[0];let r={};if(t===we){r=gt(e.slice(5))}else t===Ee&&(r=function(e){let t={codecWidth:0,codecHeight:0,videoType:Ce.h265,width:0,height:0,profile:0,level:0};e=e.slice(5);do{let r={};if(e.length<23){console.warn("parseHEVCDecoderConfigurationRecord$2",`arrayBuffer.length ${e.length} < 23`);break}if(r.configurationVersion=e[0],1!=r.configurationVersion)break;r.general_profile_space=e[1]>>6&3,r.general_tier_flag=e[1]>>5&1,r.general_profile_idc=31&e[1],r.general_profile_compatibility_flags=e[2]<<24|e[3]<<16|e[4]<<8|e[5],r.general_constraint_indicator_flags=e[6]<<24|e[7]<<16|e[8]<<8|e[9],r.general_constraint_indicator_flags=r.general_constraint_indicator_flags<<16|e[10]<<8|e[11],r.general_level_idc=e[12],r.min_spatial_segmentation_idc=(15&e[13])<<8|e[14],r.parallelismType=3&e[15],r.chromaFormat=3&e[16],r.bitDepthLumaMinus8=7&e[17],r.bitDepthChromaMinus8=7&e[18],r.avgFrameRate=e[19]<<8|e[20],r.constantFrameRate=e[21]>>6&3,r.numTemporalLayers=e[21]>>3&7,r.temporalIdNested=e[21]>>2&1,r.lengthSizeMinusOne=3&e[21];let i=e[22],n=e.slice(23);for(let e=0;e0){let e=i.findIndex((e=>at(e.isIFrame)&&e.type===Z));if(Qt.isAllIframeInBufferList())for(let t=0;t=Qt.getNotDroppingDelayTs()){Qt.debug.log("worker",`dropBuffer$2() isAllIframeInBufferList() is true, and index is ${t} and tempDelay is ${n} and notDroppingDelayTs is ${Qt.getNotDroppingDelayTs()}`),e=t;break}}if(e>=0){Qt.isPushDropping=!0,postMessage({cmd:M});const t=i.length;i=i.slice(e);const r=i.shift();Qt.resetAllDelay(),Qt.getDelay(r.ts,r.type),Qt.doDecode(r),Qt.isPushDropping=!1,Qt.debug.log("worker",`dropBuffer$2() iFrameIndex is ${e},and old bufferList length is ${t} ,new bufferList is ${i.length} and new delay is ${Qt.delay} `)}else Qt.isPushDropping=!1}0===i.length&&(Qt.isPushDropping=!1)},demuxM7s:function(e){const t=new DataView(e),r=t.getUint32(1,!1),i=t.getUint8(0),n=new ArrayBuffer(4),s=new Uint32Array(n);switch(i){case X:Qt.decode(new Uint8Array(e,5),{type:X,ts:r});break;case Z:if(t.byteLength>=11){const i=new Uint8Array(e,5),n=i[0];if(Qt._isEnhancedH265Header(n))Qt._decodeEnhancedH265Video(i,r);else{const e=t.getUint8(5)>>4==1;if(e&&(Qt.calcIframeIntervalTimestamp(r),ot(i)&&null===Ht)){const e=15&i[0];Ht=e===Ee}Qt.isPlayer&&Qt.calcNetworkDelay(r),s[0]=i[4],s[1]=i[3],s[2]=i[2],s[3]=0;let n=s[0],o=Qt.cryptoPayload(i,e);Qt.decode(o,{type:Z,ts:r,isIFrame:e,cts:n})}}else Qt.debug.warn("worker",`demuxM7s() type is video and arrayBuffer length is ${e.byteLength} and return`)}},demuxNakedFlow:function(e){Kt.dispatch(e)},demuxFmp4:function(e){const t=new Uint8Array(e);Xt.dispatch(t)},demuxMpeg4:function(e){Zt.dispatch(e)},demuxTs:function(e){Jt.dispatch(e)},_decodeEnhancedH265Video:function(e,t){const r=e[0],i=48&r,n=15&r,s=e.slice(1,5),o=new ArrayBuffer(4),a=new Uint32Array(o),l="a"==String.fromCharCode(s[0]);if(Ht=lt(l),n===ze){if(i===$e){const r=e.slice(5);if(l);else{const i=new Uint8Array(5+r.length);i.set([28,0,0,0,0],0),i.set(r,5),Vt=Pt(e,Ht),Qt.debug.log("worker",`demuxFlv() isVideoSequenceHeader(enhancedH265) is true and isHevc is ${Ht} and nalUnitSize is ${Vt}`),Qt.decode(i,{type:Z,ts:t,isIFrame:!0,cts:0})}}}else if(n===Ne){let r=e,n=0;const s=i===$e;if(s&&Qt.calcIframeIntervalTimestamp(t),l);else{a[0]=e[4],a[1]=e[3],a[2]=e[2],a[3]=0,n=a[0];r=Rt(e.slice(8),s),r=Qt.cryptoPayload(r,s),Qt.decode(r,{type:Z,ts:t,isIFrame:s,cts:n})}}else if(n===Oe){const r=i===$e;r&&Qt.calcIframeIntervalTimestamp(t);let n=Rt(e.slice(5),r);n=Qt.cryptoPayload(n,r),Qt.decode(n,{type:Z,ts:t,isIFrame:r,cts:0})}},_isEnhancedH265Header:function(e){return!(128&~e)},findSei:function(e,t){let r=4;rt(Vt)||(r=Vt);Dt(e.slice(5),r).forEach((e=>{const r=Ht?e[0]>>>1&63:31&e[0];(Ht&&(r===ke.suffixSei||r===ke.prefixSei)||lt(Ht)&&r===Ae.kSliceSEI)&&postMessage({cmd:V,buffer:e,ts:t},[e.buffer])}))},flvHasUnitTypeIDR(e,t){const r=Dt(e.slice(5));let i=!1;return r.forEach((e=>{const r=t?e[0]>>>1&63:31&e[0];(t&&(r===ke.iFrame||r===ke.nLp)||lt(t)&&r===Ae.iFrame)&&(i=!0)})),i},calcNetworkDelay:function(e){if(!(Ve&&e>0))return;null===ut?(ut=e,ct=Je()):et?r-t:0;Qt.networkDelay=i,i>Qt._opt.networkDelay&&Qt._opt.playType===m&&(Qt.debug.warn("worker",`calcNetworkDelay now dts:${e}, start dts is ${ut} vs start is ${t},local diff is ${r} ,delay is ${i}`),postMessage({cmd:L,type:ye,value:i}))},calcIframeIntervalTimestamp:function(e){null===kt?kt=e:kt=Qt._opt.playbackForwardMaxRateDecodeIFrame},isPlayUseMSE:function(){return Qt.isPlayer&&Qt._opt.useMSE&&at(r)},isPlayUseMSEAndDecoderInWorker:function(){return Qt.isPlayUseMSE()&&Qt._opt.mseDecoderUseWorker},playbackUpdatePlaybackRate:function(){Qt.clearBuffer(!0)},onOffscreenCanvasWebglContextLost:function(e){Qt.debug.error("worker","handleOffscreenCanvasWebglContextLost and next try to create webgl"),e.preventDefault(),Ot=!0,Qt.webglObj.destroy(),Qt.webglObj=null,Qt.offscreenCanvasGL=null,setTimeout((()=>{Qt.offscreenCanvasGL=Qt.offscreenCanvas.getContext("webgl"),Qt.offscreenCanvasGL&&Qt.offscreenCanvasGL.getContextAttributes().stencil?(Qt.webglObj=u(Qt.offscreenCanvasGL,Qt._opt.openWebglAlignment),Ot=!1):Qt.debug.error("worker","handleOffscreenCanvasWebglContextLost, stencil is false")}),500)},onOffscreenCanvasWebglContextRestored:function(e){Qt.debug.log("worker","handleOffscreenCanvasWebglContextRestored"),e.preventDefault()},videoInfo:function(e,t,r){postMessage({cmd:C,code:e}),postMessage({cmd:S,w:t,h:r}),v=t,w=r,Qt.useOffscreen()&&(Qt.offscreenCanvas=new OffscreenCanvas(t,r),Qt.offscreenCanvasGL=Qt.offscreenCanvas.getContext("webgl"),Qt.webglObj=u(Qt.offscreenCanvasGL,Qt._opt.openWebglAlignment),Qt.offscreenCanvas.addEventListener("webglcontextlost",Qt.onOffscreenCanvasWebglContextLost,!1),Qt.offscreenCanvas.addEventListener("webglcontextrestored",Qt.onOffscreenCanvasWebglContextRestored,!1))},audioInfo:function(e,t,r){postMessage({cmd:k,code:e}),postMessage({cmd:A,sampleRate:t,channels:r,depth:jt}),At=r},yuvData:function(t,r){if(Qt.isDestroyed)return void Qt.debug.log("worker","yuvData, decoder is destroyed and return");const i=v*w*3/2;let n=e.HEAPU8.subarray(t,t+i),s=new Uint8Array(n);if(mt=null,Qt.useOffscreen())try{if(Ot)return;Qt.webglObj.renderYUV(v,w,s);let e=Qt.offscreenCanvas.transferToImageBitmap();postMessage({cmd:U,buffer:e,delay:Qt.delay,ts:r},[e])}catch(e){Qt.debug.error("worker","yuvData, transferToImageBitmap error is",e)}else postMessage({cmd:U,output:s,delay:Qt.delay,ts:r},[s.buffer])},pcmData:function(e,r,i){if(Qt.isDestroyed)return void Qt.debug.log("worker","pcmData, decoder is destroyed and return");let s=r,o=[],a=0,l=Qt._opt.audioBufferSize;for(let r=0;r<2;r++){let i=t.HEAPU32[(e>>2)+r]>>2;o[r]=t.HEAPF32.subarray(i,i+s)}if(xt){if(!(s>=(r=l-xt)))return xt+=s,n[0]=Float32Array.of(...n[0],...o[0]),void(2==At&&(n[1]=Float32Array.of(...n[1],...o[1])));ft[0]=Float32Array.of(...n[0],...o[0].subarray(0,r)),2==At&&(ft[1]=Float32Array.of(...n[1],...o[1].subarray(0,r))),postMessage({cmd:x,buffer:ft,ts:i},ft.map((e=>e.buffer))),a=r,s-=r}for(xt=s;xt>=l;xt-=l)ft[0]=o[0].slice(a,a+=l),2==At&&(ft[1]=o[1].slice(a-l,a)),postMessage({cmd:x,buffer:ft,ts:i},ft.map((e=>e.buffer)));xt&&(n[0]=o[0].slice(a),2==At&&(n[1]=o[1].slice(a)))},errorInfo:function(e){null===mt&&(mt=Je());const t=Je(),r=(i=yt>0?2*yt:5e3,n=1e3,s=5e3,Math.max(Math.min(i,Math.max(n,s)),Math.min(n,s)));var i,n,s;const o=t-mt;o>r&&(Qt.debug.warn("worker",`errorInfo() emit simdDecodeError and\n iframeIntervalTimestamp is ${yt} and diff is ${o} and maxDiff is ${r}\n and replay`),Gt=!0,postMessage({cmd:O}))},sendWebsocketMessage:function(e){a?a.readyState===be?a.send(e):Qt.debug.error("worker","socket is not open"):Qt.debug.error("worker","socket is null")},timeEnd:function(){},postStreamToMain(e,t){postMessage({cmd:H,type:t,buffer:e},[e.buffer])}};Qt.debug=new pt(Qt);let er=null;t.AudioDecoder&&(er=new t.AudioDecoder(Qt));let tr=null;e.VideoDecoder&&(tr=new e.VideoDecoder(Qt)),postMessage({cmd:E}),self.onmessage=function(e){let t=e.data;switch(t.cmd){case te:try{Qt._opt=Object.assign(Qt._opt,JSON.parse(t.opt))}catch(e){}Qt.init();break;case re:Qt.pushBuffer(t.buffer,t.options);break;case ie:Qt.decodeAudio(t.buffer,t.ts);break;case ne:Qt.decodeVideo(t.buffer,t.ts,t.isIFrame);break;case ae:Qt.clearBuffer(t.needClear);break;case le:Qt.fetchStream(t.url,JSON.parse(t.opt));break;case se:Qt.close();break;case oe:Qt.debug.log("worker","updateConfig",t.key,t.value),Qt._opt[t.key]=t.value,"playbackRate"===t.key&&(Qt.playbackUpdatePlaybackRate(),Qt.isPlaybackCacheBeforeDecodeForFpsRender()&&Qt.playbackCacheLoop());break;case de:Qt.sendWebsocketMessage(t.message)}}}Or.init(),Date.now||(Date.now=function(){return(new Date).getTime()});const Gr=[];Gr.push(r({printErr:function(e){console.warn("EasyPro[❌❌❌][worker]:",e)}}),t({printErr:function(e){console.warn("EasyPro[❌❌❌][worker]",e)}})),Promise.all(Gr).then((e=>{const t=e[0];$r(e[1],t)}))})); diff --git a/demo/js/decoder-pro.wasm b/html-demo/js/decoder-pro.wasm similarity index 100% rename from demo/js/decoder-pro.wasm rename to html-demo/js/decoder-pro.wasm diff --git a/html-demo/js/easyplayer-pro-multi.js b/html-demo/js/easyplayer-pro-multi.js new file mode 100644 index 0000000..435f7e4 --- /dev/null +++ b/html-demo/js/easyplayer-pro-multi.js @@ -0,0 +1 @@ +!function(e){"function"==typeof define&&define.amd?define(e):e()}((function(){"use strict";class t{on(e,t,i){const r=this.e||(this.e={});return(r[e]||(r[e]=[])).push({fn:t,ctx:i}),this}once(e,t,i){const r=this;function s(...a){r.off(e,s),t.apply(i,a)}return s._=t,this.on(e,s,i)}emit(e,...t){const i=((this.e||(this.e={}))[e]||[]).slice();for(let e=0;e{delete i[e]})),void delete this.e;const r=i[e],s=[];if(r&&t)for(let e=0,i=r.length;e{if(e._opt.debug&&e._opt.debugLevel==Y){const r=e._opt.debugUuid?`[${e._opt.debugUuid}]`:"";console.log(`EasyPro${r}[✅✅✅][${t}]`,...i)}},this.warn=(t,...i)=>{if(e._opt.debug&&(e._opt.debugLevel==Y||e._opt.debugLevel==Q)){const r=e._opt.debugUuid?`[${e._opt.debugUuid}]`:"";console.log(`EasyPro${r}[❗❗❗][${t}]`,...i)}},this.error=(t,...i)=>{const r=e._opt.debugUuid?`[${e._opt.debugUuid}]`:"";console.error(`EasyPro${r}[❌❌❌][${t}]`,...i)}}}var Jr="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function Zr(e,t){return e(t={exports:{}},t.exports),t.exports}var es=Zr((function(e){!function(){var t="undefined"!=typeof window&&void 0!==window.document?window.document:{},i=e.exports,r=function(){for(var e,i=[["requestFullscreen","exitFullscreen","fullscreenElement","fullscreenEnabled","fullscreenchange","fullscreenerror"],["webkitRequestFullscreen","webkitExitFullscreen","webkitFullscreenElement","webkitFullscreenEnabled","webkitfullscreenchange","webkitfullscreenerror"],["webkitRequestFullScreen","webkitCancelFullScreen","webkitCurrentFullScreenElement","webkitCancelFullScreen","webkitfullscreenchange","webkitfullscreenerror"],["mozRequestFullScreen","mozCancelFullScreen","mozFullScreenElement","mozFullScreenEnabled","mozfullscreenchange","mozfullscreenerror"],["msRequestFullscreen","msExitFullscreen","msFullscreenElement","msFullscreenEnabled","MSFullscreenChange","MSFullscreenError"]],r=0,s=i.length,a={};r>1,(1&t)<<7|i<<3])}function is(e){return rs(e)&&e[1]===Ni}function rs(e){return e[0]>>4===_t.AAC}es.isEnabled;const ss=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350],as=ss;function ns(e,t){if("mp4a.40.2"===e){if(1===t)return new Uint8Array([0,200,0,128,35,128]);if(2===t)return new Uint8Array([33,0,73,144,2,25,0,35,128]);if(3===t)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,142]);if(4===t)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,128,44,128,8,2,56]);if(5===t)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,130,48,4,153,0,33,144,2,56]);if(6===t)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,130,48,4,153,0,33,144,2,0,178,0,32,8,224])}else{if(1===t)return new Uint8Array([1,64,34,128,163,78,230,128,186,8,0,0,0,28,6,241,193,10,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,94]);if(2===t)return new Uint8Array([1,64,34,128,163,94,230,128,186,8,0,0,0,0,149,0,6,241,161,10,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,94]);if(3===t)return new Uint8Array([1,64,34,128,163,94,230,128,186,8,0,0,0,0,149,0,6,241,161,10,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,94])}}function os(e,t=9e4){return 1024*t/e}const ls=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350];function ds(e){let t=new Uint8Array(e),i=null,r=0,s=0,a=0,n=null;if(r=s=t[0]>>>3,a=(7&t[0])<<1|t[1]>>>7,a<0||a>=ls.length)return void console.error("Flv: AAC invalid sampling frequency index!");let o=ls[a],l=(120&t[1])>>>3;if(l<0||l>=8)return void console.log("Flv: AAC invalid channel configuration");5===r&&(n=(7&t[1])<<1|t[2]>>>7,t[2]);let d=self.navigator.userAgent.toLowerCase();return-1!==d.indexOf("firefox")?a>=6?(r=5,i=new Array(4),n=a-3):(r=2,i=new Array(2),n=a):-1!==d.indexOf("android")?(r=2,i=new Array(2),n=a):(r=5,n=a,i=new Array(4),a>=6?n=a-3:1===l&&(r=2,i=new Array(2),n=a)),i[0]=r<<3,i[0]|=(15&a)>>>1,i[1]=(15&a)<<7,i[1]|=(15&l)<<3,5===r&&(i[1]|=(15&n)>>>1,i[2]=(1&n)<<7,i[2]|=8,i[3]=0),{audioType:"aac",config:i,sampleRate:o,channelCount:l,objectType:r,codec:"mp4a.40."+r,originalCodec:"mp4a.40."+s}}class hs{constructor(e){this.buffer=e,this.buflen=e.length,this.bufpos=0,this.bufoff=0,this.iserro=!1}read(e){let t=0,i=0;for(;e;){if(e<0||this.bufpos>=this.buflen)return this.iserro=!0,0;this.iserro=!1,i=this.bufoff+e>8?8-this.bufoff:e,t<<=i,t+=this.buffer[this.bufpos]>>8-this.bufoff-i&255>>8-i,this.bufoff+=i,e-=i,8==this.bufoff&&(this.bufpos++,this.bufoff=0)}return t}look(e){let t=this.bufpos,i=this.bufoff,r=this.read(e);return this.bufpos=t,this.bufoff=i,r}read_golomb(){let e;for(e=0;0==this.read(1)&&!this.iserro;e++);return(1<{_s(e,i,t[i])})),e.style[t]=i,e}function ws(e,t,i=!0){if(!e)return 0;const r=getComputedStyle(e,null).getPropertyValue(t);return i?parseFloat(r):r}function Es(){return performance&&"function"==typeof performance.now?performance.now():Date.now()}function Ss(e){let t=0,i=Es();return r=>{if(!Ns(r))return;t+=r;const s=Es(),a=s-i;a>=1e3&&(e(t/a*1e3),i=s,t=0)}}(()=>{try{if("object"==typeof WebAssembly&&"function"==typeof WebAssembly.instantiate){const e=new WebAssembly.Module(Uint8Array.of(0,97,115,109,1,0,0,0));if(e instanceof WebAssembly.Module)return new WebAssembly.Instance(e)instanceof WebAssembly.Instance}}catch(e){}})();const Ts='"2024-7-26"';function ks(){return/iphone|ipod|android.*mobile|windows.*phone|blackberry.*mobile/i.test(window.navigator.userAgent.toLowerCase())}function Cs(){return!(ks()||/ipad|android(?!.*mobile)|tablet|kindle|silk/i.test(window.navigator.userAgent.toLowerCase()))}function Ds(){const e=window.navigator.userAgent.toLowerCase();return/android/i.test(e)}function Rs(){const e=window.navigator.userAgent.toLowerCase();return/firefox/i.test(e)}function xs(){const e=window.navigator.userAgent.toLowerCase()||"",t={type:"",version:""},i={IE:window.ActiveXObject||"ActiveXObject"in window,Chrome:e.indexOf("chrome")>-1&&e.indexOf("safari")>-1,Firefox:e.indexOf("firefox")>-1,Opera:e.indexOf("opera")>-1,Safari:e.indexOf("safari")>-1&&-1==e.indexOf("chrome"),Edge:e.indexOf("edge")>-1,QQBrowser:/qqbrowser/.test(e),WeixinBrowser:/MicroMessenger/i.test(e)};for(let r in i)if(i[r]){let i="";if("IE"===r){const t=e.match(/(msie\s|trident.*rv:)([\w.]+)/);t&&t.length>2&&(i=e.match(/(msie\s|trident.*rv:)([\w.]+)/)[2])}else if("Chrome"===r){for(let e in navigator.mimeTypes)"application/360softmgrplugin"===navigator.mimeTypes[e].type&&(r="360");const t=e.match(/chrome\/([\d.]+)/);t&&t.length>1&&(i=t[1])}else if("Firefox"===r){const t=e.match(/firefox\/([\d.]+)/);t&&t.length>1&&(i=t[1])}else if("Opera"===r){const t=e.match(/opera\/([\d.]+)/);t&&t.length>1&&(i=t[1])}else if("Safari"===r){const t=e.match(/version\/([\d.]+)/);t&&t.length>1&&(i=t[1])}else if("Edge"===r){const t=e.match(/edge\/([\d.]+)/);t&&t.length>1&&(i=t[1])}else if("QQBrowser"===r){const t=e.match(/qqbrowser\/([\d.]+)/);t&&t.length>1&&(i=t[1])}t.type=r,t.version=parseInt(i)}return t}function Ls(){const e=window.navigator.userAgent.toLowerCase();return e&&/iphone|ipad|ipod|ios/.test(e)}function Is(){const e=window.navigator.userAgent;return!e.match(/Chrome/gi)&&!!e.match(/Safari/gi)}function Ps(e,t){if(0===arguments.length)return null;var i,r=t||"{y}-{m}-{d} {h}:{i}:{s}";"object"==typeof e?i=e:(10===(""+e).length&&(e=1e3*parseInt(e)),e=+e,i=new Date(e));var s={y:i.getFullYear(),m:i.getMonth()+1,d:i.getDate(),h:i.getHours(),i:i.getMinutes(),s:i.getSeconds(),a:i.getDay()};return r.replace(/{(y|m|d|h|i|s|a)+}/g,((e,t)=>{var i=s[t];return"a"===t?["一","二","三","四","五","六","日"][i-1]:(e.length>0&&i<10&&(i="0"+i),i||0)}))}function Bs(){return"VideoFrame"in window}function Ms(e){if("string"!=typeof e)return e;var t=Number(e);return isNaN(t)?e:t}function Us(){return"xxxxxxxxxxxx4xxx".replace(/[xy]/g,(function(e){var t=16*Math.random()|0;return("x"==e?t:3&t|8).toString(16)}))}function Fs(e,t){let i,r,s=!1;return function a(...n){if(s)return i=n,void(r=this);s=!0,e.apply(this,n),setTimeout((()=>{s=!1,i&&(a.apply(r,i),i=null,r=null)}),t)}}function Os(e){if(null==e||""==e)return"0 Bytes";const t=new Array("Bytes","KB","MB","GB","TB","PB","EB","ZB","YB");let i=0;const r=parseFloat(e);i=Math.floor(Math.log(r)/Math.log(1024));var s=r/Math.pow(1024,i);return(s=s.toFixed(2))+t[i]}function Ns(e){return"[object Number]"===Object.prototype.toString.call(e)}function Gs(){let e=!1;return"MediaSource"in self&&self.MediaSource.isTypeSupported(qt)&&(e=!0),e}function zs(){const e=xs();return"chrome"===e.type.toLowerCase()&&e.version>=107}function Ws(){let e=!1;return"MediaStreamTrackGenerator"in window&&(e=!0),e}function Vs(){let e=!1;return"MediaStream"in window&&(e=!0),e}function Hs(e,t){let i=window.URL.createObjectURL(t),r=window.document.createElement("a");r.download=e,r.href=i;let s=window.document.createEvent("MouseEvents");s.initEvent("click",!0,!0),r.dispatchEvent(s),setTimeout((()=>{window.URL.revokeObjectURL(i)}),Ls()?1e3:0)}function $s(e){return null==e}function js(e){return!0===e||!1===e}function Ks(e){return!$s(e)}function qs(e){let t={left:"",right:"",top:"",bottom:"",opacity:1,backgroundColor:"",image:{src:"",width:"100",height:"60"},text:{content:"",fontSize:"14",color:"#000",width:"",height:""},rect:{color:"green",lineWidth:2,width:"",height:"",fill:"",fillOpacity:.2},line:{x1:"",y1:"",x2:"",y2:"",color:"green",lineWidth:2},polygon:{color:"green",lineWidth:2,list:[],fill:"",fillOpacity:.2},html:""};const i=Object.assign(t.image,e.image||{}),r=Object.assign(t.text,e.text||{}),s=Object.assign(t.rect,e.rect||{}),a=Object.assign(t.line,e.line||{});return t=Object.assign(t,e,{image:i,text:r,rect:s,line:a}),t}function Ys(e,t){let i={container:e||"",text:"",opacity:"",angle:"",color:"",fontSize:"",fontFamily:""};return i=Object.assign(i,t),{watermark_parent_node:i.container,watermark_alpha:i.opacity,watermark_angle:i.angle,watermark_fontsize:i.fontSize,watermark_color:i.color,watermark_font:i.fontFamily,watermark_txt:i.text}}function Qs(e,t){return new Promise(((i,r)=>{let s=qs(t);if(!s.image.src&&!s.text.content)return i(e);let a=document.createElement("canvas");a.width=t.width,a.height=t.height;let n=a.getContext("2d");Ns(s.left)?s.left:Ns(s.right)&&(a.width,s.right),Ns(s.top)?s.top:Ns(s.bottom)&&(a.height,s.bottom);const o=new Image;o.src=e,o.onload=()=>{if(n.drawImage(o,0,0,a.width,a.height),s.image&&s.image.src){const e=new Image;e.src=s.image.src,e.setAttribute("crossOrigin","Anonymous"),e.onload=()=>{let e=a.width/2,r=a.height/2;n.translate(e,r),n.rotate(-Math.PI/4),n.font=s.text.fontSize+"px 宋体",n.fillStyle=s.text.color,n.textAlign="center",n.fillText(s.text.content,0,0),n.rotate(Math.PI/4),n.translate(-e,-r),i(a.toDataURL(t.format,t.quality))},e.onerror=e=>{r(e)}}else if(s.text&&s.text.content){n.font=s.text.fontSize+"px 宋体",n.fillStyle=s.text.color,n.textAlign="center",n.textBaseline="middle";const e=n.measureText(s.text.content).width,r=s.text.fontSize;for(let t=0;t{r(e)}}))}function Xs(e){var t;if(e>-1){var i=Math.floor(e/3600),r=Math.floor(e/60)%60,s=e%60;t=i<10?"0"+i+":":i+":",r<10&&(t+="0"),t+=r+":",(s=Math.round(s))<10&&(t+="0"),t+=s.toFixed(0)}return t}function Js(e,t){let i="";if(e>-1){const r=Math.floor(e/60)%60;let s=e%60;s=Math.round(s),i=r<10?"0"+r+":":r+":",s<10&&(i+="0"),i+=s,$s(t)||(t<10&&(t="0"+t),i+=":"+t)}return i}function Zs(e){let t="";if(e>-1){const i=Math.floor(e/60/60)%60;let r=Math.floor(e/60)%60,s=e%60;r=Math.round(r),t=i<10?"0"+i+":":i+":",r<10&&(t+="0"),t+=r+":",s<10&&(t+="0"),t+=s}return t}function ea(e,t){const i=Math.floor(t/60)%60,r=Math.floor(t%60);return new Date(e).setHours(i,r,0,0)}function ta(e,t){const i=Math.floor(t/60/60)%60,r=Math.floor(t/60)%60,s=t%60;return new Date(e).setHours(i,r,s,0)}function ia(e){return(""+e).length}function ra(e){return e&&0===Object.keys(e).length}function sa(e){return!ra(e)}function aa(e){return"string"==typeof e}const na=()=>{const e=window.navigator.userAgent;return/MicroMessenger/i.test(e)},oa=()=>{const e=window.navigator.userAgent;return/Chrome/i.test(e)};function la(e){const t=e||window.event;return t.target||t.srcElement}function da(){return Rs()&&function(){const e=navigator.userAgent.toLowerCase();return/macintosh|mac os x/i.test(e)}()}function ha(e){return"function"==typeof e}function ca(e){if(ks()){let t=0,i=0;if(1===e.touches.length){let r=e.touches[0];t=r.clientX,i=r.clientY}return{posX:t,posY:i}}let t=0,i=0;const r=e||window.event;return r.pageX||r.pageY?(t=r.pageX,i=r.pageY):(r.clientX||r.clientY)&&(t=e.clientX+document.documentElement.scrollLeft+document.body.scrollLeft,i=e.clientY+document.documentElement.scrollTop+document.body.scrollTop),{posX:t,posY:i}}function ua(){let e=document.createElement("video"),t=e.canPlayType("application/vnd.apple.mpegurl");return e=null,t}function pa(e){let t=ka(e.hasAudio)&&(e.useMSE||e.useWCS&&!e.useOffscreen)&&ka(e.demuxUseWorker);return!!(ka(t)&&e.useMSE&&e.mseDecodeAudio&&ka(e.demuxUseWorker))||t}function fa(e){const t=e.toString().trim().match(/^function\s*\w*\s*\([\w\s,]*\)\s*{([\w\W]*?)}$/)[1];console.log(">>>funcStr >>>",t);const i=new Blob([t],{type:"application/javascript"});return URL.createObjectURL(i)}function ya(e){e.close()}function ma(){return"https:"===window.location.protocol||"localhost"===window.location.hostname}function ga(e){const t=Object.prototype.toString;return function(e){switch(t.call(e)){case"[object Error]":case"[object Exception]":case"[object DOMException]":return!0;default:try{return e instanceof Error}catch(e){return!1}}}(e)?e.message:null==e?"":"object"==typeof e?JSON.stringify(e,null,2):String(e)}function Aa(e,t){t&&(e=e.filter((e=>e.type&&e.type===t)));let i=e[0],r=null,s=1;if(e.length>0){let t=e[1];t&&t.ts-i.ts>1e5&&(i=t,s=2)}if(i)for(let a=s;a=1e3){e[a-1].ts-i.ts<1e3&&(r=a+1)}}}return r}function va(e){for(var t=(e+"=".repeat((4-e.length%4)%4)).replace(/\-/g,"+").replace(/_/g,"/"),i=window.atob(t),r=new Uint8Array(i.length),s=0;s>4===Gi&&e[1]===Ni}function Ta(e){return!0===e||"true"===e}function ka(e){return!0!==e&&"true"!==e}function Ca(e,t,i){e&&(e.dataset?e.dataset[t]=i:e.setAttribute("data-"+t,i))}function Da(e,t){return e?e.dataset?e.dataset[t]:e.getAttribute("data-"+t):""}function Ra(e){return e.replace(/-([a-z])/g,(function(e,t){return t.toUpperCase()}))}function xa(){return/iphone/i.test(navigator.userAgent)}function La(){try{var e=document.createElement("canvas");return!(!window.WebGL2RenderingContext||!e.getContext("webgl2"))}catch(e){return!1}}function Ia(e){return e.trim().match(/^function\s*\w*\s*\([\w\s,]*\)\s*{([\w\W]*?)}$/)[1]}function Pa(){let e=!1;return"requestVideoFrameCallback"in HTMLVideoElement.prototype&&(e=!0),e}function Ba(){let e=!1;return"PressureObserver"in window&&(e=!0),e}class Ma{constructor(e){this.destroys=[],this.proxy=this.proxy.bind(this),this.master=e}proxy(e,t,i,r={}){if(!e)return;if(Array.isArray(t))return t.map((t=>this.proxy(e,t,i,r)));e.addEventListener(t,i,r);const s=()=>{ha(e.removeEventListener)&&e.removeEventListener(t,i,r)};return this.destroys.push(s),s}destroy(){this.master.debug&&this.master.debug.log("Events","destroy"),this.destroys.forEach((e=>e())),this.destroys=[]}}var Ua=1e-6,Fa="undefined"!=typeof Float32Array?Float32Array:Array;function Oa(){var e=new Fa(16);return Fa!=Float32Array&&(e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=0,e[12]=0,e[13]=0,e[14]=0),e[0]=1,e[5]=1,e[10]=1,e[15]=1,e}function Na(e){return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}Math.hypot||(Math.hypot=function(){for(var e=0,t=arguments.length;t--;)e+=arguments[t]*arguments[t];return Math.sqrt(e)});var Ga,za=function(e,t,i,r,s,a,n){var o=1/(t-i),l=1/(r-s),d=1/(a-n);return e[0]=-2*o,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=-2*l,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=2*d,e[11]=0,e[12]=(t+i)*o,e[13]=(s+r)*l,e[14]=(n+a)*d,e[15]=1,e};function Wa(e,t,i){var r=new Fa(3);return r[0]=e,r[1]=t,r[2]=i,r}Ga=new Fa(3),Fa!=Float32Array&&(Ga[0]=0,Ga[1]=0,Ga[2]=0);class Va{constructor(e,t){this.gl=e,t&&this.gl.pixelStorei(this.gl.UNPACK_ALIGNMENT,1);const i=this._initShaderProgram();this._programInfo={program:i,attribLocations:{vertexPosition:e.getAttribLocation(i,"aVertexPosition"),texturePosition:e.getAttribLocation(i,"aTexturePosition")},uniformLocations:{projectionMatrix:e.getUniformLocation(i,"uProjectionMatrix"),modelMatrix:e.getUniformLocation(i,"uModelMatrix"),viewMatrix:e.getUniformLocation(i,"uViewMatrix"),rgbatexture:e.getUniformLocation(i,"rgbaTexture"),ytexture:e.getUniformLocation(i,"yTexture"),utexture:e.getUniformLocation(i,"uTexture"),vtexture:e.getUniformLocation(i,"vTexture"),isyuv:e.getUniformLocation(i,"isyuv")}},this._buffers=this._initBuffers(),this._rgbatexture=this._createTexture(),this._ytexture=this._createTexture(),this._utexture=this._createTexture(),this._vtexture=this._createTexture()}destroy(){this.gl.deleteProgram(this._programInfo.program),this.gl.deleteBuffer(this._buffers.position),this.gl.deleteBuffer(this._buffers.texPosition),this.gl.deleteBuffer(this._buffers.indices),this.gl.deleteTexture(this._rgbatexture),this.gl.deleteTexture(this._ytexture),this.gl.deleteTexture(this._utexture),this.gl.deleteTexture(this._vtexture),this._programInfo=null,this._buffers=null,this._rgbatexture=null,this._ytexture=null,this._utexture=null,this._vtexture=null}_initShaderProgram(){const e=this._loadShader(this.gl.VERTEX_SHADER,"\n attribute vec4 aVertexPosition;\n attribute vec2 aTexturePosition;\n varying lowp vec2 vTexturePosition;\n void main(void) {\n gl_Position = aVertexPosition;\n vTexturePosition = aTexturePosition;\n }\n "),t=this._loadShader(this.gl.FRAGMENT_SHADER,"\n precision highp float;\n varying highp vec2 vTexturePosition;\n uniform int isyuv;\n uniform sampler2D rgbaTexture;\n uniform sampler2D yTexture;\n uniform sampler2D uTexture;\n uniform sampler2D vTexture;\n\n const mat4 YUV2RGB = mat4( 1.1643828125, 0, 1.59602734375, -.87078515625,\n 1.1643828125, -.39176171875, -.81296875, .52959375,\n 1.1643828125, 2.017234375, 0, -1.081390625,\n 0, 0, 0, 1);\n\n\n void main(void) {\n\n if (isyuv>0) {\n\n highp float y = texture2D(yTexture, vTexturePosition).r;\n highp float u = texture2D(uTexture, vTexturePosition).r;\n highp float v = texture2D(vTexture, vTexturePosition).r;\n gl_FragColor = vec4(y, u, v, 1) * YUV2RGB;\n\n } else {\n gl_FragColor = texture2D(rgbaTexture, vTexturePosition);\n }\n }\n "),i=this.gl.createProgram();return this.gl.attachShader(i,e),this.gl.attachShader(i,t),this.gl.linkProgram(i),this.gl.getProgramParameter(i,this.gl.LINK_STATUS)?i:(console.log("Unable to initialize the shader program: "+this.gl.getProgramInfoLog(i)),null)}_loadShader(e,t){const i=this.gl,r=i.createShader(e);return i.shaderSource(r,t),i.compileShader(r),i.getShaderParameter(r,i.COMPILE_STATUS)?r:(console.log("An error occurred compiling the shaders: "+i.getShaderInfoLog(r)),i.deleteShader(r),null)}_initBuffers(){const e=this.gl,t=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,t);const i=[-1,-1,1,-1,1,1,-1,1];e.bufferData(e.ARRAY_BUFFER,new Float32Array(i),e.STATIC_DRAW);var r=[];r=r.concat([0,1],[1,1],[1,0],[0,0]);const s=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,s),e.bufferData(e.ARRAY_BUFFER,new Float32Array(r),e.STATIC_DRAW);const a=e.createBuffer();e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,a);return e.bufferData(e.ELEMENT_ARRAY_BUFFER,new Uint16Array([0,1,2,0,2,3]),e.STATIC_DRAW),{positions:i,position:t,texPosition:s,indices:a}}_createTexture(){let e=this.gl.createTexture();return this.gl.bindTexture(this.gl.TEXTURE_2D,e),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_MAG_FILTER,this.gl.LINEAR),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_MIN_FILTER,this.gl.LINEAR),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_WRAP_S,this.gl.CLAMP_TO_EDGE),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_WRAP_T,this.gl.CLAMP_TO_EDGE),e}_drawScene(e,t,i){this.gl.viewport(0,0,e,t),this.gl.enable(this.gl.BLEND),this.gl.blendFunc(this.gl.SRC_ALPHA,this.gl.ONE_MINUS_SRC_ALPHA),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,this._buffers.position),this.gl.bufferData(this.gl.ARRAY_BUFFER,new Float32Array(this._buffers.positions),this.gl.STATIC_DRAW),this.gl.vertexAttribPointer(this._programInfo.attribLocations.vertexPosition,2,this.gl.FLOAT,!1,0,0),this.gl.enableVertexAttribArray(this._programInfo.attribLocations.vertexPosition),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,this._buffers.texPosition),this.gl.vertexAttribPointer(this._programInfo.attribLocations.texturePosition,2,this.gl.FLOAT,!1,0,0),this.gl.enableVertexAttribArray(this._programInfo.attribLocations.texturePosition),this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER,this._buffers.indices);i?(this.gl.activeTexture(this.gl.TEXTURE0+3),this.gl.bindTexture(this.gl.TEXTURE_2D,this._ytexture),this.gl.activeTexture(this.gl.TEXTURE0+4),this.gl.bindTexture(this.gl.TEXTURE_2D,this._utexture),this.gl.activeTexture(this.gl.TEXTURE0+5),this.gl.bindTexture(this.gl.TEXTURE_2D,this._vtexture)):(this.gl.activeTexture(this.gl.TEXTURE0+2),this.gl.bindTexture(this.gl.TEXTURE_2D,this._rgbatexture)),this.gl.useProgram(this._programInfo.program),this.gl.uniform1i(this._programInfo.uniformLocations.rgbatexture,2),this.gl.uniform1i(this._programInfo.uniformLocations.ytexture,3),this.gl.uniform1i(this._programInfo.uniformLocations.utexture,4),this.gl.uniform1i(this._programInfo.uniformLocations.vtexture,5),this.gl.uniform1i(this._programInfo.uniformLocations.isyuv,i?1:0),this.gl.drawElements(this.gl.TRIANGLES,6,this.gl.UNSIGNED_SHORT,0)}_calRect(e,t,i,r,s,a){let n=2*e/s-1,o=2*(a-t-r)/a-1,l=2*(e+i)/s-1,d=2*(a-t)/a-1;return[n,o,l,o,l,d,n,d]}_clear(){this.gl.clearColor(0,0,0,1),this.gl.clearDepth(1),this.gl.clear(this.gl.COLOR_BUFFER_BIT|this.gl.DEPTH_BUFFER_BIT)}render(e,t,i,r,s){const a=this.gl;this._clear(),a.activeTexture(a.TEXTURE0),a.bindTexture(a.TEXTURE_2D,this._ytexture),a.texImage2D(a.TEXTURE_2D,0,a.LUMINANCE,e,t,0,a.LUMINANCE,a.UNSIGNED_BYTE,i),a.activeTexture(a.TEXTURE1),a.bindTexture(a.TEXTURE_2D,this._utexture),a.texImage2D(a.TEXTURE_2D,0,a.LUMINANCE,e/2,t/2,0,a.LUMINANCE,a.UNSIGNED_BYTE,r),a.activeTexture(a.TEXTURE2),a.bindTexture(a.TEXTURE_2D,this._vtexture),a.texImage2D(a.TEXTURE_2D,0,a.LUMINANCE,e/2,t/2,0,a.LUMINANCE,a.UNSIGNED_BYTE,s),this._buffers.positions=[-1,-1,1,-1,1,1,-1,1],this._drawScene(e,t,!0)}renderYUV(e,t,i){let r=i.slice(0,e*t),s=i.slice(e*t,e*t*5/4),a=i.slice(e*t*5/4,e*t*3/2);const n=this.gl;this._clear(),n.activeTexture(n.TEXTURE0),n.bindTexture(n.TEXTURE_2D,this._ytexture),n.texImage2D(n.TEXTURE_2D,0,n.LUMINANCE,e,t,0,n.LUMINANCE,n.UNSIGNED_BYTE,r),n.activeTexture(n.TEXTURE1),n.bindTexture(n.TEXTURE_2D,this._utexture),n.texImage2D(n.TEXTURE_2D,0,n.LUMINANCE,e/2,t/2,0,n.LUMINANCE,n.UNSIGNED_BYTE,s),n.activeTexture(n.TEXTURE2),n.bindTexture(n.TEXTURE_2D,this._vtexture),n.texImage2D(n.TEXTURE_2D,0,n.LUMINANCE,e/2,t/2,0,n.LUMINANCE,n.UNSIGNED_BYTE,a),this._buffers.positions=[-1,-1,1,-1,1,1,-1,1],this._drawScene(e,t,!0)}drawDom(e,t,i,r,s){const a=this.gl;a.activeTexture(a.TEXTURE0),a.bindTexture(a.TEXTURE_2D,this._rgbatexture),a.texImage2D(a.TEXTURE_2D,0,a.RGBA,a.RGBA,a.UNSIGNED_BYTE,s),this._buffers.positions=this._calRect(i,r,s.width,s.height,e,t),this._drawScene(e,t,!1)}}class Ha{constructor(e){this.gpu=e,this.pipeline=null,this.matrixGroupInfo=null,this.depthTexture=null,this.textureGroupInfo=null,this.hasInited=!1,this.buffers=this._initBuffer(),this._initPipeline().then((e=>{this.pipeline=e,this.matrixGroupInfo=this._initMatrixGroupInfo(),this.hasInited=!0}))}destroy(){this.gpu&&(this.gpu.device.destroy(),this.gpu=null),this.hasInited=!1,this.pipeline=null,this.matrixGroupInfo=null,this.depthTexture=null,this.textureGroupInfo=null}_initBuffer(){const e=this.gpu.device,t=new Float32Array([-1,-1,-1,1,-1,-1,1,1,-1,-1,1,-1]),i=e.createBuffer({size:t.byteLength,usage:window.GPUBufferUsage.VERTEX|window.GPUBufferUsage.COPY_DST});e.queue.writeBuffer(i,0,t);const r=new Float32Array([0,1,1,1,1,0,0,0]),s=e.createBuffer({size:r.byteLength,usage:window.GPUBufferUsage.VERTEX|window.GPUBufferUsage.COPY_DST});e.queue.writeBuffer(s,0,r);const a=new Uint16Array([0,1,2,0,2,3]),n=e.createBuffer({size:a.byteLength,usage:window.GPUBufferUsage.INDEX|window.GPUBufferUsage.COPY_DST});return e.queue.writeBuffer(n,0,a),{positionBuffer:i,texpositionBuffer:s,indexBuffer:n}}_initPipeline(){return new Promise(((e,t)=>{const i=this.gpu.device,r=this.gpu.format,s={layout:"auto",vertex:{module:i.createShaderModule({code:"\n\n @binding(0) @group(0) var uModelMatrix : mat4x4;\n @binding(1) @group(0) var uViewMatrix : mat4x4;\n @binding(2) @group(0) var uProjectionMatrix : mat4x4;\n\n struct VertexOutput {\n @builtin(position) Position : vec4,\n @location(0) vTexturePosition : vec2,\n }\n\n @vertex\n fn main(\n @location(0) aVertexPosition : vec4,\n @location(1) aTexturePosition : vec2\n ) -> VertexOutput {\n var output : VertexOutput;\n var tmppos : vec4 = uProjectionMatrix * uViewMatrix * uModelMatrix * aVertexPosition;\n output.Position = vec4(tmppos.x, tmppos.y, (tmppos.z+1.)/2., tmppos.w); // webgl z [-1, 1], webgpu z [0, 1], 这里z做下调整 z-webgpu = (z-webgl+1)/2\n output.vTexturePosition = aTexturePosition;\n return output;\n }\n\n "}),entryPoint:"main",buffers:[{arrayStride:12,attributes:[{shaderLocation:0,offset:0,format:"float32x3"}]},{arrayStride:8,attributes:[{shaderLocation:1,offset:0,format:"float32x2"}]}]},primitive:{topology:"triangle-list"},fragment:{module:i.createShaderModule({code:"\n @group(1) @binding(0) var mySampler: sampler;\n @group(1) @binding(1) var yTexture: texture_2d;\n @group(1) @binding(2) var uTexture: texture_2d;\n @group(1) @binding(3) var vTexture: texture_2d;\n\n const YUV2RGB : mat4x4 = mat4x4( 1.1643828125, 0, 1.59602734375, -.87078515625,\n 1.1643828125, -.39176171875, -.81296875, .52959375,\n 1.1643828125, 2.017234375, 0, -1.081390625,\n 0, 0, 0, 1);\n\n @fragment\n fn main(\n @location(0) vTexturePosition: vec2\n ) -> @location(0) vec4 {\n\n var y : f32= textureSample(yTexture, mySampler, vTexturePosition).r;\n var u : f32 = textureSample(uTexture, mySampler, vTexturePosition).r;\n var v : f32 = textureSample(vTexture, mySampler, vTexturePosition).r;\n\n return vec4(y, u, v, 1.0)*YUV2RGB;\n }\n\n "}),entryPoint:"main",targets:[{format:r}]},depthStencil:{depthWriteEnabled:!0,depthCompare:"less",format:"depth24plus"}};i.createRenderPipelineAsync(s).then((t=>{e(t)})).catch((e=>{t(e)}))}))}_initMatrixGroupInfo(){const e=this.gpu.device,t=this.pipeline,i=Oa();za(i,-1,1,-1,1,.1,100);const r=Oa();Na(r);const s=Oa();!function(e,t,i,r){var s,a,n,o,l,d,h,c,u,p,f=t[0],y=t[1],m=t[2],g=r[0],A=r[1],v=r[2],b=i[0],_=i[1],w=i[2];Math.abs(f-b)qs(e)));this.configList=i,this._updateDom()}_resizeDomForVideo(){const e=this.player.width,t=this.player.height,i=this.player.getVideoInfo();if(!(i&&i.height>0&&i.width>0))return;let r=i.width,s=i.height;const a=this.player._opt;let n=t,o=e;if(a.hasControl&&!a.controlAutoHide){const e=a.playType===b?Pt:0;ks()&&this.player.fullscreen&&a.useWebFullScreen?o-=e:n-=e}const l=a.rotate;let d=(o-r)/2,h=(n-s)/2;270!==l&&90!==l||(r=i.height,s=i.width);const c=o/r,u=n/s;let p=c>u?u:c;a.isResize||c!==u&&(p=c+","+u),a.isFullResize&&(p=c>u?c:u);let f="scale("+p+")";"none"===a.mirrorRotate&&l&&(f+=" rotate("+l+"deg)"),"level"===a.mirrorRotate?f+=" rotateY(180deg)":"vertical"===a.mirrorRotate&&(f+=" rotateX(180deg)"),this.scale=-1!==(""+p).indexOf(",")?c:p,this.shadowRootInnerDom.style.transform=f,this.shadowRootInnerDom.style.left=d+"px",this.shadowRootInnerDom.style.top=h+"px",this.shadowRootInnerDom.style.width=i.width+"px",this.shadowRootInnerDom.style.height=i.height+"px",this.shadowRootInnerDom.style.display="block"}_resizeDomForCanvas(){const e=this.player.getVideoInfo();if(!(e&&e.height>0&&e.width>0))return;const t=this.player._opt;let i=this.player.width,r=this.player.height;if(t.hasControl&&!t.controlAutoHide){const e=t.playType===b?Pt:0;ks()&&this.player.fullscreen&&t.useWebFullScreen?i-=e:r-=e}let s=e.width,a=e.height;const n=t.rotate;let o=(i-s)/2,l=(r-a)/2;270!==n&&90!==n||(s=e.height,a=e.width);const d=i/s,h=r/a;let c=d>h?h:d;t.isResize||d!==h&&(c=d+","+h),t.isFullResize&&(c=d>h?d:h);let u="scale("+c+")";"none"===t.mirrorRotate&&n&&(u+=" rotate("+n+"deg)"),"level"===t.mirrorRotate?u+=" rotateY(180deg)":"vertical"===t.mirrorRotate&&(u+=" rotateX(180deg)"),this.shadowRootInnerDom.style.height=e.height+"px",this.shadowRootInnerDom.style.width=e.width+"px",this.shadowRootInnerDom.style.padding="0",this.shadowRootInnerDom.style.transform=u,this.shadowRootInnerDom.style.left=o+"px",this.shadowRootInnerDom.style.top=l+"px",this.shadowRootInnerDom.style.display="block"}_resizeDomRatio(){const e=this.player.getVideoInfo();if(!(e&&e.height>0&&e.width>0))return;const t=this.player._opt.aspectRatio.split(":").map(Number);let i=this.player.width,r=this.player.height;const s=this.player._opt;let a=0;s.hasControl&&!s.controlAutoHide&&(a=s.playType===b?Pt:0,r-=a);const n=e.width/e.height,o=t[0]/t[1];if(n>o){const t=o*e.height/e.width;this.shadowRootInnerDom.style.width=100*t+"%",this.shadowRootInnerDom.style.height=`calc(100% - ${a}px)`,this.shadowRootInnerDom.style.padding=`0 ${(i-i*t)/2}px`}else{const t=e.width/o/e.height;this.shadowRootInnerDom.style.width="100%",this.shadowRootInnerDom.style.height=`calc(${100*t}% - ${a}px)`,this.shadowRootInnerDom.style.padding=(r-r*t)/2+"px 0"}this.shadowRootInnerDom.style.display="block"}_updateDom(){this.shadowRoot&&this.configList.forEach((e=>{const t=document.createElement("div");let i=null;if(e.image&&e.image.src?(i=document.createElement("img"),i.style.height="100%",i.style.width="100%",i.style.objectFit="contain",i.src=e.image.src):e.text&&e.text.content?i=document.createTextNode(e.text.content):(e.rect&&e.rect.color&&e.rect.width||e.html||e.line&&e.line.x1&&e.line.y1&&e.line.x2&&e.line.y2||e.polygon&&e.polygon.list&&e.polygon.list.length>=3)&&(i=document.createElement("div")),i){if(t.appendChild(i),t.style.visibility="",t.style.position="absolute",t.style.display="block",t.style["-ms-user-select"]="none",t.style["-moz-user-select"]="none",t.style["-webkit-user-select"]="none",t.style["-o-user-select"]="none",t.style["user-select"]="none",t.style["-webkit-touch-callout"]="none",t.style["-webkit-tap-highlight-color"]="rgba(0,0,0,0)",t.style["-webkit-text-size-adjust"]="none",t.style["-webkit-touch-callout"]="none",t.style.opacity=e.opacity,Ns(e.left)&&(t.style.left=e.left+"px"),Ns(e.right)&&(t.style.right=e.right+"px"),Ns(e.top)&&(t.style.top=e.top+"px"),Ns(e.bottom)&&(t.style.bottom=e.bottom+"px"),e.backgroundColor&&(t.style.backgroundColor=e.backgroundColor),t.style.overflow="hidden",t.style.zIndex="9999999",e.image&&e.image.src)t.style.width=e.image.width+"px",t.style.height=e.image.height+"px";else if(e.text&&e.text.content)t.style.fontSize=e.text.fontSize+"px",t.style.color=e.text.color,e.text.width&&(t.style.width=e.text.width+"px"),e.text.height&&(t.style.height=e.text.height+"px");else if(e.rect&&e.rect.color&&e.rect.width){if(t.style.width=e.rect.width+"px",t.style.height=e.rect.height+"px",t.style.borderWidth=e.rect.lineWidth+"px",t.style.borderStyle="solid",t.style.borderColor=e.rect.color,e.rect.fill){const i=document.createElement("div");i.style.position="absolute",i.style.width="100%",i.style.height="100%",i.style.backgroundColor=e.rect.fill,e.rect.fillOpacity&&(i.style.opacity=e.rect.fillOpacity),t.appendChild(i)}}else if(e.html)t.style.width="100%",t.style.height="100%",t.innerHTML=e.html;else if(e.line&&e.line.x1&&e.line.y1&&e.line.x2&&e.line.y2)this.settingLine(t,e.line);else if(e.polygon&&e.polygon.list&&e.polygon.list.length>=3){t.style.width="100%",t.style.height="100%";let i=e.polygon.list;const r=e.polygon.color,s=e.polygon.lineWidth;if(i=i.sort(((e,t)=>(e.index||0)-(t.index||0))),e.polygon.fill){const r=document.createElement("div");r.style.position="absolute",r.style.width="100%",r.style.height="100%";const s="polygon("+i.map((e=>`${e.x}px ${e.y}px`)).join(", ")+")";r.style.clipPath=s,r.style.backgroundColor=e.polygon.fill,e.polygon.fillOpacity&&(r.style.opacity=e.polygon.fillOpacity),t.appendChild(r)}i.forEach(((e,a)=>{const n=document.createElement("div");if(a===i.length-1){const a=i[0],o={x1:e.x,y1:e.y,x2:a.x,y2:a.y,color:r,lineWidth:s};return this.settingLine(n,o),void t.appendChild(n)}const o=i[a+1],l={x1:e.x,y1:e.y,x2:o.x,y2:o.y,color:r,lineWidth:s};this.settingLine(n,l),t.appendChild(n)}))}this.isDynamic&&(this.shadowRootDynamicDom=t),this.shadowRootInnerDom.appendChild(t)}}))}settingLine(e,t){const i=t.x1,r=t.y1,s=t.x2,a=t.y2;var n=Math.sqrt((i-s)**2+(r-a)**2),o=180*Math.atan2(a-r,s-i)/Math.PI;e.style.backgroundColor=t.color,e.style.width=n+"px",e.style.height=t.lineWidth+"px",e.style.position="absolute",e.style.top=r+"px",e.style.left=i+"px",e.style.transform="rotate("+o+"deg)",e.style.transformOrigin="0 0"}remove(){this._removeDom()}_removeDom(){this.shadowRootInnerDom&&(this.shadowRootInnerDom.innerHTML="")}}class ja extends t{constructor(){super(),this.videoInfo={width:null,height:null,encType:null,encTypeCode:null},this.init=!1,this.prevAiFaceDetectTime=null,this.prevAiObjectDetectTime=null,this.prevOcclusionDetectTime=null,this.contentWatermark=null,this.aiContentWatermark=null,this.tempContentList=[],this.tempAiContentList=[],this.streamFps=0}destroy(){this.resetInit(),this.contentWatermark&&(this.contentWatermark.destroy(),this.contentWatermark=null),this.tempContentList=[],this.aiContentWatermark&&(this.aiContentWatermark.destroy(),this.aiContentWatermark=null),this.tempAiContentList=[],this.prevAiFaceDetectTime=null,this.prevAiObjectDetectTime=null,this.streamFps=0,this.off()}resetInit(){this.videoInfo={width:null,height:null,encType:null,encTypeCode:null},this.init=!1}getHasInit(){return this.init}updateVideoInfo(e){Ks(e.encTypeCode)&&(this.videoInfo.encType=mt[e.encTypeCode],this.videoInfo.encTypeCode=e.encTypeCode),Ks(e.encType)&&(this.videoInfo.encType=e.encType),Ks(e.width)&&(this.videoInfo.width=e.width),Ks(e.height)&&(this.videoInfo.height=e.height),Ks(this.videoInfo.encType)&&Ks(this.videoInfo.height)&&Ks(this.videoInfo.width)&&!this.init&&(this.player.emit(st.videoInfo,this.videoInfo),this.init=!0)}getVideoInfo(){return this.videoInfo}clearView(){this.tempContentList=[],this.tempAiContentList=[]}resize(){if(this.player.debug.log("CommonVideo","resize()"),"default"===this.player._opt.aspectRatio||ks()?this._resize():this._resizeRatio(),this.contentWatermark&&this.contentWatermark.resize(),this.aiContentWatermark&&this.aiContentWatermark.resize(),this.player.singleWatermark&&this.player.singleWatermark.resize(),this.player.ghostWatermark&&this.player.ghostWatermark.resize(),this.player.dynamicWatermark&&this.player.dynamicWatermark.resize(),this.player.zoom&&this.player.zooming){const e=this._getStyleScale();this.player.zoom.updatePrevVideoElementStyleScale(e),this.player.zoom.updateVideoElementScale()}}_resizeRatio(){this.player.debug.log("CommonVideo","_resizeRatio()");const e=this.player._opt.aspectRatio.split(":").map(Number);let t=this.player.width,i=this.player.height;const r=this.player._opt;let s=0;r.hasControl&&!r.controlAutoHide&&(s=r.playType===b?Pt:0,i-=s);const a=this.videoInfo,n=a.width/a.height,o=e[0]/e[1];if(this.getType()===K&&(this.$videoElement.style.left="0",this.$videoElement.style.top="0",this.$videoElement.style.transform="none"),this.getType()===q&&this.player._opt.videoRenderSupportScale&&(this.$videoElement.style.objectFit="fill"),n>o){const e=o*a.height/a.width;this.$videoElement.style.width=100*e+"%",this.$videoElement.style.height=`calc(100% - ${s}px)`,this.$videoElement.style.padding=`0 ${(t-t*e)/2}px`}else{const e=a.width/o/a.height;this.$videoElement.style.width="100%",this.$videoElement.style.height=`calc(${100*e}% - ${s}px)`,this.$videoElement.style.padding=(i-i*e)/2+"px 0"}}play(){}pause(){}setRate(e){}getType(){return""}getCanvasType(){return""}getCurrentTime(){return 0}getStreamFps(){return this.streamFps}isPlaying(){return!0}getPlaybackQuality(){return null}setStreamFps(e){this.player.debug.log("CommonVideo","setStreamFps",e),this.streamFps=e}addContentToCanvas(e=[]){this.tempContentList=e}addAiContentToCanvas(e=[]){this.tempAiContentList=e}doAddContentToWatermark(){if(this.tempContentList.length>0){this.contentWatermark||(this.contentWatermark=new $a(this.player),this.contentWatermark.resize());const e=[];this.tempContentList.forEach((t=>{let i={left:t.x||0,top:t.y||0};"text"===t.type?i.text={content:t.text,fontSize:t.fontSize||"14",color:t.color||"#000"}:"rect"===t.type?i.rect={width:t.width,height:t.height,color:t.color||"green",lineWidth:t.lineWidth||2,fill:t.fill||"",fillOpacity:t.fillOpacity||.2}:"polygon"===t.type?i.polygon={list:t.list,color:t.color||"green",lineWidth:t.lineWidth||2,fill:t.fill,fillOpacity:t.fillOpacity||.2}:"line"===t.type&&(i.line={color:t.color||"green",lineWidth:t.lineWidth||2,x1:t.x1,y1:t.y1,x2:t.x2,y2:t.y2}),e.push(i)})),this.contentWatermark.update(e)}else this.contentWatermark&&this.contentWatermark.remove()}doAddAiContentToWatermark(){if(this.tempAiContentList.length>0){this.aiContentWatermark||(this.aiContentWatermark=new $a(this.player),this.aiContentWatermark.resize());const e=this.tempAiContentList.map((e=>{let t={left:e.x,top:e.y};return"text"===e.type?t.text={content:e.text,fontSize:e.fontSize,color:e.color}:"rect"===e.type&&(t.rect={width:e.width,height:e.height,color:e.color,lineWidth:e.lineWidth}),t}));this.aiContentWatermark.update(e)}else this.aiContentWatermark&&this.aiContentWatermark.remove()}_getStyleScale(){let e=this.$videoElement.style.transform.match(/scale\([0-9., ]*\)/g),t="";if(e&&e[0]){t=e[0].replace("scale(","").replace(")","").split(",")}return t}}var Ka="object"==typeof window&&window.window===window?window:"object"==typeof self&&self.self===self?self:"object"==typeof global&&global.global===global?global:void 0;function qa(e,t,i){var r=new XMLHttpRequest;r.open("GET",e),r.responseType="blob",r.onload=function(){Ja(r.response,t,i)},r.onerror=function(){console.error("could not download file")},r.send()}function Ya(e){var t=new XMLHttpRequest;t.open("HEAD",e,!1);try{t.send()}catch(e){}return t.status>=200&&t.status<=299}function Qa(e){try{e.dispatchEvent(new MouseEvent("click"))}catch(i){var t=document.createEvent("MouseEvents");t.initMouseEvent("click",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),e.dispatchEvent(t)}}var Xa=Ka.navigator&&/Macintosh/.test(navigator.userAgent)&&/AppleWebKit/.test(navigator.userAgent)&&!/Safari/.test(navigator.userAgent),Ja="object"!=typeof window||window!==Ka?function(){}:"download"in HTMLAnchorElement.prototype&&!Xa?function(e,t,i){var r=Ka.URL||Ka.webkitURL,s=document.createElementNS("http://www.w3.org/1999/xhtml","a");t=t||e.name||"download",s.download=t,s.rel="noopener","string"==typeof e?(s.href=e,s.origin!==location.origin?Ya(s.href)?qa(e,t,i):Qa(s,s.target="_blank"):Qa(s)):(s.href=r.createObjectURL(e),setTimeout((function(){r.revokeObjectURL(s.href)}),4e4),setTimeout((function(){Qa(s)}),0))}:"msSaveOrOpenBlob"in navigator?function(e,t,i){if(t=t||e.name||"download","string"==typeof e)if(Ya(e))qa(e,t,i);else{var r=document.createElement("a");r.href=e,r.target="_blank",setTimeout((function(){Qa(r)}))}else navigator.msSaveOrOpenBlob(function(e,t){return void 0===t?t={autoBom:!1}:"object"!=typeof t&&(console.warn("Deprecated: Expected third argument to be a object"),t={autoBom:!t}),t.autoBom&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(e.type)?new Blob([String.fromCharCode(65279),e],{type:e.type}):e}(e,i),t)}:function(e,t,i,r){if((r=r||open("","_blank"))&&(r.document.title=r.document.body.innerText="downloading..."),"string"==typeof e)return qa(e,t,i);var s="application/octet-stream"===e.type,a=/constructor/i.test(Ka.HTMLElement)||Ka.safari,n=/CriOS\/[\d]+/.test(navigator.userAgent);if((n||s&&a||Xa)&&"undefined"!=typeof FileReader){var o=new FileReader;o.onloadend=function(){var e=o.result;e=n?e:e.replace(/^data:[^;]*;/,"data:attachment/file;"),r?r.location.href=e:location=e,r=null},o.readAsDataURL(e)}else{var l=Ka.URL||Ka.webkitURL,d=l.createObjectURL(e);r?r.location=d:location.href=d,r=null,setTimeout((function(){l.revokeObjectURL(d)}),4e4)}};class Za{constructor(e,t){this.canvas=e,this.gl=t;const i=t.createShader(t.VERTEX_SHADER);if(t.shaderSource(i,"\n attribute vec2 xy;\n varying highp vec2 uv;\n void main(void) {\n gl_Position = vec4(xy, 0.0, 1.0);\n // Map vertex coordinates (-1 to +1) to UV coordinates (0 to 1).\n // UV coordinates are Y-flipped relative to vertex coordinates.\n uv = vec2((1.0 + xy.x) / 2.0, (1.0 - xy.y) / 2.0);\n }\n "),t.compileShader(i),!t.getShaderParameter(i,t.COMPILE_STATUS))throw t.getShaderInfoLog(i);const r=t.createShader(t.FRAGMENT_SHADER);if(t.shaderSource(r,"\n varying highp vec2 uv;\n uniform sampler2D texture;\n void main(void) {\n gl_FragColor = texture2D(texture, uv);\n }\n "),t.compileShader(r),!t.getShaderParameter(r,t.COMPILE_STATUS))throw t.getShaderInfoLog(r);const s=t.createProgram();if(t.attachShader(s,i),t.attachShader(s,r),t.linkProgram(s),!t.getProgramParameter(s,t.LINK_STATUS))throw t.getProgramInfoLog(s);t.useProgram(s);const a=t.createBuffer();t.bindBuffer(t.ARRAY_BUFFER,a),t.bufferData(t.ARRAY_BUFFER,new Float32Array([-1,-1,-1,1,1,1,1,-1]),t.STATIC_DRAW);const n=t.getAttribLocation(s,"xy");t.vertexAttribPointer(n,2,t.FLOAT,!1,0,0),t.enableVertexAttribArray(n);const o=t.createTexture();t.bindTexture(t.TEXTURE_2D,o),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.NEAREST),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.NEAREST),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),this.program=s,this.buffer=a,this.vertexShader=i,this.fragmentShader=r,this.texture=o}destroy(){this.gl.deleteProgram(this.program),this.gl.deleteBuffer(this.buffer),this.gl.deleteTexture(this.texture),this.gl.deleteShader(this.vertexShader),this.gl.deleteShader(this.fragmentShader),this.program=null,this.buffer=null,this.vertexShader=null,this.fragmentShader=null,this.texture=null}render(e){this.canvas.width=e.displayWidth,this.canvas.height=e.displayHeight;const t=this.gl;t.texImage2D(t.TEXTURE_2D,0,t.RGBA,t.RGBA,t.UNSIGNED_BYTE,e),t.viewport(0,0,t.drawingBufferWidth,t.drawingBufferHeight),t.clearColor(1,0,0,1),t.clear(t.COLOR_BUFFER_BIT),t.drawArrays(t.TRIANGLE_FAN,0,4)}}class en extends ja{constructor(e){super(),this.player=e;const t=document.createElement("canvas");t.style.position="absolute",t.style.top=0,t.style.left=0,this.$videoElement=t,e.$container.appendChild(this.$videoElement),this.context2D=null,this.contextGl=null,this.webglRender=null,this.webglRectRender=null,this.webGPURender=null,this.isWebglContextLost=!1,this.isWcsWebgl2=!1,this.bitmaprenderer=null,this.renderType=null,this.controlHeight=0,this.proxyDestroyList=[],this._initCanvasRender()}destroy(){super.destroy(),this.proxyDestroyList.length>0&&(this.proxyDestroyList.forEach((e=>{e&&e()})),this.proxyDestroyList=[]),this.contextGl&&(this.contextGl=null),this.context2D&&(this.context2D=null),this.webglRender&&(this.webglRender.destroy(),this.webglRender=null),this.webglRectRender&&(this.webglRectRender.destroy(),this.webglRectRender=null),this.webGPURender&&(this.webGPURender.destroy(),this.webGPURender=null),this.bitmaprenderer&&(this.bitmaprenderer=null),this.renderType=null,this.isWebglContextLost=!1,this.videoInfo={width:"",height:"",encType:""},this.player.$container.removeChild(this.$videoElement),this.init=!1,this.off()}_initContext2D(e={}){this.context2D=this.$videoElement.getContext("2d",e)}_initContextGl(){this.player.events,this.contextGl=ms(this.$videoElement),this.contextGl?(this._bindContextGlEvents(),this.webglRender=new Va(this.contextGl,this.player._opt.openWebglAlignment)):this.player.debug.error("CommonCanvasLoader","_initContextGl() createContextGL error")}_initContextGl2(){if(this.contextGl=gs(this.$videoElement),this.contextGl){this._bindContextGlEvents(2);try{this.webglRender=new Za(this.$videoElement,this.contextGl)}catch(e){this.player.debug.error("CommonCanvasLoader",`create webgl2Render error is ${e} and next use context2d.draw render`),this.contextGl=null,this.webglRender=null,this._initContext2D()}}else this.player.debug.error("CommonCanvasLoader","_initContextGl2() createContextGL2 error")}_bindContextGlEvents(e=1){const{proxy:t}=this.player.events,i=t(this.$videoElement,"webglcontextlost",(t=>{t.preventDefault(),this.player.debug.error("canvasVideo","webglcontextlost error",t),this.isWebglContextLost=!0,this.webglRender&&(this.player.debug.log("CommonCanvasLoader","webglcontextlost error and destroy webglRender"),this.webglRender.destroy(),this.webglRender=null),this.webglRectRender&&(this.player.debug.log("CommonCanvasLoader","webglcontextlost error and destroy webglRectRender"),this.webglRectRender.destroy(),this.webglRectRender=null),this.contextGl=null,setTimeout((()=>{if(this.player.debug.log("CommonCanvasLoader",`createContextGL() version ${e}`),1===e?this.contextGl=ms(this.$videoElement):2===e&&(this.contextGl=gs(this.$videoElement)),this.player.debug.log("CommonCanvasLoader","createContextGL success"),this.contextGl&&this.contextGl.getContextAttributes){const t=this.contextGl.getContextAttributes();t&&t.stencil?(1===e?this.webglRender=new Va(this.contextGl,this.player._opt.openWebglAlignment):2===e&&(this.webglRender=new Za(this.$videoElement,this.contextGl)),this.isWebglContextLost=!1,this.player.debug.log("CommonCanvasLoader","webglcontextlost error reset and getContextAttributes().stencil is true")):(this.player.debug.error("CommonCanvasLoader","webglcontextlost error, getContextAttributes().stencil is false"),this.player.emitError(lt.webglContextLostError))}else this.player.debug.error("CommonCanvasLoader","webglcontextlost error, getContextAttributes().stencil is false"),this.player.emitError(lt.webglContextLostError)}),500)})),r=t(this.$videoElement,"webglcontextrestored",(e=>{e.preventDefault(),this.player.debug.log("CommonCanvasLoader","webglcontextrestored ",e)}));this.proxyDestroyList.push(i,r)}_initContextGPU(){var t;(t=this.$videoElement,new Promise(((e,i)=>{navigator.gpu?navigator.gpu.requestAdapter().then((r=>{r?r.requestDevice().then((s=>{if(s){const a=t.getContext("webgpu");if(a){const t=navigator.gpu.getPreferredCanvasFormat();a.configure({device:s,format:t,alphaMode:"opaque"}),e({adapter:r,device:s,context:a,format:t})}else i('WebGPU "context" create fail')}else i('WebGPU "device" request fail')})).catch((e=>{i('WebGPU "adapter.requestDevice()" fail')})):i('WebGPU "adapter" request fail is empty')})).catch((e=>{i('WebGPU "navigator.gpu.requestAdapter()" fail')})):i("WebGPU not support!!")}))).then((t=>{t?(this.webGPURender=new Ha(t),this.player.debug.log("CommonCanvasLoader","webGPURender init success")):(this.player.debug.warn("CommonCanvasLoader",`createWebGPUContext error is ${e} and next use webgl render`),this.renderType=Ot,this._initContextGl())})).catch((e=>{this.player.debug.warn("CommonCanvasLoader",`createWebGPUContext error is ${e} and next use webgl render`),this.renderType=Ot,this._initContextGl()}))}initCanvasViewSize(){this.$videoElement.width=this.videoInfo.width,this.$videoElement.height=this.videoInfo.height,this.resize()}screenshot(e,t,i,r){e=e||vs(),r=r||pt.download;let s=.92;!_i[t]&&pt[t]&&(r=t,t="png",i=void 0),"string"==typeof i&&(r=i,i=void 0),void 0!==i&&(s=Number(i));const a=_i[t]||_i.png,n=this.$videoElement.toDataURL(a,s);if(r===pt.base64)return n;{const t=As(n);if(r===pt.blob)return t;if(r===pt.download){const i=a.split("/")[1];Ja(t,e+"."+i)}}}screenshotWatermark(e){return new Promise(((t,i)=>{aa(e)&&(e={filename:e}),(e=e||{}).width=this.videoInfo.width,e.height=this.videoInfo.height,e.filename=e.filename||vs(),e.format=e.format?_i[e.format]:_i.png,e.quality=Number(e.quality)||.92,e.type=e.type||pt.download;const r=this.$videoElement.toDataURL(e.format,e.quality);Qs(r,e).then((i=>{if(e.type===pt.base64)t(r);else{const r=As(i);if(e.type===pt.blob)t(r);else if(e.type===pt.download){t();const i=e.format.split("/")[1];Ja(r,e.filename+"."+i)}}})).catch((e=>{i(e)}))}))}render(){}clearView(){super.clearView()}play(){}pause(){}_resize(){this.player.debug.log("canvasVideo","_resize()");const e=this.player._opt;let t=this.player.width,i=this.player.height;if(e.hasControl&&!e.controlAutoHide){const r=this.controlHeight;ks()&&this.player.fullscreen&&e.useWebFullScreen?t-=r:i-=r}let r=this.$videoElement.width,s=this.$videoElement.height;const a=e.rotate;let n=(t-r)/2,o=(i-s)/2;270!==a&&90!==a||(r=this.$videoElement.height,s=this.$videoElement.width);const l=t/r,d=i/s;let h=l>d?d:l;ka(e.isResize)&&l!==d&&(h=l+","+d),e.isFullResize&&(h=l>d?l:d);let c="scale("+h+")";"none"===e.mirrorRotate&&a&&(c+=" rotate("+a+"deg)"),"level"===e.mirrorRotate?c+=" rotateY(180deg)":"vertical"===e.mirrorRotate&&(c+=" rotateX(180deg)"),this.$videoElement.style.height=this.videoInfo.height+"px",this.$videoElement.style.width=this.videoInfo.width+"px",this.$videoElement.style.padding="0",this.$videoElement.style.transform=c,this.$videoElement.style.left=n+"px",this.$videoElement.style.top=o+"px"}initFps(){}setStreamFps(e){}getStreamFps(){return 25}getType(){return K}getCanvasType(){let e=this.renderType===Gt?Gt:Ot;return this.isWcsWebgl2&&(e=Nt),e}}class tn extends en{constructor(e){super(e),this.yuvList=[],this.controlHeight=0,this.tempTextCanvas=null,this.tempTextCanvasCtx=null,this.player.debug.log("CanvasVideo","init")}destroy(){super.destroy(),this.yuvList=[],this.tempTextCanvas&&(this.tempTextCanvasCtx.clearRect(0,0,this.tempTextCanvas.width,this.tempTextCanvas.height),this.tempTextCanvas.width=0,this.tempTextCanvas.height=0,this.tempTextCanvas=null),this.player.debug.log("CanvasVideoLoader","destroy")}_initCanvasRender(){this.player._opt.useWCS&&!this._supportOffscreen()?(this.renderType=Ft,La()&&this.player._opt.wcsUseWebgl2Render?(this._initContextGl2(),this.webglRender&&(this.isWcsWebgl2=!0)):this._initContext2D()):this.player._opt.useMSE&&this.player._opt.mseUseCanvasRender?(this.renderType=Wt,this._initContext2D()):this.player.isOldHls()&&this.player._opt.useCanvasRender?(this.renderType=Vt,this._initContext2D()):this.player.isWebrtcH264()&&this.player._opt.webrtcUseCanvasRender?(this.renderType=Ht,this._initContext2D()):this._supportOffscreen()?(this.renderType=zt,this._bindOffscreen()):this.player._opt.useWebGPU?(this.renderType=Gt,this._initContextGPU()):(this.renderType=Ot,this._initContextGl())}_supportOffscreen(){return"function"==typeof this.$videoElement.transferControlToOffscreen&&this.player._opt.useOffscreen}_bindOffscreen(){this.bitmaprenderer=this.$videoElement.getContext("bitmaprenderer")}render(e){this.yuvList.push(e),this.startRender()}startRender(){for(;!(this.yuvList.length<=0);){const e=this.yuvList.shift();this.doRender(e)}}doRender(e){if(this.renderType!==Wt){const t={ts:e.ts||0,fps:!0};this.player.updateStats(t)}switch(this.renderType){case zt:this.bitmaprenderer.transferFromImageBitmap(e.buffer);break;case Ot:case Gt:if(this.isWebglContextLost)return void this.player.debug.warn("CanvasVideoLoader","doRender() and webgl context is lost");let t=e.output;if(this.player.faceDetectActive&&this.player.ai&&this.player.ai.faceDetector){null===this.prevAiFaceDetectTime&&(this.prevAiFaceDetectTime=vs());const i=vs();i-this.prevAiFaceDetectTime>=this.player._opt.aiFaceDetectInterval&&(t=this.player.ai.faceDetector.detect({width:this.$videoElement.width,height:this.$videoElement.height,data:e.output,ts:e.ts||0}),this.prevAiFaceDetectTime=i)}if(this.player.objectDetectActive&&this.player.ai&&this.player.ai.objectDetector){null===this.prevAiObjectDetectTime&&(this.prevAiObjectDetectTime=vs());const i=vs();i-this.prevAiObjectDetectTime>=this.player._opt.aiObjectDetectInterval&&(t=this.player.ai.objectDetector.detect({width:this.$videoElement.width,height:this.$videoElement.height,data:e.output,ts:e.ts||0}),this.prevAiObjectDetectTime=i)}if(this.player.occlusionDetectActive&&this.player.ai&&this.player.ai.occlusionDetector){null===this.prevAiOcclusionDetectTime&&(this.prevAiOcclusionDetectTime=vs());const t=vs();if(t-this.prevAiOcclusionDetectTime>=this.player._opt.aiOcclusionDetectInterval){const i=this.player.ai.occlusionDetector.check({width:this.$videoElement.width,height:this.$videoElement.height,data:e.output});this.prevAiOcclusionDetectTime=t,i&&this.player.emit(st.aiOcclusionDetectResult,{ts:e.ts||0})}}if(this.player.imageDetectActive&&this.player.ai&&this.player.ai.imageDetector){const t=this.player.ai.imageDetector.check({width:this.$videoElement.width,height:this.$videoElement.height,data:e.output});if(t&&t.data&&(this.player.emit(st.aiOcclusionDetectResult,{type:t.type,ts:e.ts||0}),this.player._opt.aiImageDetectDrop))return void this.player.debug.log("CanvasVideoLoader",`doRender() and ai image detect result type is ${t.type} and drop`)}if(this.renderType===Gt)try{if(!this.webGPURender)return void this.player.debug.warn("CanvasVideoLoader","doRender webgpu render is not init");this.webGPURender.renderYUV(this.$videoElement.width,this.$videoElement.height,t)}catch(e){this.player.debug.error("CanvasVideoLoader",`doRender webgpu render and error: ${e.toString()}`)}else if(this.renderType===Ot)try{this.webglRender.renderYUV(this.$videoElement.width,this.$videoElement.height,t)}catch(e){this.player.debug.error("CanvasVideoLoader",`doRender webgl render context is lost ${this.contextGl&&this.contextGl.isContextLost()} and error: ${e.toString()}`)}break;case Ft:if(this.webglRender)this.webglRender.render(e.videoFrame),ya(e.videoFrame);else if(this.context2D)if(ha(e.videoFrame.createImageBitmap))try{e.videoFrame.createImageBitmap().then((t=>{this.context2D.drawImage(t,0,0,this.$videoElement.width,this.$videoElement.height),ya(e.videoFrame)}))}catch(e){}else this.context2D.drawImage(e.videoFrame,0,0,this.$videoElement.width,this.$videoElement.height),ya(e.videoFrame);else this.player.debug.warn("CanvasVideoLoader","doRender() and webcodecs context is lost");break;case Wt:case Vt:case Ht:this.context2D.drawImage(e.$video,0,0,this.$videoElement.width,this.$videoElement.height)}let t=e.ts||0;this.renderType===Wt&&(t=parseInt(1e3*e.$video.currentTime,10)+(this.player.mseDecoder.firstRenderTime||0)),this.player.updateCurrentPts(t),this.doAddContentToWatermark(),this.doAddAiContentToWatermark()}clearView(){switch(super.clearView(),this.renderType){case zt:(function(e,t){const i=document.createElement("canvas");i.width=e,i.height=t;const r=window.createImageBitmap(i,0,0,e,t);return i.width=0,i.height=0,r})(this.$videoElement.width,this.$videoElement.height).then((e=>{this.bitmaprenderer.transferFromImageBitmap(e)}));break;case Ot:this.contextGl.clear(this.contextGl.COLOR_BUFFER_BIT);break;case Gt:this.webGPURender.clear();break;case Ft:this.contextGl?this.contextGl.clear(this.contextGl.COLOR_BUFFER_BIT):this.context2D&&this.context2D.clearRect(0,0,this.$videoElement.width,this.$videoElement.height);break;case Wt:case Vt:case Ht:this.context2D.clearRect(0,0,this.$videoElement.width,this.$videoElement.height)}}_initTempTextCanvas(){this.tempTextCanvas=document.createElement("canvas"),this.tempTextCanvasCtx=this.tempTextCanvas.getContext("2d"),this.tempTextCanvas.width=600,this.tempTextCanvas.height=20}doAddContentToCanvas(){this.tempContentList.length>0&&this.context2D&&function({ctx:e,list:t}){e.save(),(t||[]).forEach((t=>{"text"===t.type?(e.font=`${t.fontSize||12}px Arial`,e.fillStyle=t.color||"green",e.fillText(t.text,t.x,t.y)):"rect"===t.type&&(e.strokeStyle=t.color||"green",e.lineWidth=t.lineWidth||2,e.strokeRect(t.x,t.y,t.width,t.height))})),e.restore()}({ctx:this.context2D,list:this.tempContentList})}doAddContentToWebGlCanvas(){this.tempContentList.length>0&&this.contextGl&&this.webglRectRender&&this.tempContentList.forEach((e=>{const t=e.x,i=e.y;if("rect"===e.type){const s=e.width,a=e.height,n=(r=e.color||"#008000",[parseInt(r.substring(1,3),16)/255,parseInt(r.substring(3,5),16)/255,parseInt(r.substring(5,7),16)/255,1]),o=e.lineWidth||4;if(!s||!a)return;this.webglRectRender.drawBox({x:t,y:i,width:s,height:a,lineColor:n,lineWidth:o,canvasWidth:this.$videoElement.width,canvasHeight:this.$videoElement.height})}else if("text"===e.type){const r=e.text||"";if(!r)return;const s=e.fontSize||20,a=e.color||"#008000";this.tempTextCanvas||this._initTempTextCanvas(),this.tempTextCanvasCtx.clearRect(0,0,this.tempTextCanvas.width,this.tempTextCanvas.height),this.tempTextCanvasCtx.font=`${s}px Arial`,this.tempTextCanvasCtx.fillStyle=a,this.tempTextCanvasCtx.textBaseline="top",this.tempTextCanvasCtx.fillText(r,0,0),this.webglRender.drawDom(this.$videoElement.width,this.$videoElement.height,t,i,this.tempTextCanvas)}var r}))}}class rn extends ja{constructor(e){super(),this.player=e,this.TAG_NAME="Video";const t=document.createElement("video"),i=document.createElement("canvas");t.muted=!0,t.style.position="absolute",t.style.top=0,t.style.left=0,this._delayPlay=!1,e.$container.appendChild(t),this.$videoElement=t,this.$canvasElement=i,this.canvasContext=i.getContext("2d"),this.mediaStream=null,this.vwriter=null,e.canVideoTrackWritter()&&Ws()&&Vs()&&(this.trackGenerator=new MediaStreamTrackGenerator({kind:"video"}),this.mediaStream=new MediaStream([this.trackGenerator]),t.srcObject=this.mediaStream,this.vwriter=this.trackGenerator.writable.getWriter()),this.fixChromeVideoFlashBug(),this.fixMobileAutoFullscreen(),this.resize(),this.eventListenList=[],this.isRenderRetryPlaying=!1,this.isRenderRetryPlayingTimes=0,this.isRetryPlaying=!1,this.isRetryPlayingTimes=0,this.checkVideoCanplayTimeout=null;const r=Pa();this.supportVideoFrameCallbackHandle=null;const{proxy:s}=this.player.events,a=s(this.$videoElement,"canplay",(()=>{this.player.debug.log("Video","canplay"),this.player.isDestroyedOrClosed()||this._delayPlay&&(this.clearCheckVideoCanplayTimeout(),this._play(),Pa()?this.supportVideoFrameCallbackHandle||(this.supportVideoFrameCallbackHandle=this.$videoElement.requestVideoFrameCallback(this.videoFrameCallback.bind(this))):this.player.debug.warn("Video","not support requestVideoFrameCallback and use timeupdate event to update stats"))})),n=s(this.$videoElement,"waiting",(()=>{this.player.debug.log("Video","waiting")})),o=s(this.$videoElement,"loadedmetadata",(()=>{this.player.debug.log("Video","loadedmetadata")})),l=s(this.$videoElement,"timeupdate",(t=>{if(!this.player.isDestroyedOrClosed()){if(ka(r)){const t=parseInt(1e3*this.getCurrentTime(),10);(e.isWebrtcH264()||this.player.isOldHls()||this.player.isAliyunRtc())&&(this.player.emit(st.timeUpdate,t),e.handleRender(),e.updateStats({fps:!0,ts:t,dts:t}))}this.player.isMseDecoderUseWorker()&&(this.player.decoderWorker.updateVideoTimestamp(this.getCurrentTime()),this._handleUpdatePlaybackRate())}})),d=s(this.$videoElement,"error",(()=>{this.player.debug.error("Video","Error Code "+this.$videoElement.error.code+" "+Ir[this.$videoElement.error.code]+"; Details: "+this.$videoElement.error.message),this.player.isUseMSE()&&4===this.$videoElement.error.code&&-1!==this.$videoElement.error.message.indexOf(Pr)&&(this.player.isMSEVideoDecoderInitializationFailedNotSupportHevc=!0),this.player.isHlsCanVideoPlay()}));if(this.eventListenList.push(a,n,l,d,o),this.player.isMseDecoderUseWorker()){const e=s(this.$videoElement,ki,(()=>{this.player.debug.log(this.TAG_NAME,"video playback Rate change",this.$videoElement&&this.$videoElement.playbackRate),this.$videoElement&&this.$videoElement.paused&&(this.player.debug.log(this.TAG_NAME,"video is paused and next try to replay"),this.$videoElement.play())}));this.eventListenList.push(e)}this.player.debug.log("Video","init")}destroy(){if(super.destroy(),this.clearCheckVideoCanplayTimeout(),this._cancelVideoFrameCallback(),this.eventListenList&&(this.eventListenList.forEach((e=>{e()})),this.eventListenList=[]),this.isRenderRetryPlaying=!1,this.isRenderRetryPlayingTimes=0,this.isRetryPlaying=!1,this.isRetryPlayingTimes=0,this.player._opt.videoRenderSupportScale&&this._isNeedAddBackDropFilter()){const e=this.player.$container;e.style.backdropFilter="none",e.style.transform="none"}if(this.$canvasElement.height=0,this.$canvasElement.width=0,this.$canvasElement=null,this.canvasContext=null,this.$videoElement){this.$videoElement.pause(),this.$videoElement.currentTime=0,this.$videoElement.srcObject&&(this.$videoElement.srcObject=null,this.$videoElement.removeAttribute("srcObject")),this.$videoElement.src&&(this.$videoElement.src="",this.$videoElement.removeAttribute("src"));try{this.$videoElement.load()}catch(e){}this.player.$container.removeChild(this.$videoElement),this.$videoElement=null}this.trackGenerator&&(this.trackGenerator.stop(),this.trackGenerator=null),this.vwriter&&(this.vwriter.close(),this.vwriter=null),this._delayPlay=!1,this.mediaStream&&(this.mediaStream.getTracks().forEach((e=>e.stop())),this.mediaStream=null),this.off(),this.player.debug.log("Video","destroy")}videoFrameCallback(e,t={}){if(this.player.isDestroyedOrClosed())return void this.player.debug.log("Video","videoFrameCallback() and isDestroyedOrClosed and return");this.player.handleRender();const i=parseInt(1e3*Math.max(t.mediaTime,this.getCurrentTime()),10)||0;if(this.player.isUseHls265UseMse())this.player.updateStats({fps:!0,ts:i});else if(this.player.isMseDecoderUseWorker()){this.player._times.videoStart||(this.player._times.videoStart=vs(),this.player.handlePlayToRenderTimes());const e=i+(this.player._mseWorkerData.firstRenderTime||0);if(this.player.updateStats({fps:!0,dfps:!0,ts:e,mseTs:i}),this.player.emit(st.timeUpdate,e),ka(this.getHasInit())&&t.width&&t.height){const e={width:t.width,height:t.height};this.updateVideoInfo(e),this.initCanvasViewSize()}}if(this.player.isWebrtcH264()||this.player.isOldHls()||this.player.isAliyunRtc()){if(this.player.emit(st.timeUpdate,i),ka(this.getHasInit())&&t.width&&t.height){const e={width:t.width,height:t.height};this.videoInfo.encTypeCode||this.player.isOldHls()||(e.encTypeCode=gt),this.updateVideoInfo(e)}this.player.updateStats({fps:!0,ts:i,dts:i}),this.player.updateCurrentPts(i),this.doAddContentToWatermark()}else if(Ta(this.player._opt.useMSE)&&ka(this.player._opt.mseUseCanvasRender)){if(this.player.mseDecoder){let e=parseInt(1e3*Math.max(t.mediaTime,this.getCurrentTime()),10)+(this.player.mseDecoder.firstRenderTime||0);this.player.updateCurrentPts(e)}else if(this.player._opt.mseDecoderUseWorker){let e=parseInt(1e3*Math.max(t.mediaTime,this.getCurrentTime()),10)+(this.player._mseWorkerData.firstRenderTime||0);this.player.updateCurrentPts(e)}this.doAddContentToWatermark()}this.supportVideoFrameCallbackHandle=this.$videoElement.requestVideoFrameCallback(this.videoFrameCallback.bind(this))}fixChromeVideoFlashBug(){if(this.player._opt.videoRenderSupportScale&&this._isNeedAddBackDropFilter()){const e=this.player.$container;e.style.backdropFilter="blur(0px)",e.style.transform="translateZ(0)"}}fixMobileAutoFullscreen(){const e=Ls(),t=Ds();(e||t)&&(this.player.debug.log("Video",`fixMobileAutoFullscreen and isIOS ${e} and isAndroid ${t}`),this.$videoElement.setAttribute("webkit-playsinline","true"),this.$videoElement.setAttribute("playsinline","true"),this.$videoElement.setAttribute("x5-video-player-type","h5-page"))}_isNeedAddBackDropFilter(){const e=xs().type.toLowerCase();return"chrome"===e||"edge"===e}isPaused(){let e=!0;return this.$videoElement&&(e=this.$videoElement.paused),e}isPause(){return this.isPaused()}_getVideoReadyState(){let e=0;return this.$videoElement&&(e=this.$videoElement.readyState),e}_getVideoCurrentTime(){let e=0;return this.$videoElement&&(e=this.$videoElement.currentTime),e}play(){if(this.$videoElement){const e=this._getVideoReadyState();if(this.player.debug.log("Video",`play and readyState: ${e}`),0===e)return this.player.debug.log("Video","readyState is 0 and set _delayPlay to true and listen canplay event to play"),this._delayPlay=!0,void(null===this.checkVideoCanplayTimeout&&(this.checkVideoCanplayTimeout=setTimeout((()=>{if(this.clearCheckVideoCanplayTimeout(),!this.player.isDestroyedOrClosed()&&ka(this.isPlaying())){const e=this._getBufferStore();this.player.debug.warn("Video",`checkVideoCanplayTimeout and video is not playing and buffer store is ${e} and retry play`),this.$videoElement.currentTime=e,this._replay()}}),1e3)));this._play()}}_play(){this.$videoElement&&this.$videoElement.play().then((()=>{this._delayPlay=!1,this.player.debug.log("Video","_play success"),this.isPlaying()?(this.player.emit(st.removeLoadingBgImage),this.isRetryPlayingTimes=0,this.isRetryPlaying=!1):setTimeout((()=>{this._replay()}),100)})).catch((e=>{this.player.isDestroyedOrClosed()?this.player.debug.log("Video","_play error and player is isDestroyedOrClosed and return"):(this.player.debug.error("Video","_play error",e),this.isRetryPlaying=!1,setTimeout((()=>{this._replay()}),100))}))}_replay(){if(!this.isPlaying()&&ka(this.player.isDestroyedOrClosed())&&ka(this.isRetryPlaying)){if(this.isRetryPlaying=!0,this.isRetryPlayingTimes>=3)return void(this.player.isWebrtcH264()?(this.player.debug.error("Video",`_replay(webrtc H264) then but not playing and retry play times is ${this.isRetryPlayingTimes} and emit error`),this.player.emitError(lt.videoElementPlayingFailedForWebrtc)):(this.player.debug.error("Video",`_replay then but not playing and retry play times is ${this.isRetryPlayingTimes} and emit error to use canvas render`),this.player.emitError(lt.videoElementPlayingFailed)));this.player.debug.warn("Video",`_play then but not playing and retry play and isRetryPlayingTimes is ${this.isRetryPlayingTimes}`),this._play(),this.isRetryPlayingTimes++}else this.player.debug.log("Video",`_replay() and isPlaying is ${this.isPlaying()} and isRetryPlaying is ${this.isRetryPlaying} and isDestroyedOrClosed is ${this.player.isDestroyedOrClosed()} and return;`)}pause(e){this.player.debug.log(this.TAG_NAME,"pause and isNow is "+e),this.isPlaying()&&(e?(this.$videoElement&&this.$videoElement.pause(),this._cancelVideoFrameCallback()):setTimeout((()=>{this.$videoElement&&this.$videoElement.pause(),this._cancelVideoFrameCallback()}),100))}clearView(){super.clearView(),this.$videoElement&&(this.$videoElement.pause(),this.$videoElement.currentTime=0,this.$videoElement.src&&(this.$videoElement.src="",this.$videoElement.removeAttribute("src")),this.$videoElement.srcObject&&(this.$videoElement.srcObject=null,this.$videoElement.removeAttribute("srcObject")))}screenshot(e,t,i,r){if(!this._canScreenshot())return this.player.debug.warn("Video","screenshot failed, video is not ready"),null;e=e||vs(),r=r||pt.download;let s=.92;!_i[t]&&pt[t]&&(r=t,t="png",i=void 0),"string"==typeof i&&(r=i,i=void 0),void 0!==i&&(s=Number(i));const a=this.$videoElement;let n=this.$canvasElement;n.width=a.videoWidth,n.height=a.videoHeight,this.canvasContext.drawImage(a,0,0,n.width,n.height);const o=_i[t]||_i.png,l=n.toDataURL(o,s);if(this.canvasContext.clearRect(0,0,n.width,n.height),n.width=0,n.height=0,r===pt.base64)return l;{const t=As(l);if(r===pt.blob)return t;if(r===pt.download){const i=o.split("/")[1];Ja(t,e+"."+i)}}}screenshotWatermark(e){return new Promise(((t,i)=>{if(aa(e)&&(e={filename:e}),!this._canScreenshot())return this.player.debug.warn("Video","screenshot failed, video is not ready"),i("screenshot failed, video is not ready");const r=this.$videoElement;(e=e||{}).width=r.videoWidth,e.height=r.videoHeight,e.filename=e.filename||vs(),e.format=e.format?_i[e.format]:_i.png,e.quality=Number(e.quality)||.92,e.type=e.type||pt.download;let s=this.$canvasElement;s.width=r.videoWidth,s.height=r.videoHeight,this.canvasContext.drawImage(r,0,0,s.width,s.height);const a=s.toDataURL(e.format,e.quality);this.canvasContext.clearRect(0,0,s.width,s.height),s.width=0,s.height=0,Qs(a,e).then((i=>{if(e.type===pt.base64)t(a);else{const r=As(i);if(e.type===pt.blob)t(r);else if(e.type===pt.download){t();const i=e.format.split("/")[1];Ja(r,e.filename+"."+i)}}})).catch((e=>{i(e)}))}))}initCanvasViewSize(){this.resize()}clear(){const e=this.$videoElement,t=e.buffered,i=t.length?t.end(t.length-1):0;e.currentTime=i}render(e){if(this.vwriter){if(this.$videoElement.srcObject||(this.$videoElement.srcObject=this.mediaStream),this.isPaused()){const e=this._getVideoReadyState();if(this.player.debug.warn("Video","render() error, video is paused and readyState is "+e),4===e&&ka(this.isRenderRetryPlaying)){if(this.isRenderRetryPlaying=!0,this.isRenderRetryPlayingTimes>3)return this.player.debug.error("Video","render() error, video is paused and readyState is "+e+", retry times is "+this.isRenderRetryPlayingTimes+", emit error and use canvas render"),void this.player.emitError(lt.videoElementPlayingFailed);this.$videoElement.play().then((()=>{this.isRenderRetryPlayingTimes=0,this.isRenderRetryPlaying=!1,this.player.debug.log("Video","render() video is paused and replay success")})).catch((e=>{this.isRenderRetryPlaying=!1,this.isRenderRetryPlayingTimes++,this.player.debug.warn("Video","render() error, video is paused and replay error ",e)}))}}if(this.player.updateStats({fps:!0,ts:e.ts||0}),e.videoFrame)this.vwriter.write(e.videoFrame),ya(e.videoFrame);else if(e.output){let r=e.output;if(this.player.faceDetectActive&&this.player.ai&&this.player.ai.faceDetector){null===this.prevAiFaceDetectTime&&(this.prevAiFaceDetectTime=vs());const t=vs();t-this.prevAiFaceDetectTime>this.player._opt.aiFaceDetectInterval&&(r=this.player.ai.faceDetector.detect({width:this.videoInfo.width,height:this.videoInfo.height,data:e.output,ts:e.ts||0}),this.prevAiFaceDetectTime=t)}if(this.player.objectDetectActive&&this.player.ai&&this.player.ai.objectDetector){null===this.prevAiObjectDetectTime&&(this.prevAiObjectDetectTime=vs());const t=vs();t-this.prevAiObjectDetectTime>this.player._opt.aiObjectDetectInterval&&(r=this.player.ai.objectDetector.detect({width:this.videoInfo.width,height:this.videoInfo.height,data:e.output,ts:e.ts||0}),this.prevAiObjectDetectTime=t)}if(this.player.occlusionDetectActive&&this.player.ai&&this.player.ai.occlusionDetector){null===this.prevAiOcclusionDetectTime&&(this.prevAiOcclusionDetectTime=vs());const t=vs();if(t-this.prevAiOcclusionDetectTime>=this.player._opt.aiOcclusionDetectInterval){const i=this.player.ai.occlusionDetector.check({width:this.videoInfo.width,height:this.videoInfo.height,data:e.output,ts:e.ts||0});this.prevAiOcclusionDetectTime=t,i&&(this.player.debug.log("Video","render() and ai occlusion detect result is true"),this.player.emit(st.aiOcclusionDetectResult,{ts:e.ts||0}))}}if(this.player.imageDetectActive&&this.player.ai&&this.player.ai.imageDetector){const t=this.player.ai.imageDetector.check({width:this.videoInfo.width,height:this.videoInfo.height,data:e.output,ts:e.ts||0});if(t&&t.data&&(this.player.emit(st.aiOcclusionDetectResult,{type:t.type,ts:e.ts||0}),this.player._opt.aiImageDetectDrop))return void this.player.debug.log("Video",`render() and ai image detect result type is ${t.type} and drop`)}try{const s=(t=r,i={format:"I420",codedWidth:this.videoInfo.width,codedHeight:this.videoInfo.height,timestamp:e.ts},new VideoFrame(t,i));this.vwriter.write(s),ya(s)}catch(e){this.player.debug.error("Video","render error",e),this.player.emitError(lt.wasmUseVideoRenderError,e)}}this.player.updateCurrentPts(e.ts||0),this.doAddContentToWatermark(),this.doAddAiContentToWatermark()}else this.player.debug.warn("Video","render and this.vwriter is null");var t,i}_resize(){this.player.debug.log("Video","_resize()");let e=this.player.width,t=this.player.height;const i=this.player._opt,r=i.rotate;if(i.hasControl&&!i.controlAutoHide){const r=i.playType===b?Pt:0;ks()&&this.player.fullscreen&&i.useWebFullScreen?e-=r:t-=r}this.$videoElement.width=e,this.$videoElement.height=t,this.$videoElement.style.width=e+"px",this.$videoElement.style.height=t+"px",270!==r&&90!==r||(this.$videoElement.width=t,this.$videoElement.height=e,this.$videoElement.style.width=t+"px",this.$videoElement.style.height=e+"px");let s=(e-this.$videoElement.width)/2,a=(t-this.$videoElement.height)/2,n="contain";ka(i.isResize)&&(n="fill"),i.isFullResize&&(n="none");let o="";"none"===i.mirrorRotate&&r&&(o+=" rotate("+r+"deg)"),"level"===i.mirrorRotate?o+=" rotateY(180deg)":"vertical"===i.mirrorRotate&&(o+=" rotateX(180deg)"),this.player._opt.videoRenderSupportScale&&(this.$videoElement.style.objectFit=n),this.$videoElement.style.transform=o,this.$videoElement.style.padding="0",this.$videoElement.style.left=s+"px",this.$videoElement.style.top=a+"px"}getType(){return q}getCurrentTime(){return this.$videoElement.currentTime}isPlaying(){return this.$videoElement&&ka(this.$videoElement.paused)&&ka(this.$videoElement.ended)&&0!==this.$videoElement.playbackRate&&0!==this.$videoElement.readyState}_canScreenshot(){return this.$videoElement&&this.$videoElement.readyState>=2}getPlaybackQuality(){let e=null;if(this.$videoElement){if(ha(this.$videoElement.getVideoPlaybackQuality)){const t=this.$videoElement.getVideoPlaybackQuality();e={droppedVideoFrames:t.droppedVideoFrames||t.corruptedVideoFrames,totalVideoFrames:t.totalVideoFrames,creationTime:t.creationTime}}else e={droppedVideoFrames:this.$videoElement.webkitDroppedFrameCount,totalVideoFrames:this.$videoElement.webkitDecodedFrameCount,creationTime:vs()};e&&(e.renderedVideoFrames=e.totalVideoFrames-e.droppedVideoFrames)}return e}setRate(e){this.$videoElement&&(this.$videoElement.playbackRate=e)}get rate(){let e=1;return this.$videoElement&&(e=this.$videoElement.playbackRate),e}clearCheckVideoCanplayTimeout(){this.checkVideoCanplayTimeout&&(clearTimeout(this.checkVideoCanplayTimeout),this.checkVideoCanplayTimeout=null)}_cancelVideoFrameCallback(){this.supportVideoFrameCallbackHandle&&this.$videoElement&&(this.$videoElement.cancelVideoFrameCallback(this.supportVideoFrameCallbackHandle),this.supportVideoFrameCallbackHandle=null)}_getBufferStore(){const e=this.$videoElement;let t=0;return e.buffered.length>0&&(t=e.buffered.start(0)),t}_handleUpdatePlaybackRate(){const e=this.$videoElement;let t=(this.player._opt.videoBuffer+this.player._opt.videoBufferDelay)/1e3;const i=e.buffered;i.length&&i.start(0);const r=i.length?i.end(i.length-1):0;let s=e.currentTime;const a=r-s,n=Math.max(5,t+3);if(this.player.updateStats({mseVideoBufferDelayTime:a}),a>n)this.player.debug.log(this.TAG_NAME,`handleUpdatePlaybackRate and buffered is ${r} and current is ${s} , delay buffer is more than ${n} is ${a} and new time is ${r}`),e.currentTime=r,s=e.currentTime;else if(a<0){if(this.player.debug.warn(this.TAG_NAME,`handleUpdatePlaybackRate and delay buffer is ${r} - current is ${s} = ${a} < 0 and check video is paused : ${e.paused} `),0===r)return void this.player.emit(lt.mediaSourceBufferedIsZeroError,"video.buffered is empty");e.paused&&e.play()}const o=this._getPlaybackRate(r-s);e.playbackRate!==o&&(this.player.debug.log(this.TAG_NAME,`handleUpdatePlaybackRate and buffered is ${r} and current time is ${s} and delay is ${r-s} set playbackRate is ${o} `),e.playbackRate=o)}_getPlaybackRate(e){const t=this.$videoElement;let i=this.player._opt.videoBufferDelay+this.player._opt.videoBuffer;const r=Math.max(i,1e3),s=r/2;return e*=1e3,1===t.playbackRate?e>r?1.2:1:e<=s?1:t.playbackRate}getVideoCurrentTime(){let e=0;return this.$videoElement&&(e=this.$videoElement.currentTime),e}getVideoBufferLastTime(){const e=this.$videoElement;let t=0;if(e){const i=e.buffered;i.length&&i.start(0);t=i.length?i.end(i.length-1):0}return t}getVideoBufferDelayTime(){const e=this.$videoElement;const t=this.getVideoBufferLastTime()-e.currentTime;return t>0?t:0}checkSourceBufferDelay(){const e=this.$videoElement;let t=0;return e.buffered.length>0&&(t=e.buffered.end(e.buffered.length-1)-e.currentTime),t<0&&(this.player.debug.warn(this.TAG_NAME,`checkSourceBufferDelay end(0) is ${e.buffered.end(0)} - currentTime is ${e.currentTime} and result < 0 and result is ${t}`),t=0),t}checkSourceBufferStore(){const e=this.$videoElement;let t=0;return e.buffered.length>0&&(t=e.currentTime-e.buffered.start(0)),t}getDecodePlaybackRate(){let e=0;const t=this.$videoElement;return t&&(e=t.playbackRate),e}}class sn extends en{constructor(e){super(e),this.controlHeight=Pt,this.bufferList=[],this.playing=!1,this.playInterval=null,this.fps=1,this.preFps=1,this.streamFps=0,this.playbackRate=1,this._firstTimestamp=null,this._renderFps=0,this._startfpsTime=null,this._startFpsTimestamp=null,this._hasCalcFps=!1,this.player.on(st.playbackPause,(e=>{e?(this.pause(),this.player.playback.isPlaybackPauseClearCache&&this.clear()):this.resume()})),this.player.debug.log("CanvasPlaybackLoader","init")}destroy(){this._stopSync(),this._firstTimestamp=null,this.playing=!1,this.playbackRate=1,this.fps=1,this.preFps=1,this.bufferList=[],this._renderFps=0,this._startfpsTime=null,this._startFpsTimestamp=null,this._hasCalcFps=!1,super.destroy(),this.player.debug.log("CanvasPlaybackLoader","destroy")}_initCanvasRender(){this.player._opt.useWCS?(this.renderType=Ft,La()&&this.player._opt.wcsUseWebgl2Render?(this._initContextGl2(),this.webglRender&&(this.isWcsWebgl2=!0)):this._initContext2D()):this.player._opt.useWebGPU?(this.renderType=Gt,this._initContextGPU()):(this.renderType=Ot,this._initContextGl())}_sync(){this._stopSync(),this._doPlay(),this.playInterval=setInterval((()=>{this._doPlay()}),this.fragDuration)}_doPlay(){if(this.bufferList.length>0&&!this.player.seeking){const e=this.bufferList.shift();e&&e.buffer&&(this._doRender(e.buffer),this.player.handleRender(),this.player.playback.updateStats({ts:e.ts,tfTs:e.tfTs}))}}_stopSync(){this.playInterval&&(clearInterval(this.playInterval),this.playInterval=null)}_doRender(e){if(this.player._opt.useWCS)if(this.webglRender)this.webglRender.render(e),ya(e);else if(ha(e.createImageBitmap))try{e.createImageBitmap().then((t=>{this.context2D.drawImage(t,0,0,this.$videoElement.width,this.$videoElement.height),ya(e)}))}catch(e){}else this.context2D.drawImage(e,0,0,this.$videoElement.width,this.$videoElement.height),ya(e);else if(this.getCanvasType()===Ot)try{this.webglRender.renderYUV(this.$videoElement.width,this.$videoElement.height,e)}catch(e){this.player.debug.error("CanvasPlaybackLoader",`doRender webgl render context is lost ${this.contextGl&&this.contextGl.isContextLost()} and error: ${e.toString()}`)}else if(this.getCanvasType()===Gt)try{if(!this.webGPURender)return void this.player.debug.warn("CanvasVideoLoader","doRender webgpu render is not init");this.webGPURender.renderYUV(this.$videoElement.width,this.$videoElement.height,e)}catch(e){this.player.debug.error("CanvasPlaybackLoader",`doRender webgpu render and error: ${e.toString()}`)}}get rate(){return this.playbackRate}get fragDuration(){return Math.ceil(1e3/(this.fps*this.playbackRate))}get bufferSize(){return this.bufferList.length}getStreamFps(){return this.streamFps}initFps(){this._hasCalcFps?this.player.debug.log("CanvasPlaybackLoader","initFps, has calc fps"):(this.preFps=bs(this.player.playback.fps,1,100),this.fps=this.preFps)}setFps(e){e!==this.fps?(e>100&&this.player.debug.warn("CanvasPlaybackLoader","setFps max",e),e<0&&this.player.debug.warn("CanvasPlaybackLoader","setFps min",e),this.fps=bs(e,1,100),this.player.debug.log("CanvasPlaybackLoader",`setFps ${this.preFps} -> ${this.fps}`),this.player.playback.isUseFpsRender&&this._sync()):this.player.debug.log("CanvasPlaybackLoader",`setFps, same fps ${e}`)}setStreamFps(e){this.player.debug.log("CanvasPlaybackLoader","setStreamFps",e),this._hasCalcFps=!0,this.streamFps=e,this.preFps=e,this.setFps(e)}setRate(e){e!==this.playbackRate&&(this.playbackRate=e,this.player.playback.isUseFpsRender&&this._sync())}render$2(e){null===this._firstTimestamp&&(this._firstTimestamp=e.ts);const t={tfTs:e.ts-this._firstTimestamp,ts:e.ts};e.videoFrame?t.buffer=e.videoFrame:t.buffer=e.output,this.bufferList.push(t),this.startRender(),this.player.handleRender(),this.player.playback.updateStats({ts:e.ts,tfTs:t.tfTs})}startRender(){for(;!(this.bufferList.length<=0);){const e=this.bufferList.shift();this._doRender(e.buffer)}}pushData(e){null===this._firstTimestamp&&(this._firstTimestamp=e.ts);const t={tfTs:e.ts-this._firstTimestamp,ts:e.ts};e.videoFrame?t.buffer=e.videoFrame:t.buffer=e.output;const i=this.player._opt.playbackConfig.isCacheBeforeDecodeForFpsRender;if(i||this.bufferSize>this.fps*this.playbackRate*2&&(this.player.debug.warn("CanvasPlaybackLoader",`buffer size is ${this.bufferSize}`),this._doPlay()),this.bufferList.push(t),!this._hasCalcFps){const e=Aa(this.bufferList);null!==e&&e!==this.preFps&&(this.player.debug.log("CanvasPlaybackLoader",`calc fps is ${e} pre fps is ${this.preFps} and updatePreFps`),this.setStreamFps(e))}if(!i){const e=this.bufferList.length,t=e/(this.fps*this.playbackRate);this.player.debug.log("CanvasPlaybackLoader","rate is",t),t<=1?this.setFps(this.preFps):(this.setFps(this.fps+Math.floor(t*this.playbackRate)),this.player.debug.warn("CanvasPlaybackLoader","rate is",t,"fps is",this.fps,"bufferListLength is",e))}}initVideo(){this.player.playback&&this.player.playback.isUseFpsRender&&this._sync(),this.playing=!0}initVideoDelay(){const e=this.player._opt.playbackDelayTime;e>0?this.delayTimeout=setTimeout((()=>{this.initVideo()}),e):this.initVideo()}clearView(){super.clearView(),this.contextGl.clear(this.contextGl.COLOR_BUFFER_BIT)}clear(){this.player._opt.useWCS&&this.bufferList.forEach((e=>{e.buffer&&ya(e.buffer)})),this.bufferList=[]}resume(){this.player.playback.isUseFpsRender&&this._sync(),this.playing=!0}pause(){this.player.playback.isUseFpsRender&&this._stopSync(),this.playing=!1}}class an{constructor(e){return new(an.getLoaderFactory(e._opt))(e)}static getLoaderFactory(e){return e.isWsRtc?rn:e.useMSE?e.mseUseCanvasRender?tn:rn:e.isHls&&ka(e.supportHls265)||e.isWebrtc&&ka(e.isWebrtcH265)?e.useCanvasRender?tn:rn:e.isAliyunRtc?rn:e.useWCS?e.playType===b?sn:!e.useOffscreen&&e.wcsUseVideoRender?rn:tn:e.playType===b?sn:e.wasmUseVideoRender&&!e.useOffscreen?rn:tn}}class nn extends t{constructor(e){super(),this.bufferList=[],this.player=e,this.$audio=null,this.scriptNode=null,this.workletProcessorNode=null,this.hasInitScriptNode=!1,this.audioContext=new(window.AudioContext||window.webkitAudioContext)({sampleRate:48e3}),this.gainNode=this.audioContext.createGain();const t=this.audioContext.createBufferSource();t.buffer=this.audioContext.createBuffer(1,1,22050),t.connect(this.audioContext.destination),t.noteOn?t.noteOn(0):t.start(0),this.audioBufferSourceNode=t,this.mediaStreamAudioDestinationNode=this.audioContext.createMediaStreamDestination(),this.gainNode.gain.value=0,this.playing=!1,this.audioInfo={encType:"",channels:"",sampleRate:"",depth:""},this.init=!1,this.hasAudio=!1,this.audioResumeStateTimeout=null}destroy(){this.closeAudio(),this.resetInit(),this.audioContext&&(this.audioContext.close(),this.audioContext=null),this.gainNode=null,this.hasAudio=!1,this.playing=!1,this.scriptNode&&(this.scriptNode.onaudioprocess=ys,this.scriptNode=null),this.workletProcessorNode&&(this.workletProcessorNode.port.onmessage=ys,this.workletProcessorNode=null),this.clearAudioResumeStateTimeout(),this.audioBufferSourceNode=null,this.mediaStreamAudioDestinationNode=null,this.hasInitScriptNode=!1,this.off()}resetInit(){this.audioInfo={encType:"",channels:"",sampleRate:"",depth:""},this.init=!1}getAudioInfo(){return this.audioInfo}updateAudioInfo(e){e.encTypeCode&&(this.audioInfo.encTypeCode=e.encTypeCode,this.audioInfo.encType=Et[e.encTypeCode]),e.channels&&(this.audioInfo.channels=e.channels),e.sampleRate&&(this.audioInfo.sampleRate=e.sampleRate),e.depth&&(this.audioInfo.depth=e.depth),this.audioInfo.sampleRate&&this.audioInfo.channels&&this.audioInfo.encType&&!this.init&&(this.player.emit(st.audioInfo,this.audioInfo),this.init=!0)}get isPlaying(){return this.playing}get isMute(){return 0===this.gainNode.gain.value}get volume(){return this.gainNode.gain.value}get bufferSize(){return this.bufferList.length}get audioContextState(){let e=null;return this.audioContext&&(e=this.audioContext.state),e}initScriptNode(){}initMobileScriptNode(){}initWorkletScriptNode(){}getEngineType(){return""}mute(e){this.player.emit(st.mute,e),e?(this.setVolume(0),this.clear()):this.setVolume(this.player.lastVolume||.5)}setVolume(e){e=parseFloat(e).toFixed(2),isNaN(e)||(this.audioEnabled(!0),e=bs(e,0,1),this.gainNode.gain.value=e,this.player.emit(st.volumechange,this.player.volume))}closeAudio(){this.hasInitScriptNode&&(this.scriptNode&&this.scriptNode.disconnect(this.gainNode),this.workletProcessorNode&&this.workletProcessorNode.disconnect(this.gainNode),this.gainNode&&(this.gainNode.disconnect(this.mediaStreamAudioDestinationNode),this.$audio||this.gainNode.disconnect(this.audioContext.destination))),this.clear()}audioEnabled(e){e?this.isStateSuspended()&&(this.audioContext.resume().then((()=>{this.player.emit(st.audioResumeState,{state:this.audioContextState,isRunning:this.isStateRunning()})})),this.audioResumeStateTimeout=setTimeout((()=>{this.clearAudioResumeStateTimeout(),this.isStateSuspended()&&this.player.emit(st.audioResumeState,{state:this.audioContextState,isRunning:this.isStateRunning()})}),1e3)):this.isStateRunning()&&this.audioContext.suspend()}isStateRunning(){return"running"===this.audioContextState}isStateSuspended(){return"suspended"===this.audioContextState}clearAudioResumeStateTimeout(){this.audioResumeStateTimeout&&(clearTimeout(this.audioResumeStateTimeout),this.audioResumeStateTimeout=null)}clear(){this.bufferList=[]}play(e,t){}pause(){this.playing=!1}resume(){this.playing=!0}setRate(e){}getAudioBufferSize(){return 0}}class on{constructor(e,t,i,r){this.player=e,this.audio=t,this.channel=i,this.bufferSize=r}extract(e,t){let i=this.provide(t);for(let t=0;t=n){try{for(let e=0;e=0||(i=(e.length-r)/2);const s=2*i;this.ensureCapacity(i+this._frameCount);const a=this.endIndex;this.vector.set(e.subarray(r,r+s),a),this._frameCount+=i}putBuffer(e,t,i=0){t=t||0,i>=0||(i=e.frameCount-t),this.putSamples(e.vector,e.position+t,i)}receive(e){e>=0&&!(e>this._frameCount)||(e=this.frameCount),this._frameCount-=e,this._position+=e}receiveSamples(e,t=0){const i=2*t,r=this.startIndex;e.set(this._vector.subarray(r,r+i)),this.receive(t)}extract(e,t=0,i=0){const r=this.startIndex+2*t,s=2*i;e.set(this._vector.subarray(r,r+s))}ensureCapacity(e=0){const t=parseInt(2*e);if(this._vector.length0&&(this._vector.set(this._vector.subarray(this.startIndex,this.endIndex)),this._position=0)}}class dn{constructor(e){e?(this._inputBuffer=new ln,this._outputBuffer=new ln):this._inputBuffer=this._outputBuffer=null}get inputBuffer(){return this._inputBuffer}set inputBuffer(e){this._inputBuffer=e}get outputBuffer(){return this._outputBuffer}set outputBuffer(e){this._outputBuffer=e}clear(){this._inputBuffer.clear(),this._outputBuffer.clear()}}class hn extends dn{constructor(e){super(e),this.reset(),this._rate=1}set rate(e){this._rate=e}reset(){this.slopeCount=0,this.prevSampleL=0,this.prevSampleR=0}clone(){const e=new hn;return e.rate=this._rate,e}process(){const e=this._inputBuffer.frameCount;this._outputBuffer.ensureAdditionalCapacity(e/this._rate+1);const t=this.transpose(e);this._inputBuffer.receive(),this._outputBuffer.put(t)}transpose(e=0){if(0===e)return 0;const t=this._inputBuffer.vector,i=this._inputBuffer.startIndex,r=this._outputBuffer.vector,s=this._outputBuffer.endIndex;let a=0,n=0;for(;this.slopeCount<1;)r[s+2*n]=(1-this.slopeCount)*this.prevSampleL+this.slopeCount*t[i],r[s+2*n+1]=(1-this.slopeCount)*this.prevSampleR+this.slopeCount*t[i+1],n+=1,this.slopeCount+=this._rate;if(this.slopeCount-=1,1!==e)e:for(;;){for(;this.slopeCount>1;)if(this.slopeCount-=1,a+=1,a>=e-1)break e;const o=i+2*a;r[s+2*n]=(1-this.slopeCount)*t[o]+this.slopeCount*t[o+2],r[s+2*n+1]=(1-this.slopeCount)*t[o+1]+this.slopeCount*t[o+3],n+=1,this.slopeCount+=this._rate}return this.prevSampleL=t[i+2*e-2],this.prevSampleR=t[i+2*e-1],n}}class cn{constructor(e){this._pipe=e}get pipe(){return this._pipe}get inputBuffer(){return this._pipe.inputBuffer}get outputBuffer(){return this._pipe.outputBuffer}fillInputBuffer(){throw new Error("fillInputBuffer() not overridden")}fillOutputBuffer(e=0){for(;this.outputBuffer.frameCountthis._position)throw new RangeError("New position may not be greater than current position");const t=this.outputBufferPosition-(this._position-e);if(t<0)throw new RangeError("New position falls outside of history buffer");this.outputBufferPosition=t,this._position=e}get sourcePosition(){return this._sourcePosition}set sourcePosition(e){this.clear(),this._sourcePosition=e}onEnd(){this.callback()}fillInputBuffer(e=0){const t=new Float32Array(2*e),i=this.sourceSound.extract(t,e,this._sourcePosition);this._sourcePosition+=i,this.inputBuffer.putSamples(t,0,i)}extract(e,t=0){this.fillOutputBuffer(this.outputBufferPosition+t);const i=Math.min(t,this.outputBuffer.frameCount-this.outputBufferPosition);this.outputBuffer.extract(e,this.outputBufferPosition,i);const r=this.outputBufferPosition+i;return this.outputBufferPosition=Math.min(this.historyBufferSize,r),this.outputBuffer.receive(Math.max(r-this.historyBufferSize,0)),this._position+=i,i}handleSampleData(e){this.extract(e.data,4096)}clear(){super.clear(),this.outputBufferPosition=0}}const fn=[[124,186,248,310,372,434,496,558,620,682,744,806,868,930,992,1054,1116,1178,1240,1302,1364,1426,1488,0],[-100,-75,-50,-25,25,50,75,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[-20,-15,-10,-5,5,10,15,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[-4,-3,-2,-1,1,2,3,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],yn=-10/1.5;class mn extends dn{constructor(e){super(e),this._quickSeek=!0,this.midBufferDirty=!1,this.midBuffer=null,this.overlapLength=0,this.autoSeqSetting=!0,this.autoSeekSetting=!0,this._tempo=1,this.setParameters(44100,0,0,8)}clear(){super.clear(),this.clearMidBuffer()}clearMidBuffer(){this.midBufferDirty&&(this.midBufferDirty=!1,this.midBuffer=null)}setParameters(e,t,i,r){e>0&&(this.sampleRate=e),r>0&&(this.overlapMs=r),t>0?(this.sequenceMs=t,this.autoSeqSetting=!1):this.autoSeqSetting=!0,i>0?(this.seekWindowMs=i,this.autoSeekSetting=!1):this.autoSeekSetting=!0,this.calculateSequenceParameters(),this.calculateOverlapLength(this.overlapMs),this.tempo=this._tempo}set tempo(e){let t;this._tempo=e,this.calculateSequenceParameters(),this.nominalSkip=this._tempo*(this.seekWindowLength-this.overlapLength),this.skipFract=0,t=Math.floor(this.nominalSkip+.5),this.sampleReq=Math.max(t+this.overlapLength,this.seekWindowLength)+this.seekLength}get tempo(){return this._tempo}get inputChunkSize(){return this.sampleReq}get outputChunkSize(){return this.overlapLength+Math.max(0,this.seekWindowLength-2*this.overlapLength)}calculateOverlapLength(e=0){let t;t=this.sampleRate*e/1e3,t=t<16?16:t,t-=t%8,this.overlapLength=t,this.refMidBuffer=new Float32Array(2*this.overlapLength),this.midBuffer=new Float32Array(2*this.overlapLength)}checkLimits(e,t,i){return ei?i:e}calculateSequenceParameters(){let e,t;this.autoSeqSetting&&(e=150+-50*this._tempo,e=this.checkLimits(e,50,125),this.sequenceMs=Math.floor(e+.5)),this.autoSeekSetting&&(t=28.333333333333332+yn*this._tempo,t=this.checkLimits(t,15,25),this.seekWindowMs=Math.floor(t+.5)),this.seekWindowLength=Math.floor(this.sampleRate*this.sequenceMs/1e3),this.seekLength=Math.floor(this.sampleRate*this.seekWindowMs/1e3)}set quickSeek(e){this._quickSeek=e}clone(){const e=new mn;return e.tempo=this._tempo,e.setParameters(this.sampleRate,this.sequenceMs,this.seekWindowMs,this.overlapMs),e}seekBestOverlapPosition(){return this._quickSeek?this.seekBestOverlapPositionStereoQuick():this.seekBestOverlapPositionStereo()}seekBestOverlapPositionStereo(){let e,t,i,r=0;for(this.preCalculateCorrelationReferenceStereo(),e=0,t=Number.MIN_VALUE;rt&&(t=i,e=r);return e}seekBestOverlapPositionStereoQuick(){let e,t,i,r,s,a=0;for(this.preCalculateCorrelationReferenceStereo(),t=Number.MIN_VALUE,e=0,r=0,s=0;a<4;a+=1){let n=0;for(;fn[a][n]&&(s=r+fn[a][n],!(s>=this.seekLength));)i=this.calculateCrossCorrelationStereo(2*s,this.refMidBuffer),i>t&&(t=i,e=s),n+=1;r=e}return e}preCalculateCorrelationReferenceStereo(){let e,t,i=0;for(;i=this.sampleReq;){e=this.seekBestOverlapPosition(),this._outputBuffer.ensureAdditionalCapacity(this.overlapLength),this.overlap(Math.floor(e)),this._outputBuffer.put(this.overlapLength),t=this.seekWindowLength-2*this.overlapLength,t>0&&this._outputBuffer.putBuffer(this._inputBuffer,e+this.overlapLength,t);const r=this._inputBuffer.startIndex+2*(e+this.seekWindowLength-this.overlapLength);this.midBuffer.set(this._inputBuffer.vector.subarray(r,r+2*this.overlapLength)),this.skipFract+=this.nominalSkip,i=Math.floor(this.skipFract),this.skipFract-=i,this._inputBuffer.receive(i)}}}const gn=function(e,t){return(e>t?e-t:t-e)>1e-10};class An{constructor(){this.transposer=new hn(!1),this.stretch=new mn(!1),this._inputBuffer=new ln,this._intermediateBuffer=new ln,this._outputBuffer=new ln,this._rate=0,this._tempo=0,this.virtualPitch=1,this.virtualRate=1,this.virtualTempo=1,this.calculateEffectiveRateAndTempo()}clear(){this.transposer.clear(),this.stretch.clear()}clone(){const e=new An;return e.rate=this.rate,e.tempo=this.tempo,e}get rate(){return this._rate}set rate(e){this.virtualRate=e,this.calculateEffectiveRateAndTempo()}set rateChange(e){this._rate=1+.01*e}get tempo(){return this._tempo}set tempo(e){this.virtualTempo=e,this.calculateEffectiveRateAndTempo()}set tempoChange(e){this.tempo=1+.01*e}set pitch(e){this.virtualPitch=e,this.calculateEffectiveRateAndTempo()}set pitchOctaves(e){this.pitch=Math.exp(.69314718056*e),this.calculateEffectiveRateAndTempo()}set pitchSemitones(e){this.pitchOctaves=e/12}get inputBuffer(){return this._inputBuffer}get outputBuffer(){return this._outputBuffer}calculateEffectiveRateAndTempo(){const e=this._tempo,t=this._rate;this._tempo=this.virtualTempo/this.virtualPitch,this._rate=this.virtualRate*this.virtualPitch,gn(this._tempo,e)&&(this.stretch.tempo=this._tempo),gn(this._rate,t)&&(this.transposer.rate=this._rate),this._rate>1?this._outputBuffer!=this.transposer.outputBuffer&&(this.stretch.inputBuffer=this._inputBuffer,this.stretch.outputBuffer=this._intermediateBuffer,this.transposer.inputBuffer=this._intermediateBuffer,this.transposer.outputBuffer=this._outputBuffer):this._outputBuffer!=this.stretch.outputBuffer&&(this.transposer.inputBuffer=this._inputBuffer,this.transposer.outputBuffer=this._intermediateBuffer,this.stretch.inputBuffer=this._intermediateBuffer,this.stretch.outputBuffer=this._outputBuffer)}process(){this._rate>1?(this.stretch.process(),this.transposer.process()):(this.transposer.process(),this.stretch.process())}}class vn{constructor(e,t,i){this.player=e,this.audio=t,this.soundTouch=new An,this.soundTouch.tempo=1,this.soundTouch.rate=1,this.filter=new pn(i,this.soundTouch)}setRate(e){e!==this.soundTouch.rate&&(this.soundTouch.tempo=e)}provide(e){let t=new Float32Array(2*e),i=this.filter.extract(t,e),r=new Float32Array(i),s=new Float32Array(i);for(let e=0;e{e()})),this.eventListenList=[]),this.$audio&&(this.$audio.pause(),this.$audio.srcObject=null,this.$audio.parentNode&&this.$audio.parentNode.removeChild(this.$audio),this.$audio=null),this.processor&&(this.processor.destroy(),this.processor=null),this.rateProcessor&&(this.rateProcessor.destroy(),this.rateProcessor=null),this.scriptNodeInterval&&(clearInterval(this.scriptNodeInterval),this.scriptNodeInterval=null),this.defaultPlaybackRate=1,this.playbackRate=1,this.scriptStartTime=0,this.audioBufferSize=0,this.engineType=tr,this.player.debug.log("AudioContext","destroy")}isAudioPlaying(){return this.$audio&&ka(this.$audio.paused)&&ka(this.$audio.ended)&&0!==this.$audio.playbackRate&&0!==this.$audio.readyState}_bindAudioProxy(){const{proxy:e}=this.player.events,t=e(this.$audio,"canplay",(()=>{this.player.debug.log("AudioContext","canplay"),this._delayPlay&&this._audioElementPlay()}));this.eventListenList.push(t)}_getAudioElementReadyState(){let e=0;return this.$audio&&(e=this.$audio.readyState),e}audioElementPlay(){if(this.$audio){const e=this._getAudioElementReadyState();if(this.player.debug.log("AudioContext",`play and readyState: ${e}`),!(0!==e||na()&&Ls()))return this.player.debug.warn("AudioContext","readyState is 0 and set _delayPlay to true"),void(this._delayPlay=!0);this._audioElementPlay()}}_audioElementPlay(){this.$audio&&this.$audio.play().then((()=>{this._delayPlay=!1,this.player.debug.log("AudioContext","_audioElementPlay success"),setTimeout((()=>{this.isAudioPlaying()||(this.player.debug.warn("AudioContext","play failed and retry play"),this._audioElementPlay())}),100),this.isAudioPlaying()&&(this.player.debug.log("AudioContext","play success and remove document click event listener"),document.removeEventListener("click",this._audioElementPlay.bind(this)))})).catch((e=>{this.player.debug.error("AudioContext","_audioElementPlay error",e),document.addEventListener("click",this._audioElementPlay.bind(this))}))}getAudioBufferSize(){return this.audioBufferSize}get oneBufferDuration(){return this.audioBufferSize/this.audioContext.sampleRate*1e3}get isActiveEngineType(){return this.engineType===ir}initProcessor(){this.processor=new on(this.player,this,this.audioInfo.channels,this.audioBufferSize),this.rateProcessor=new vn(this.player,this,this.processor)}getAutoAudioEngineType(){let e=this.player._opt.audioEngine||tr;const t=()=>{e=na()&&Ds()?ir:Ls()&&this.player._opt.supportLockScreenPlayAudio?tr:ma()&&this.supportAudioWorklet()?er:tr};return this.player._opt.audioEngine?this.player._opt.audioEngine===er&&ma()?e=er:this.player._opt.audioEngine===ir?e=ir:this.player._opt.audioEngine===tr?e=tr:t():t(),e}getAudioBufferSizeByType(){const e=this.engineType;this.player._opt.hasVideo;const t=this.player._opt.weiXinInAndroidAudioBufferSize;return e===er?1024:e===ir?t||4800:1024}supportAudioWorklet(){return this.audioContext&&this.audioContext.audioWorklet}initScriptNode(){this.playing=!0,this.hasInitScriptNode||(this.initProcessor(),this.engineType===er?this.initWorkletScriptNode():this.engineType===ir?this.initIntervalScriptNode():this.engineType===tr&&this.initProcessScriptNode(),this.audioElementPlay())}getEngineType(){return this.engineType}isPlaybackRateSpeed(){return this.playbackRate>this.defaultPlaybackRate}initProcessScriptNode(){const e=this.audioContext.createScriptProcessor(this.audioBufferSize,0,this.audioInfo.channels);e.onaudioprocess=e=>{const t=e.outputBuffer;this.handleScriptNodeCallback(t)},e.connect(this.gainNode),this.scriptNode=e,this.gainNode.connect(this.mediaStreamAudioDestinationNode),this.$audio?this.$audio.srcObject=this.mediaStreamAudioDestinationNode.stream:this.gainNode.connect(this.audioContext.destination),this.hasInitScriptNode=!0}initIntervalScriptNode(){this.scriptStartTime=0;const e=1e3*this.audioBufferSize/this.audioContext.sampleRate;this.scriptNodeInterval=setInterval((()=>{if(0===this.bufferList.length||ka(this.playing)||this.isMute)return void(this.playing&&ka(this.isMute)&&this.player.debug.log("AudioContext",`interval script node and bufferList is ${this.bufferList.length} or playing is ${this.playing}`));const e=this.audioContext.createBufferSource(),t=this.audioContext.createBuffer(this.audioInfo.channels,this.audioBufferSize,this.audioContext.sampleRate);this.handleScriptNodeCallback(t,(()=>{this.scriptStartTime{"init"===e.data.message?(this.audioBufferSize=e.data.audioBufferSize,this.start=e.data.start,this.channels=e.data.channels,this.state=0,this.offset=0,this.samplesArray=[]):"stop"===e.data.message?(this.state=0,this.start=!1,this.offset=0,this.samplesArray=[]):"data"===e.data.message?this.samplesArray.push(e.data.buffer):"zero"===e.data.message&&this.samplesArray.push({left:new Float32Array(this.audioBufferSize).fill(0),right:new Float32Array(this.audioBufferSize).fill(0)})}}process(e,t,i){const r=t[0][0],s=t[0][1];if(0===this.offset&&this.port.postMessage({message:"beep"}),0===this.state)this.state=1;else if(1===this.state&&this.samplesArray.length>=4)this.state=2;else if(2===this.state){const e=this.samplesArray[0];for(let t=0;t{if(this.player.isDestroyedOrClosed())return void this.player.debug.log("AudioContext","initWorkletScriptNode() player is destroyed");if(!this.audioContext)return void this.player.debug.warn("AudioContext","initWorkletScriptNode audioContext is null");let e=[1];2===this.audioInfo.channels&&(e=[1,1]);try{this.workletProcessorNode=new AudioWorkletNode(this.audioContext,"worklet-processor",{numberOfOutputs:this.audioInfo.channels,outputChannelCount:e})}catch(e){this.player.debug.error("AudioContext","initWorkletScriptNode error",e),this.workletProcessorNode=null,this.tierDownToProcessScript()}this.workletProcessorNode&&(this.workletProcessorNode.connect(this.gainNode),this.gainNode.connect(this.mediaStreamAudioDestinationNode),this.$audio?this.$audio.srcObject=this.mediaStreamAudioDestinationNode.stream:this.gainNode.connect(this.audioContext.destination),this.hasInitScriptNode=!0,this.workletProcessorNode.port.postMessage({message:"init",audioBufferSize:this.audioBufferSize,start:!0,channels:this.audioInfo.channels}),this.workletProcessorNode.port.onmessage=e=>{this.workletProcessorNode?this.audioContext?this.handleScriptNodeCallback(this.workletProcessorNode,null,!0):this.workletProcessorNode.port.postMessage({message:"zero"}):this.player.debug.error("AudioContext","workletProcessorNode is null")})})),this.clearWorkletUrlTimeout=setTimeout((()=>{URL.revokeObjectURL(this.workletUrl),this.workletUrl=null,this.clearWorkletUrlTimeout=null}),re)}tierDownToProcessScript(){this.player.debug.log("AudioContext","tierDownToProcessScript"),this.engineType=tr,this.audioBufferSize=this.getAudioBufferSizeByType(),this.initProcessScriptNode(),this.audioElementPlay()}handleScriptNodeCallback(e,t,i=!1){let r;t=t||ys;let s=e.length;i&&(r=e,s=this.audioBufferSize);const a=this.audioInfo.channels;if(this.bufferList.length&&this.playing){if(this.player._opt,this.player.openSyncAudioAndVideo()&&Ta(this.player.visibility)){this.calcPlaybackRateBySync();const s=this.player.getAudioSyncVideoDiff();if(s>this.player._opt.syncAudioAndVideoDiff)return this.player.debug.warn("AudioContext",`audioSyncVideoOption more than diff :${s}, waiting and bufferList is ${this.bufferList.length}`),i?r.port.postMessage({message:"zero"}):this.fillScriptNodeOutputBuffer(e,a),void t()}let n=this._provide(s);if(0===n.size)return this.player.debug.warn("AudioContext",`bufferList size is ${this.bufferList.length} outputBufferLength is ${s},and bufferItem.size is 0`),i?r.port.postMessage({message:"zero"}):this.fillScriptNodeOutputBuffer(e,a),void t();n&&n.ts&&(this.player.audioTimestamp=n.ts),i?r.port.postMessage({message:"data",buffer:n}):this.fillScriptNodeOutputBuffer(e,a,n),t()}else 0===this.bufferList.length&&this.playing&&ka(this.isMute)&&this.player.debug.warn("AudioContext",`bufferList size is 0 and outputBufferLength is ${s}`),i?r.port.postMessage({message:"zero"}):this.fillScriptNodeOutputBuffer(e,a),t()}fillScriptNodeOutputBuffer(e,t,i){if(1===t){const t=e.getChannelData(0);i?0===i.size?t.fill(0):t.set(i.left):t.fill(0)}else if(2===t){const t=e.getChannelData(0),r=e.getChannelData(1);i?0===i.size?(t.fill(0),r.fill(0)):(t.set(i.left),r.set(i.right)):(t.fill(0),r.fill(0))}}play(e,t){this.isMute||(this.hasInitScriptNode?(this.hasAudio=!0,this.player.latestAudioTimestamp=t,this.bufferList.push({buffer:e,ts:t}),ka(this.player.openSyncAudioAndVideo())&&this.calcPlaybackRateByBuffer()):this.player.debug.warn("AudioContext","play has not init script node"))}calcPlaybackRateBySync(){if(this.isMute)return;if(!this.playing)return;const e=Math.floor(2e3/this.oneBufferDuration);if(this.bufferList.length>e)return this.player.debug.warn("AudioContext",`bufferList length ${this.bufferList.length} more than ${e}, and drop`),void this.clear();const t=this.player.getAudioSyncVideoDiff();if(this.getEngineType()===ir){if(t<-this.player._opt.syncAudioAndVideoDiff){this.player.debug.warn("AudioContext",`engine active , audioSyncVideoOption ${-this.player._opt.syncAudioAndVideoDiff} less than diff :${t},\n and bufferlist is ${this.bufferList.length}`);const e=this.player.getRenderCurrentPts();for(;this.bufferList.length>0;){const t=this.bufferList[0],i=t.ts-e;if(i>-this.player._opt.syncAudioAndVideoDiff/2){this.player.audioTimestamp=t.ts,this.player.debug.log("AudioContext",`engine active , audioSyncVideoOption\n item.ts is ${t.ts} and currentVideoTimestamp is ${e}, diff is ${i} > -${this.player._opt.syncAudioAndVideoDiff/2} and end`);break}this.bufferList.shift(),this.player.audioTimestamp=t.ts}}}else{let e=this.playbackRate;t<-this.player._opt.syncAudioAndVideoDiff?e===this.defaultPlaybackRate&&(this.player.debug.log("AudioContext",`audioSyncVideoOption ${-this.player._opt.syncAudioAndVideoDiff} less than diff :${t},\n speed up, playbackRate is ${e},\n and bufferList is ${this.bufferList.length}`),e=this.defaultPlaybackRate+.2):t>-this.player._opt.syncAudioAndVideoDiff/2&&e!==this.defaultPlaybackRate&&(this.player.debug.log("AudioContext",`diff is ${t} > -${this.player._opt.syncAudioAndVideoDiff/2} and speed to 1`),e=this.defaultPlaybackRate),this.updatePlaybackRate(e)}}calcPlaybackRateByBuffer(){if(this.isMute)return;if(!this.playing)return;let e=this.playbackRate,t=1e3,i=5e3;this.isAudioPlayer&&(t=this.player._opt.videoBufferDelay,i=this.player._opt.videoBufferMax);const r=Math.floor(t/this.oneBufferDuration),s=Math.floor(i/this.oneBufferDuration);if(this.bufferList.length>s)return this.player.debug.warn("AudioContext",`bufferList length ${this.bufferList.length} more than ${s}, and drop`),void this.clear();this.getEngineType()!==ir&&(this.bufferList.length>r?(e=this.defaultPlaybackRate+.2,this.player.debug.log("AudioContext",`bufferList length ${this.bufferList.length} more than ${r}, speed up, playbackRate is ${e}`)):this.bufferList.length{this.listenPlaybackPause(e)})),this.player.debug.log("AudioPlaybackContext","init")}destroy(){this.delayTimeout&&(clearTimeout(this.delayTimeout),this.delayTimeout=null),super.destroy(),this.player.debug.log("AudioPlaybackLoader","destroy")}listenPlaybackPause(e){e?(this.pause(),this.player.playback.isPlaybackPauseClearCache&&this.clear()):this.resume()}initScriptNodeDelay(){const e=this.player._opt.playbackDelayTime;e>0?this.delayTimeout=setTimeout((()=>{this.initScriptNode()}),e):this.initScriptNode()}setRate(e){e!==this.defaultPlaybackRate&&this.rateProcessor&&(this.player.debug.log("AudioPlaybackContext","setRate",e),this.defaultPlaybackRate=e,this.updatePlaybackRate(e))}}class En extends bn{constructor(e){super(e),this.TAG_NAME="AudioPlayerLoader",this.isAudioPlayer=!0,this.player.debug.log(this.TAG_NAME,"init")}destroy(){super.destroy(),this.player.debug.log(this.TAG_NAME,"destroy")}play(e,t){ka(this.playing)||super.play(e,t)}pause(){this.player.debug.log(this.TAG_NAME,"pause"),this.playing=!1,this.clear()}resume(){this.player.debug.log(this.TAG_NAME,"resume"),this.playing=!0}}class Sn{constructor(e){return new(Sn.getLoaderFactory(e._opt))(e)}static getLoaderFactory(e){return e.playType===b?e.useMSE&&e.mseDecodeAudio?_n:wn:e.playType===v?En:e.isHls&&ka(e.supportHls265)||e.isWebrtc&&ka(e.isWebrtcH265)||e.useMSE&&e.mseDecodeAudio||e.isAliyunRtc?_n:bn}}class Tn extends t{constructor(e){super(),this.TAG_NAME="FetchWorkerLoader",this.player=e,this.playing=!1,this.fetchWorker=null,this.workerClearTimeout=null,this.workerUrl=null,this.abortController=new AbortController,this.streamRate=Ss((t=>{e.emit(st.kBps,(t/1024).toFixed(2))})),this.streamRateInterval=null,this._initFetchWorker(),e.debug.log(this.TAG_NAME,"init")}destroy(){this.off(),this.workerUrl&&(window.URL.revokeObjectURL(this.workerUrl),this.workerUrl=null),this.workerClearTimeout&&(clearTimeout(this.workerClearTimeout),this.workerClearTimeout=null),this.fetchWorker&&(this.fetchWorker.postMessage({cmd:Ze}),this.fetchWorker.terminate(),this.fetchWorker=null),this._stopStreamRateInterval(),this.streamRate=null,this.player.debug.log(this.TAG_NAME,"destroy")}_initFetchWorker(){const e=Ia(function(){function e(e){return!0===e||"true"===e}function t(e){return!1===e||"false"===e}const i="The user aborted a request",r="AbortError",s="AbortError",a="fetch",n="destroy",o="buffer",l="fetchError",d="fetchClose",h="fetchSuccess",c="idle",u="buffering",p="complete";let f=new class{constructor(){this._requestAbort=!1,this._status=c,this.writableStream=null,this.isChrome=!1,this.abortController=new AbortController}destroy(){this.abort(),this.writableStream&&t(this.writableStream.locked)&&this.writableStream.close().catch((e=>{})),this.writableStream=null,this._status=c}fetchStream(t,a={}){const n=Object.assign({signal:this.abortController.signal},{headers:a.headers||{}});fetch(t,n).then((t=>{if(this._requestAbort)return this._status=c,void t.body.cancel();if(!function(e){return e.ok&&e.status>=200&&e.status<=299}(t))return this.abort(),void postMessage({cmd:l,message:`fetch response status is ${t.status} and ok is ${t.ok}`});if(postMessage({cmd:h}),"undefined"!=typeof WritableStream)this.writableStream=new WritableStream({write:t=>{this.abortController&&this.abortController.signal&&this.abortController.signal.aborted||e(this._requestAbort)?this._status=p:(this._status=u,postMessage({cmd:o,buffer:t},[t.buffer]))},close:()=>{this._status=p,postMessage({cmd:d})},abort:e=>{if(this.abortController&&this.abortController.signal&&this.abortController.signal.aborted)return void(this._status=p);const t=e.toString();-1===t.indexOf(i)&&-1===t.indexOf(r)&&e.name!==s&&(this.abort(),postMessage({cmd:l,message:e.toString()}))}}),t.body.pipeTo(this.writableStream);else{const a=t.body.getReader(),n=()=>{a.read().then((({done:t,value:i})=>{if(t)return this._status=p,void postMessage({cmd:d});this.abortController&&this.abortController.signal&&this.abortController.signal.aborted||e(this._requestAbort)?this._status=p:(this._status=u,postMessage({cmd:o,buffer:i},[i.buffer]),n())})).catch((e=>{if(this.abortController&&this.abortController.signal&&this.abortController.signal.aborted)return void(this._status=p);const t=e.toString();-1===t.indexOf(i)&&-1===t.indexOf(r)&&e.name!==s&&(this.abort(),postMessage({cmd:l,message:e.toString()}))}))};n()}})).catch((e=>{this.abortController&&this.abortController.signal&&this.abortController.signal.aborted||"AbortError"!==e.name&&(this.abort(),postMessage({cmd:l,message:e.toString()}))}))}abort(){if(this._requestAbort=!0,this._status!==u||t(f.isChrome)){if(this.abortController){try{this.abortController.abort()}catch(e){}this.abortController=null}}else this.abortController=null}};self.onmessage=t=>{const i=t.data;switch(i.cmd){case a:f.isChrome=e(i.isChrome),f.fetchStream(i.url,JSON.parse(i.options));break;case n:f.destroy(),f=null}}}.toString()),t=new Blob([e],{type:"text/javascript"});let i=URL.createObjectURL(t);const r=new Worker(i);this.workerUrl=i,this.workerClearTimeout=setTimeout((()=>{window.URL.revokeObjectURL(this.workerUrl),this.workerUrl=null,this.workerClearTimeout=null}),re),r.onmessage=e=>{const{demux:t}=this.player,i=e.data;switch(i.cmd){case et:this.streamRate&&this.streamRate(i.buffer.byteLength),t.dispatch(i.buffer);break;case rt:this.emit(st.streamSuccess),this._startStreamRateInterval();break;case it:t.close(),this.emit(st.streamEnd,"fetch done");break;case tt:t.close(),this.emit(lt.fetchError,i.message)}},this.fetchWorker=r}_startStreamRateInterval(){this._stopStreamRateInterval(),this.streamRateInterval=setInterval((()=>{this.streamRate&&this.streamRate(0)}),1e3)}_stopStreamRateInterval(){this.streamRateInterval&&(clearInterval(this.streamRateInterval),this.streamRateInterval=null)}fetchStream(e,t={}){this.player._times.streamStart=vs(),this.fetchWorker.postMessage({cmd:Je,url:e,isChrome:oa(),options:JSON.stringify(t)})}getStreamType(){return h}}class kn extends t{constructor(e){super(),this.player=e,this.socket=null,this.socketStatus=dt,this.wsUrl=null,this.requestAbort=!1,this.socketDestroyFnList=[],this.streamRate=Ss((t=>{e.emit(st.kBps,(t/1024).toFixed(2))})),this.streamRateInterval=null,e.debug.log("WebsocketStream","init")}destroy(){this._closeWebSocket(),this.stopStreamRateInterval(),this.wsUrl=null,this.off(),this.player.debug.log("WebsocketStream","destroy")}startStreamRateInterval(){this.stopStreamRateInterval(),this.streamRateInterval=setInterval((()=>{this.streamRate&&this.streamRate(0)}),1e3)}stopStreamRateInterval(){this.streamRateInterval&&(clearInterval(this.streamRateInterval),this.streamRateInterval=null)}_createWebSocket(){const e=this.player,{debug:t,events:{proxy:i},demux:r}=e;this.socket=new WebSocket(this.wsUrl),this.socket.binaryType="arraybuffer";const s=i(this.socket,"open",(()=>{t.log("WebsocketStream","socket open"),this.socketStatus=ht,this.emit(st.streamSuccess),this.player.emit(st.websocketOpen),this.startStreamRateInterval()})),a=i(this.socket,"message",(e=>{this.streamRate&&this.streamRate(e.data.byteLength),this._handleMessage(e.data)})),n=i(this.socket,"close",(e=>{if(t.log("WebsocketStream",`socket close and code is ${e.code}`),1006===e.code&&t.error("WebsocketStream",`socket close abnormally and code is ${e.code}`),Ta(this.requestAbort))return this.requestAbort=!1,void t.log("WebsocketStream","socket close and requestAbort is true");r.close(),this.socketStatus=ct,this.player.emit(st.websocketClose,e.code),this.emit(st.streamEnd,e.code)})),o=i(this.socket,"error",(e=>{t.error("WebsocketStream","socket error",e),this.socketStatus=ut,this.emit(lt.websocketError,e),r.close(),t.log("WebsocketStream","socket error:",e.isTrusted?"websocket user aborted":"websocket error")}));this.socketDestroyFnList.push(s,a,n,o)}_closeWebSocket(){this.socketDestroyFnList.forEach((e=>e())),!this.socket||0!==this.socket.readyState&&1!==this.socket.readyState?this.socket&&this.player.debug.log("WebsocketStream",`_closeWebSocket() socket is null or socket status is ${this.socket&&this.socket.readyState}`):(this.requestAbort=!0,this.socket.close(1e3,"Client disconnecting")),this.socket=null,this.socketStatus=dt,this.streamRate=null}_handleMessage(e){const{demux:t}=this.player;t?t.dispatch(e):this.player.debug.warn("WebsocketStream","websocket handle message demux is null")}fetchStream(e,t){this.player._times.streamStart=vs(),this.wsUrl=e,this._createWebSocket()}sendMessage(e){this.socket?this.socketStatus===ht?this.socket.send(e):this.player.debug.error("WebsocketStream",`websocket send message error and socket status is ${this.socketStatus}`):this.player.debug.error("WebsocketStream","websocket send message socket is null")}resetFetchStream(){this._closeWebSocket(),this._createWebSocket()}getStreamType(){return u}}class Cn extends t{constructor(e){super(),this.player=e,e.debug.log("HlsStream","init")}destroy(){this.off(),this.player.debug.log("HlsStream","destroy")}fetchStream(e){const{hlsDecoder:t,debug:i}=this.player;this.player._times.streamStart=vs(),t.loadSource(e).then((()=>{this.player.debug.log("HlsStream","loadSource success"),this.emit(st.streamSuccess)})).catch((e=>{this.emit(lt.hlsError,e)}))}getStreamType(){return c}}class Dn extends t{constructor(e){super(),this.player=e,this.webrctUrl=null,e.debug.log("WebrtcStream","init")}destroy(){this.webrctUrl=null,this.off(),this.player.debug.log("WebrtcStream","destroy")}fetchStream(e){const{webrtc:t,debug:i}=this.player;this.player._times.streamStart=vs(),this.webrctUrl=e.replace("webrtc:",window.location.protocol),t.loadSource(this.webrctUrl).then((()=>{this.player.debug.log("WebrtcStream","loadSource success"),this.emit(st.streamSuccess)})).catch((e=>{this.player.debug.error("WebrtcStream","loadSource error",e),this.emit(lt.webrtcError,e)}))}getStreamType(){return p}}class Rn extends t{constructor(e){super(),this.player=e,e.debug.log("wsRtcStream","init")}destroy(){this.off(),this.player.debug.log("wsRtcStream","destroy")}fetchStream(e){const{wsRtcDecoder:t,debug:i}=this.player;this.player._times.streamStart=vs(),t.loadSource(e).then((()=>{this.player.debug.log("wsRtcStream","loadSource success"),this.emit(st.streamSuccess)})).catch((e=>{this.emit(lt.webrtcError,e)}))}getStreamType(){return g}}class xn extends t{constructor(e){super(),this.player=e,this.transport=null,this.wtUrl=null,this.streamRate=Ss((t=>{e.emit(st.kBps,(t/1024).toFixed(2))})),this.streamRateInterval=null,e.debug.log("WebTransportLoader","init")}destroy(){this.abort(),this.off(),this.player.debug.log("WebTransportLoader","destroy")}startStreamRateInterval(){this.stopStreamRateInterval(),this.streamRateInterval=setInterval((()=>{this.streamRate&&this.streamRate(0)}),1e3)}stopStreamRateInterval(){this.streamRateInterval&&(clearInterval(this.streamRateInterval),this.streamRateInterval=null)}_createWebTransport(){const e=this.player,{debug:t,events:{proxy:i},demux:r}=e;try{this.transport=new WebTransport(this.wtUrl),this.transport.ready.then((()=>{this.emit(st.streamSuccess),this.startStreamRateInterval(),this.transport.createBidirectionalStream().then((e=>{e.readable.pipeTo(new WritableStream(r.input))}))})).catch((e=>{this.player.debug.warn("WebTransportLoader","_createWebTransport-ready",e)}))}catch(e){this.player.debug.warn("WebTransportLoader","_createWebTransport",e)}}fetchStream(e){this.player._times.streamStart=vs(),this.wtUrl=e.replace(/^wt:/,"https:"),this._createWebTransport()}abort(){if(this.transport)try{this.transport.close(),this.transport=null}catch(e){this.transport=null}}getStreamType(){return f}}class Ln extends t{constructor(e){super(),this.player=e,this.workUrl=null,e.debug.log("WorkerStream","init")}destroy(){this.workUrl=null,this.off(),this.player.debug.log("WorkerStream","destroy")}sendMessage(e){this.player.decoderWorker.workerSendMessage(e)}fetchStream(e,t={}){this.workUrl=e,this.player._times.streamStart=vs(),this.player.decoderWorker.workerFetchStream(e)}getStreamType(){const e=this.player._opt.protocol;return y+" "+(e===r?h:u)}}class In extends t{constructor(e){super(),this.TAG_NAME="AliyunRtcLoader",this.player=e,e.debug.log(this.TAG_NAME,"init")}destroy(){this.off(),this.player.debug.log(this.TAG_NAME,"destroy")}fetchStream(e){const{aliyunRtcDecoder:t}=this.player;this.player._times.streamStart=vs(),t.loadSource(e).then((()=>{this.player.debug.log(this.TAG_NAME,"loadSource success"),this.emit(st.streamSuccess)})).catch((e=>{this.player.debug.error(this.TAG_NAME,"loadSource error",e),this.emit(lt.aliyunRtcError,e)}))}getStreamType(){return m}}class Pn{constructor(e){return new(Pn.getLoaderFactory(e._opt))(e)}static getLoaderFactory(e){const{protocol:t,useWasm:d,playType:h,useWCS:c,useMSE:u,demuxUseWorker:p}=e;return t===r?h===v?Ln:h===A?d&&!pa(e)||p?Ln:Tn:c||u?p?Ln:Tn:Ln:t===i?h===v?Ln:h===A?d&&!pa(e)||p?Ln:kn:c||u?p?Ln:kn:Ln:t===l?Rn:t===s?Cn:t===a?Dn:t===n?xn:t===o?In:void 0}}var Bn=Zr((function(e){function t(e,s){if(!e)throw"First parameter is required.";s=new i(e,s=s||{type:"video"});var a=this;function n(t){t&&(s.initCallback=function(){t(),t=s.initCallback=null});var i=new r(e,s);(p=new i(e,s)).record(),u("recording"),s.disableLogs||console.log("Initialized recorderType:",p.constructor.name,"for output-type:",s.type)}function o(e){if(e=e||function(){},p){if("paused"===a.state)return a.resumeRecording(),void setTimeout((function(){o(e)}),1);"recording"===a.state||s.disableLogs||console.warn('Recording state should be: "recording", however current state is: ',a.state),s.disableLogs||console.log("Stopped recording "+s.type+" stream."),"gif"!==s.type?p.stop(t):(p.stop(),t()),u("stopped")}else y();function t(t){if(p){Object.keys(p).forEach((function(e){"function"!=typeof p[e]&&(a[e]=p[e])}));var i=p.blob;if(!i){if(!t)throw"Recording failed.";p.blob=i=t}if(i&&!s.disableLogs&&console.log(i.type,"->",g(i.size)),e){var r;try{r=h.createObjectURL(i)}catch(e){}"function"==typeof e.call?e.call(a,r):e(r)}s.autoWriteToDisk&&d((function(e){var t={};t[s.type+"Blob"]=e,R.Store(t)}))}else"function"==typeof e.call?e.call(a,""):e("")}}function l(e){postMessage((new FileReaderSync).readAsDataURL(e))}function d(e,t){if(!e)throw"Pass a callback function over getDataURL.";var i=t?t.blob:(p||{}).blob;if(!i)return s.disableLogs||console.warn("Blob encoder did not finish its job yet."),void setTimeout((function(){d(e,t)}),1e3);if("undefined"==typeof Worker||navigator.mozGetUserMedia){var r=new FileReader;r.readAsDataURL(i),r.onload=function(t){e(t.target.result)}}else{var a=function(e){try{var t=h.createObjectURL(new Blob([e.toString(),"this.onmessage = function (eee) {"+e.name+"(eee.data);}"],{type:"application/javascript"})),i=new Worker(t);return h.revokeObjectURL(t),i}catch(e){}}(l);a.onmessage=function(t){e(t.data)},a.postMessage(i)}}function c(e){e=e||0,"paused"!==a.state?"stopped"!==a.state&&(e>=a.recordingDuration?o(a.onRecordingStopped):(e+=1e3,setTimeout((function(){c(e)}),1e3))):setTimeout((function(){c(e)}),1e3)}function u(e){a&&(a.state=e,"function"==typeof a.onStateChanged.call?a.onStateChanged.call(a,e):a.onStateChanged(e))}var p,f='It seems that recorder is destroyed or "startRecording" is not invoked for '+s.type+" recorder.";function y(){!0!==s.disableLogs&&console.warn(f)}var m={startRecording:function(t){return s.disableLogs||console.log("RecordRTC version: ",a.version),t&&(s=new i(e,t)),s.disableLogs||console.log("started recording "+s.type+" stream."),p?(p.clearRecordedData(),p.record(),u("recording"),a.recordingDuration&&c(),a):(n((function(){a.recordingDuration&&c()})),a)},stopRecording:o,pauseRecording:function(){p?"recording"===a.state?(u("paused"),p.pause(),s.disableLogs||console.log("Paused recording.")):s.disableLogs||console.warn("Unable to pause the recording. Recording state: ",a.state):y()},resumeRecording:function(){p?"paused"===a.state?(u("recording"),p.resume(),s.disableLogs||console.log("Resumed recording.")):s.disableLogs||console.warn("Unable to resume the recording. Recording state: ",a.state):y()},initRecorder:n,setRecordingDuration:function(e,t){if(void 0===e)throw"recordingDuration is required.";if("number"!=typeof e)throw"recordingDuration must be a number.";return a.recordingDuration=e,a.onRecordingStopped=t||function(){},{onRecordingStopped:function(e){a.onRecordingStopped=e}}},clearRecordedData:function(){p?(p.clearRecordedData(),s.disableLogs||console.log("Cleared old recorded data.")):y()},getBlob:function(){if(p)return p.blob;y()},getDataURL:d,toURL:function(){if(p)return h.createObjectURL(p.blob);y()},getInternalRecorder:function(){return p},save:function(e){p?A(p.blob,e):y()},getFromDisk:function(e){p?t.getFromDisk(s.type,e):y()},setAdvertisementArray:function(e){s.advertisement=[];for(var t=e.length,i=0;i-1&&"netscape"in window&&/ rv:/.test(navigator.userAgent),f=!u&&!c&&!!navigator.webkitGetUserMedia||v()||-1!==navigator.userAgent.toLowerCase().indexOf("chrome/"),y=/^((?!chrome|android).)*safari/i.test(navigator.userAgent);y&&!f&&-1!==navigator.userAgent.indexOf("CriOS")&&(y=!1,f=!0);var m=window.MediaStream;function g(e){if(0===e)return"0 Bytes";var t=parseInt(Math.floor(Math.log(e)/Math.log(1e3)),10);return(e/Math.pow(1e3,t)).toPrecision(3)+" "+["Bytes","KB","MB","GB","TB"][t]}function A(e,t){if(!e)throw"Blob object is required.";if(!e.type)try{e.type="video/webm"}catch(e){}var i=(e.type||"video/webm").split("/")[1];if(-1!==i.indexOf(";")&&(i=i.split(";")[0]),t&&-1!==t.indexOf(".")){var r=t.split(".");t=r[0],i=r[1]}var s=(t||Math.round(9999999999*Math.random())+888888888)+"."+i;if(void 0!==navigator.msSaveOrOpenBlob)return navigator.msSaveOrOpenBlob(e,s);if(void 0!==navigator.msSaveBlob)return navigator.msSaveBlob(e,s);var a=document.createElement("a");a.href=h.createObjectURL(e),a.download=s,a.style="display:none;opacity:0;color:transparent;",(document.body||document.documentElement).appendChild(a),"function"==typeof a.click?a.click():(a.target="_blank",a.dispatchEvent(new MouseEvent("click",{view:window,bubbles:!0,cancelable:!0}))),h.revokeObjectURL(a.href)}function v(){return"undefined"!=typeof window&&"object"==typeof window.process&&"renderer"===window.process.type||(!("undefined"==typeof process||"object"!=typeof process.versions||!process.versions.electron)||"object"==typeof navigator&&"string"==typeof navigator.userAgent&&navigator.userAgent.indexOf("Electron")>=0)}function b(e,t){return e&&e.getTracks?e.getTracks().filter((function(e){return e.kind===(t||"audio")})):[]}function _(e,t){"srcObject"in t?t.srcObject=e:"mozSrcObject"in t?t.mozSrcObject=e:t.srcObject=e}void 0===m&&"undefined"!=typeof webkitMediaStream&&(m=webkitMediaStream),void 0!==m&&void 0===m.prototype.stop&&(m.prototype.stop=function(){this.getTracks().forEach((function(e){e.stop()}))}),void 0!==t&&(t.invokeSaveAsDialog=A,t.getTracks=b,t.getSeekableBlob=function(e,t){if("undefined"==typeof EBML)throw new Error("Please link: https://www.webrtc-experiment.com/EBML.js");var i=new EBML.Reader,r=new EBML.Decoder,s=EBML.tools,a=new FileReader;a.onload=function(e){r.decode(this.result).forEach((function(e){i.read(e)})),i.stop();var a=s.makeMetadataSeekable(i.metadatas,i.duration,i.cues),n=this.result.slice(i.metadataSize),o=new Blob([a,n],{type:"video/webm"});t(o)},a.readAsArrayBuffer(e)},t.bytesToSize=g,t.isElectron=v);var w={};function E(){if(p||y||c)return!0;var e,t,i=navigator.userAgent,r=""+parseFloat(navigator.appVersion),s=parseInt(navigator.appVersion,10);return(f||u)&&(e=i.indexOf("Chrome"),r=i.substring(e+7)),-1!==(t=r.indexOf(";"))&&(r=r.substring(0,t)),-1!==(t=r.indexOf(" "))&&(r=r.substring(0,t)),s=parseInt(""+r,10),isNaN(s)&&(r=""+parseFloat(navigator.appVersion),s=parseInt(navigator.appVersion,10)),s>=49}function S(e,t){var i=this;if(void 0===e)throw'First argument "MediaStream" is required.';if("undefined"==typeof MediaRecorder)throw"Your browser does not support the Media Recorder API. Please try other modules e.g. WhammyRecorder or StereoAudioRecorder.";if("audio"===(t=t||{mimeType:"video/webm"}).type){var r;if(b(e,"video").length&&b(e,"audio").length)navigator.mozGetUserMedia?(r=new m).addTrack(b(e,"audio")[0]):r=new m(b(e,"audio")),e=r;t.mimeType&&-1!==t.mimeType.toString().toLowerCase().indexOf("audio")||(t.mimeType=f?"audio/webm":"audio/ogg"),t.mimeType&&"audio/ogg"!==t.mimeType.toString().toLowerCase()&&navigator.mozGetUserMedia&&(t.mimeType="audio/ogg")}var s,a=[];function n(){i.timestamps.push((new Date).getTime()),"function"==typeof t.onTimeStamp&&t.onTimeStamp(i.timestamps[i.timestamps.length-1],i.timestamps)}function o(e){return s&&s.mimeType?s.mimeType:e.mimeType||"video/webm"}function l(){a=[],s=null,i.timestamps=[]}this.getArrayOfBlobs=function(){return a},this.record=function(){i.blob=null,i.clearRecordedData(),i.timestamps=[],d=[],a=[];var r=t;t.disableLogs||console.log("Passing following config over MediaRecorder API.",r),s&&(s=null),f&&!E()&&(r="video/vp8"),"function"==typeof MediaRecorder.isTypeSupported&&r.mimeType&&(MediaRecorder.isTypeSupported(r.mimeType)||(t.disableLogs||console.warn("MediaRecorder API seems unable to record mimeType:",r.mimeType),r.mimeType="audio"===t.type?"audio/webm":"video/webm"));try{s=new MediaRecorder(e,r),t.mimeType=r.mimeType}catch(t){s=new MediaRecorder(e)}r.mimeType&&!MediaRecorder.isTypeSupported&&"canRecordMimeType"in s&&!1===s.canRecordMimeType(r.mimeType)&&(t.disableLogs||console.warn("MediaRecorder API seems unable to record mimeType:",r.mimeType)),s.ondataavailable=function(e){if(e.data&&d.push("ondataavailable: "+g(e.data.size)),"number"!=typeof t.timeSlice)!e.data||!e.data.size||e.data.size<100||i.blob?i.recordingCallback&&(i.recordingCallback(new Blob([],{type:o(r)})),i.recordingCallback=null):(i.blob=t.getNativeBlob?e.data:new Blob([e.data],{type:o(r)}),i.recordingCallback&&(i.recordingCallback(i.blob),i.recordingCallback=null));else if(e.data&&e.data.size&&(a.push(e.data),n(),"function"==typeof t.ondataavailable)){var s=t.getNativeBlob?e.data:new Blob([e.data],{type:o(r)});t.ondataavailable(s)}},s.onstart=function(){d.push("started")},s.onpause=function(){d.push("paused")},s.onresume=function(){d.push("resumed")},s.onstop=function(){d.push("stopped")},s.onerror=function(e){e&&(e.name||(e.name="UnknownError"),d.push("error: "+e),t.disableLogs||(-1!==e.name.toString().toLowerCase().indexOf("invalidstate")?console.error("The MediaRecorder is not in a state in which the proposed operation is allowed to be executed.",e):-1!==e.name.toString().toLowerCase().indexOf("notsupported")?console.error("MIME type (",r.mimeType,") is not supported.",e):-1!==e.name.toString().toLowerCase().indexOf("security")?console.error("MediaRecorder security error",e):"OutOfMemory"===e.name?console.error("The UA has exhaused the available memory. User agents SHOULD provide as much additional information as possible in the message attribute.",e):"IllegalStreamModification"===e.name?console.error("A modification to the stream has occurred that makes it impossible to continue recording. An example would be the addition of a Track while recording is occurring. User agents SHOULD provide as much additional information as possible in the message attribute.",e):"OtherRecordingError"===e.name?console.error("Used for an fatal error other than those listed above. User agents SHOULD provide as much additional information as possible in the message attribute.",e):"GenericError"===e.name?console.error("The UA cannot provide the codec or recording option that has been requested.",e):console.error("MediaRecorder Error",e)),function(e){if(!i.manuallyStopped&&s&&"inactive"===s.state)return delete t.timeslice,void s.start(6e5);setTimeout(void 0,1e3)}(),"inactive"!==s.state&&"stopped"!==s.state&&s.stop())},"number"==typeof t.timeSlice?(n(),s.start(t.timeSlice)):s.start(36e5),t.initCallback&&t.initCallback()},this.timestamps=[],this.stop=function(e){e=e||function(){},i.manuallyStopped=!0,s&&(this.recordingCallback=e,"recording"===s.state&&s.stop(),"number"==typeof t.timeSlice&&setTimeout((function(){i.blob=new Blob(a,{type:o(t)}),i.recordingCallback(i.blob)}),100))},this.pause=function(){s&&"recording"===s.state&&s.pause()},this.resume=function(){s&&"paused"===s.state&&s.resume()},this.clearRecordedData=function(){s&&"recording"===s.state&&i.stop(l),l()},this.getInternalRecorder=function(){return s},this.blob=null,this.getState=function(){return s&&s.state||"inactive"};var d=[];this.getAllStates=function(){return d},void 0===t.checkForInactiveTracks&&(t.checkForInactiveTracks=!1);i=this;!function r(){if(s&&!1!==t.checkForInactiveTracks)return!1===function(){if("active"in e){if(!e.active)return!1}else if("ended"in e&&e.ended)return!1;return!0}()?(t.disableLogs||console.log("MediaStream seems stopped."),void i.stop()):void setTimeout(r,1e3)}(),this.name="MediaStreamRecorder",this.toString=function(){return this.name}}function T(e,i){if(!b(e,"audio").length)throw"Your stream has no audio tracks.";var r,s=this,a=[],n=[],o=!1,l=0,d=2,c=(i=i||{}).desiredSampRate;function u(){if(!1===i.checkForInactiveTracks)return!0;if("active"in e){if(!e.active)return!1}else if("ended"in e&&e.ended)return!1;return!0}function p(e,t){function i(e,t){var i,r=e.numberOfAudioChannels,s=e.leftBuffers.slice(0),a=e.rightBuffers.slice(0),n=e.sampleRate,o=e.internalInterleavedLength,l=e.desiredSampRate;function d(e,t,i){var r=Math.round(e.length*(t/i)),s=[],a=Number((e.length-1)/(r-1));s[0]=e[0];for(var n=1;n96e3)&&(i.disableLogs||console.log("sample-rate must be under range 22050 and 96000.")),i.disableLogs||i.desiredSampRate&&console.log("Desired sample-rate: "+i.desiredSampRate);var v=!1;function _(){a=[],n=[],l=0,E=!1,o=!1,v=!1,f=null,s.leftchannel=a,s.rightchannel=n,s.numberOfAudioChannels=d,s.desiredSampRate=c,s.sampleRate=A,s.recordingLength=l,S={left:[],right:[],recordingLength:0}}function w(){r&&(r.onaudioprocess=null,r.disconnect(),r=null),y&&(y.disconnect(),y=null),_()}this.pause=function(){v=!0},this.resume=function(){if(!1===u())throw"Please make sure MediaStream is active.";if(!o)return i.disableLogs||console.log("Seems recording has been restarted."),void this.record();v=!1},this.clearRecordedData=function(){i.checkForInactiveTracks=!1,o&&this.stop(w),w()},this.name="StereoAudioRecorder",this.toString=function(){return this.name};var E=!1;r.onaudioprocess=function(e){if(!v)if(!1===u()&&(i.disableLogs||console.log("MediaStream seems stopped."),r.disconnect(),o=!1),o){E||(E=!0,i.onAudioProcessStarted&&i.onAudioProcessStarted(),i.initCallback&&i.initCallback());var t=e.inputBuffer.getChannelData(0),h=new Float32Array(t);if(a.push(h),2===d){var c=e.inputBuffer.getChannelData(1),p=new Float32Array(c);n.push(p)}l+=g,s.recordingLength=l,void 0!==i.timeSlice&&(S.recordingLength+=g,S.left.push(h),2===d&&S.right.push(p))}else y&&(y.disconnect(),y=null)},f.createMediaStreamDestination?r.connect(f.createMediaStreamDestination()):r.connect(f.destination),this.leftchannel=a,this.rightchannel=n,this.numberOfAudioChannels=d,this.desiredSampRate=c,this.sampleRate=A,s.recordingLength=l;var S={left:[],right:[],recordingLength:0};function T(){o&&"function"==typeof i.ondataavailable&&void 0!==i.timeSlice&&(S.left.length?(p({desiredSampRate:c,sampleRate:A,numberOfAudioChannels:d,internalInterleavedLength:S.recordingLength,leftBuffers:S.left,rightBuffers:1===d?[]:S.right},(function(e,t){var r=new Blob([t],{type:"audio/wav"});i.ondataavailable(r),setTimeout(T,i.timeSlice)})),S={left:[],right:[],recordingLength:0}):setTimeout(T,i.timeSlice))}}function k(e,t){if("undefined"==typeof html2canvas)throw"Please link: https://www.webrtc-experiment.com/screenshot.js";(t=t||{}).frameInterval||(t.frameInterval=10);var i=!1;["captureStream","mozCaptureStream","webkitCaptureStream"].forEach((function(e){e in document.createElement("canvas")&&(i=!0)}));var r,s,a,n=!(!window.webkitRTCPeerConnection&&!window.webkitGetUserMedia||!window.chrome),o=50,l=navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./);if(n&&l&&l[2]&&(o=parseInt(l[2],10)),n&&o<52&&(i=!1),t.useWhammyRecorder&&(i=!1),i)if(t.disableLogs||console.log("Your browser supports both MediRecorder API and canvas.captureStream!"),e instanceof HTMLCanvasElement)r=e;else{if(!(e instanceof CanvasRenderingContext2D))throw"Please pass either HTMLCanvasElement or CanvasRenderingContext2D.";r=e.canvas}else navigator.mozGetUserMedia&&(t.disableLogs||console.error("Canvas recording is NOT supported in Firefox."));this.record=function(){if(a=!0,i&&!t.useWhammyRecorder){var e;"captureStream"in r?e=r.captureStream(25):"mozCaptureStream"in r?e=r.mozCaptureStream(25):"webkitCaptureStream"in r&&(e=r.webkitCaptureStream(25));try{var n=new m;n.addTrack(b(e,"video")[0]),e=n}catch(e){}if(!e)throw"captureStream API are NOT available.";(s=new S(e,{mimeType:t.mimeType||"video/webm"})).record()}else p.frames=[],u=(new Date).getTime(),c();t.initCallback&&t.initCallback()},this.getWebPImages=function(i){if("canvas"===e.nodeName.toLowerCase()){var r=p.frames.length;p.frames.forEach((function(e,i){var s=r-i;t.disableLogs||console.log(s+"/"+r+" frames remaining"),t.onEncodingCallback&&t.onEncodingCallback(s,r);var a=e.image.toDataURL("image/webp",1);p.frames[i].image=a})),t.disableLogs||console.log("Generating WebM"),i()}else i()},this.stop=function(e){a=!1;var r=this;i&&s?s.stop(e):this.getWebPImages((function(){p.compile((function(i){t.disableLogs||console.log("Recording finished!"),r.blob=i,r.blob.forEach&&(r.blob=new Blob([],{type:"video/webm"})),e&&e(r.blob),p.frames=[]}))}))};var d=!1;function h(){p.frames=[],a=!1,d=!1}function c(){if(d)return u=(new Date).getTime(),setTimeout(c,500);if("canvas"===e.nodeName.toLowerCase()){var i=(new Date).getTime()-u;return u=(new Date).getTime(),p.frames.push({image:(r=document.createElement("canvas"),s=r.getContext("2d"),r.width=e.width,r.height=e.height,s.drawImage(e,0,0),r),duration:i}),void(a&&setTimeout(c,t.frameInterval))}var r,s;html2canvas(e,{grabMouse:void 0===t.showMousePointer||t.showMousePointer,onrendered:function(e){var i=(new Date).getTime()-u;if(!i)return setTimeout(c,t.frameInterval);u=(new Date).getTime(),p.frames.push({image:e.toDataURL("image/webp",1),duration:i}),a&&setTimeout(c,t.frameInterval)}})}this.pause=function(){d=!0,s instanceof S&&s.pause()},this.resume=function(){d=!1,s instanceof S?s.resume():a||this.record()},this.clearRecordedData=function(){a&&this.stop(h),h()},this.name="CanvasRecorder",this.toString=function(){return this.name};var u=(new Date).getTime(),p=new D.Video(100)}function C(e,t){function i(e){e=void 0!==e?e:10;var t=(new Date).getTime()-l;return t?a?(l=(new Date).getTime(),setTimeout(i,100)):(l=(new Date).getTime(),o.paused&&o.play(),c.drawImage(o,0,0,h.width,h.height),d.frames.push({duration:t,image:h.toDataURL("image/webp")}),void(s||setTimeout(i,e,e))):setTimeout(i,e,e)}function r(e,t,i,r,s){var a=document.createElement("canvas");a.width=h.width,a.height=h.height;var n,o,l,d=a.getContext("2d"),c=[],u=-1===t,p=t&&t>0&&t<=e.length?t:e.length,f=0,y=0,m=0,g=Math.sqrt(Math.pow(255,2)+Math.pow(255,2)+Math.pow(255,2)),A=i&&i>=0&&i<=1?i:0,v=r&&r>=0&&r<=1?r:0,b=!1;o=-1,l=(n={length:p,functionToLoop:function(t,i){var r,s,a,n=function(){!b&&a-r<=a*v||(u&&(b=!0),c.push(e[i])),t()};if(b)n();else{var o=new Image;o.onload=function(){d.drawImage(o,0,0,h.width,h.height);var e=d.getImageData(0,0,h.width,h.height);r=0,s=e.data.length,a=e.data.length/4;for(var t=0;t127)throw"TrackNumber > 127 not supported";var i=[128|e.trackNum,e.timecode>>8,255&e.timecode,t].map((function(e){return String.fromCharCode(e)})).join("")+e.frame;return i}({discardable:0,frame:e.data.slice(4),invisible:0,keyframe:1,lacing:0,trackNum:1,timecode:Math.round(t)});return t+=e.duration,{data:i,id:163}})))}function i(e){for(var t=[];e>0;)t.push(255&e),e>>=8;return new Uint8Array(t.reverse())}function r(e){var t=[];e=(e.length%8?new Array(9-e.length%8).join("0"):"")+e;for(var i=0;i1?2*i[0].width:i[0].width;var n=1;3!==e&&4!==e||(n=2),5!==e&&6!==e||(n=3),7!==e&&8!==e||(n=4),9!==e&&10!==e||(n=5),a.height=i[0].height*n}else a.width=o.width||360,a.height=o.height||240;t&&t instanceof HTMLVideoElement&&p(t),i.forEach((function(e,t){p(e,t)})),setTimeout(u,o.frameInterval)}}function p(e,t){if(!s){var i=0,r=0,a=e.width,o=e.height;1===t&&(i=e.width),2===t&&(r=e.height),3===t&&(i=e.width,r=e.height),4===t&&(r=2*e.height),5===t&&(i=e.width,r=2*e.height),6===t&&(r=3*e.height),7===t&&(i=e.width,r=3*e.height),void 0!==e.stream.left&&(i=e.stream.left),void 0!==e.stream.top&&(r=e.stream.top),void 0!==e.stream.width&&(a=e.stream.width),void 0!==e.stream.height&&(o=e.stream.height),n.drawImage(e,i,r,a,o),"function"==typeof e.stream.onRender&&e.stream.onRender(n,i,r,a,o,t)}}function f(e){var t=document.createElement("video");return function(e,t){"srcObject"in t?t.srcObject=e:"mozSrcObject"in t?t.mozSrcObject=e:t.srcObject=e}(e,t),t.className=i,t.muted=!0,t.volume=0,t.width=e.width||o.width||360,t.height=e.height||o.height||240,t.play(),t}function y(t){r=[],(t=t||e).forEach((function(e){if(e.getTracks().filter((function(e){return"video"===e.kind})).length){var t=f(e);t.stream=e,r.push(t)}}))}void 0!==l?c.AudioContext=l:"undefined"!=typeof webkitAudioContext&&(c.AudioContext=webkitAudioContext),this.startDrawingFrames=function(){u()},this.appendStreams=function(t){if(!t)throw"First parameter is required.";t instanceof Array||(t=[t]),t.forEach((function(t){var i=new h;if(t.getTracks().filter((function(e){return"video"===e.kind})).length){var s=f(t);s.stream=t,r.push(s),i.addTrack(t.getTracks().filter((function(e){return"video"===e.kind}))[0])}if(t.getTracks().filter((function(e){return"audio"===e.kind})).length){var a=o.audioContext.createMediaStreamSource(t);o.audioDestination=o.audioContext.createMediaStreamDestination(),a.connect(o.audioDestination),i.addTrack(o.audioDestination.stream.getTracks().filter((function(e){return"audio"===e.kind}))[0])}e.push(i)}))},this.releaseStreams=function(){r=[],s=!0,o.gainNode&&(o.gainNode.disconnect(),o.gainNode=null),o.audioSources.length&&(o.audioSources.forEach((function(e){e.disconnect()})),o.audioSources=[]),o.audioDestination&&(o.audioDestination.disconnect(),o.audioDestination=null),o.audioContext&&o.audioContext.close(),o.audioContext=null,n.clearRect(0,0,a.width,a.height),a.stream&&(a.stream.stop(),a.stream=null)},this.resetVideoStreams=function(e){!e||e instanceof Array||(e=[e]),y(e)},this.name="MultiStreamsMixer",this.toString=function(){return this.name},this.getMixedStream=function(){s=!1;var t=function(){var e;y(),"captureStream"in a?e=a.captureStream():"mozCaptureStream"in a?e=a.mozCaptureStream():o.disableLogs||console.error("Upgrade to latest Chrome or otherwise enable this flag: chrome://flags/#enable-experimental-web-platform-features");var t=new h;return e.getTracks().filter((function(e){return"video"===e.kind})).forEach((function(e){t.addTrack(e)})),a.stream=t,t}(),i=function(){c.AudioContextConstructor||(c.AudioContextConstructor=new c.AudioContext);o.audioContext=c.AudioContextConstructor,o.audioSources=[],!0===o.useGainNode&&(o.gainNode=o.audioContext.createGain(),o.gainNode.connect(o.audioContext.destination),o.gainNode.gain.value=0);var t=0;if(e.forEach((function(e){if(e.getTracks().filter((function(e){return"audio"===e.kind})).length){t++;var i=o.audioContext.createMediaStreamSource(e);!0===o.useGainNode&&i.connect(o.gainNode),o.audioSources.push(i)}})),!t)return;return o.audioDestination=o.audioContext.createMediaStreamDestination(),o.audioSources.forEach((function(e){e.connect(o.audioDestination)})),o.audioDestination.stream}();return i&&i.getTracks().filter((function(e){return"audio"===e.kind})).forEach((function(e){t.addTrack(e)})),e.forEach((function(e){e.fullcanvas})),t}}function I(e,t){e=e||[];var i,r,s=this;(t=t||{elementClass:"multi-streams-mixer",mimeType:"video/webm",video:{width:360,height:240}}).frameInterval||(t.frameInterval=10),t.video||(t.video={}),t.video.width||(t.video.width=360),t.video.height||(t.video.height=240),this.record=function(){var s;i=new L(e,t.elementClass||"multi-streams-mixer"),(s=[],e.forEach((function(e){b(e,"video").forEach((function(e){s.push(e)}))})),s).length&&(i.frameInterval=t.frameInterval||10,i.width=t.video.width||360,i.height=t.video.height||240,i.startDrawingFrames()),t.previewStream&&"function"==typeof t.previewStream&&t.previewStream(i.getMixedStream()),(r=new S(i.getMixedStream(),t)).record()},this.stop=function(e){r&&r.stop((function(t){s.blob=t,e(t),s.clearRecordedData()}))},this.pause=function(){r&&r.pause()},this.resume=function(){r&&r.resume()},this.clearRecordedData=function(){r&&(r.clearRecordedData(),r=null),i&&(i.releaseStreams(),i=null)},this.addStreams=function(s){if(!s)throw"First parameter is required.";s instanceof Array||(s=[s]),e.concat(s),r&&i&&(i.appendStreams(s),t.previewStream&&"function"==typeof t.previewStream&&t.previewStream(i.getMixedStream()))},this.resetVideoStreams=function(e){i&&(!e||e instanceof Array||(e=[e]),i.resetVideoStreams(e))},this.getMixer=function(){return i},this.name="MultiStreamRecorder",this.toString=function(){return this.name}}function P(e,t){var i,r,s;function a(){return new ReadableStream({start:function(r){var s=document.createElement("canvas"),a=document.createElement("video"),n=!0;a.srcObject=e,a.muted=!0,a.height=t.height,a.width=t.width,a.volume=0,a.onplaying=function(){s.width=t.width,s.height=t.height;var e=s.getContext("2d"),o=1e3/t.frameRate,l=setInterval((function(){if(i&&(clearInterval(l),r.close()),n&&(n=!1,t.onVideoProcessStarted&&t.onVideoProcessStarted()),e.drawImage(a,0,0),"closed"!==r._controlledReadableStream.state)try{r.enqueue(e.getImageData(0,0,t.width,t.height))}catch(e){}}),o)},a.play()}})}function n(e,l){if(!t.workerPath&&!l)return i=!1,void fetch("https://unpkg.com/webm-wasm@latest/dist/webm-worker.js").then((function(t){t.arrayBuffer().then((function(t){n(e,t)}))}));if(!t.workerPath&&l instanceof ArrayBuffer){var d=new Blob([l],{type:"text/javascript"});t.workerPath=h.createObjectURL(d)}t.workerPath||console.error("workerPath parameter is missing."),(r=new Worker(t.workerPath)).postMessage(t.webAssemblyPath||"https://unpkg.com/webm-wasm@latest/dist/webm-wasm.wasm"),r.addEventListener("message",(function(e){"READY"===e.data?(r.postMessage({width:t.width,height:t.height,bitrate:t.bitrate||1200,timebaseDen:t.frameRate||30,realtime:t.realtime}),a().pipeTo(new WritableStream({write:function(e){i?console.error("Got image, but recorder is finished!"):r.postMessage(e.data.buffer,[e.data.buffer])}}))):e.data&&(s||o.push(e.data))}))}"undefined"!=typeof ReadableStream&&"undefined"!=typeof WritableStream||console.error("Following polyfill is strongly recommended: https://unpkg.com/@mattiasbuelens/web-streams-polyfill/dist/polyfill.min.js"),(t=t||{}).width=t.width||640,t.height=t.height||480,t.frameRate=t.frameRate||30,t.bitrate=t.bitrate||1200,t.realtime=t.realtime||!0,this.record=function(){o=[],s=!1,this.blob=null,n(e),"function"==typeof t.initCallback&&t.initCallback()},this.pause=function(){s=!0},this.resume=function(){s=!1};var o=[];this.stop=function(e){i=!0;var t=this;!function(e){r?(r.addEventListener("message",(function(t){null===t.data&&(r.terminate(),r=null,e&&e())})),r.postMessage(null)):e&&e()}((function(){t.blob=new Blob(o,{type:"video/webm"}),e(t.blob)}))},this.name="WebAssemblyRecorder",this.toString=function(){return this.name},this.clearRecordedData=function(){o=[],s=!1,this.blob=null},this.blob=null}void 0!==t&&(t.DiskStorage=R),void 0!==t&&(t.GifRecorder=x),void 0===t&&(e.exports=L),void 0!==t&&(t.MultiStreamRecorder=I),void 0!==t&&(t.RecordRTCPromisesHandler=function(e,i){if(!this)throw'Use "new RecordRTCPromisesHandler()"';if(void 0===e)throw'First argument "MediaStream" is required.';var r=this;r.recordRTC=new t(e,i),this.startRecording=function(){return new Promise((function(e,t){try{r.recordRTC.startRecording(),e()}catch(e){t(e)}}))},this.stopRecording=function(){return new Promise((function(e,t){try{r.recordRTC.stopRecording((function(i){r.blob=r.recordRTC.getBlob(),r.blob&&r.blob.size?e(i):t("Empty blob.",r.blob)}))}catch(e){t(e)}}))},this.pauseRecording=function(){return new Promise((function(e,t){try{r.recordRTC.pauseRecording(),e()}catch(e){t(e)}}))},this.resumeRecording=function(){return new Promise((function(e,t){try{r.recordRTC.resumeRecording(),e()}catch(e){t(e)}}))},this.getDataURL=function(e){return new Promise((function(e,t){try{r.recordRTC.getDataURL((function(t){e(t)}))}catch(e){t(e)}}))},this.getBlob=function(){return new Promise((function(e,t){try{e(r.recordRTC.getBlob())}catch(e){t(e)}}))},this.getInternalRecorder=function(){return new Promise((function(e,t){try{e(r.recordRTC.getInternalRecorder())}catch(e){t(e)}}))},this.reset=function(){return new Promise((function(e,t){try{e(r.recordRTC.reset())}catch(e){t(e)}}))},this.destroy=function(){return new Promise((function(e,t){try{e(r.recordRTC.destroy())}catch(e){t(e)}}))},this.getState=function(){return new Promise((function(e,t){try{e(r.recordRTC.getState())}catch(e){t(e)}}))},this.blob=null,this.version="5.6.2"}),void 0!==t&&(t.WebAssemblyRecorder=P)}));class Mn{constructor(e){this._buffer=e,this._buffer_index=0,this._total_bytes=e.byteLength,this._total_bits=8*e.byteLength,this._current_word=0,this._current_word_bits_left=0}destroy(){this._buffer=null}_fillCurrentWord(){let e=this._total_bytes-this._buffer_index;if(e<=0)return void console.error("ExpGolomb: _fillCurrentWord() but no bytes available",this._total_bytes,this._buffer_index);let t=Math.min(4,e),i=new Uint8Array(4);i.set(this._buffer.subarray(this._buffer_index,this._buffer_index+t)),this._current_word=new DataView(i.buffer).getUint32(0,!1),this._buffer_index+=t,this._current_word_bits_left=8*t}readBits(e){if(e>32&&console.error("ExpGolomb: readBits() bits exceeded max 32bits!"),e<=this._current_word_bits_left){let t=this._current_word>>>32-e;return this._current_word<<=e,this._current_word_bits_left-=e,t}let t=this._current_word_bits_left?this._current_word:0;t>>>=32-this._current_word_bits_left;let i=e-this._current_word_bits_left;this._fillCurrentWord();let r=Math.min(i,this._current_word_bits_left),s=this._current_word>>>32-r;return this._current_word<<=r,this._current_word_bits_left-=r,t=t<>>e)return this._current_word<<=e,this._current_word_bits_left-=e,e;return this._fillCurrentWord(),e+this._skipLeadingZero()}readUEG(){let e=this._skipLeadingZero();return this.readBits(e+1)-1}readSEG(){let e=this.readUEG();return 1&e?e+1>>>1:-1*(e>>>1)}}class Un{static _ebsp2rbsp(e){let t=e,i=t.byteLength,r=new Uint8Array(i),s=0;for(let e=0;e=2&&3===t[e]&&0===t[e-1]&&0===t[e-2]||(r[s]=t[e],s++);return new Uint8Array(r.buffer,0,s)}static parseSPS(e){let t=Un._ebsp2rbsp(e),i=new Mn(t);i.readByte();let r=i.readByte();i.readByte();let s=i.readByte();i.readUEG();let a=Un.getProfileString(r),n=Un.getLevelString(s),o=1,l=420,d=[0,420,422,444],h=8;if((100===r||110===r||122===r||244===r||44===r||83===r||86===r||118===r||128===r||138===r||144===r)&&(o=i.readUEG(),3===o&&i.readBits(1),o<=3&&(l=d[o]),h=i.readUEG()+8,i.readUEG(),i.readBits(1),i.readBool())){let e=3!==o?8:12;for(let t=0;t0&&e<16?(b=[1,12,10,16,40,24,20,32,80,18,15,64,160,4,3,2][e-1],_=[1,11,11,11,33,11,11,11,33,11,11,33,99,3,2,1][e-1]):255===e&&(b=i.readByte()<<8|i.readByte(),_=i.readByte()<<8|i.readByte())}if(i.readBool()&&i.readBool(),i.readBool()&&(i.readBits(4),i.readBool()&&i.readBits(24)),i.readBool()&&(i.readUEG(),i.readUEG()),i.readBool()){let e=i.readBits(32),t=i.readBits(32);E=i.readBool(),S=t,T=2*e,w=S/T}}let k=1;1===b&&1===_||(k=b/_);let C=0,D=0;if(0===o)C=1,D=2-y;else{C=3===o?1:2,D=(1===o?2:1)*(2-y)}let R=16*(p+1),x=16*(f+1)*(2-y);R-=(m+g)*C,x-=(A+v)*D;let L=Math.ceil(R*k);return i.destroy(),i=null,{profile_string:a,level_string:n,bit_depth:h,ref_frames:u,chroma_format:l,chroma_format_string:Un.getChromaFormatString(l),frame_rate:{fixed:E,fps:w,fps_den:T,fps_num:S},sar_ratio:{width:b,height:_},codec_size:{width:R,height:x},present_size:{width:L,height:x}}}static parseSPS$2(e){let t=e.subarray(1,4),i="avc1.";for(let e=0;e<3;e++){let r=t[e].toString(16);r.length<2&&(r="0"+r),i+=r}let r=Un._ebsp2rbsp(e),s=new Mn(r);s.readByte();let a=s.readByte();s.readByte();let n=s.readByte();s.readUEG();let o=Un.getProfileString(a),l=Un.getLevelString(n),d=1,h=420,c=[0,420,422,444],u=8,p=8;if((100===a||110===a||122===a||244===a||44===a||83===a||86===a||118===a||128===a||138===a||144===a)&&(d=s.readUEG(),3===d&&s.readBits(1),d<=3&&(h=c[d]),u=s.readUEG()+8,p=s.readUEG()+8,s.readBits(1),s.readBool())){let e=3!==d?8:12;for(let t=0;t0&&e<16?(E=[1,12,10,16,40,24,20,32,80,18,15,64,160,4,3,2][e-1],S=[1,11,11,11,33,11,11,11,33,11,11,33,99,3,2,1][e-1]):255===e&&(E=s.readByte()<<8|s.readByte(),S=s.readByte()<<8|s.readByte())}if(s.readBool()&&s.readBool(),s.readBool()&&(s.readBits(4),s.readBool()&&s.readBits(24)),s.readBool()&&(s.readUEG(),s.readUEG()),s.readBool()){let e=s.readBits(32),t=s.readBits(32);k=s.readBool(),C=t,D=2*e,T=C/D}}let R=1;1===E&&1===S||(R=E/S);let x=0,L=0;if(0===d)x=1,L=2-A;else{x=3===d?1:2,L=(1===d?2:1)*(2-A)}let I=16*(m+1),P=16*(g+1)*(2-A);I-=(v+b)*x,P-=(_+w)*L;let B=Math.ceil(I*R);return s.destroy(),s=null,{codec_mimetype:i,profile_idc:a,level_idc:n,profile_string:o,level_string:l,chroma_format_idc:d,bit_depth:u,bit_depth_luma:u,bit_depth_chroma:p,ref_frames:y,chroma_format:h,chroma_format_string:Un.getChromaFormatString(h),frame_rate:{fixed:k,fps:T,fps_den:D,fps_num:C},sar_ratio:{width:E,height:S},codec_size:{width:I,height:P},present_size:{width:B,height:P}}}static _skipScalingList(e,t){let i=8,r=8,s=0;for(let a=0;a=this.buflen)return this.iserro=!0,0;this.iserro=!1,i=this.bufoff+e>8?8-this.bufoff:e,t<<=i,t+=this.buffer[this.bufpos]>>8-this.bufoff-i&255>>8-i,this.bufoff+=i,e-=i,8==this.bufoff&&(this.bufpos++,this.bufoff=0)}return t}look(e){let t=this.bufpos,i=this.bufoff,r=this.read(e);return this.bufpos=t,this.bufoff=i,r}read_golomb(){let e;for(e=0;0===this.read(1)&&!this.iserro;e++);return(1<>>24&255,e>>>16&255,e>>>8&255,255&e]),r=new Uint8Array(e+4);r.set(i,0),r.set(t.sps,4),t.sps=r}if(t.pps){const e=t.pps.byteLength,i=new Uint8Array([e>>>24&255,e>>>16&255,e>>>8&255,255&e]),r=new Uint8Array(e+4);r.set(i,0),r.set(t.pps,4),t.pps=r}return t}function Nn({sps:e,pps:t}){let i=8+e.byteLength+1+2+t.byteLength,r=!1;const s=Un.parseSPS$2(e);66!==e[3]&&77!==e[3]&&88!==e[3]&&(r=!0,i+=4);let a=new Uint8Array(i);a[0]=1,a[1]=e[1],a[2]=e[2],a[3]=e[3],a[4]=255,a[5]=225;let n=e.byteLength;a[6]=n>>>8,a[7]=255&n;let o=8;a.set(e,8),o+=n,a[o]=1;let l=t.byteLength;a[o+1]=l>>>8,a[o+2]=255&l,a.set(t,o+3),o+=3+l,r&&(a[o]=252|s.chroma_format_idc,a[o+1]=248|s.bit_depth_luma-8,a[o+2]=248|s.bit_depth_chroma-8,a[o+3]=0,o+=4);const d=[23,0,0,0,0],h=new Uint8Array(d.length+a.byteLength);return h.set(d,0),h.set(a,d.length),h}function Gn(e,t){let i=[];i[0]=t?23:39,i[1]=1,i[2]=0,i[3]=0,i[4]=0;const r=new Uint8Array(i.length+e.byteLength);return r.set(i,0),r.set(e,i.length),r}function zn(e){return 31&e[0]}function Wn(e){return e===St.kSliceSEI}function Vn(e){return!function(e){return e===St.sps||e===St.pps}(e)&&!Wn(e)}function Hn(e){return e===St.iFrame}const $n=e=>{let t=e,i=t.byteLength,r=new Uint8Array(i),s=0;for(let e=0;e=2&&3===t[e]&&0===t[e-1]&&0===t[e-2]||(r[s]=t[e],s++);return new Uint8Array(r.buffer,0,s)},jn=e=>{switch(e){case 0:return"4:0:0";case 1:return"4:2:0";case 2:return"4:2:2";case 3:return"4:4:4";default:return"Unknown"}};function Kn(e,t=0){return(e[t]<<24>>>0)+(e[t+1]<<16)+(e[t+2]<<8)+(e[t+3]||0)}function qn(e,t=4){if(e.length<4)return;const i=e.length,r=[];let s,a=0;for(;a+t>>=8),a+=t,s){if(a+s>i)break;r.push(e.subarray(a,a+s)),a+=s}return r}function Yn(e){const t=e.byteLength,i=new Uint8Array(4);i[0]=t>>>24&255,i[1]=t>>>16&255,i[2]=t>>>8&255,i[3]=255&t;const r=new Uint8Array(t+4);return r.set(i,0),r.set(e,4),r}class Qn{static _ebsp2rbsp(e){let t=e,i=t.byteLength,r=new Uint8Array(i),s=0;for(let e=0;e=2&&3===t[e]&&0===t[e-1]&&0===t[e-2]||(r[s]=t[e],s++);return new Uint8Array(r.buffer,0,s)}static parseVPS(e){let t=Qn._ebsp2rbsp(e),i=new Mn(t);return i.readByte(),i.readByte(),i.readBits(4),i.readBits(2),i.readBits(6),{num_temporal_layers:i.readBits(3)+1,temporal_id_nested:i.readBool()}}static parseSPS(e){let t=Qn._ebsp2rbsp(e),i=new Mn(t);i.readByte(),i.readByte();let r=0,s=0,a=0,n=0;i.readBits(4);let o=i.readBits(3);i.readBool();let l=i.readBits(2),d=i.readBool(),h=i.readBits(5),c=i.readByte(),u=i.readByte(),p=i.readByte(),f=i.readByte(),y=i.readByte(),m=i.readByte(),g=i.readByte(),A=i.readByte(),v=i.readByte(),b=i.readByte(),_=i.readByte(),w=[],E=[];for(let e=0;e0)for(let e=o;e<8;e++)i.readBits(2);for(let e=0;e1&&i.readSEG();for(let e=0;e0&&e<=16?(B=[1,12,10,16,40,24,20,32,80,18,15,64,160,4,3,2][e-1],M=[1,11,11,11,33,11,11,11,33,11,11,33,99,3,2,1][e-1]):255===e&&(B=i.readBits(16),M=i.readBits(16))}if(i.readBool()&&i.readBool(),i.readBool()){i.readBits(3),i.readBool(),i.readBool()&&(i.readByte(),i.readByte(),i.readByte())}if(i.readBool()&&(i.readUEG(),i.readUEG()),i.readBool(),i.readBool(),i.readBool(),I=i.readBool(),I&&(i.readUEG(),i.readUEG(),i.readUEG(),i.readUEG()),i.readBool()){if(F=i.readBits(32),O=i.readBits(32),i.readBool()&&i.readUEG(),i.readBool()){let e=!1,t=!1,r=!1;e=i.readBool(),t=i.readBool(),(e||t)&&(r=i.readBool(),r&&(i.readByte(),i.readBits(5),i.readBool(),i.readBits(5)),i.readBits(4),i.readBits(4),r&&i.readBits(4),i.readBits(5),i.readBits(5),i.readBits(5));for(let s=0;s<=o;s++){let s=i.readBool();U=s;let a=!0,n=1;s||(a=i.readBool());let o=!1;if(a?i.readUEG():o=i.readBool(),o||(n=i.readUEG()+1),e){for(let e=0;e>6&3,i.general_tier_flag=e[1]>>5&1,i.general_profile_idc=31&e[1],i.general_profile_compatibility_flags=e[2]<<24|e[3]<<16|e[4]<<8|e[5],i.general_constraint_indicator_flags=e[6]<<24|e[7]<<16|e[8]<<8|e[9],i.general_constraint_indicator_flags=i.general_constraint_indicator_flags<<16|e[10]<<8|e[11],i.general_level_idc=e[12],i.min_spatial_segmentation_idc=(15&e[13])<<8|e[14],i.parallelismType=3&e[15],i.chromaFormat=3&e[16],i.bitDepthLumaMinus8=7&e[17],i.bitDepthChromaMinus8=7&e[18],i.avgFrameRate=e[19]<<8|e[20],i.constantFrameRate=e[21]>>6&3,i.numTemporalLayers=e[21]>>3&7,i.temporalIdNested=e[21]>>2&1,i.lengthSizeMinusOne=3&e[21];let r=e[22],s=e.slice(23);for(let e=0;e0)for(let t=i;t<8;t++)e.read(2);r.sub_layer_profile_space=[],r.sub_layer_tier_flag=[],r.sub_layer_profile_idc=[],r.sub_layer_profile_compatibility_flag=[],r.sub_layer_progressive_source_flag=[],r.sub_layer_interlaced_source_flag=[],r.sub_layer_non_packed_constraint_flag=[],r.sub_layer_frame_only_constraint_flag=[],r.sub_layer_level_idc=[];for(let t=0;t{let t=$n(e),i=new Mn(t);return i.readByte(),i.readByte(),i.readBits(4),i.readBits(2),i.readBits(6),{num_temporal_layers:i.readBits(3)+1,temporal_id_nested:i.readBool()}})(e),a=(e=>{let t=$n(e),i=new Mn(t);i.readByte(),i.readByte();let r=0,s=0,a=0,n=0;i.readBits(4);let o=i.readBits(3);i.readBool();let l=i.readBits(2),d=i.readBool(),h=i.readBits(5),c=i.readByte(),u=i.readByte(),p=i.readByte(),f=i.readByte(),y=i.readByte(),m=i.readByte(),g=i.readByte(),A=i.readByte(),v=i.readByte(),b=i.readByte(),_=i.readByte(),w=[],E=[];for(let e=0;e0)for(let e=o;e<8;e++)i.readBits(2);for(let e=0;e1&&i.readSEG();for(let e=0;e0&&e<16?(B=[1,12,10,16,40,24,20,32,80,18,15,64,160,4,3,2][e-1],M=[1,11,11,11,33,11,11,11,33,11,11,33,99,3,2,1][e-1]):255===e&&(B=i.readBits(16),M=i.readBits(16))}if(i.readBool()&&i.readBool(),i.readBool()&&(i.readBits(3),i.readBool(),i.readBool()&&(i.readByte(),i.readByte(),i.readByte())),i.readBool()&&(i.readUEG(),i.readUEG()),i.readBool(),i.readBool(),i.readBool(),I=i.readBool(),I&&(r+=i.readUEG(),s+=i.readUEG(),a+=i.readUEG(),n+=i.readUEG()),i.readBool()&&(F=i.readBits(32),O=i.readBits(32),i.readBool()&&(i.readUEG(),i.readBool()))){let e=!1,t=!1,r=!1;e=i.readBool(),t=i.readBool(),(e||t)&&(r=i.readBool(),r&&(i.readByte(),i.readBits(5),i.readBool(),i.readBits(5)),i.readBits(4),i.readBits(4),r&&i.readBits(4),i.readBits(5),i.readBits(5),i.readBits(5));for(let s=0;s<=o;s++){let s=i.readBool();U=s;let a=!1,n=1;s||(a=i.readBool());let o=!1;if(a?i.readSEG():o=i.readBool(),o||(cpbcnt=i.readUEG()+1),e)for(let e=0;e{let t=$n(e),i=new Mn(t);i.readByte(),i.readByte(),i.readUEG(),i.readUEG(),i.readBool(),i.readBool(),i.readBits(3),i.readBool(),i.readBool(),i.readUEG(),i.readUEG(),i.readSEG(),i.readBool(),i.readBool(),i.readBool()&&i.readUEG(),i.readSEG(),i.readSEG(),i.readBool(),i.readBool(),i.readBool(),i.readBool();let r=i.readBool(),s=i.readBool(),a=1;return s&&r?a=0:s?a=3:r&&(a=2),{parallelismType:a}})(t);r=Object.assign(r,s,a,n);let o=23+(5+e.byteLength)+(5+i.byteLength)+(5+t.byteLength),l=new Uint8Array(o);l[0]=1,l[1]=(3&r.general_profile_space)<<6|(r.general_tier_flag?1:0)<<5|31&r.general_profile_idc,l[2]=r.general_profile_compatibility_flags_1||0,l[3]=r.general_profile_compatibility_flags_2||0,l[4]=r.general_profile_compatibility_flags_3||0,l[5]=r.general_profile_compatibility_flags_4||0,l[6]=r.general_constraint_indicator_flags_1||0,l[7]=r.general_constraint_indicator_flags_2||0,l[8]=r.general_constraint_indicator_flags_3||0,l[9]=r.general_constraint_indicator_flags_4||0,l[10]=r.general_constraint_indicator_flags_5||0,l[11]=r.general_constraint_indicator_flags_6||0,l[12]=60,l[13]=240|(3840&r.min_spatial_segmentation_idc)>>8,l[14]=255&r.min_spatial_segmentation_idc,l[15]=252|3&r.parallelismType,l[16]=252|3&r.chroma_format_idc,l[17]=248|7&r.bit_depth_luma_minus8,l[18]=248|7&r.bit_depth_chroma_minus8,l[19]=0,l[20]=0,l[21]=(3&r.constant_frame_rate)<<6|(7&r.num_temporal_layers)<<3|(r.temporal_id_nested?1:0)<<2|3,l[22]=3,l[23]=128|Ct,l[24]=0,l[25]=1,l[26]=(65280&e.byteLength)>>8,l[27]=255&e.byteLength,l.set(e,28),l[23+(5+e.byteLength)+0]=128|Dt,l[23+(5+e.byteLength)+1]=0,l[23+(5+e.byteLength)+2]=1,l[23+(5+e.byteLength)+3]=(65280&i.byteLength)>>8,l[23+(5+e.byteLength)+4]=255&i.byteLength,l.set(i,23+(5+e.byteLength)+5),l[23+(5+e.byteLength+5+i.byteLength)+0]=128|Rt,l[23+(5+e.byteLength+5+i.byteLength)+1]=0,l[23+(5+e.byteLength+5+i.byteLength)+2]=1,l[23+(5+e.byteLength+5+i.byteLength)+3]=(65280&t.byteLength)>>8,l[23+(5+e.byteLength+5+i.byteLength)+4]=255&t.byteLength,l.set(t,23+(5+e.byteLength+5+i.byteLength)+5);const d=[28,0,0,0,0],h=new Uint8Array(d.length+l.byteLength);return h.set(d,0),h.set(l,d.length),h}function eo(e,t){let i=[];i[0]=t?28:44,i[1]=1,i[2]=0,i[3]=0,i[4]=0;const r=new Uint8Array(i.length+e.byteLength);return r.set(i,0),r.set(e,i.length),r}function to(e){return(126&e[0])>>1}function io(e){return!function(e){return e>=32&&e<=40}(e)}function ro(e){return e>=16&&e<=21}class so extends t{constructor(e){super(),this.TAG_NAME="recorderCommon",this.player=e,this.fileName="",this._isRecording=!1,this._recordingTimestamp=0,this.recordingInterval=null,this.sps=null,this.pps=null,this.vps=null,this.codecId=null,this.audioCodeId=null,this.metaInfo={codecWidth:0,codecHeight:0,presentWidth:0,presentHeight:0,refSampleDuration:0,timescale:1e3,avcc:null,videoType:""},this.audioMetaInfo={timescale:1e3,sampleRate:0,refSampleDuration:0,channelCount:0,codec:"",originalCodec:"",audioType:"",extraData:new Uint8Array(0)}}destroy(){this._reset(),this.sps=null,this.pps=null,this.vps=null,this.codecId=null,this.audioCodeId=null,this.metaInfo=null,this.audioMetaInfo=null}get isH264(){return this.codecId===gt}get isH265(){return this.codecId===At}setFileName(e){this.fileName=e}get isRecording(){return this._isRecording}get recording(){return this._isRecording}get recordTime(){return this._recordingTimestamp}startRecord(){}handleAddNaluTrack(e,t,i,r){}handleAddAudioTrack(e,t){}handleAddTrack(e){}stopRecordAndSave(){}startRecordingInterval(){}isWasmMp4(){return!1}stopRecordingInterval(){this.recordingInterval&&clearInterval(this.recordingInterval),this.recordingInterval=null}getToTalByteLength(){return 0}_reset(){this.fileName="",this._isRecording=!1,this._recordingTimestamp=0,this.stopRecordingInterval()}initMetaData(e,t){let i;const r=e.slice(5);if(this.codecId=t,this.metaInfo.avcc=r,t===gt)i=On(r);else if(t===At){i=function(e){let t=23;const i=e[t];if((63&i)!==Ct)return console.warn(`parseHEVCDecoderVPSAndSPSAndPPS and vpsTag is ${i}`),{};t+=2,t+=1;const r=e[t+1]|e[t]<<8;t+=2;const s=e.slice(t,t+r);t+=r;const a=e[t];if((63&a)!==Dt)return console.warn(`parseHEVCDecoderVPSAndSPSAndPPS and sps tag is ${a}`),{};t+=2,t+=1;const n=e[t+1]|e[t]<<8;t+=2;const o=e.slice(t,t+n);t+=n;const l=e[t];if((63&l)!==Rt)return console.warn(`parseHEVCDecoderVPSAndSPSAndPPS and pps tag is ${l}`),{};t+=2,t+=1;const d=e[t+1]|e[t]<<8;t+=2;const h=e.slice(t,t+d),c=new Uint8Array([n>>>24&255,n>>>16&255,n>>>8&255,255&n]),u=new Uint8Array([d>>>24&255,d>>>16&255,d>>>8&255,255&d]),p=new Uint8Array([r>>>24&255,r>>>16&255,r>>>8&255,255&r]),f=new Uint8Array(n+4);f.set(c,0),f.set(o,4);const y=new Uint8Array(d+4);y.set(u,0),y.set(h,4);const m=new Uint8Array(r+4);return m.set(p,0),m.set(s,4),{sps:f,pps:y,vps:m}}(r);const t=Xn(e);i=Object.assign(i,t)}i&&(i.vps&&(this.vps=i.vps),i.pps&&(this.pps=i.pps),i.sps&&(this.sps=i.sps),i.presentWidth&&(this.metaInfo.presentWidth=i.presentWidth),i.presentHeight&&(this.metaInfo.presentHeight=i.presentHeight),i.codecWidth&&(this.metaInfo.codecWidth=i.codecWidth),i.codecHeight&&(this.metaInfo.codecHeight=i.codecHeight),i.timescale&&(this.metaInfo.timescale=i.timescale),i.refSampleDuration&&(this.metaInfo.refSampleDuration=i.refSampleDuration),i.videoType&&(this.metaInfo.videoType=i.videoType))}initAudioMetaData(e,t){this.audioCodeId=t;const i=e[0]>>1&1;let r=null;t===_t.AAC?(r=function(e){let t={},i=new hs(e);return i.read(16),t.object_type=cs(i),t.sample_rate=us(i,t),t.chan_config=i.read(4),t.chan_config{s.onload=function(e){i.decode(this.result).forEach((function(e){t.read(e)})),t.stop();const s=r.makeMetadataSeekable(t.metadatas,t.duration,t.cues),n=this.result.slice(t.metadataSize),o=new Blob([s,n],{type:"video/mp4"});a(o)},s.readAsArrayBuffer(e)}))}startRecord(){const e=this.player.debug,t={type:"video",mimeType:"video/webm;codecs=h264",timeSlice:1e3,onTimeStamp:t=>{e.log("RecorderRTC","record timestamp :"+t),null===this._startRecordingTimestamp&&(this._startRecordingTimestamp=t),this._recordingTimestamp=(t-this._startRecordingTimestamp)/1e3},ondataavailable:t=>{this.totalByteLength+=t.size,e.log("RecorderRTC","ondataavailable",t.size)},disableLogs:!this.player._opt.debug};try{let i=null;if(this.player.getRenderType()===K?i=this.player.video.$videoElement.captureStream(25):this.player.video.mediaStream?i=this.player.video.mediaStream:this.player.isOldHls()||this.player._opt.useMSE||this.player._opt.useWCS?i=this.player.video.$videoElement.captureStream(25):this.player.isWebrtcH264()?i=this.player.webrtc.videoStream:this.player.isAliyunRtc()&&(i=this.player.video.$videoElement.captureStream(25)),!i)return e.error("RecorderRTC","startRecord error and can not create stream"),void this.player.emitError(st.recordCreateError,"can not create stream");if(this.player.audio&&this.player.audio.mediaStreamAudioDestinationNode&&this.player.audio.mediaStreamAudioDestinationNode.stream&&!this.player.audio.isStateSuspended()&&this.player.audio.hasAudio&&this.player._opt.hasAudio){const e=this.player.audio.mediaStreamAudioDestinationNode.stream;if(e.getAudioTracks().length>0){const t=e.getAudioTracks()[0];t&&t.enabled&&i.addTrack(t)}}this.recorder=Bn(i,t)}catch(t){return e.error("RecorderRTC","startRecord error",t),void this.player.emitError(st.recordCreateError,t)}this.recorder&&(this._isRecording=!0,this.player.emit(st.recording,!0),this.recorder.startRecording(),e.log("RecorderRTC","start recording"),this.player.emit(st.recordStart),this.startRecordingInterval())}startRecordingInterval(){this.stopRecordingInterval(),this.recordingInterval=window.setInterval((()=>{this.player.emit(st.recordingTimestamp,this._recordingTimestamp)}),1e3)}stopRecordAndSave(e=ft,t){return new Promise(((i,r)=>{this.recorder&&this._isRecording||r("recorder is not ready"),t&&this.setFileName(t),this.recorder.stopRecording((()=>{this.player.debug.log("RecorderRTC","stop recording");const t=(this.fileName||vs())+"."+w;if(this.recorder.getBlob(),e===yt){const e=this.recorder.getBlob();i(e),this.player.emit(st.recordBlob,e)}else i(),this.recorder.save(t);this.player.emit(st.recordEnd),this._reset(),this.player.emit(st.recording,!1)}))}))}getToTalByteLength(){return this.totalByteLength}getTotalDuration(){return this.recordTime}getType(){return w}initMetaData(){}}class no{static init(){no.types={avc1:[],avcC:[],hvc1:[],hvcC:[],btrt:[],dinf:[],dref:[],esds:[],ftyp:[],hdlr:[],mdat:[],mdhd:[],mdia:[],mfhd:[],minf:[],moof:[],moov:[],mp4a:[],mvex:[],mvhd:[],sdtp:[],stbl:[],stco:[],stsc:[],stsd:[],stsz:[],stts:[],tfdt:[],tfhd:[],traf:[],trak:[],trun:[],trex:[],tkhd:[],vmhd:[],smhd:[],".mp3":[],free:[],edts:[],elst:[],stss:[]};for(let e in no.types)no.types.hasOwnProperty(e)&&(no.types[e]=[e.charCodeAt(0),e.charCodeAt(1),e.charCodeAt(2),e.charCodeAt(3)]);let e=no.constants={};e.FTYP=new Uint8Array([105,115,111,109,0,0,2,0,105,115,111,109,105,115,111,50,97,118,99,49,109,112,52,49,0,0,0,0]),e.STSD_PREFIX=new Uint8Array([0,0,0,0,0,0,0,1]),e.STTS=new Uint8Array([0,0,0,0,0,0,0,0]),e.STSC=e.STCO=e.STTS,e.STSZ=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0]),e.HDLR_VIDEO=new Uint8Array([0,0,0,0,0,0,0,0,118,105,100,101,0,0,0,0,0,0,0,0,0,0,0,0,86,105,100,101,111,72,97,110,100,108,101,114,0]),e.HDLR_AUDIO=new Uint8Array([0,0,0,0,0,0,0,0,115,111,117,110,0,0,0,0,0,0,0,0,0,0,0,0,83,111,117,110,100,72,97,110,100,108,101,114,0]),e.DREF=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,12,117,114,108,32,0,0,0,1]),e.SMHD=new Uint8Array([0,0,0,0,0,0,0,0]),e.VMHD=new Uint8Array([0,0,0,1,0,0,0,0,0,0,0,0])}static box(e){let t=8,i=null,r=Array.prototype.slice.call(arguments,1),s=r.length;for(let e=0;e>>24&255,i[1]=t>>>16&255,i[2]=t>>>8&255,i[3]=255&t,i.set(e,4);let a=8;for(let e=0;e=Math.pow(2,32)-1?(a=16,n=new Uint8Array(i+a),n.set(new Uint8Array([0,0,0,1]),0),n.set(no.types.mdat,4),n.set(new Uint8Array([i+8>>>56&255,i+8>>>48&255,i+8>>>40&255,i+8>>>32&255,i+8>>>24&255,i+8>>>16&255,i+8>>>8&255,i+8&255]),8)):(n=new Uint8Array(i+a),n[0]=i+8>>>24&255,n[1]=i+8>>>16&255,n[2]=i+8>>>8&255,n[3]=i+8&255,n.set(no.types.mdat,4));for(let e=0;e>>24&255,e>>>16&255,e>>>8&255,255&e,t>>>24&255,t>>>16&255,t>>>8&255,255&t,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3]))}static trak(e){return no.box(no.types.trak,no.tkhd(e),no.mdia(e))}static tkhd(e){let t=e.id,i=e.duration,r=e.presentWidth,s=e.presentHeight;return no.box(no.types.tkhd,new Uint8Array([0,0,0,15,206,186,253,168,206,186,253,168,t>>>24&255,t>>>16&255,t>>>8&255,255&t,0,0,0,0,i>>>24&255,i>>>16&255,i>>>8&255,255&i,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,r>>>8&255,255&r,0,0,s>>>8&255,255&s,0,0]))}static edts(e,t){return no.box(no.types.edts,no.elst(e,t))}static elst(e,t){let i=0;for(let r=0;r>>24&255,i>>>16&255,i>>>8&255,255&i,255,255,255,255,0,1,0,0,r>>>24&255,r>>>16&255,r>>>8&255,255&r,0,0,0,0,0,1,0,0]))}static mdia(e){return no.box(no.types.mdia,no.mdhd(e),no.hdlr(e),no.minf(e))}static mdhd(e){let t=e.timescale/e.refSampleDuration,i=t*e.duration/e.timescale;return no.box(no.types.mdhd,new Uint8Array([0,0,0,0,206,186,253,168,206,186,253,168,t>>>24&255,t>>>16&255,t>>>8&255,255&t,i>>>24&255,i>>>16&255,i>>>8&255,255&i,85,196,0,0]))}static hdlr(e){let t=null;return t=no.constants.HDLR_VIDEO,no.box(no.types.hdlr,t)}static minf(e){let t=null;return t=no.box(no.types.vmhd,no.constants.VMHD),no.box(no.types.minf,t,no.dinf(),no.stbl(e))}static dinf(){return no.box(no.types.dinf,no.box(no.types.dref,no.constants.DREF))}static stbl(e){let t=e.samples,i=[{No:1,num:0,sampleDelte:1,chunkNo:1,duration:t[0].duration}],r=[t[0].duration],s=t.length;for(let e=0;e>>24&255,t>>>16&255,t>>>8&255,255&t]),r=i.byteLength,s=new Uint8Array(r+8*t);s.set(i,0);for(let i=0;i>>24&255,e[i].num>>>16&255,e[i].num>>>8&255,255&e[i].num,e[i].sampleDelte>>>24&255,e[i].sampleDelte>>>16&255,e[i].sampleDelte>>>8&255,255&e[i].sampleDelte]),r),r+=8;return no.box(no.types.stts,s)}static stss(e){let t=[],i=e.length;for(let r=0;r>>24&255,r>>>16&255,r>>>8&255,255&r]),a=s.byteLength,n=new Uint8Array(a+4*r);n.set(s,0);for(let e=0;e>>24&255,t[e]>>>16&255,t[e]>>>8&255,255&t[e]]),a),a+=4;return no.box(no.types.stss,n)}static stsc(e){let t=e.length,i=new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t]),r=i.byteLength,s=new Uint8Array(r+12*t);s.set(i,0);for(let i=0;i>>24&255,t>>>16&255,t>>>8&255,255&t,a>>>24&255,a>>>16&255,a>>>8&255,255&a,n>>>24&255,n>>>16&255,n>>>8&255,255&n]),r),r+=12}return no.box(no.types.stsc,s)}static stsz(e){let t=e.length,i=new Uint8Array([0,0,0,0,0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t]),r=i.byteLength,s=new Uint8Array(r+4*t);s.set(i,0);for(let i=0;i>>24&255,t>>>16&255,t>>>8&255,255&t]),r),r+=4}return no.box(no.types.stsz,s)}static stco(e,t){let i=t[0].chunkOffset;return no.box(no.types.stco,new Uint8Array([0,0,0,0,0,0,0,1,i>>>24&255,i>>>16&255,i>>>8&255,255&i]))}static stsd(e){return"audio"===e.type?"mp3"===e.codec?no.box(no.types.stsd,no.constants.STSD_PREFIX,no.mp3(e)):no.box(no.types.stsd,no.constants.STSD_PREFIX,no.mp4a(e)):"avc"===e.videoType?no.box(no.types.stsd,no.constants.STSD_PREFIX,no.avc1(e)):no.box(no.types.stsd,no.constants.STSD_PREFIX,no.hvc1(e))}static mp3(e){let t=e.channelCount,i=e.sampleRate,r=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,t,0,16,0,0,0,0,i>>>8&255,255&i,0,0]);return no.box(no.types[".mp3"],r)}static mp4a(e){let t=e.channelCount,i=e.sampleRate,r=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,t,0,16,0,0,0,0,i>>>8&255,255&i,0,0]);return no.box(no.types.mp4a,r,no.esds(e))}static esds(e){let t=e.config||[],i=t.length,r=new Uint8Array([0,0,0,0,3,23+i,0,1,0,4,15+i,64,21,0,0,0,0,0,0,0,0,0,0,0,5].concat([i]).concat(t).concat([6,1,2]));return no.box(no.types.esds,r)}static avc1(e){let t=e.avcc,i=e.codecWidth,r=e.codecHeight,s=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,i>>>8&255,255&i,r>>>8&255,255&r,0,72,0,0,0,72,0,0,0,0,0,0,0,1,13,106,101,115,115,105,98,117,99,97,45,112,114,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,255,255]);return no.box(no.types.avc1,s,no.box(no.types.avcC,t))}static hvc1(e){let t=e.avcc;const i=e.codecWidth,r=e.codecHeight;let s=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,i>>>8&255,255&i,r>>>8&255,255&r,0,72,0,0,0,72,0,0,0,0,0,0,0,1,13,106,101,115,115,105,98,117,99,97,45,112,114,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,255,255]);return no.box(no.types.hvc1,s,no.box(no.types.hvcC,t))}static mvex(e){return no.box(no.types.mvex,no.trex(e))}static trex(e){let t=e.id,i=new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1]);return no.box(no.types.trex,i)}static moof(e,t){return no.box(no.types.moof,no.mfhd(e.sequenceNumber),no.traf(e,t))}static mfhd(e){let t=new Uint8Array([0,0,0,0,e>>>24&255,e>>>16&255,e>>>8&255,255&e]);return no.box(no.types.mfhd,t)}static traf(e,t){let i=e.id,r=no.box(no.types.tfhd,new Uint8Array([0,0,0,0,i>>>24&255,i>>>16&255,i>>>8&255,255&i])),s=no.box(no.types.tfdt,new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t])),a=no.sdtp(e),n=no.trun(e,a.byteLength+16+16+8+16+8+8);return no.box(no.types.traf,r,s,n,a)}static sdtp(e){let t=e.samples||[],i=t.length,r=new Uint8Array(4+i);for(let e=0;e>>24&255,r>>>16&255,r>>>8&255,255&r,t>>>24&255,t>>>16&255,t>>>8&255,255&t],0);for(let e=0;e>>24&255,t>>>16&255,t>>>8&255,255&t,r>>>24&255,r>>>16&255,r>>>8&255,255&r,s.isLeading<<2|s.dependsOn,s.isDependedOn<<6|s.hasRedundancy<<4|s.isNonSync,0,0,n>>>24&255,n>>>16&255,n>>>8&255,255&n],12+16*e)}return no.box(no.types.trun,a)}static mdat(e){return no.box(no.types.mdat,e)}}no.init();class oo extends so{constructor(e){super(e),this.TAG_NAME="recorderMP4",this._reset(),e.debug.log(this.TAG_NAME,"init")}destroy(){super.destroy(),this._reset(),this.player.debug.log(this.TAG_NAME,"destroy")}_reset(){super._reset(),this.totalDuration=0,this.totalAudioDuration=0,this.totalByteLength=0,this.totalAudioByteLength=0,this.bufferList=[],this.audioBufferList=[],this.cacheTrack={},this.audioCacheTrack={},this.sequenceNumber=0,this.audioSequenceNumber=0}startRecord(){const e=this.player.debug;this._isRecording=!0,this.player.emit(st.recording,!0),e.log(this.TAG_NAME,"start recording"),this.player.emit(st.recordStart),this.startRecordingInterval()}startRecordingInterval(){this.stopRecordingInterval(),this.recordingInterval=window.setInterval((()=>{this.player.emit(st.recordingTimestamp,this.getTotalDuration())}),1e3)}formatFmp4Track(e,t,i,r){return{id:1,sequenceNumber:++this.sequenceNumber,size:e.byteLength,dts:i,cts:r,isKeyframe:t,data:e,duration:0,flags:{isLeading:0,dependsOn:t?2:1,isDependedOn:t?1:0,hasRedundancy:0,isNonSync:t?0:1}}}formatAudioFmp4Track(e,t){return{id:2,sequenceNumber:++this.audioSequenceNumber,size:e.byteLength,dts:t,pts:t,cts:0,data:new Uint8Array(e),duration:0,originalDts:t,flags:{isLeading:0,dependsOn:1,isDependedOn:0,hasRedundancy:0}}}handleAddNaluTrack(e,t,i,r){this.cacheTrack.id&&i>=this.cacheTrack.dts?(this.cacheTrack.duration=i-this.cacheTrack.dts,this.handleAddFmp4Track(this.cacheTrack)):this.cacheTrack={},this.cacheTrack=this.formatFmp4Track(e,t,i,r)}handleAddAudioTrack(e,t){}handleAddFmp4Track(e){if(!this.isRecording)return void this.player.debug.error(this.TAG_NAME,"handleAddFmp4Track, isRecording is false ");if((null===this.sps||null===this.pps)&&this.isH264)return void this.player.debug.error(this.TAG_NAME,"handleAddFmp4Track, is h264 and this.sps or this.pps is null ");if((null===this.sps||null===this.pps||null===this.vps)&&this.isH265)return void this.player.debug.error(this.TAG_NAME,"handleAddFmp4Track, is h265 and this.sps or this.pps or this.vps is null ");const t=Object.assign({},e);t.pts=t.dts+t.cts;const i=t.data;if(t.isKeyframe)if(this.isH264){const e=new Uint8Array(this.sps.byteLength+this.pps.byteLength);e.set(this.sps,0),e.set(this.pps,this.sps.byteLength);const r=new Uint8Array(e.byteLength+i.byteLength);r.set(e,0),r.set(i,e.byteLength),t.data=r}else if(this.isH265){const e=new Uint8Array(this.sps.byteLength+this.pps.byteLength+this.vps.byteLength);e.set(this.vps,0),e.set(this.sps,this.vps.byteLength),e.set(this.pps,this.vps.byteLength+this.sps.byteLength);const r=new Uint8Array(e.byteLength+i.byteLength);r.set(e,0),r.set(i,e.byteLength),t.data=r}t.size=t.data.byteLength,this.totalDuration+=t.duration,this.totalByteLength+=t.data.byteLength,t.duration=0,t.originalDts=t.dts,delete t.id,delete t.sequenceNumber,this.bufferList.push(t)}handleAddFmp4AudioTrack(e){const t=Object.assign({},e);t.pts=t.dts+t.cts,t.size=t.data.byteLength,this.totalAudioDuration+=t.duration,this.totalAudioByteLength+=t.data.byteLength,t.duration=0,t.originalDts=t.dts,delete t.id,delete t.sequenceNumber,this.audioBufferList.push(t)}getTotalDuration(){return this.totalDuration/1e3}getType(){return _}getToTalByteLength(){return this.totalByteLength+this.totalAudioByteLength}stopRecordAndSave(e=ft,t){return new Promise(((i,r)=>{if(!this.isRecording)return this.player.debug.error(this.TAG_NAME,"stop recording fail, isRecording is false "),r("stop recording fail, isRecording is false ");if(0===this.bufferList.length)return this.player.debug.error(this.TAG_NAME,"stop recording fail, this.bufferList.length is 0 "),r("stop recording fail, this.bufferList.length is 0 ");t&&this.setFileName(t);const s={id:1,type:"video",sps:this.sps,pps:this.pps,samples:this.bufferList,sequenceNumber:this.bufferList.length,length:0,addSampleNum:1,duration:0,...this.metaInfo},a={id:2,type:"audio",sequenceNumber:this.audioBufferList.length,samples:this.audioBufferList,...this.audioMetaInfo},n=[s];a.samples.length>0&&n.push(a),this.player.debug.log(this.TAG_NAME,`trackList length is ${n.length}`);const o=no.generateInitSegment({timescale:1e3,duration:this.totalDuration},n,this.totalByteLength+this.totalAudioByteLength);this.player.debug.log(this.TAG_NAME,"stop recording");const l=new Blob([o],{type:"application/octet-stream"});if(e===yt)i(l),this.player.emit(st.recordBlob,l);else{i();Hs((this.fileName||vs())+"."+_,l)}this.player.emit(st.recordEnd),this._reset(),this.player.emit(st.recording,!1)}))}}class lo extends so{constructor(e){super(e),this.TAG_NAME="FlvRecorderLoader",this.player=e,this._init(),this.player.debug.log(this.TAG_NAME,"init")}destroy(){super.destroy(),this._init(),this.player.debug.log(this.TAG_NAME,"destroy")}_init(){this.hasAudio=!1,this.hasVideo=!1,this.startTime=null,this.currentTime=0,this.prevTimestamp=0,this.totalByteLength=0,this.totalDuration=0,this.flvMetaData=null,this.aacSequenceHeader=null,this.videoSequenceHeader=null,this.bufferList=[]}_reset(){super._reset(),this._init()}startRecord(){const e=this.player.debug;this._isRecording=!0,this.player.emit(st.recording,!0),e.log(this.TAG_NAME,"start recording"),this.player.emit(st.recordStart),this.startRecordingInterval()}startRecordingInterval(){this.stopRecordingInterval(),this.recordingInterval=window.setInterval((()=>{this.player.emit(st.recordingTimestamp,this.getTotalDuration())}),1e3)}addMetaData(e){this.flvMetaData=e}addAACSequenceHeader(e){this.aacSequenceHeader=e}addVideoSequenceHeader(e){this.videoSequenceHeader=e}addVideo(e,t){this._setStartTime(t);const i=this._getBufferTs(t);this.hasVideo=!0,this._createBufferItem(e,ze,i)}addAudio(e,t){this._setStartTime(t);const i=this._getBufferTs(t);this.hasAudio=!0,this._createBufferItem(e,Ge,i)}_setStartTime(e){null===this.startTime&&this._isRecording&&(this.startTime=e,this.player.debug.log(this.TAG_NAME,`_setStartTime is ${e}`))}_getBufferTs(e){e>this.currentTime&&(this.currentTime=e);let t=0;return this.startTime&&e>=this.startTime&&(t=e-this.startTime),t>this.prevTimestamp?this.prevTimestamp=t:t=this.prevTimestamp,t}_createBufferItem(e,t,i){const r=this._createFlvPacket(e,t,i),s=this._createFlvTag(r);this.totalByteLength+=s.byteLength,this.bufferList.push(s)}_createFlvTag(e){let t=11+e.header.length,i=new Uint8Array(t+4);i[0]=e.header.type;let r=new DataView(i.buffer);return i[1]=e.header.length>>16&255,i[2]=e.header.length>>8&255,i[3]=255&e.header.length,i[4]=e.header.timestamp>>16&255,i[5]=e.header.timestamp>>8&255,i[6]=255&e.header.timestamp,i[7]=e.header.timestamp>>24&255,i[8]=0,i[9]=0,i[10]=0,r.setUint32(t,t),i.set(e.payload.subarray(0,e.header.length),11),i}_createFlvPacket(e=null,t=0,i=0){return{header:{length:e?e.length:0,timestamp:i,type:t},payload:e}}stopRecordAndSave(e=ft,t){return new Promise(((i,r)=>{if(!this.isRecording)return this.player.debug.error(this.TAG_NAME,"stop recording fail, isRecording is false "),r("stop recording fail, isRecording is false ");if(0===this.bufferList.length)return this.player.debug.error(this.TAG_NAME,"stop recording fail, this.bufferList.length is 0 "),r("stop recording fail, this.bufferList.length is 0 ");t&&this.setFileName(t);const s=new Uint8Array([70,76,86,1,0,0,0,0,9,0,0,0,0]);this.hasVideo&&(s[4]|=1),this.hasAudio&&(s[4]|=4);let a=[s];if(this.flvMetaData){const e=this._createFlvPacket(this.flvMetaData,We),t=this._createFlvTag(e);a.push(t)}if(this.videoSequenceHeader){const e=this._createFlvPacket(this.videoSequenceHeader,ze),t=this._createFlvTag(e);a.push(t)}if(this.aacSequenceHeader){const e=this._createFlvPacket(this.aacSequenceHeader,Ge),t=this._createFlvTag(e);a.push(t)}const n=function(e){const t=e[0].constructor;return e.reduce(((e,i)=>{const r=new t((0|e.byteLength)+(0|i.byteLength));return r.set(e,0),r.set(i,0|e.byteLength),r}),new t)}(a.concat(this.bufferList));this.player.debug.log(this.TAG_NAME,"stop recording");const o=new Blob([n],{type:"application/octet-stream"});if(e===yt)i(o),this.player.emit(st.recordBlob,o);else{i();Hs((this.fileName||vs())+"."+E,o)}this.player.emit(st.recordEnd),this._reset(),this.player.emit(st.recording,!1)}))}getTotalDuration(){let e=0;return null!==this.startTime&&null!==this.currentTime&&(e=this.currentTime-this.startTime),Math.round(e/1e3)}getType(){return E}getToTalByteLength(){return this.totalByteLength}}const ho={init:0,findFirstStartCode:1,findSecondStartCode:2};class co extends t{constructor(e){super(),this.player=e,this.isDestroyed=!1,this.reset()}destroy(){this.isDestroyed=!1,this.off(),this.reset()}reset(){this.stats=ho.init,this.tempBuffer=new Uint8Array(0),this.parsedOffset=0,this.versionLayer=0}dispatch(e,t){let i=new Uint8Array(this.tempBuffer.length+e.length);for(i.set(this.tempBuffer,0),i.set(e,this.tempBuffer.length),this.tempBuffer=i;!this.isDestroyed;){if(this.state==ho.Init){let e=!1;for(;this.tempBuffer.length-this.parsedOffset>=2&&!this.isDestroyed;)if(255==this.tempBuffer[this.parsedOffset]){if(!(!1&this.tempBuffer[this.parsedOffset+1])){this.versionLayer=this.tempBuffer[this.parsedOffset+1],this.state=ho.findFirstStartCode,this.fisrtStartCodeOffset=this.parsedOffset,this.parsedOffset+=2,e=!0;break}this.parsedOffset++}else this.parsedOffset++;if(e)continue;break}if(this.state==ho.findFirstStartCode){let e=!1;for(;this.tempBuffer.length-this.parsedOffset>=2&&!this.isDestroyed;)if(255==this.tempBuffer[this.parsedOffset]){if(this.tempBuffer[this.parsedOffset+1]==this.versionLayer){this.state=ho.findSecondStartCode,this.secondStartCodeOffset=this.parsedOffset,this.parsedOffset+=2,e=!0;break}this.parsedOffset++}else this.parsedOffset++;if(e)continue;break}if(this.state==ho.findSecondStartCode){let e=this.tempBuffer.slice(this.fisrtStartCodeOffset,this.secondStartCodeOffset);this.emit("data",e,t),this.tempBuffer=this.tempBuffer.slice(this.secondStartCodeOffset),this.fisrtStartCodeOffset=0,this.parsedOffset=2,this.state=ho.findFirstStartCode}}}}class uo extends so{constructor(e){super(e),this.TAG_NAME="recorderWasmMP4",this._reset(),this.wasmMp4Recorder=new window.EasyPlayerProMp4Recorder({debug:e._opt.debug,debugLevel:e._opt.debugLevel,debugUuid:e._opt.debugUuid,decoder:e._opt.wasmMp4RecorderDecoder}),this.mp3Demuxer=null,this.isG711=!1,e.debug.log(this.TAG_NAME,"init")}destroy(){super.destroy(),this.mp3Demuxer&&(this.mp3Demuxer.destroy(),this.mp3Demuxer=null),this.isG711=!1,this._reset(),this.player.debug.log(this.TAG_NAME,"destroy")}_reset(){super._reset(),this.cacheTrack={},this.audioCacheTrack={},this.totalDuration=0,this.totalAudioDuration=0,this.totalByteLength=0,this.totalAudioByteLength=0,this.hasAudio=!1,this.hasVideo=!1}getType(){return _}isWasmMp4(){return!0}getTotalDuration(){return this.totalDuration/1e3}getToTalByteLength(){return this.totalByteLength+this.totalAudioByteLength}startRecord(){const e=this.player.debug,t=this.player.getAudioInfo(),i=this.player.getVideoInfo(),r={};if(this.codecId){const e={type:this.codecId,width:i.width,height:i.height,extraData:this.metaInfo.avcc};r.video=e,this.hasVideo=!0}if(t.encTypeCode){this.isG711=t.encTypeCode===_t.ALAW||t.encTypeCode===_t.MULAW;const e={type:t.encTypeCode,sampleRate:t.sampleRate,channels:t.channels,extraData:this.audioMetaInfo.extraData,depth:t.depth};this.audioCodeId=t.encTypeCode,r.audio=e,this.hasAudio=!0}this.wasmMp4Recorder.startRecord(r).then((()=>{this._isRecording=!0,this.player.emit(st.recording,!0),e.log(this.TAG_NAME,"start recording"),this.player.emit(st.recordStart),this.startRecordingInterval()})).catch((t=>{e.error(this.TAG_NAME,"startRecord error",t),this.player.emitError(st.recordCreateError,t)}))}startRecordingInterval(){this.stopRecordingInterval(),this.recordingInterval=window.setInterval((()=>{this.player.emit(st.recordingTimestamp,this.getTotalDuration())}),1e3)}stopRecordAndSave(e=ft,t){return new Promise(((i,r)=>this.isRecording?0===this.totalDuration?(this.player.debug.error(this.TAG_NAME,"stop recording fail, totalDuration is 0 "),r("stop recording fail, totalDuration is 0 ")):(t&&this.setFileName(t),void this.wasmMp4Recorder.stopRecord().then((t=>{if(e===yt)i(t),this.player.emit(st.recordBlob,t);else{i();const e=this.isG711?S:_;Hs((this.fileName||vs())+"."+e,t)}})).catch((e=>{this.player.debug.error(this.TAG_NAME,"stopRecord error",e),r(e)})).finally((()=>{this.player.emit(st.recordEnd),this._reset(),this.player.emit(st.recording,!1)}))):(this.player.debug.error(this.TAG_NAME,"stop recording fail, isRecording is false "),r("stop recording fail, isRecording is false "))))}handleAddAudioTrack(e,t){this.audioCodeId===_t.MP3?(this.mp3Demuxer||(this.mp3Demuxer=new co(this.player),this.mp3Demuxer.on("data",((e,t)=>{this._handleAddAudioTrack(e,t)}))),this.mp3Demuxer.dispatch(e,t)):this._handleAddAudioTrack(e,t)}_handleAddAudioTrack(e,t){ka(this.hasAudio)||(this.audioCacheTrack.id&&t>=this.audioCacheTrack.dts?(this.audioCacheTrack.duration=t-this.audioCacheTrack.dts,this.totalAudioDuration+=this.audioCacheTrack.duration,this.totalAudioByteLength+=this.audioCacheTrack.payload.byteLength,this.wasmMp4Recorder.sendAudioFrame(this.audioCacheTrack.payload,this.audioCacheTrack.dts)):this.audioCacheTrack={},this.audioCacheTrack={id:2,payload:e,dts:t})}handleAddNaluTrack(e,t,i,r){ka(this.hasVideo)||(this.cacheTrack.id&&i>=this.cacheTrack.dts?(this.cacheTrack.duration=i-this.cacheTrack.dts,this.totalDuration+=this.cacheTrack.duration,this.totalByteLength+=this.cacheTrack.payload.byteLength,this.wasmMp4Recorder.sendVideoFrame(this.cacheTrack.payload,this.cacheTrack.isIFrame,this.cacheTrack.dts,this.cacheTrack.cts)):this.cacheTrack={},this.cacheTrack={id:1,payload:e,isIFrame:t,dts:i,cts:r})}}class po{constructor(e){return new(po.getLoaderFactory(e._opt))(e)}static getLoaderFactory(e){if(e.recordType===_){if(e.useWasm||e.useMSE||e.useWCS)return window.EasyPlayerProMp4Recorder&&e.mp4RecordUseWasm?uo:oo}else if(e.recordType===E)return lo;return ao}}function fo(e,t,i){let r=e;if(t+i=128){t.push(String.fromCharCode(65535&e)),r+=2;continue}}}else if(i[r]<240){if(fo(i,r,2)){let e=(15&i[r])<<12|(63&i[r+1])<<6|63&i[r+2];if(e>=2048&&55296!=(63488&e)){t.push(String.fromCharCode(65535&e)),r+=3;continue}}}else if(i[r]<248&&fo(i,r,3)){let e=(7&i[r])<<18|(63&i[r+1])<<12|(63&i[r+2])<<6|63&i[r+3];if(e>65536&&e<1114112){e-=65536,t.push(String.fromCharCode(e>>>10|55296)),t.push(String.fromCharCode(1023&e|56320)),r+=4;continue}}t.push(String.fromCharCode(65533)),++r}return t.join("")}let mo=function(){let e=new ArrayBuffer(2);return new DataView(e).setInt16(0,256,!0),256===new Int16Array(e)[0]}();class go{static parseScriptData(e,t,i){let r={};try{let s=go.parseValue(e,t,i),a=go.parseValue(e,t+s.size,i-s.size);r[s.data]=a.data}catch(e){console.error("AMF",e.toString())}return r}static parseObject(e,t,i){let r=go.parseString(e,t,i),s=go.parseValue(e,t+r.size,i-r.size),a=s.objectEnd;return{data:{name:r.data,value:s.data},size:r.size+s.size,objectEnd:a}}static parseVariable(e,t,i){return go.parseObject(e,t,i)}static parseString(e,t,i){let r,s=new DataView(e,t,i).getUint16(0,!mo);return r=s>0?yo(new Uint8Array(e,t+2,s)):"",{data:r,size:2+s}}static parseLongString(e,t,i){let r,s=new DataView(e,t,i).getUint32(0,!mo);return r=s>0?yo(new Uint8Array(e,t+4,s)):"",{data:r,size:4+s}}static parseDate(e,t,i){let r=new DataView(e,t,i),s=r.getFloat64(0,!mo);return s+=60*r.getInt16(8,!mo)*1e3,{data:new Date(s),size:10}}static parseValue(e,t,i){let r,s=new DataView(e,t,i),a=1,n=s.getUint8(0),o=!1;try{switch(n){case 0:r=s.getFloat64(1,!mo),a+=8;break;case 1:r=!!s.getUint8(1),a+=1;break;case 2:{let s=go.parseString(e,t+1,i-1);r=s.data,a+=s.size;break}case 3:{r={};let n=0;for(9==(16777215&s.getUint32(i-4,!mo))&&(n=3);a{window.URL.revokeObjectURL(this.workerUrl),this.workerUrl=null,this.workerClearTimeout=null}),re)}this.decoderWorker=new Worker(t),this._initDecoderWorker(),e.debug.log("decoderWorker",`init and decoder url is ${t}`),e.on(st.visibilityChange,(()=>{this.updateWorkConfig({key:"visibility",value:e.visibility})}))}destroy(){return new Promise(((e,t)=>{this.player.loaded?(this.player.debug.log("decoderWorker","has loaded and post message to destroy"),this.decoderWorker?(this.decoderWorker.postMessage({cmd:Ke}),this.destroyResolve=e,this.decoderWorkerCloseTimeout=setTimeout((()=>{this.player.debug.warn("decoderWorker","send close but not response and destroy directly"),this.decoderWorkerCloseTimeout&&(clearTimeout(this.decoderWorkerCloseTimeout),this.decoderWorkerCloseTimeout=null),this._destroy(),setTimeout((()=>{e()}),0)}),2e3)):(this.player.debug.warn("decoderWorker","has loaded but decoderWorker is null and destroy directly"),this._destroy(),setTimeout((()=>{e()}),0))):(this.player.debug.log("decoderWorker","has not loaded and destroy directly"),this._destroy(),setTimeout((()=>{e()}),0))}))}_destroy(){this.decoderWorkerCloseTimeout&&(clearTimeout(this.decoderWorkerCloseTimeout),this.decoderWorkerCloseTimeout=null),this.workerUrl&&(window.URL.revokeObjectURL(this.workerUrl),this.workerUrl=null),this.workerClearTimeout&&(clearTimeout(this.workerClearTimeout),this.workerClearTimeout=null),this.decoderWorker&&(this.decoderWorker.terminate(),this.decoderWorker.onerror=null,this.decoderWorker.onmessageerror=null,this.decoderWorker.onmessage=null,this.decoderWorker=null),this.player.debug.log("decoderWorker","destroy"),this.destroyResolve&&(this.destroyResolve(),this.destroyResolve=null)}_initDecoderWorker(){const{debug:e,events:{proxy:t}}=this.player;this.decoderWorker.onerror=e=>{this.player.debug.error("decoderWorker","onerror",e),this.player.emitError(lt.decoderWorkerInitError,e)},this.decoderWorker.onmessageerror=e=>{this.player.debug.error("decoderWorker","onmessageerror",e)},this.decoderWorker.onmessage=t=>{const i=t.data;switch(i.cmd){case ne:e.log("decoderWorker","onmessage:",ne),this.decoderWorker&&this._initWork(),this.player.loaded||this.player.emit(st.load),this.player.emit(st.decoderWorkerInit);break;case fe:e.log("decoderWorker","onmessage:",fe,i.code),this.player._times.decodeStart||(this.player._times.decodeStart=vs()),this.player.video.updateVideoInfo({encTypeCode:i.code});break;case ye:e.log("decoderWorker","onmessage:",ye,i.codecId),this.player.recorder&&this.player.recorder.initMetaData(i.buffer,i.codecId),this.player.video.updateVideoInfo({encTypeCode:i.codecId});break;case ce:e.log("decoderWorker","onmessage:",ce,i.code),this.player.audio&&this.player.audio.updateAudioInfo({encTypeCode:i.code});break;case pe:e.log("decoderWorker","onmessage:",pe),this.player.recorder&&this.player.recorder.initAudioAacExtraData(i.buffer);break;case oe:if(e.log("decoderWorker","onmessage:",oe,`width:${i.w},height:${i.h}`),$s(i.w)||$s(i.h))return void this.player.emitError(lt.videoInfoError,`video width ${i.w} or height ${i.h} is empty`);if(this.player.video.updateVideoInfo({width:i.w,height:i.h}),!this.player._opt.openWebglAlignment&&i.w/2%4!=0&&this.player.getRenderType()===K)return void this.player.emitError(lt.webglAlignmentError);this.player.video.initCanvasViewSize(),this.player._opt.playType===b&&(this.player.video.initFps(),this.player.video.initVideoDelay());break;case he:if(e.log("decoderWorker","onmessage:",he,`channels:${i.channels},sampleRate:${i.sampleRate}`),i.channels>2)return void this.player.emitError(lt.audioChannelError,`audio channel is ${i.channels}, max is 2`);this.player.audio&&(this.player.audio.updateAudioInfo(i),this.player._opt.playType===A?this.player.audio.initScriptNode():this.player._opt.playType===b&&this.player.audio.initScriptNodeDelay());break;case le:if(!this.player.video)return void e.warn("decoderWorker","onmessage render but video is null");if(this.player.isPlayer()){if(ka(this.player.video.getHasInit()))return void e.warn("decoderWorker","onmessage render but video has not init");this.player.video.render(i),this.player.handleRender(),this.player.emit(st.timeUpdate,i.ts),this.player.updateStats({dfps:!0,buf:i.delay}),this.player._times.videoStart||(this.player._times.videoStart=vs(),this.player.handlePlayToRenderTimes())}else this.player.isPlayback()&&(this.player.updateStats({dfps:!0}),ka(this.player.playbackPause)?(this.player.playback.isUseLocalCalculateTime&&this.player.playback.increaseLocalTimestamp(),this.player.playback.isUseFpsRender?this.player.video.pushData(i):this.player.video.render$2(i)):!this.player.playback.isPlaybackPauseClearCache&&this.player.playback.isCacheBeforeDecodeForFpsRender&&this.player.playback.isUseFpsRender&&this.player.video.pushData(i));break;case me:this.player.recorder&&this.player.recorder.isRecording&&this.player._opt.recordType===_&&this.player.recorder.handleAddNaluTrack(i.buffer,i.isIFrame,i.ts,i.cts);break;case ue:this.player.recorder&&this.player.recorder.isRecording&&this.player._opt.recordType===_&&this.player.recorder.isWasmMp4()&&this.player.recorder.handleAddAudioTrack(i.buffer,i.ts);break;case ge:const{webcodecsDecoder:t,mseDecoder:r}=this.player;this.player.updateStats({buf:i.delay});const s=new Uint8Array(i.payload);this.player._opt.useWCS&&!this.player._opt.useOffscreen?t.decodeVideo(s,i.ts,i.isIFrame,i.cts):this.player._opt.useMSE&&r.decodeVideo(s,i.ts,i.isIFrame,i.cts);break;case Ae:if(this.player._opt.useMSE){const e=new Uint8Array(i.payload);this.player.mseDecoder.decodeAudio(e,i.ts,i.cts)}break;case de:if(!this.player.audio)return void e.warn("decoderWorker","onmessage playAudio but audio is null");(this.player.playing&&this.player.audio||!this.player.video)&&(this.player._opt.hasVideo||this.player.handleRender(),(this.player._opt.playType===A||this.player._opt.playType===b&&(ka(this.player.playbackPause)||!this.player.playback.isPlaybackPauseClearCache&&this.player.playback.isCacheBeforeDecodeForFpsRender&&this.player.playback.isUseFpsRender))&&this.player.audio.play(i.buffer,i.ts));break;case be:if(i.type===st.streamSuccess)this.player.stream?this.player.stream.emit(st.streamSuccess):e.warn("decoderWorker","onmessage and workerFetch response stream success but stream is null");else if(i.type===st.streamRate)this.player.emit(st.kBps,(i.value/1024).toFixed(2));else if(i.type===st.streamEnd)this.player?(i.value===u&&this.player.emit(st.websocketClose,i.msg),this.player.stream?this.player.stream.emit(st.streamEnd,i.msg):e&&e.warn("decoderWorker","onmessage and workerFetch response stream end but player.stream is null")):e&&e.warn("decoderWorker","onmessage and workerFetch response stream end but player is null");else if(i.type===lt.websocketError)this.player&&this.player.stream?this.player.stream.emit(lt.websocketError,i.value):e&&e.warn("decoderWorker","onmessage and workerFetch response websocket error but stream is null");else if(i.type===lt.fetchError)this.player&&this.player.stream?this.player.stream.emit(lt.fetchError,i.value):e&&e.warn("decoderWorker","onmessage and workerFetch response fetch error but stream is null");else if(i.type===st.streamAbps)this.player.updateStats({abps:i.value});else if(i.type===st.streamVbps)this.player._times.demuxStart||(this.player._times.demuxStart=vs()),this.player.updateStats({vbps:i.value});else if(i.type===st.streamDts)this.player.updateStats({dts:i.value});else if(i.type===st.netBuf)this.player.updateStats({netBuf:i.value});else if(i.type===st.networkDelayTimeout)this.player.emit(st.networkDelayTimeout,i.value);else if(i.type===st.streamStats){const e=JSON.parse(i.value);this.player.updateStats({workerStats:e})}else i.type===st.websocketOpen&&this.player.emit(st.websocketOpen);break;case _e:this.player&&(this.player.videoIframeIntervalTs=i.value);break;case we:this.player&&this.player.updateStats({isDropping:!0});break;case Ue:this.player.decoderCheckFirstIFrame();break;case Se:this.player&&this.player.video&&this.player.video.setStreamFps(i.value);break;case ve:i.message&&-1!==i.message.indexOf(Fe)&&this.player.emitError(lt.wasmDecodeError,"");break;case Te:this.player.emitError(lt.wasmDecodeVideoNoResponseError);break;case De:this.player.emitError(lt.simdH264DecodeVideoWidthIsTooLarge);break;case ke:this.player.emitError(lt.wasmWidthOrHeightChange);break;case Ce:this.player.emitError(lt.simdDecodeError);break;case Ee:e.log("decoderWorker","onmessage:",Ee);break;case Re:e.log("decoderWorker","onmessage:",Re),this._destroy();break;case xe:this.player&&this.player.pushTempStream(i.buffer);break;case Le:this.player&&this.player.emit(st.videoSEI,{ts:i.ts,data:new Uint8Array(i.buffer)});break;case Ie:if(this.player){if(this.player.isRecordTypeFlv()){const e=new Uint8Array(i.buffer);this.player.recorder.addMetaData(e)}const e=Ao(new Uint8Array(i.buffer));e&&e.onMetaData&&this.player.updateMetaData(e.onMetaData)}break;case Pe:if(this.player&&this.player.isRecordTypeFlv()){const e=new Uint8Array(i.buffer);this.player.recorder.addAACSequenceHeader(e,i.ts)}break;case Be:if(this.player&&this.player.isRecordTypeFlv()){const e=new Uint8Array(i.buffer);this.player.recorder.addVideoSequenceHeader(e,i.ts)}break;case Me:if(this.player&&this.player.isRecordTypeFlv()&&this.player.recording){const e=new Uint8Array(i.buffer);i.type===Ne?this.player.recorder.addVideo(e,i.ts):i.type===Oe&&this.player.recorder.addAudio(e,i.ts)}break;default:this.player[i.cmd]&&this.player[i.cmd](i)}}}_initWork(){const e={debug:this.player._opt.debug,debugLevel:this.player._opt.debugLevel,debugUuid:this.player._opt.debugUuid,useOffscreen:this.player._opt.useOffscreen,useWCS:this.player._opt.useWCS,useMSE:this.player._opt.useMSE,videoBuffer:this.player._opt.videoBuffer,videoBufferDelay:this.player._opt.videoBufferDelay,openWebglAlignment:this.player._opt.openWebglAlignment,playType:this.player._opt.playType,hasAudio:this.player._opt.hasAudio,hasVideo:this.player._opt.hasVideo,playbackRate:1,playbackForwardMaxRateDecodeIFrame:this.player._opt.playbackForwardMaxRateDecodeIFrame,playbackIsCacheBeforeDecodeForFpsRender:this.player._opt.playbackConfig.isCacheBeforeDecodeForFpsRender,sampleRate:this.player.audio&&this.player.audio.audioContext&&this.player.audio.audioContext.sampleRate||0,audioBufferSize:this.player.audio&&this.player.audio.getAudioBufferSize()||1024,networkDelay:this.player._opt.networkDelay,visibility:this.player.visibility,useSIMD:this.player._opt.useSIMD,recordType:this.player._opt.recordType,checkFirstIFrame:this.player._opt.checkFirstIFrame,isM7sCrypto:this.player._opt.isM7sCrypto,isXorCrypto:this.player._opt.isXorCrypto,isSm4Crypto:this.player._opt.isSm4Crypto,sm4CryptoKey:this.player._opt.sm4CryptoKey,m7sCryptoAudio:this.player._opt.m7sCryptoAudio,isFlv:this.player._opt.isFlv,isFmp4:this.player._opt.isFmp4,isMpeg4:this.player._opt.isMpeg4,isTs:this.player._opt.isTs,isNakedFlow:this.player._opt.isNakedFlow,isHls265:this.player.isUseHls265(),isFmp4Private:this.player._opt.isFmp4Private,isEmitSEI:this.player._opt.isEmitSEI,isRecordTypeFlv:this.player.isRecordTypeFlv(),isWasmMp4:this.player.recorder&&this.player.recorder.isWasmMp4()||!1,isChrome:oa(),isDropSameTimestampGop:this.player._opt.isDropSameTimestampGop,mseDecodeAudio:this.player._opt.mseDecodeAudio,nakedFlowH265DemuxUseNew:this.player._opt.nakedFlowH265DemuxUseNew};this.decoderWorker.postMessage({cmd:Ve,opt:JSON.stringify(e)}),this.player._opt.isM7sCrypto&&(this.updateWorkConfig({key:"cryptoKey",value:this.player._opt.cryptoKey}),this.updateWorkConfig({key:"cryptoIV",value:this.player._opt.cryptoIV}))}decodeVideo(e,t,i){this.player._opt.playType===A?this.player.isUseHls265()?this._decodeVideoNoDelay(e,t,i):this._decodeVideo(e,t,i):this.player._opt.playType===b&&(this.player.video.rate>=this.player._opt.playbackForwardMaxRateDecodeIFrame?i&&(this.player.debug.log("decoderWorker",`current rate is ${this.player.video.rate},only decode i frame`),this._decodeVideoNoDelay(e,t,i)):1===this.player.video.rate?this._decodeVideo(e,t,i):this._decodeVideoNoDelay(e,t,i))}_decodeVideo(e,t,i){const r={type:Ne,ts:Math.max(t,0),isIFrame:i};this.decoderWorker.postMessage({cmd:He,buffer:e,options:r},[e.buffer])}_decodeVideoNoDelay(e,t,i){this.decoderWorker.postMessage({cmd:je,buffer:e,ts:Math.max(t,0),isIFrame:i},[e.buffer])}decodeAudio(e,t){this.player._opt.playType===A?this.player._opt.useWCS||this.player._opt.useMSE||this.player.isUseHls265()?this._decodeAudioNoDelay(e,t):this._decodeAudio(e,t):this.player._opt.playType===b&&(1===this.player.video.rate?this._decodeAudio(e,t):this._decodeAudioNoDelay(e,t))}_decodeAudio(e,t){const i={type:Oe,ts:Math.max(t,0)};this.decoderWorker.postMessage({cmd:He,buffer:e,options:i},[e.buffer])}_decodeAudioNoDelay(e,t){this.decoderWorker.postMessage({cmd:$e,buffer:e,ts:Math.max(t,0)},[e.buffer])}updateWorkConfig(e){this.decoderWorker&&this.decoderWorker.postMessage({cmd:qe,key:e.key,value:e.value})}workerFetchStream(e){const{_opt:t}=this.player,i={protocol:t.protocol,isFlv:t.isFlv,isFmp4:t.isFmp4,isMpeg4:t.isMpeg4,isNakedFlow:t.isNakedFlow,isTs:t.isTs};this.decoderWorker.postMessage({cmd:Qe,url:e,opt:JSON.stringify(i)})}clearWorkBuffer(e=!1){this.decoderWorker.postMessage({cmd:Ye,needClear:e})}workerSendMessage(e){this.decoderWorker.postMessage({cmd:Xe,message:e})}}var bo,_o="application/json, text/javascript",wo="text/html",Eo=/^(?:text|application)\/xml/i,So=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,To=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,ko=/^\s*$/,Co={},Do={},Ro="",xo={type:"GET",beforeSend:Lo,success:Lo,error:Lo,complete:Lo,context:null,xhr:function(){return new window.XMLHttpRequest},accepts:{json:_o,xml:"application/xml, text/xml",html:wo,text:"text/plain","*":"*/".concat("*")},crossDomain:!1,timeout:0,username:null,password:null,processData:!0,promise:Lo,contentType:"application/x-www-form-urlencoded; charset=UTF-8"};function Lo(){}var Io=function(e,t){"object"==typeof e&&(t=e,e=void 0);var i=Go({},t=t||{});for(var r in xo)void 0===i[r]&&(i[r]=xo[r]);try{var s={},a=new Promise((function(e,t){s.resolve=e,s.reject=t}));a.resolve=s.resolve,a.reject=s.reject,i.promise=a}catch(e){i.promise={resolve:Lo,reject:Lo}}var n=To.exec(window.location.href.toLowerCase())||[];i.url=((e||i.url||window.location.href)+"").replace(/#.*$/,"").replace(/^\/\//,n[1]+"//");var o=i.url;i.crossDomain||(i.crossDomain=/^([\w-]+:)?\/\/([^\/]+)/.test(i.url)&&RegExp.$2!==window.location.href);var l=i.dataType;if("jsonp"===l){if(!/=\?/.test(i.url)){var d=(i.jsonp||"callback")+"=?";i.url=Fo(i.url,d)}return function(e){var t,i=e.jsonpCallback||"jsonp"+Vo(),r=window.document.createElement("script"),s={abort:function(){i in window&&(window[i]=Lo)}},a=window.document.getElementsByTagName("head")[0]||window.document.documentElement;function n(i){window.clearTimeout(t),s.abort(),Mo(i.type,s,i.type,e),o()}r.onerror=function(e){n(e)},window[i]=function(i){window.clearTimeout(t),Po(i,s,e),o()},Oo(e),r.src=e.url.replace(/=\?/,"="+i),r.src=Fo(r.src,"_="+(new Date).getTime()),r.async=!0,e.scriptCharset&&(r.charset=e.scriptCharset);a.insertBefore(r,a.firstChild),e.timeout>0&&(t=window.setTimeout((function(){s.abort(),Mo("timeout",s,"timeout",e),o()}),e.timeout));function o(){r.clearAttributes?r.clearAttributes():r.onload=r.onreadystatechange=r.onerror=null,r.parentNode&&r.parentNode.removeChild(r),r=null,delete window[i]}return e.promise.abort=function(){s.abort()},e.promise.xhr=s,e.promise}(i)}Oo(i);var h=i.accepts[l]||i.accepts["*"],c={};/^([\w-]+:)\/\//.test(i.url)?RegExp.$1:window.location.protocol;var u,p=xo.xhr();i.crossDomain||c["X-Requested-With"]||(c["X-Requested-With"]="XMLHttpRequest"),i.ifModified&&(Co[o]&&(c["If-Modified-Since"]=Co[o]),Do[o]&&(c["If-None-Match"]=Do[o])),h&&(c.Accept=h,h.indexOf(",")>-1&&(h=h.split(",",2)[0]),p.overrideMimeType&&p.overrideMimeType(h));var f=!/^(?:GET|HEAD)$/.test(i.type.toUpperCase());if((i.data&&f&&!1!==i.contentType||t.contentType)&&(c["Content-Type"]=i.contentType),!1===i.cache&&!f){var y=/([?&])_=[^&]*/;i.url=y.test(o)?o.replace(y,"$1_="+Vo()):o+(/\?/.test(o)?"&":"?")+"_="+Vo()}i.headers=Go(c,i.headers||{}),p.onreadystatechange=function(){if(4===p.readyState){var e;clearTimeout(u);var t=!1;if(p.status>=200&&p.status<300||304===p.status){if(Ro=p.getAllResponseHeaders(),i.ifModified){var r=Uo("Last-Modified");r&&(Co[o]=r),(r=Uo("etag"))&&(Do[o]=r)}l=l||function(e){return e&&(e===wo?"html":e===_o?"json":Eo.test(e)&&"xml")||"text"}(p.getResponseHeader("content-type")),e=p.responseText;try{"xml"===l?e=p.responseXML:"json"===l&&(e=ko.test(e)?null:JSON.parse(e))}catch(e){t=e}t?Mo(t,"parseerror",p,i):Po(e,p,i)}else Mo(null,"error",p,i)}};var m=!("async"in i)||i.async;if(p.open(i.type,i.url,m,i.username,i.password),i.xhrFields)for(var g in i.xhrFields)p[g]=i.xhrFields[g];for(var g in i.mimeType&&p.overrideMimeType&&p.overrideMimeType(i.mimeType),i.headers)void 0!==i.headers[g]&&p.setRequestHeader(g,i.headers[g]+"");return!1===function(e,t){var i=t.context;if(!1===t.beforeSend.call(i,e,t))return!1}(p,i)?(p.abort(),!1):(i.timeout>0&&(u=window.setTimeout((function(){p.onreadystatechange=Lo,p.abort(),Mo(null,"timeout",p,i)}),i.timeout)),p.send(i.data?i.data:null),i.promise.abort=function(){p.abort()},i.promise)};function Po(e,t,i){var r=i.context,s="success";i.success.call(r,e,s,t),i.promise.resolve(e,s,t),Bo(s,t,i)}function Bo(e,t,i){var r=i.context;i.complete.call(r,t,e)}function Mo(e,t,i,r){var s=r.context;r.error.call(s,i,t,e),r.promise.reject(i,t,e),Bo(t,i,r)}function Uo(e){var t;if(!bo){for(bo={};t=So.exec(Ro);)bo[t[1].toLowerCase()]=t[2];t=bo[e.toLowerCase()]}return null===t?null:t}function Fo(e,t){return(e+"&"+t).replace(/[&?]{1,2}/,"?")}function Oo(e){!zo(e)||e.data instanceof FormData||!e.processData||(e.data=function(e,t){var i=[];return i.add=function(e,t){this.push(encodeURIComponent(e)+"="+encodeURIComponent(t))},No(i,e,t),i.join("&").replace("%20","+")}(e.data)),!e.data||e.type&&"GET"!==e.type.toUpperCase()||(e.url=Fo(e.url,e.data))}function No(e,t,i,r){var s=function(e){return"[object Array]"===Object.prototype.toString.call(e)}(t);for(var a in t){var n=t[a];r&&(a=i?r:r+"["+(s?"":a)+"]"),!r&&s?e.add(n.name,n.value):(i?s(n):zo(n))?No(e,n,i,a):e.add(a,n)}}function Go(e){for(var t=Array.prototype.slice.call(arguments,1),i=0,r=t.length;i255)return!1;return!0}function jo(e,t){if(e.buffer&&"Uint8Array"===e.name)return t&&(e=e.slice?e.slice():Array.prototype.slice.call(e)),e;if(Array.isArray(e)){if(!$o(e))throw new Error("Array contains invalid value: "+e);return new Uint8Array(e)}if(Ho(e.length)&&$o(e))return new Uint8Array(e);throw new Error("unsupported array-like object")}function Ko(e){return new Uint8Array(e)}function qo(e,t,i,r,s){null==r&&null==s||(e=e.slice?e.slice(r,s):Array.prototype.slice.call(e,r,s)),t.set(e,i)}Io.get=function(e,t,i,r){return Wo(t)&&(r=r||i,i=t,t=void 0),Io({url:e,data:t,success:i,dataType:r})},Io.post=function(e,t,i,r){return Wo(t)&&(r=r||i,i=t,t=void 0),Io({type:"POST",url:e,data:t,success:i,dataType:r})},Io.getJSON=function(e,t,i){return Wo(t)&&(i=t,t=void 0),Io({url:e,data:t,success:i,dataType:"json"})},Io.ajaxSetup=function(e,t){return t?Go(Go(e,xo),t):Go(xo,e)};var Yo,Qo={toBytes:function(e){var t=[],i=0;for(e=encodeURI(e);i191&&r<224?(t.push(String.fromCharCode((31&r)<<6|63&e[i+1])),i+=2):(t.push(String.fromCharCode((15&r)<<12|(63&e[i+1])<<6|63&e[i+2])),i+=3)}return t.join("")}},Xo=(Yo="0123456789abcdef",{toBytes:function(e){for(var t=[],i=0;i>4]+Yo[15&r])}return t.join("")}}),Jo={16:10,24:12,32:14},Zo=[1,2,4,8,16,32,64,128,27,54,108,216,171,77,154,47,94,188,99,198,151,53,106,212,179,125,250,239,197,145],el=[99,124,119,123,242,107,111,197,48,1,103,43,254,215,171,118,202,130,201,125,250,89,71,240,173,212,162,175,156,164,114,192,183,253,147,38,54,63,247,204,52,165,229,241,113,216,49,21,4,199,35,195,24,150,5,154,7,18,128,226,235,39,178,117,9,131,44,26,27,110,90,160,82,59,214,179,41,227,47,132,83,209,0,237,32,252,177,91,106,203,190,57,74,76,88,207,208,239,170,251,67,77,51,133,69,249,2,127,80,60,159,168,81,163,64,143,146,157,56,245,188,182,218,33,16,255,243,210,205,12,19,236,95,151,68,23,196,167,126,61,100,93,25,115,96,129,79,220,34,42,144,136,70,238,184,20,222,94,11,219,224,50,58,10,73,6,36,92,194,211,172,98,145,149,228,121,231,200,55,109,141,213,78,169,108,86,244,234,101,122,174,8,186,120,37,46,28,166,180,198,232,221,116,31,75,189,139,138,112,62,181,102,72,3,246,14,97,53,87,185,134,193,29,158,225,248,152,17,105,217,142,148,155,30,135,233,206,85,40,223,140,161,137,13,191,230,66,104,65,153,45,15,176,84,187,22],tl=[82,9,106,213,48,54,165,56,191,64,163,158,129,243,215,251,124,227,57,130,155,47,255,135,52,142,67,68,196,222,233,203,84,123,148,50,166,194,35,61,238,76,149,11,66,250,195,78,8,46,161,102,40,217,36,178,118,91,162,73,109,139,209,37,114,248,246,100,134,104,152,22,212,164,92,204,93,101,182,146,108,112,72,80,253,237,185,218,94,21,70,87,167,141,157,132,144,216,171,0,140,188,211,10,247,228,88,5,184,179,69,6,208,44,30,143,202,63,15,2,193,175,189,3,1,19,138,107,58,145,17,65,79,103,220,234,151,242,207,206,240,180,230,115,150,172,116,34,231,173,53,133,226,249,55,232,28,117,223,110,71,241,26,113,29,41,197,137,111,183,98,14,170,24,190,27,252,86,62,75,198,210,121,32,154,219,192,254,120,205,90,244,31,221,168,51,136,7,199,49,177,18,16,89,39,128,236,95,96,81,127,169,25,181,74,13,45,229,122,159,147,201,156,239,160,224,59,77,174,42,245,176,200,235,187,60,131,83,153,97,23,43,4,126,186,119,214,38,225,105,20,99,85,33,12,125],il=[3328402341,4168907908,4000806809,4135287693,4294111757,3597364157,3731845041,2445657428,1613770832,33620227,3462883241,1445669757,3892248089,3050821474,1303096294,3967186586,2412431941,528646813,2311702848,4202528135,4026202645,2992200171,2387036105,4226871307,1101901292,3017069671,1604494077,1169141738,597466303,1403299063,3832705686,2613100635,1974974402,3791519004,1033081774,1277568618,1815492186,2118074177,4126668546,2211236943,1748251740,1369810420,3521504564,4193382664,3799085459,2883115123,1647391059,706024767,134480908,2512897874,1176707941,2646852446,806885416,932615841,168101135,798661301,235341577,605164086,461406363,3756188221,3454790438,1311188841,2142417613,3933566367,302582043,495158174,1479289972,874125870,907746093,3698224818,3025820398,1537253627,2756858614,1983593293,3084310113,2108928974,1378429307,3722699582,1580150641,327451799,2790478837,3117535592,0,3253595436,1075847264,3825007647,2041688520,3059440621,3563743934,2378943302,1740553945,1916352843,2487896798,2555137236,2958579944,2244988746,3151024235,3320835882,1336584933,3992714006,2252555205,2588757463,1714631509,293963156,2319795663,3925473552,67240454,4269768577,2689618160,2017213508,631218106,1269344483,2723238387,1571005438,2151694528,93294474,1066570413,563977660,1882732616,4059428100,1673313503,2008463041,2950355573,1109467491,537923632,3858759450,4260623118,3218264685,2177748300,403442708,638784309,3287084079,3193921505,899127202,2286175436,773265209,2479146071,1437050866,4236148354,2050833735,3362022572,3126681063,840505643,3866325909,3227541664,427917720,2655997905,2749160575,1143087718,1412049534,999329963,193497219,2353415882,3354324521,1807268051,672404540,2816401017,3160301282,369822493,2916866934,3688947771,1681011286,1949973070,336202270,2454276571,201721354,1210328172,3093060836,2680341085,3184776046,1135389935,3294782118,965841320,831886756,3554993207,4068047243,3588745010,2345191491,1849112409,3664604599,26054028,2983581028,2622377682,1235855840,3630984372,2891339514,4092916743,3488279077,3395642799,4101667470,1202630377,268961816,1874508501,4034427016,1243948399,1546530418,941366308,1470539505,1941222599,2546386513,3421038627,2715671932,3899946140,1042226977,2521517021,1639824860,227249030,260737669,3765465232,2084453954,1907733956,3429263018,2420656344,100860677,4160157185,470683154,3261161891,1781871967,2924959737,1773779408,394692241,2579611992,974986535,664706745,3655459128,3958962195,731420851,571543859,3530123707,2849626480,126783113,865375399,765172662,1008606754,361203602,3387549984,2278477385,2857719295,1344809080,2782912378,59542671,1503764984,160008576,437062935,1707065306,3622233649,2218934982,3496503480,2185314755,697932208,1512910199,504303377,2075177163,2824099068,1841019862,739644986],rl=[2781242211,2230877308,2582542199,2381740923,234877682,3184946027,2984144751,1418839493,1348481072,50462977,2848876391,2102799147,434634494,1656084439,3863849899,2599188086,1167051466,2636087938,1082771913,2281340285,368048890,3954334041,3381544775,201060592,3963727277,1739838676,4250903202,3930435503,3206782108,4149453988,2531553906,1536934080,3262494647,484572669,2923271059,1783375398,1517041206,1098792767,49674231,1334037708,1550332980,4098991525,886171109,150598129,2481090929,1940642008,1398944049,1059722517,201851908,1385547719,1699095331,1587397571,674240536,2704774806,252314885,3039795866,151914247,908333586,2602270848,1038082786,651029483,1766729511,3447698098,2682942837,454166793,2652734339,1951935532,775166490,758520603,3000790638,4004797018,4217086112,4137964114,1299594043,1639438038,3464344499,2068982057,1054729187,1901997871,2534638724,4121318227,1757008337,0,750906861,1614815264,535035132,3363418545,3988151131,3201591914,1183697867,3647454910,1265776953,3734260298,3566750796,3903871064,1250283471,1807470800,717615087,3847203498,384695291,3313910595,3617213773,1432761139,2484176261,3481945413,283769337,100925954,2180939647,4037038160,1148730428,3123027871,3813386408,4087501137,4267549603,3229630528,2315620239,2906624658,3156319645,1215313976,82966005,3747855548,3245848246,1974459098,1665278241,807407632,451280895,251524083,1841287890,1283575245,337120268,891687699,801369324,3787349855,2721421207,3431482436,959321879,1469301956,4065699751,2197585534,1199193405,2898814052,3887750493,724703513,2514908019,2696962144,2551808385,3516813135,2141445340,1715741218,2119445034,2872807568,2198571144,3398190662,700968686,3547052216,1009259540,2041044702,3803995742,487983883,1991105499,1004265696,1449407026,1316239930,504629770,3683797321,168560134,1816667172,3837287516,1570751170,1857934291,4014189740,2797888098,2822345105,2754712981,936633572,2347923833,852879335,1133234376,1500395319,3084545389,2348912013,1689376213,3533459022,3762923945,3034082412,4205598294,133428468,634383082,2949277029,2398386810,3913789102,403703816,3580869306,2297460856,1867130149,1918643758,607656988,4049053350,3346248884,1368901318,600565992,2090982877,2632479860,557719327,3717614411,3697393085,2249034635,2232388234,2430627952,1115438654,3295786421,2865522278,3633334344,84280067,33027830,303828494,2747425121,1600795957,4188952407,3496589753,2434238086,1486471617,658119965,3106381470,953803233,334231800,3005978776,857870609,3151128937,1890179545,2298973838,2805175444,3056442267,574365214,2450884487,550103529,1233637070,4289353045,2018519080,2057691103,2399374476,4166623649,2148108681,387583245,3664101311,836232934,3330556482,3100665960,3280093505,2955516313,2002398509,287182607,3413881008,4238890068,3597515707,975967766],sl=[1671808611,2089089148,2006576759,2072901243,4061003762,1807603307,1873927791,3310653893,810573872,16974337,1739181671,729634347,4263110654,3613570519,2883997099,1989864566,3393556426,2191335298,3376449993,2106063485,4195741690,1508618841,1204391495,4027317232,2917941677,3563566036,2734514082,2951366063,2629772188,2767672228,1922491506,3227229120,3082974647,4246528509,2477669779,644500518,911895606,1061256767,4144166391,3427763148,878471220,2784252325,3845444069,4043897329,1905517169,3631459288,827548209,356461077,67897348,3344078279,593839651,3277757891,405286936,2527147926,84871685,2595565466,118033927,305538066,2157648768,3795705826,3945188843,661212711,2999812018,1973414517,152769033,2208177539,745822252,439235610,455947803,1857215598,1525593178,2700827552,1391895634,994932283,3596728278,3016654259,695947817,3812548067,795958831,2224493444,1408607827,3513301457,0,3979133421,543178784,4229948412,2982705585,1542305371,1790891114,3410398667,3201918910,961245753,1256100938,1289001036,1491644504,3477767631,3496721360,4012557807,2867154858,4212583931,1137018435,1305975373,861234739,2241073541,1171229253,4178635257,33948674,2139225727,1357946960,1011120188,2679776671,2833468328,1374921297,2751356323,1086357568,2408187279,2460827538,2646352285,944271416,4110742005,3168756668,3066132406,3665145818,560153121,271589392,4279952895,4077846003,3530407890,3444343245,202643468,322250259,3962553324,1608629855,2543990167,1154254916,389623319,3294073796,2817676711,2122513534,1028094525,1689045092,1575467613,422261273,1939203699,1621147744,2174228865,1339137615,3699352540,577127458,712922154,2427141008,2290289544,1187679302,3995715566,3100863416,339486740,3732514782,1591917662,186455563,3681988059,3762019296,844522546,978220090,169743370,1239126601,101321734,611076132,1558493276,3260915650,3547250131,2901361580,1655096418,2443721105,2510565781,3828863972,2039214713,3878868455,3359869896,928607799,1840765549,2374762893,3580146133,1322425422,2850048425,1823791212,1459268694,4094161908,3928346602,1706019429,2056189050,2934523822,135794696,3134549946,2022240376,628050469,779246638,472135708,2800834470,3032970164,3327236038,3894660072,3715932637,1956440180,522272287,1272813131,3185336765,2340818315,2323976074,1888542832,1044544574,3049550261,1722469478,1222152264,50660867,4127324150,236067854,1638122081,895445557,1475980887,3117443513,2257655686,3243809217,489110045,2662934430,3778599393,4162055160,2561878936,288563729,1773916777,3648039385,2391345038,2493985684,2612407707,505560094,2274497927,3911240169,3460925390,1442818645,678973480,3749357023,2358182796,2717407649,2306869641,219617805,3218761151,3862026214,1120306242,1756942440,1103331905,2578459033,762796589,252780047,2966125488,1425844308,3151392187,372911126],al=[1667474886,2088535288,2004326894,2071694838,4075949567,1802223062,1869591006,3318043793,808472672,16843522,1734846926,724270422,4278065639,3621216949,2880169549,1987484396,3402253711,2189597983,3385409673,2105378810,4210693615,1499065266,1195886990,4042263547,2913856577,3570689971,2728590687,2947541573,2627518243,2762274643,1920112356,3233831835,3082273397,4261223649,2475929149,640051788,909531756,1061110142,4160160501,3435941763,875846760,2779116625,3857003729,4059105529,1903268834,3638064043,825316194,353713962,67374088,3351728789,589522246,3284360861,404236336,2526454071,84217610,2593830191,117901582,303183396,2155911963,3806477791,3958056653,656894286,2998062463,1970642922,151591698,2206440989,741110872,437923380,454765878,1852748508,1515908788,2694904667,1381168804,993742198,3604373943,3014905469,690584402,3823320797,791638366,2223281939,1398011302,3520161977,0,3991743681,538992704,4244381667,2981218425,1532751286,1785380564,3419096717,3200178535,960056178,1246420628,1280103576,1482221744,3486468741,3503319995,4025428677,2863326543,4227536621,1128514950,1296947098,859002214,2240123921,1162203018,4193849577,33687044,2139062782,1347481760,1010582648,2678045221,2829640523,1364325282,2745433693,1077985408,2408548869,2459086143,2644360225,943212656,4126475505,3166494563,3065430391,3671750063,555836226,269496352,4294908645,4092792573,3537006015,3452783745,202118168,320025894,3974901699,1600119230,2543297077,1145359496,387397934,3301201811,2812801621,2122220284,1027426170,1684319432,1566435258,421079858,1936954854,1616945344,2172753945,1330631070,3705438115,572679748,707427924,2425400123,2290647819,1179044492,4008585671,3099120491,336870440,3739122087,1583276732,185277718,3688593069,3772791771,842159716,976899700,168435220,1229577106,101059084,606366792,1549591736,3267517855,3553849021,2897014595,1650632388,2442242105,2509612081,3840161747,2038008818,3890688725,3368567691,926374254,1835907034,2374863873,3587531953,1313788572,2846482505,1819063512,1448540844,4109633523,3941213647,1701162954,2054852340,2930698567,134748176,3132806511,2021165296,623210314,774795868,471606328,2795958615,3031746419,3334885783,3907527627,3722280097,1953799400,522133822,1263263126,3183336545,2341176845,2324333839,1886425312,1044267644,3048588401,1718004428,1212733584,50529542,4143317495,235803164,1633788866,892690282,1465383342,3115962473,2256965911,3250673817,488449850,2661202215,3789633753,4177007595,2560144171,286339874,1768537042,3654906025,2391705863,2492770099,2610673197,505291324,2273808917,3924369609,3469625735,1431699370,673740880,3755965093,2358021891,2711746649,2307489801,218961690,3217021541,3873845719,1111672452,1751693520,1094828930,2576986153,757954394,252645662,2964376443,1414855848,3149649517,370555436],nl=[1374988112,2118214995,437757123,975658646,1001089995,530400753,2902087851,1273168787,540080725,2910219766,2295101073,4110568485,1340463100,3307916247,641025152,3043140495,3736164937,632953703,1172967064,1576976609,3274667266,2169303058,2370213795,1809054150,59727847,361929877,3211623147,2505202138,3569255213,1484005843,1239443753,2395588676,1975683434,4102977912,2572697195,666464733,3202437046,4035489047,3374361702,2110667444,1675577880,3843699074,2538681184,1649639237,2976151520,3144396420,4269907996,4178062228,1883793496,2403728665,2497604743,1383856311,2876494627,1917518562,3810496343,1716890410,3001755655,800440835,2261089178,3543599269,807962610,599762354,33778362,3977675356,2328828971,2809771154,4077384432,1315562145,1708848333,101039829,3509871135,3299278474,875451293,2733856160,92987698,2767645557,193195065,1080094634,1584504582,3178106961,1042385657,2531067453,3711829422,1306967366,2438237621,1908694277,67556463,1615861247,429456164,3602770327,2302690252,1742315127,2968011453,126454664,3877198648,2043211483,2709260871,2084704233,4169408201,0,159417987,841739592,504459436,1817866830,4245618683,260388950,1034867998,908933415,168810852,1750902305,2606453969,607530554,202008497,2472011535,3035535058,463180190,2160117071,1641816226,1517767529,470948374,3801332234,3231722213,1008918595,303765277,235474187,4069246893,766945465,337553864,1475418501,2943682380,4003061179,2743034109,4144047775,1551037884,1147550661,1543208500,2336434550,3408119516,3069049960,3102011747,3610369226,1113818384,328671808,2227573024,2236228733,3535486456,2935566865,3341394285,496906059,3702665459,226906860,2009195472,733156972,2842737049,294930682,1206477858,2835123396,2700099354,1451044056,573804783,2269728455,3644379585,2362090238,2564033334,2801107407,2776292904,3669462566,1068351396,742039012,1350078989,1784663195,1417561698,4136440770,2430122216,775550814,2193862645,2673705150,1775276924,1876241833,3475313331,3366754619,270040487,3902563182,3678124923,3441850377,1851332852,3969562369,2203032232,3868552805,2868897406,566021896,4011190502,3135740889,1248802510,3936291284,699432150,832877231,708780849,3332740144,899835584,1951317047,4236429990,3767586992,866637845,4043610186,1106041591,2144161806,395441711,1984812685,1139781709,3433712980,3835036895,2664543715,1282050075,3240894392,1181045119,2640243204,25965917,4203181171,4211818798,3009879386,2463879762,3910161971,1842759443,2597806476,933301370,1509430414,3943906441,3467192302,3076639029,3776767469,2051518780,2631065433,1441952575,404016761,1942435775,1408749034,1610459739,3745345300,2017778566,3400528769,3110650942,941896748,3265478751,371049330,3168937228,675039627,4279080257,967311729,135050206,3635733660,1683407248,2076935265,3576870512,1215061108,3501741890],ol=[1347548327,1400783205,3273267108,2520393566,3409685355,4045380933,2880240216,2471224067,1428173050,4138563181,2441661558,636813900,4233094615,3620022987,2149987652,2411029155,1239331162,1730525723,2554718734,3781033664,46346101,310463728,2743944855,3328955385,3875770207,2501218972,3955191162,3667219033,768917123,3545789473,692707433,1150208456,1786102409,2029293177,1805211710,3710368113,3065962831,401639597,1724457132,3028143674,409198410,2196052529,1620529459,1164071807,3769721975,2226875310,486441376,2499348523,1483753576,428819965,2274680428,3075636216,598438867,3799141122,1474502543,711349675,129166120,53458370,2592523643,2782082824,4063242375,2988687269,3120694122,1559041666,730517276,2460449204,4042459122,2706270690,3446004468,3573941694,533804130,2328143614,2637442643,2695033685,839224033,1973745387,957055980,2856345839,106852767,1371368976,4181598602,1033297158,2933734917,1179510461,3046200461,91341917,1862534868,4284502037,605657339,2547432937,3431546947,2003294622,3182487618,2282195339,954669403,3682191598,1201765386,3917234703,3388507166,0,2198438022,1211247597,2887651696,1315723890,4227665663,1443857720,507358933,657861945,1678381017,560487590,3516619604,975451694,2970356327,261314535,3535072918,2652609425,1333838021,2724322336,1767536459,370938394,182621114,3854606378,1128014560,487725847,185469197,2918353863,3106780840,3356761769,2237133081,1286567175,3152976349,4255350624,2683765030,3160175349,3309594171,878443390,1988838185,3704300486,1756818940,1673061617,3403100636,272786309,1075025698,545572369,2105887268,4174560061,296679730,1841768865,1260232239,4091327024,3960309330,3497509347,1814803222,2578018489,4195456072,575138148,3299409036,446754879,3629546796,4011996048,3347532110,3252238545,4270639778,915985419,3483825537,681933534,651868046,2755636671,3828103837,223377554,2607439820,1649704518,3270937875,3901806776,1580087799,4118987695,3198115200,2087309459,2842678573,3016697106,1003007129,2802849917,1860738147,2077965243,164439672,4100872472,32283319,2827177882,1709610350,2125135846,136428751,3874428392,3652904859,3460984630,3572145929,3593056380,2939266226,824852259,818324884,3224740454,930369212,2801566410,2967507152,355706840,1257309336,4148292826,243256656,790073846,2373340630,1296297904,1422699085,3756299780,3818836405,457992840,3099667487,2135319889,77422314,1560382517,1945798516,788204353,1521706781,1385356242,870912086,325965383,2358957921,2050466060,2388260884,2313884476,4006521127,901210569,3990953189,1014646705,1503449823,1062597235,2031621326,3212035895,3931371469,1533017514,350174575,2256028891,2177544179,1052338372,741876788,1606591296,1914052035,213705253,2334669897,1107234197,1899603969,3725069491,2631447780,2422494913,1635502980,1893020342,1950903388,1120974935],ll=[2807058932,1699970625,2764249623,1586903591,1808481195,1173430173,1487645946,59984867,4199882800,1844882806,1989249228,1277555970,3623636965,3419915562,1149249077,2744104290,1514790577,459744698,244860394,3235995134,1963115311,4027744588,2544078150,4190530515,1608975247,2627016082,2062270317,1507497298,2200818878,567498868,1764313568,3359936201,2305455554,2037970062,1047239e3,1910319033,1337376481,2904027272,2892417312,984907214,1243112415,830661914,861968209,2135253587,2011214180,2927934315,2686254721,731183368,1750626376,4246310725,1820824798,4172763771,3542330227,48394827,2404901663,2871682645,671593195,3254988725,2073724613,145085239,2280796200,2779915199,1790575107,2187128086,472615631,3029510009,4075877127,3802222185,4107101658,3201631749,1646252340,4270507174,1402811438,1436590835,3778151818,3950355702,3963161475,4020912224,2667994737,273792366,2331590177,104699613,95345982,3175501286,2377486676,1560637892,3564045318,369057872,4213447064,3919042237,1137477952,2658625497,1119727848,2340947849,1530455833,4007360968,172466556,266959938,516552836,0,2256734592,3980931627,1890328081,1917742170,4294704398,945164165,3575528878,958871085,3647212047,2787207260,1423022939,775562294,1739656202,3876557655,2530391278,2443058075,3310321856,547512796,1265195639,437656594,3121275539,719700128,3762502690,387781147,218828297,3350065803,2830708150,2848461854,428169201,122466165,3720081049,1627235199,648017665,4122762354,1002783846,2117360635,695634755,3336358691,4234721005,4049844452,3704280881,2232435299,574624663,287343814,612205898,1039717051,840019705,2708326185,793451934,821288114,1391201670,3822090177,376187827,3113855344,1224348052,1679968233,2361698556,1058709744,752375421,2431590963,1321699145,3519142200,2734591178,188127444,2177869557,3727205754,2384911031,3215212461,2648976442,2450346104,3432737375,1180849278,331544205,3102249176,4150144569,2952102595,2159976285,2474404304,766078933,313773861,2570832044,2108100632,1668212892,3145456443,2013908262,418672217,3070356634,2594734927,1852171925,3867060991,3473416636,3907448597,2614737639,919489135,164948639,2094410160,2997825956,590424639,2486224549,1723872674,3157750862,3399941250,3501252752,3625268135,2555048196,3673637356,1343127501,4130281361,3599595085,2957853679,1297403050,81781910,3051593425,2283490410,532201772,1367295589,3926170974,895287692,1953757831,1093597963,492483431,3528626907,1446242576,1192455638,1636604631,209336225,344873464,1015671571,669961897,3375740769,3857572124,2973530695,3747192018,1933530610,3464042516,935293895,3454686199,2858115069,1863638845,3683022916,4085369519,3292445032,875313188,1080017571,3279033885,621591778,1233856572,2504130317,24197544,3017672716,3835484340,3247465558,2220981195,3060847922,1551124588,1463996600],dl=[4104605777,1097159550,396673818,660510266,2875968315,2638606623,4200115116,3808662347,821712160,1986918061,3430322568,38544885,3856137295,718002117,893681702,1654886325,2975484382,3122358053,3926825029,4274053469,796197571,1290801793,1184342925,3556361835,2405426947,2459735317,1836772287,1381620373,3196267988,1948373848,3764988233,3385345166,3263785589,2390325492,1480485785,3111247143,3780097726,2293045232,548169417,3459953789,3746175075,439452389,1362321559,1400849762,1685577905,1806599355,2174754046,137073913,1214797936,1174215055,3731654548,2079897426,1943217067,1258480242,529487843,1437280870,3945269170,3049390895,3313212038,923313619,679998e3,3215307299,57326082,377642221,3474729866,2041877159,133361907,1776460110,3673476453,96392454,878845905,2801699524,777231668,4082475170,2330014213,4142626212,2213296395,1626319424,1906247262,1846563261,562755902,3708173718,1040559837,3871163981,1418573201,3294430577,114585348,1343618912,2566595609,3186202582,1078185097,3651041127,3896688048,2307622919,425408743,3371096953,2081048481,1108339068,2216610296,0,2156299017,736970802,292596766,1517440620,251657213,2235061775,2933202493,758720310,265905162,1554391400,1532285339,908999204,174567692,1474760595,4002861748,2610011675,3234156416,3693126241,2001430874,303699484,2478443234,2687165888,585122620,454499602,151849742,2345119218,3064510765,514443284,4044981591,1963412655,2581445614,2137062819,19308535,1928707164,1715193156,4219352155,1126790795,600235211,3992742070,3841024952,836553431,1669664834,2535604243,3323011204,1243905413,3141400786,4180808110,698445255,2653899549,2989552604,2253581325,3252932727,3004591147,1891211689,2487810577,3915653703,4237083816,4030667424,2100090966,865136418,1229899655,953270745,3399679628,3557504664,4118925222,2061379749,3079546586,2915017791,983426092,2022837584,1607244650,2118541908,2366882550,3635996816,972512814,3283088770,1568718495,3499326569,3576539503,621982671,2895723464,410887952,2623762152,1002142683,645401037,1494807662,2595684844,1335535747,2507040230,4293295786,3167684641,367585007,3885750714,1865862730,2668221674,2960971305,2763173681,1059270954,2777952454,2724642869,1320957812,2194319100,2429595872,2815956275,77089521,3973773121,3444575871,2448830231,1305906550,4021308739,2857194700,2516901860,3518358430,1787304780,740276417,1699839814,1592394909,2352307457,2272556026,188821243,1729977011,3687994002,274084841,3594982253,3613494426,2701949495,4162096729,322734571,2837966542,1640576439,484830689,1202797690,3537852828,4067639125,349075736,3342319475,4157467219,4255800159,1030690015,1155237496,2951971274,1757691577,607398968,2738905026,499347990,3794078908,1011452712,227885567,2818666809,213114376,3034881240,1455525988,3414450555,850817237,1817998408,3092726480],hl=[0,235474187,470948374,303765277,941896748,908933415,607530554,708780849,1883793496,2118214995,1817866830,1649639237,1215061108,1181045119,1417561698,1517767529,3767586992,4003061179,4236429990,4069246893,3635733660,3602770327,3299278474,3400528769,2430122216,2664543715,2362090238,2193862645,2835123396,2801107407,3035535058,3135740889,3678124923,3576870512,3341394285,3374361702,3810496343,3977675356,4279080257,4043610186,2876494627,2776292904,3076639029,3110650942,2472011535,2640243204,2403728665,2169303058,1001089995,899835584,666464733,699432150,59727847,226906860,530400753,294930682,1273168787,1172967064,1475418501,1509430414,1942435775,2110667444,1876241833,1641816226,2910219766,2743034109,2976151520,3211623147,2505202138,2606453969,2302690252,2269728455,3711829422,3543599269,3240894392,3475313331,3843699074,3943906441,4178062228,4144047775,1306967366,1139781709,1374988112,1610459739,1975683434,2076935265,1775276924,1742315127,1034867998,866637845,566021896,800440835,92987698,193195065,429456164,395441711,1984812685,2017778566,1784663195,1683407248,1315562145,1080094634,1383856311,1551037884,101039829,135050206,437757123,337553864,1042385657,807962610,573804783,742039012,2531067453,2564033334,2328828971,2227573024,2935566865,2700099354,3001755655,3168937228,3868552805,3902563182,4203181171,4102977912,3736164937,3501741890,3265478751,3433712980,1106041591,1340463100,1576976609,1408749034,2043211483,2009195472,1708848333,1809054150,832877231,1068351396,766945465,599762354,159417987,126454664,361929877,463180190,2709260871,2943682380,3178106961,3009879386,2572697195,2538681184,2236228733,2336434550,3509871135,3745345300,3441850377,3274667266,3910161971,3877198648,4110568485,4211818798,2597806476,2497604743,2261089178,2295101073,2733856160,2902087851,3202437046,2968011453,3936291284,3835036895,4136440770,4169408201,3535486456,3702665459,3467192302,3231722213,2051518780,1951317047,1716890410,1750902305,1113818384,1282050075,1584504582,1350078989,168810852,67556463,371049330,404016761,841739592,1008918595,775550814,540080725,3969562369,3801332234,4035489047,4269907996,3569255213,3669462566,3366754619,3332740144,2631065433,2463879762,2160117071,2395588676,2767645557,2868897406,3102011747,3069049960,202008497,33778362,270040487,504459436,875451293,975658646,675039627,641025152,2084704233,1917518562,1615861247,1851332852,1147550661,1248802510,1484005843,1451044056,933301370,967311729,733156972,632953703,260388950,25965917,328671808,496906059,1206477858,1239443753,1543208500,1441952575,2144161806,1908694277,1675577880,1842759443,3610369226,3644379585,3408119516,3307916247,4011190502,3776767469,4077384432,4245618683,2809771154,2842737049,3144396420,3043140495,2673705150,2438237621,2203032232,2370213795],cl=[0,185469197,370938394,487725847,741876788,657861945,975451694,824852259,1483753576,1400783205,1315723890,1164071807,1950903388,2135319889,1649704518,1767536459,2967507152,3152976349,2801566410,2918353863,2631447780,2547432937,2328143614,2177544179,3901806776,3818836405,4270639778,4118987695,3299409036,3483825537,3535072918,3652904859,2077965243,1893020342,1841768865,1724457132,1474502543,1559041666,1107234197,1257309336,598438867,681933534,901210569,1052338372,261314535,77422314,428819965,310463728,3409685355,3224740454,3710368113,3593056380,3875770207,3960309330,4045380933,4195456072,2471224067,2554718734,2237133081,2388260884,3212035895,3028143674,2842678573,2724322336,4138563181,4255350624,3769721975,3955191162,3667219033,3516619604,3431546947,3347532110,2933734917,2782082824,3099667487,3016697106,2196052529,2313884476,2499348523,2683765030,1179510461,1296297904,1347548327,1533017514,1786102409,1635502980,2087309459,2003294622,507358933,355706840,136428751,53458370,839224033,957055980,605657339,790073846,2373340630,2256028891,2607439820,2422494913,2706270690,2856345839,3075636216,3160175349,3573941694,3725069491,3273267108,3356761769,4181598602,4063242375,4011996048,3828103837,1033297158,915985419,730517276,545572369,296679730,446754879,129166120,213705253,1709610350,1860738147,1945798516,2029293177,1239331162,1120974935,1606591296,1422699085,4148292826,4233094615,3781033664,3931371469,3682191598,3497509347,3446004468,3328955385,2939266226,2755636671,3106780840,2988687269,2198438022,2282195339,2501218972,2652609425,1201765386,1286567175,1371368976,1521706781,1805211710,1620529459,2105887268,1988838185,533804130,350174575,164439672,46346101,870912086,954669403,636813900,788204353,2358957921,2274680428,2592523643,2441661558,2695033685,2880240216,3065962831,3182487618,3572145929,3756299780,3270937875,3388507166,4174560061,4091327024,4006521127,3854606378,1014646705,930369212,711349675,560487590,272786309,457992840,106852767,223377554,1678381017,1862534868,1914052035,2031621326,1211247597,1128014560,1580087799,1428173050,32283319,182621114,401639597,486441376,768917123,651868046,1003007129,818324884,1503449823,1385356242,1333838021,1150208456,1973745387,2125135846,1673061617,1756818940,2970356327,3120694122,2802849917,2887651696,2637442643,2520393566,2334669897,2149987652,3917234703,3799141122,4284502037,4100872472,3309594171,3460984630,3545789473,3629546796,2050466060,1899603969,1814803222,1730525723,1443857720,1560382517,1075025698,1260232239,575138148,692707433,878443390,1062597235,243256656,91341917,409198410,325965383,3403100636,3252238545,3704300486,3620022987,3874428392,3990953189,4042459122,4227665663,2460449204,2578018489,2226875310,2411029155,3198115200,3046200461,2827177882,2743944855],ul=[0,218828297,437656594,387781147,875313188,958871085,775562294,590424639,1750626376,1699970625,1917742170,2135253587,1551124588,1367295589,1180849278,1265195639,3501252752,3720081049,3399941250,3350065803,3835484340,3919042237,4270507174,4085369519,3102249176,3051593425,2734591178,2952102595,2361698556,2177869557,2530391278,2614737639,3145456443,3060847922,2708326185,2892417312,2404901663,2187128086,2504130317,2555048196,3542330227,3727205754,3375740769,3292445032,3876557655,3926170974,4246310725,4027744588,1808481195,1723872674,1910319033,2094410160,1608975247,1391201670,1173430173,1224348052,59984867,244860394,428169201,344873464,935293895,984907214,766078933,547512796,1844882806,1627235199,2011214180,2062270317,1507497298,1423022939,1137477952,1321699145,95345982,145085239,532201772,313773861,830661914,1015671571,731183368,648017665,3175501286,2957853679,2807058932,2858115069,2305455554,2220981195,2474404304,2658625497,3575528878,3625268135,3473416636,3254988725,3778151818,3963161475,4213447064,4130281361,3599595085,3683022916,3432737375,3247465558,3802222185,4020912224,4172763771,4122762354,3201631749,3017672716,2764249623,2848461854,2331590177,2280796200,2431590963,2648976442,104699613,188127444,472615631,287343814,840019705,1058709744,671593195,621591778,1852171925,1668212892,1953757831,2037970062,1514790577,1463996600,1080017571,1297403050,3673637356,3623636965,3235995134,3454686199,4007360968,3822090177,4107101658,4190530515,2997825956,3215212461,2830708150,2779915199,2256734592,2340947849,2627016082,2443058075,172466556,122466165,273792366,492483431,1047239e3,861968209,612205898,695634755,1646252340,1863638845,2013908262,1963115311,1446242576,1530455833,1277555970,1093597963,1636604631,1820824798,2073724613,1989249228,1436590835,1487645946,1337376481,1119727848,164948639,81781910,331544205,516552836,1039717051,821288114,669961897,719700128,2973530695,3157750862,2871682645,2787207260,2232435299,2283490410,2667994737,2450346104,3647212047,3564045318,3279033885,3464042516,3980931627,3762502690,4150144569,4199882800,3070356634,3121275539,2904027272,2686254721,2200818878,2384911031,2570832044,2486224549,3747192018,3528626907,3310321856,3359936201,3950355702,3867060991,4049844452,4234721005,1739656202,1790575107,2108100632,1890328081,1402811438,1586903591,1233856572,1149249077,266959938,48394827,369057872,418672217,1002783846,919489135,567498868,752375421,209336225,24197544,376187827,459744698,945164165,895287692,574624663,793451934,1679968233,1764313568,2117360635,1933530610,1343127501,1560637892,1243112415,1192455638,3704280881,3519142200,3336358691,3419915562,3907448597,3857572124,4075877127,4294704398,3029510009,3113855344,2927934315,2744104290,2159976285,2377486676,2594734927,2544078150],pl=[0,151849742,303699484,454499602,607398968,758720310,908999204,1059270954,1214797936,1097159550,1517440620,1400849762,1817998408,1699839814,2118541908,2001430874,2429595872,2581445614,2194319100,2345119218,3034881240,3186202582,2801699524,2951971274,3635996816,3518358430,3399679628,3283088770,4237083816,4118925222,4002861748,3885750714,1002142683,850817237,698445255,548169417,529487843,377642221,227885567,77089521,1943217067,2061379749,1640576439,1757691577,1474760595,1592394909,1174215055,1290801793,2875968315,2724642869,3111247143,2960971305,2405426947,2253581325,2638606623,2487810577,3808662347,3926825029,4044981591,4162096729,3342319475,3459953789,3576539503,3693126241,1986918061,2137062819,1685577905,1836772287,1381620373,1532285339,1078185097,1229899655,1040559837,923313619,740276417,621982671,439452389,322734571,137073913,19308535,3871163981,4021308739,4104605777,4255800159,3263785589,3414450555,3499326569,3651041127,2933202493,2815956275,3167684641,3049390895,2330014213,2213296395,2566595609,2448830231,1305906550,1155237496,1607244650,1455525988,1776460110,1626319424,2079897426,1928707164,96392454,213114376,396673818,514443284,562755902,679998e3,865136418,983426092,3708173718,3557504664,3474729866,3323011204,4180808110,4030667424,3945269170,3794078908,2507040230,2623762152,2272556026,2390325492,2975484382,3092726480,2738905026,2857194700,3973773121,3856137295,4274053469,4157467219,3371096953,3252932727,3673476453,3556361835,2763173681,2915017791,3064510765,3215307299,2156299017,2307622919,2459735317,2610011675,2081048481,1963412655,1846563261,1729977011,1480485785,1362321559,1243905413,1126790795,878845905,1030690015,645401037,796197571,274084841,425408743,38544885,188821243,3613494426,3731654548,3313212038,3430322568,4082475170,4200115116,3780097726,3896688048,2668221674,2516901860,2366882550,2216610296,3141400786,2989552604,2837966542,2687165888,1202797690,1320957812,1437280870,1554391400,1669664834,1787304780,1906247262,2022837584,265905162,114585348,499347990,349075736,736970802,585122620,972512814,821712160,2595684844,2478443234,2293045232,2174754046,3196267988,3079546586,2895723464,2777952454,3537852828,3687994002,3234156416,3385345166,4142626212,4293295786,3841024952,3992742070,174567692,57326082,410887952,292596766,777231668,660510266,1011452712,893681702,1108339068,1258480242,1343618912,1494807662,1715193156,1865862730,1948373848,2100090966,2701949495,2818666809,3004591147,3122358053,2235061775,2352307457,2535604243,2653899549,3915653703,3764988233,4219352155,4067639125,3444575871,3294430577,3746175075,3594982253,836553431,953270745,600235211,718002117,367585007,484830689,133361907,251657213,2041877159,1891211689,1806599355,1654886325,1568718495,1418573201,1335535747,1184342925];function fl(e){for(var t=[],i=0;i>2,this._Ke[i][t%4]=a[t],this._Kd[e-i][t%4]=a[t];for(var n,o=0,l=s;l>16&255]<<24^el[n>>8&255]<<16^el[255&n]<<8^el[n>>24&255]^Zo[o]<<24,o+=1,8!=s)for(t=1;t>8&255]<<8^el[n>>16&255]<<16^el[n>>24&255]<<24;for(t=s/2+1;t>2,h=l%4,this._Ke[d][h]=a[t],this._Kd[e-d][h]=a[t++],l++}for(var d=1;d>24&255]^cl[n>>16&255]^ul[n>>8&255]^pl[255&n]},yl.prototype.encrypt=function(e){if(16!=e.length)throw new Error("invalid plaintext size (must be 16 bytes)");for(var t=this._Ke.length-1,i=[0,0,0,0],r=fl(e),s=0;s<4;s++)r[s]^=this._Ke[0][s];for(var a=1;a>24&255]^rl[r[(s+1)%4]>>16&255]^sl[r[(s+2)%4]>>8&255]^al[255&r[(s+3)%4]]^this._Ke[a][s];r=i.slice()}var n,o=Ko(16);for(s=0;s<4;s++)n=this._Ke[t][s],o[4*s]=255&(el[r[s]>>24&255]^n>>24),o[4*s+1]=255&(el[r[(s+1)%4]>>16&255]^n>>16),o[4*s+2]=255&(el[r[(s+2)%4]>>8&255]^n>>8),o[4*s+3]=255&(el[255&r[(s+3)%4]]^n);return o},yl.prototype.decrypt=function(e){if(16!=e.length)throw new Error("invalid ciphertext size (must be 16 bytes)");for(var t=this._Kd.length-1,i=[0,0,0,0],r=fl(e),s=0;s<4;s++)r[s]^=this._Kd[0][s];for(var a=1;a>24&255]^ol[r[(s+3)%4]>>16&255]^ll[r[(s+2)%4]>>8&255]^dl[255&r[(s+1)%4]]^this._Kd[a][s];r=i.slice()}var n,o=Ko(16);for(s=0;s<4;s++)n=this._Kd[t][s],o[4*s]=255&(tl[r[s]>>24&255]^n>>24),o[4*s+1]=255&(tl[r[(s+3)%4]>>16&255]^n>>16),o[4*s+2]=255&(tl[r[(s+2)%4]>>8&255]^n>>8),o[4*s+3]=255&(tl[255&r[(s+1)%4]]^n);return o};var ml=function(e){if(!(this instanceof ml))throw Error("AES must be instanitated with `new`");this.description="Electronic Code Block",this.name="ecb",this._aes=new yl(e)};ml.prototype.encrypt=function(e){if((e=jo(e)).length%16!=0)throw new Error("invalid plaintext size (must be multiple of 16 bytes)");for(var t=Ko(e.length),i=Ko(16),r=0;rNumber.MAX_SAFE_INTEGER)throw new Error("integer value out of safe range");for(var t=15;t>=0;--t)this._counter[t]=e%256,e=parseInt(e/256)},bl.prototype.setBytes=function(e){if(16!=(e=jo(e,!0)).length)throw new Error("invalid counter bytes size (must be 16 bytes)");this._counter=e},bl.prototype.increment=function(){for(var e=15;e>=0;e--){if(255!==this._counter[e]){this._counter[e]++;break}this._counter[e]=0}};var _l=function(e,t){if(!(this instanceof _l))throw Error("AES must be instanitated with `new`");this.description="Counter",this.name="ctr",t instanceof bl||(t=new bl(t)),this._counter=t,this._remainingCounter=null,this._remainingCounterIndex=16,this._aes=new yl(e)};_l.prototype.encrypt=function(e){for(var t=jo(e,!0),i=0;i16)throw new Error("PKCS#7 padding byte out of range");for(var i=e.length-t,r=0;r>>32-i}function xl(e){return(255&kl[e>>>24&255])<<24|(255&kl[e>>>16&255])<<16|(255&kl[e>>>8&255])<<8|255&kl[255&e]}function Ll(e){return e^Rl(e,2)^Rl(e,10)^Rl(e,18)^Rl(e,24)}function Il(e){return e^Rl(e,13)^Rl(e,23)}function Pl(e,t,i){const r=new Array(4),s=new Array(4);for(let t=0;t<4;t++)s[0]=255&e[4*t],s[1]=255&e[4*t+1],s[2]=255&e[4*t+2],s[3]=255&e[4*t+3],r[t]=s[0]<<24|s[1]<<16|s[2]<<8|s[3];for(let e,t=0;t<32;t+=4)e=r[1]^r[2]^r[3]^i[t+0],r[0]^=Ll(xl(e)),e=r[2]^r[3]^r[0]^i[t+1],r[1]^=Ll(xl(e)),e=r[3]^r[0]^r[1]^i[t+2],r[2]^=Ll(xl(e)),e=r[0]^r[1]^r[2]^i[t+3],r[3]^=Ll(xl(e));for(let e=0;e<16;e+=4)t[e]=r[3-e/4]>>>24&255,t[e+1]=r[3-e/4]>>>16&255,t[e+2]=r[3-e/4]>>>8&255,t[e+3]=255&r[3-e/4]}function Bl(e,t,i,{padding:r="pkcs#7",mode:s,iv:a=[],output:n="string"}={}){if("cbc"===s&&("string"==typeof a&&(a=Dl(a)),16!==a.length))throw new Error("iv is invalid");if("string"==typeof t&&(t=Dl(t)),16!==t.length)throw new Error("key is invalid");if(e="string"==typeof e?i!==El?function(e){const t=[];for(let i=0,r=e.length;i>>6),t.push(128|63&r);else if(r<=55295||r>=57344&&r<=65535)t.push(224|r>>>12),t.push(128|r>>>6&63),t.push(128|63&r);else{if(!(r>=65536&&r<=1114111))throw t.push(r),new Error("input is not supported");i++,t.push(240|r>>>18&28),t.push(128|r>>>12&63),t.push(128|r>>>6&63),t.push(128|63&r)}}return t}(e):Dl(e):[...e],("pkcs#5"===r||"pkcs#7"===r)&&i!==El){const t=Tl-e.length%Tl;for(let i=0;i=Tl;){const t=e.slice(c,c+16),r=new Array(16);if("cbc"===s)for(let e=0;e1===(e=e.toString(16)).length?"0"+e:e)).join(""):function(e){const t=[];for(let i=0,r=e.length;i=240&&e[i]<=247?(t.push(String.fromCodePoint(((7&e[i])<<18)+((63&e[i+1])<<12)+((63&e[i+2])<<6)+(63&e[i+3]))),i+=3):e[i]>=224&&e[i]<=239?(t.push(String.fromCodePoint(((15&e[i])<<12)+((63&e[i+1])<<6)+(63&e[i+2]))),i+=2):e[i]>=192&&e[i]<=223?(t.push(String.fromCodePoint(((31&e[i])<<6)+(63&e[i+1]))),i++):t.push(String.fromCodePoint(e[i]));return t.join("")}(l):l}function Ml(e,t,i){for(let r=2;re)return this.preDelayTimestamp-e>1e3&&this.player.debug.warn("CommonDemux",`getDelay() and preDelayTimestamp is ${this.preDelayTimestamp} > timestamp is ${e} more than ${this.preDelayTimestamp-e}ms and return ${this.delay}`),this.preDelayTimestamp=e,this.delay;if(this.firstTimestamp){if(e){const t=Date.now()-this.startTimestamp,i=e-this.firstTimestamp;t>=i?(this.isStreamTsMoreThanLocal=!1,this.delay=t-i):(this.isStreamTsMoreThanLocal=!0,this.delay=i-t)}}else this.firstTimestamp=e,this.startTimestamp=Date.now(),this.delay=-1;return this.preDelayTimestamp=e,this.delay}getDelayNotUpdateDelay(e,t){if(!e||!this.player.isDemuxDecodeFirstIIframeInit())return-1;if(t===Oe)return this.pushLatestDelay;if(this.preDelayTimestamp&&this.preDelayTimestamp-e>1e3)return this.player.debug.warn("CommonDemux",`getDelayNotUpdateDelay() and preDelayTimestamp is ${this.preDelayTimestamp} > timestamp is ${e} more than ${this.preDelayTimestamp-e}ms and return -1`),-1;if(this.firstTimestamp){let t=-1;if(e){const i=Date.now()-this.startTimestamp,r=e-this.firstTimestamp;t=i>=r?i-r:r-i}return t}return-1}resetDelay(){this.firstTimestamp=null,this.startTimestamp=null,this.delay=-1,this.dropping=!1}resetAllDelay(){this.resetDelay(),this.preDelayTimestamp=null}initInterval(){this.player.isUseHls265()?this.player.debug.log("CommonDemux","initInterval() and is hls and support hls265 so return"):-1===this.player.getStreamType().indexOf(y)?this.player.isPlaybackCacheBeforeDecodeForFpsRender()?this.player.debug.log("CommonDemux","initInterval() and playback and playbackIsCacheBeforeDecodeForFpsRender is true so return"):(this.player.debug.log("CommonDemux","setInterval()"),this._loop(),this.stopId=setInterval((()=>{let e=(new Date).getTime();this.preLoopTimestamp||(this.preLoopTimestamp=e);const t=e-this.preLoopTimestamp;this.updateHistoryIntervalDiffTimeList(t),t>100&&this.player.debug.warn("CommonDemux",`loop demux diff time is ${t}`),this._loop(),this.preLoopTimestamp=(new Date).getTime()}),20)):this.player.debug.log("CommonDemux","initInterval() and is worker stream so return")}clearStopInterval(){this.stopId&&(clearInterval(this.stopId),this.stopId=null)}updateHistoryIntervalDiffTimeList(e){this.historyIntervalDiffTimeList.length>5&&this.historyIntervalDiffTimeList.shift(),this.historyIntervalDiffTimeList.push(e)}isHistoryIntervalDiffTimeAllLarge(){if(this.historyIntervalDiffTimeList.length<5)return!1;for(let e=0;e{let e=null;this.bufferList.length&&(e=this.bufferList.shift(),this._doDecoderDecode(e))};e();const t=Math.ceil(1e3/(this.playbackStreamFps*this.player.getPlaybackRate()));this.player.debug.log("CommonDemux",`initPlaybackCacheLoop() and fragDuration is ${t}, playbackStreamFps is ${this.playbackStreamFps}, playbackRate is ${this.player.getPlaybackRate()}`),this.stopId=setInterval(e,t)}_loop(){let e;const t=this.player._opt.videoBuffer,i=this.player._opt.videoBufferDelay,r=this.player._opt.playType===A;if(this.bufferList.length){if(this.isPushDropping)return void this.player.debug.warn("CommonDemux",`_loop isPushDropping is true and bufferList length is ${this.bufferList.length}`);if(this.dropping){for(e=this.bufferList.shift(),this.player.debug.warn("CommonDemux",`_loop is dropping and data.ts is ${e.ts}, data.type is ${e.type}, data.isIFrame is ${e.isIFrame}, delay is ${this.delay} ,buffer list is ${this.bufferList.length}`);!e.isIFrame&&this.bufferList.length;)e=this.bufferList.shift();const t=this.getDelayNotUpdateDelay(e.ts,e.type);e.isIFrame&&t<=this.getNotDroppingDelayTs()&&(this.player.debug.log("CommonDemux",`_loop data isIFrame is true and delay is ${this.delay}`),this.dropping=!1,this._doDecoderDecode(e),this._decodeNext(e))}else if(this.player.isPlayback()||this.player.isPlayUseMSE()||0===t)for(;this.bufferList.length;)e=this.bufferList.shift(),this._doDecoderDecode(e);else if(e=this.bufferList[0],-1===this.getDelay(e.ts,e.type))this.player.debug.log("CommonDemux",`delay is -1 and data.ts is ${e.ts} data.type is ${e.type}`),this.bufferList.shift(),this._doDecoderDecode(e),this._decodeNext(e);else if(this.delay>i+t&&r)this.hasIframeInBufferList()?(this.player.debug.warn("CommonDemux",`_loop delay is ${this.delay}, set dropping is true`),this.resetAllDelay(),this.dropping=!0,this.player.updateStats({isDropping:!0})):(this.bufferList.shift(),this._doDecoderDecode(e),this._decodeNext(e));else for(;this.bufferList.length;){if(e=this.bufferList[0],!(this.getDelay(e.ts,e.type)>t)){this.delay<0&&this.player.debug.warn("CommonDemux",`_loop delay is ${this.delay} bufferList is ${this.bufferList}`);break}this.bufferList.shift(),this._doDecoderDecode(e)}}else-1!==this.delay&&this.player.debug.log("CommonDemux","loop() bufferList is empty and reset delay"),this.resetAllDelay()}_doDecode(e,t,i,r,s=0){const a=this.player;let n={ts:i,cts:s,type:t,isIFrame:!1};this.player.isPlayer()?(t===Ne&&a._opt.playType===A&&this.calcNetworkDelay(i),a._opt.useWCS&&!a._opt.useOffscreen||a._opt.useMSE?(t===Ne&&(n.isIFrame=r),this.pushBuffer(e,n)):t===Ne?a.decoderWorker&&a.decoderWorker.decodeVideo(e,i,r):t===Oe&&a._opt.hasAudio&&a.decoderWorker&&a.decoderWorker.decodeAudio(e,i)):this.player.isPlayback()&&(t===Ne&&(n.isIFrame=r),this.player.isPlaybackOnlyDecodeIFrame()?t===Ne&&r&&this.pushBuffer(e,n):this.player.isPlaybackCacheBeforeDecodeForFpsRender()||1===this.player.getPlaybackRate()?this.pushBuffer(e,n):this.pushBuffer(e,n,!1))}_doDecodeByHls(e,t,i,r,s=0){let a=!1;if(t===Oe&&is(e)&&(this.player.debug.log("CommonDemux",`hls pushBuffer audio ts is ${i}, isAacCodecPacket is true`),a=!0,this.player.isRecordTypeFlv())){const t=new Uint8Array(e);this.player.recorder.addAACSequenceHeader(t,i)}let n=!1;if(t===Ne&&r&&Sa(e)&&(this.player.debug.log("CommonDemux",`hls pushBuffer video ts is ${i}, isVideoSequenceHeader is true`),n=!0,this.player.isRecordTypeFlv())){const t=new Uint8Array(e);this.player.recorder.addVideoSequenceHeader(t,i)}this.player.recording&&ka(n)&&ka(a)&&this.handleRecording(e,t,i,r,s),t===Ne?this._doDecoderDecode({ts:i,cts:s,payload:e,type:Ne,isIFrame:r}):t===Oe&&this._doDecoderDecode({ts:i,payload:e,type:Oe})}_doDecodeByFmp4(e,t,i,r,s=0){this._doDecode(e,t,i,r,s)}_doDecodeByTs(e,t,i,r,s=0){this._doDecode(e,t,i,r,s)}_decodeNext(e){const t=e.ts;if(0===this.bufferList.length)return;let i=this.bufferList[0];const r=i.ts-t,s=e.type===Ne&&i.type===Oe,a=e.type===Ne&&Sa(e.payload);(r<=20||s||a)&&(this.player.debug.log("CommonDemux",`decode data type is ${e.type} and\n ts is ${t} next data type is ${i.type} ts is ${i.ts}\n diff is ${r} and isVideoAndNextAudio is ${s} and isVideoSqeHeader is ${a}`),this.bufferList.shift(),this._doDecoderDecode(i))}_doDecoderDecode(e){const t=this.player,{webcodecsDecoder:i,mseDecoder:r}=t;this.player.isPlayer()&&this.player.updateStats({buf:this.delay}),e.type===Oe?t._opt.hasAudio&&(t._opt.useMSE&&t._opt.mseDecodeAudio?r.decodeAudio(e.payload,e.ts):t.decoderWorker&&t.decoderWorker.decodeAudio(e.payload,e.ts)):e.type===Ne&&(t._opt.isEmitSEI&&this.findSei(e.payload,e.ts),t._opt.useWCS&&!t._opt.useOffscreen?i.decodeVideo(e.payload,e.ts,e.isIFrame,e.cts):t._opt.useMSE?r.decodeVideo(e.payload,e.ts,e.isIFrame,e.cts):t.decoderWorker&&t.decoderWorker.decodeVideo(e.payload,e.ts,e.isIFrame))}pushBuffer(e,t,i=!0){const r=this.player._opt.videoBuffer,s=this.player._opt.videoBufferDelay,a=this.player.isPlayer();if(t.type===Oe&&is(e)){if(this.player.debug.log("CommonDemux",`pushBuffer() audio ts is ${t.ts}, isAacCodecPacket is true`),this.player.isRecordTypeFlv()){const i=new Uint8Array(e);this.player.recorder.addAACSequenceHeader(i,t.ts)}this._doDecoderDecode({ts:t.ts,payload:e,type:Oe})}else if(t.type===Ne&&t.isIFrame&&Sa(e)){if(this.player.debug.log("CommonDemux",`pushBuffer() video ts is ${t.ts}, isVideoSequenceHeader is true`),this.player.isRecordTypeFlv()){const i=new Uint8Array(e);this.player.recorder.addVideoSequenceHeader(i,t.ts)}this._doDecoderDecode({ts:t.ts,payload:e,type:Ne,isIFrame:t.isIFrame,cts:t.cts})}else{if(this.player.recording&&this.handleRecording(e,t.type,t.ts,t.isIFrame,t.cts),a){if(this.preTimestampDuration>0&&this.preTimestamp>0&&t.type===Ne){const e=t.ts-this.preTimestamp,i=this.preTimestampDuration+this.preTimestampDuration/2;e>=i&&this.player.debug.log("CommonDemux",`pushBuffer() video\n ts is ${t.ts}, preTimestamp is ${this.preTimestamp},\n diff is ${e} and preTimestampDuration is ${this.preTimestampDuration} and maxDiff is ${i}\n maybe trigger black screen or flower screen`)}if(this.preTimestamp>0&&t.tsee&&(this.player.debug.warn("CommonDemux",`pushBuffer() video\n ts is ${t.ts}, preTimestamp is ${this.preTimestamp},\n diff is ${this.preTimestamp-t.ts} more than 3600000\n and resetAllDelay()`),this.resetAllDelay()),t.ts<=this.preTimestamp&&this.preTimestamp>0&&t.type===Ne&&(this.player.debug.warn("CommonDemux",`pushBuffer() video\n ts is ${t.ts} less than (or equal) preTimestamp is ${this.preTimestamp} and\n payloadBufferSize is ${e.byteLength} and prevPayloadBufferSize is ${this.prevPayloadBufferSize}`),this.player._opt.isDropSameTimestampGop&&this.player.isDemuxDecodeFirstIIframeInit())){const e=this.hasIframeInBufferList(),t=ka(this.isPushDropping);return this.player.debug.log("CommonDemux",`pushBuffer(), isDropSameTimestampGop is true and\n hasIframe is ${e} and isNotPushDropping is ${t} and next drop buffer`),void(e&&t?this.dropBuffer$2():this.clearBuffer(!0))}if(this.player.isDemuxDecodeFirstIIframeInit()){let e=this.getDelayNotUpdateDelay(t.ts,t.type);this.pushLatestDelay=e;const i=s+r;this.player._opt.useMSE?e>i&&this.delay0&&this.hasIframeInBufferList()&&!1===this.isPushDropping&&(this.player.debug.warn("CommonDemux",`useMSE, pushLatestDelay is ${e} > ${s+r}, bufferList is ${this.bufferList.length}, delay is ${this.delay} and dropBuffer$2()`),this.dropBuffer$2()):e>i&&this.delay0&&this.hasIframeInBufferList()&&!1===this.isPushDropping&&(this.player.debug.warn("CommonDemux",`useWCS, pushLatestDelay is ${e} > ${s+r},bufferList is ${this.bufferList.length}, delay is ${this.delay} and dropBuffer$2()`),this.dropBuffer$2()),this.isHistoryIntervalDiffTimeAllLarge()&&ka(this.player.visibility)&&(this.player._opt.useMSE?this.hasIframeInBufferList()&&!1===this.isPushDropping&&(this.player.debug.warn("CommonDemux",`useMSE, page visibility is false and\n history interval diff is ${this.historyIntervalDiffTimeList.join(",")} and\n bufferList is ${this.bufferList.length},\n delay is ${this.delay} and dropBuffer$2()`),this.dropBuffer$2()):this.hasIframeInBufferList()&&!1===this.isPushDropping&&(this.player.debug.warn("CommonDemux",`useWCS, page visibility is false and\n history interval diff is ${this.historyIntervalDiffTimeList.join(",")} and\n bufferList is ${this.bufferList.length},\n delay is ${this.delay} and dropBuffer$2()`),this.dropBuffer$2()))}t.type===Ne&&(this.preTimestamp>0&&(this.preTimestampDuration=t.ts-this.preTimestamp),this.prevPayloadBufferSize=e.byteLength,this.preTimestamp=t.ts)}if(i?t.type===Oe?this.bufferList.push({ts:t.ts,payload:e,type:Oe}):t.type===Ne&&this.bufferList.push({ts:t.ts,cts:t.cts,payload:e,type:Ne,isIFrame:t.isIFrame}):t.type===Ne?this._doDecoderDecode({ts:t.ts,cts:t.cts,payload:e,type:Ne,isIFrame:t.isIFrame}):t.type===Oe&&this._doDecoderDecode({ts:t.ts,payload:e,type:Oe}),this.player.isPlaybackCacheBeforeDecodeForFpsRender()&&($s(this.playbackStreamVideoFps)||$s(this.playbackStreamAudioFps))){let e=this.playbackStreamVideoFps,t=this.playbackStreamAudioFps;if($s(this.playbackStreamVideoFps)&&(e=Aa(this.bufferList,Ne),e>0&&(this.playbackStreamVideoFps=e,this.player.video&&this.player.video.setStreamFps(this.playbackStreamVideoFps),this.playbackStreamFps=t?e+t:e,ka(this.player._opt.hasAudio)&&(this.player.debug.log(this.TAG_NAME,"playbackCacheBeforeDecodeForFpsRender,_opt.hasAudio is false and set streamAudioFps is 0"),this.playbackStreamAudioFps=0),this.initPlaybackCacheLoop())),$s(this.playbackStreamAudioFps)&&(t=Aa(this.bufferList,Oe),t>0&&(this.playbackStreamAudioFps=t,this.playbackStreamFps=e?e+t:t,this.initPlaybackCacheLoop())),$s(this.playbackStreamVideoFps)&&$s(this.playbackStreamAudioFps)){const i=this.bufferList.map((e=>({type:e.type,ts:e.ts})));this.player.debug.log("CommonDemux",`playbackCacheBeforeDecodeForFpsRender, calc streamAudioFps is ${t}, streamVideoFps is ${e}, bufferListLength is ${this.bufferList.length} and ts list is ${JSON.stringify(i)}`)}const i=this.getAudioBufferLength()>0,r=i?60:40;this.bufferList.length>=r&&(this.debug.warn("CommonDemux",`playbackCacheBeforeDecodeForFpsRender, bufferListLength is ${this.bufferList.length} more than ${r}, and hasAudio is ${i} an set streamFps is 25`),this.playbackStreamVideoFps=e,this.player.video&&this.player.video.setStreamFps(this.playbackStreamVideoFps),i?(this.playbackStreamAudioFps=25,this.playbackStreamFps=this.playbackStreamVideoFps+this.playbackStreamAudioFps):this.playbackStreamFps=this.playbackStreamVideoFps,this.initPlaybackCacheLoop())}}}dropBuffer$2(){if(this.bufferList.length>0){let e=this.bufferList.findIndex((e=>Ta(e.isIFrame)&&e.type===Ne));if(this.isAllIframeInBufferList())for(let t=0;t=this.getNotDroppingDelayTs()){this.player.debug.log("CommonDemux",`dropBuffer$2() isAllIframeInBufferList() is true, and index is ${t} and tempDelay is ${r} and notDroppingDelayTs is ${this.getNotDroppingDelayTs()}`),e=t;break}}if(e>=0){this.isPushDropping=!0,this.player.updateStats({isDropping:!0});const t=this.bufferList.length;this.bufferList=this.bufferList.slice(e);const i=this.bufferList.shift();this.resetAllDelay(),this.getDelay(i.ts,i.type),this._doDecoderDecode(i),this.isPushDropping=!1,this.player.debug.log("CommonDemux",`dropBuffer$2() iFrameIndex is ${e},and old bufferList length is ${t} ,and new bufferList length is ${this.bufferList.length} and new delay is ${this.delay} `)}else this.isPushDropping=!1}0===this.bufferList.length&&(this.isPushDropping=!1)}clearBuffer(e=!1){this.player.debug.log("CommonDemux",`clearBuffer,buffer length is ${this.bufferList.length}, need clear is ${e} and _opt.checkFirstIFrame is ${this.player._opt.checkFirstIFrame}`),e&&(this.bufferList=[]),this.player.isPlayer()&&(this.resetAllDelay(),Ta(this.player._opt.checkFirstIFrame)&&(this.dropping=!0,this.player.updateStats({isDropping:!0}))),this.player.decoderCheckFirstIFrame()}calcNetworkDelay(e){if(!(this.player.isDemuxDecodeFirstIIframeInit()&&e>0))return;null===this.bufferStartDts?(this.bufferStartDts=e,this.bufferStartLocalTs=vs()):et?i-t:0;r>this.player._opt.networkDelay&&this.player._opt.playType===A&&(this.player.debug.warn("CommonDemux",`delay is more than networkDelay and now dts:${e},start dts is ${this.bufferStartDts}, vs start is ${t},local diff is ${i} ,delay is ${r}, _opt.networkDelay is ${this.player._opt.networkDelay}`),this.player.emit(st.networkDelayTimeout,r)),this.player.updateStats({netBuf:r})}calcIframeIntervalTimestamp(e){if(null===this.preIframeTs)this.preIframeTs=e;else if(this.preIframeTs{t.type===Ne&&(e+=1)})),e}getAudioBufferLength(){let e=0;return this.bufferList.forEach((t=>{t.type===Oe&&(e+=1)})),e}hasIframeInBufferList(){return this.bufferList.some((e=>e.type===Ne&&e.isIFrame))}isAllIframeInBufferList(){const e=this.getVideoBufferLength();let t=0;return this.bufferList.forEach((e=>{e.type===Ne&&e.isIFrame&&(t+=1)})),e===t}getInputByteLength(){return 0}getIsStreamTsMoreThanLocal(){return this.isStreamTsMoreThanLocal}close(){}reset(){}findSei(e,t,i=!1){let r=4;Ks(this.nalUnitSize)&&(r=this.nalUnitSize);const s=qn(e.slice(5),r);if(ka(i)){const e=this.player.getVideoInfo();e&&e.encType&&(i=e.encType===bt)}s.forEach((e=>{const r=i?e[0]>>>1&63:31&e[0];(i&&(r===It||r===Lt)||ka(i)&&r===St.kSliceSEI)&&this.player.emit(st.videoSEI,{ts:t,data:e})}))}handleRecording(e,t,i,r,s){if(this.player.isRecordTypeFlv()){const r=new Uint8Array(e);t===Ne?this.player.recorder.addVideo(r,i):t===Oe&&this.player.recorder.addAudio(r,i)}else if(this.player.isRecordTypeMp4()){const a=new Uint8Array(e);if(this.player.recorder.isWasmMp4()){if(t===Ne)this.player.recorder.handleAddNaluTrack(a.slice(5),r,i,s);else if(t===Oe){const t=new Uint8Array(e);this.player.recorder.handleAddAudioTrack(rs(t)?t.slice(2):t.slice(1),i)}}else t===Ne&&this.player.recorder.handleAddNaluTrack(a.slice(5),r,i,s)}}updateNalUnitSize(e){const t=15&e[0];this.player.video.updateVideoInfo({encTypeCode:t});const i=t===At;this.nalUnitSize=function(e,t){let i=null;return t?e.length>=28&&(i=1+(3&e[26])):e.length>=12&&(i=1+(3&e[9])),i}(e,i),this.player.debug.log(this.TAG_NAME,`demux() isVideoSequenceHeader is true and isHevc is ${i} and nalUnitSize is ${this.nalUnitSize}`)}cryptoPayload(e,t){let i=e,r=this.player;if(r._opt.isM7sCrypto)if(r._opt.cryptoKey&&r._opt.cryptoKey.byteLength>0&&r._opt.cryptoIV&&r._opt.cryptoIV.byteLength>0){const t=this.player.video.getVideoInfo();t.encTypeCode?i=function(e,t,i,r=!1){t=new Uint8Array(t),i=new Uint8Array(i);const s=e.byteLength;let a=5;for(;as)break;let l=e[a+4],d=!1;if(r?(l=l>>>1&63,d=[0,1,2,3,4,5,6,7,8,9,16,17,18,19,20,21].includes(l)):(l&=31,d=1===l||5===l),d){const r=e.slice(a+4+2,a+4+o);let s=new wl.ModeOfOperation.ctr(t,new wl.Counter(i));const n=s.decrypt(r);s=null,e.set(n,a+4+2)}a=a+4+o}var n;return e}(e,r._opt.cryptoKey,r._opt.cryptoIV,t.encTypeCode===At):r.debug.warn(this.TAG_NAME,`videoInfo.encTypeCode is ${t.encTypeCode}`)}else r.debug.error(this.TAG_NAME,`isM7sCrypto cryptoKey.length is ${r._opt.cryptoKey&&r._opt.cryptoKey.byteLength} or cryptoIV.length is ${r._opt.cryptoIV&&r._opt.cryptoIV.byteLength} null`);else if(r._opt.isSm4Crypto)r._opt.sm4CryptoKey&&t?i=function(e,t,i=!1){const r=e.byteLength;let s=5;for(;sr)break;let o=e[s+4],l=!1;if(i?(o=o>>>1&63,l=[0,1,2,3,4,5,6,7,8,9,16,17,18,19,20,21].includes(o)):(o&=31,l=1===o||5===o),l){const i=Bl(e.slice(s+4+2,s+4+n),t,0,{padding:"none",output:"array"});e.set(i,s+4+2)}s=s+4+n}var a;return e}(e,r._opt.sm4CryptoKey):r._opt.sm4CryptoKey||r.debug.error(this.TAG_NAME,"isSm4Crypto opt.sm4CryptoKey is null");else if(r._opt.isXorCrypto)if(r._opt.cryptoKey&&r._opt.cryptoKey.byteLength>0&&r._opt.cryptoIV&&r._opt.cryptoIV.byteLength>0){const t=this.player.video.getVideoInfo();i=function(e,t,i,r=!1){const s=e.byteLength;let a=5;for(;as)break;let l=e[a+4],d=!1;if(r?(l=l>>>1&63,d=[0,1,2,3,4,5,6,7,8,9,16,17,18,19,20,21].includes(l)):(l&=31,d=1===l||5===l),d){const r=Ml(e.slice(a+4,a+4+o),t,i);e.set(r,a+4)}a=a+4+o}var n;return e}(e,r._opt.cryptoKey,r._opt.cryptoIV,t.encTypeCode===At)}else r.debug.error(this.TAG_NAME,"isXorCrypto opt.xorCryptoKey is null");return i}cryptoPayloadAudio(e){let t=e,i=this.player;if(i._opt.isM7sCrypto)if(i._opt.cryptoKey&&i._opt.cryptoKey.byteLength>0&&i._opt.cryptoIV&&i._opt.cryptoIV.byteLength>0){e[0]>>4===_t.AAC&&(t=function(e,t,i){if(e.byteLength<=30)return e;const r=e.slice(32);let s=new wl.ModeOfOperation.ctr(t,new wl.Counter(i));const a=s.decrypt(r);return s=null,e.set(a,32),e}(e,i._opt.cryptoKey,i._opt.cryptoIV))}else i.debug.error(this.TAG_NAME,`isM7sCrypto cryptoKey.length is ${i._opt.cryptoKey&&i._opt.cryptoKey.byteLength} or cryptoIV.length is ${i._opt.cryptoIV&&i._opt.cryptoIV.byteLength} null`);return t}_decodeEnhancedH265Video(e,t){const i=e[0],r=48&i,s=15&i,a=e.slice(1,5),n=new ArrayBuffer(4),o=new Uint32Array(n),l="a"==String.fromCharCode(a[0]);if(s===Ur){if(r===Nr){const t=e.slice(5);if(l);else{const e=new Uint8Array(5+t.length);e.set([28,0,0,0,0],0),e.set(t,5),this.updateNalUnitSize(e),this.player.debug.log(this.TAG_NAME,`demux() isVideoSequenceHeader(enhancedH265) is true and nalUnitSize is ${this.nalUnitSize}`),this._doDecode(e,Ne,0,!0,0)}}}else if(s===Fr){let i=e,s=0;const a=r===Nr;if(a&&this.calcIframeIntervalTimestamp(t),l);else{o[0]=e[4],o[1]=e[3],o[2]=e[2],o[3]=0,s=o[0];i=eo(e.slice(8),a),i=this.cryptoPayload(i,a),this._doDecode(i,Ne,t,a,s)}}else if(s===Or){const i=r===Nr,s=e.slice(5);i&&this.calcIframeIntervalTimestamp(t);let a=eo(s,i);a=this.cryptoPayload(a,i),this._doDecode(a,Ne,t,i,0)}}_isEnhancedH265Header(e){return!(128&~e)}}var Fl=function(e,t,i,r){return new(i||(i=Promise))((function(s,a){function n(e){try{l(r.next(e))}catch(e){a(e)}}function o(e){try{l(r.throw(e))}catch(e){a(e)}}function l(e){var t;e.done?s(e.value):(t=e.value,t instanceof i?t:new i((function(e){e(t)}))).then(n,o)}l((r=r.apply(e,t||[])).next())}))};const Ol=Symbol(32),Nl=Symbol(16),Gl=Symbol(8);class zl{constructor(e){this.g=e,this.consumed=0,e&&(this.need=e.next().value)}setG(e){this.g=e,this.demand(e.next().value,!0)}consume(){this.buffer&&this.consumed&&(this.buffer.copyWithin(0,this.consumed),this.buffer=this.buffer.subarray(0,this.buffer.length-this.consumed),this.consumed=0)}demand(e,t){return t&&this.consume(),this.need=e,this.flush()}read(e){return Fl(this,void 0,void 0,(function*(){return this.lastReadPromise&&(yield this.lastReadPromise),this.lastReadPromise=new Promise(((t,i)=>{var r;this.reject=i,this.resolve=e=>{delete this.lastReadPromise,delete this.resolve,delete this.need,t(e)};this.demand(e,!0)||null===(r=this.pull)||void 0===r||r.call(this,e)}))}))}readU32(){return this.read(Ol)}readU16(){return this.read(Nl)}readU8(){return this.read(Gl)}close(){var e;this.g&&this.g.return(),this.buffer&&this.buffer.subarray(0,0),null===(e=this.reject)||void 0===e||e.call(this,new Error("EOF")),delete this.lastReadPromise}flush(){if(!this.buffer||!this.need)return;let e=null;const t=this.buffer.subarray(this.consumed);let i=0;const r=e=>t.length<(i=e);if("number"==typeof this.need){if(r(this.need))return;e=t.subarray(0,i)}else if(this.need===Ol){if(r(4))return;e=t[0]<<24|t[1]<<16|t[2]<<8|t[3]}else if(this.need===Nl){if(r(2))return;e=t[0]<<8|t[1]}else if(this.need===Gl){if(r(1))return;e=t[0]}else if("buffer"in this.need){if("byteOffset"in this.need){if(r(this.need.byteLength-this.need.byteOffset))return;new Uint8Array(this.need.buffer,this.need.byteOffset).set(t.subarray(0,i)),e=this.need}else if(this.g)return void this.g.throw(new Error("Unsupported type"))}else{if(r(this.need.byteLength))return;new Uint8Array(this.need).set(t.subarray(0,i)),e=this.need}return this.consumed+=i,this.g?this.demand(this.g.next(e).value,!0):this.resolve&&this.resolve(e),e}write(e){if(e instanceof Uint8Array?this.malloc(e.length).set(e):"buffer"in e?this.malloc(e.byteLength).set(new Uint8Array(e.buffer,e.byteOffset,e.byteLength)):this.malloc(e.byteLength).set(new Uint8Array(e)),!this.g&&!this.resolve)return new Promise((e=>this.pull=e));this.flush()}writeU32(e){this.malloc(4).set([e>>24&255,e>>16&255,e>>8&255,255&e]),this.flush()}writeU16(e){this.malloc(2).set([e>>8&255,255&e]),this.flush()}writeU8(e){this.malloc(1)[0]=e,this.flush()}malloc(e){if(this.buffer){const t=this.buffer.length,i=t+e;if(i<=this.buffer.buffer.byteLength-this.buffer.byteOffset)this.buffer=new Uint8Array(this.buffer.buffer,this.buffer.byteOffset,i);else{const e=new Uint8Array(i);e.set(this.buffer),this.buffer=e}return this.buffer.subarray(t,i)}return this.buffer=new Uint8Array(e),this.buffer}}zl.U32=Ol,zl.U16=Nl,zl.U8=Gl;class Wl extends Ul{constructor(e){super(e),this.TAG_NAME="FlvDemux",this.input=new zl(this.demux()),e.debug.log(this.TAG_NAME,"init")}destroy(){super.destroy(),this.input=null,this.player.debug.log(this.TAG_NAME,"destroy")}dispatch(e){this.input?this.input.write(e):this.player&&this.player.debug.warn(this.TAG_NAME,"dispatch() this.input is null")}*demux(){yield 9;const e=new ArrayBuffer(4),t=new Uint8Array(e),i=new Uint32Array(e),r=this.player;for(;;){if(!this.input)return;t[3]=0;const e=yield 15,s=e[4];t[0]=e[7],t[1]=e[6],t[2]=e[5];const a=i[0];t[0]=e[10],t[1]=e[9],t[2]=e[8],t[3]=e[11];let n=i[0];const o=(yield a).slice();if(!r)return;switch(s){case Ge:if(r._opt.hasAudio&&(r.updateStats({abps:o.byteLength}),o.byteLength>0)){let e=o;Ta(this.player._opt.m7sCryptoAudio)&&(e=this.cryptoPayloadAudio(o)),this._doDecode(e,Oe,n)}break;case ze:if(r._opt.hasVideo&&o.length>=6){let e=n;r.updateStats({vbps:o.byteLength,dts:e}),r._times.demuxStart||(r._times.demuxStart=vs());const t=o[0];if(this._isEnhancedH265Header(t))this._decodeEnhancedH265Video(o,e);else{const e=15&t,r=(t>>4&15)===dr;if(ka(e===At||e===gt))return void this.player.debug.warn(this.TAG_NAME,`demux() codecId is ${e} and ignore`);r&&(this.calcIframeIntervalTimestamp(n),null===this.nalUnitSize&&Sa(o)&&this.updateNalUnitSize(o)),i[0]=o[4],i[1]=o[3],i[2]=o[2],i[3]=0;let s=i[0],a=this.cryptoPayload(o,r);this._doDecode(a,Ne,n,r,s)}}else o.length<6&&r.debug.warn(this.TAG_NAME,`payload.length is ${o.length} less than 6 and ignore`);break;case We:if(this.player.isRecordTypeFlv()){const e=new Uint8Array(o);this.player.recorder.addMetaData(e)}const e=Ao(o);e&&e.onMetaData&&r.updateMetaData(e.onMetaData);break;default:r.debug.log(this.TAG_NAME,`demux() type is ${s}`)}}}close(){this.input=null}getInputByteLength(){let e=0;return this.input&&this.input.buffer&&(e=this.input.buffer.byteLength),e}hasUnitTypeIDR(e,t){const i=qn(e.slice(5));let r=!1;return i.forEach((e=>{const i=t?e[0]>>>1&63:31&e[0];(t&&(i===Tt||i===kt)||ka(t)&&i===St.iFrame)&&(r=!0)})),r}}class Vl extends Ul{constructor(e){super(e),this.TAG_NAME="M7sDemux",e.debug.log(this.TAG_NAME,"init")}destroy(){super.destroy(),this.player.debug.log(this.TAG_NAME,"destroy")}dispatch(e){const t=this.player,i=new DataView(e),r=i.getUint8(0),s=i.getUint32(1,!1),a=new ArrayBuffer(4),n=new Uint32Array(a);switch(r){case Oe:if(t._opt.hasAudio){const i=new Uint8Array(e,5);t.updateStats({abps:i.byteLength}),i.byteLength>0&&this._doDecode(i,r,s)}break;case Ne:if(t._opt.hasVideo)if(t._times.demuxStart||(t._times.demuxStart=vs()),i.byteLength>=11){const a=new Uint8Array(e,5);let o=s;t.updateStats({vbps:a.byteLength,dts:o});const l=a[0];if(this._isEnhancedH265Header(l))this._decodeEnhancedH265Video(a,s);else{const e=i.getUint8(5)>>4==1;e&&this.calcIframeIntervalTimestamp(s),n[0]=a[4],n[1]=a[3],n[2]=a[2],n[3]=0;let t=n[0],o=this.cryptoPayload(a,e);this._doDecode(o,r,s,e,t)}}else this.player.debug.warn(this.TAG_NAME,"dispatch","dv byteLength is",i.byteLength,"and return")}}}class Hl extends Wl{constructor(e){super(e),e.debug.log("WebTransportDemux","init")}destroy(){this.player.debug.log("WebTransportDemux","destroy"),super.destroy()}}class $l extends Ul{TAG_NAME="NakedFlowDemux";constructor(e){super(e),this.lastBuf=null,this.vps=null,this.sps=null,this.pps=null,this.streamVideoType=null,this.streamAudioType=null,this.tempNaluBufferList=new Uint8Array(0),this.localDts=0,this.isSendSeqHeader=!1,this.isSendAACSeqHeader=!1,e.debug.log(this.TAG_NAME,"init")}destroy(){super.destroy(),this.lastBuf=null,this.vps=null,this.sps=null,this.pps=null,this.streamVideoType=null,this.streamAudioType=null,this.tempNaluBufferList=new Uint8Array(0),this.localDts=0,this.localAudioDts=0,this.isSendSeqHeader=!1,this.isSendAACSeqHeader=!1,this.player.debug.log(this.TAG_NAME,"destroy")}dispatch(e){this.player;const t=new Uint8Array(e);this.extractNALu$2(t)}addNaluToBuffer(e){const t=e.byteLength+this.tempNaluBufferList.byteLength,i=new Uint8Array(t);i.set(this.tempNaluBufferList,0),i.set(e,this.tempNaluBufferList.byteLength),this.tempNaluBufferList=i}downloadNakedFlowFile(){const e=new Blob([this.tempNaluBufferList]);try{const t=document.createElement("a");t.href=window.URL.createObjectURL(e),t.download=Date.now()+".h264",t.click(),window.URL.revokeObjectURL(t.href)}catch(e){console.error("downloadTempNalu",e)}}getNaluDts(){const e=this.player._opt.nakedFlowFps;return this.localDts=this.localDts+parseInt(1e3/e),this.localDts}getNaluAudioDts(){const e=this.player.audio.audioContext.sampleRate,t=this.player.audio.audioBufferSize;return this.localDts+parseInt(t/e*1e3)}extractNALu(e){let t,i,r=0,s=e.byteLength,a=0,n=[];for(;r1)for(let e=0;e>1,i!==Ct&&i!==Dt&&i!==Rt||(t=bt)),t}(t)),this.streamVideoType===vt){const e=this.handleAddNaluStartCode(t),i=this.extractNALu(e);if(0===i.length)return void this.player.debug.warn(this.TAG_NAME,"handleVideoNalu","naluList.length === 0");const r=[];if(i.forEach((e=>{const t=zn(e);t===St.pps||t===St.sps?this.handleVideoH264Nalu(e):Vn(t)&&r.push(e)})),1===r.length)this.handleVideoH264Nalu(r[0]);else{const e=function(e){if(0===e.length)return!1;const t=zn(e[0]);for(let i=1;i{this.handleVideoH264Nalu(e)}))}}else if(this.streamVideoType===bt)if(this.player._opt.nakedFlowH265DemuxUseNew){const e=this.handleAddNaluStartCode(t),i=this.extractNALu(e);if(0===i.length)return void this.player.debug.warn(this.TAG_NAME,"handleVideoNalu","h265 naluList.length === 0");const r=[];if(i.forEach((e=>{const t=to(e);t===Rt||t===Dt||t===Ct?this.handleVideoH265Nalu(e):io(t)&&r.push(e)})),1===r.length)this.handleVideoH265Nalu(r[0]);else{const e=function(e){if(0===e.length)return!1;const t=to(e[0]);for(let i=1;i{this.handleVideoH265Nalu(e)}))}}else{to(t)===Rt?this.extractH265PPS(t):this.handleVideoH265Nalu(t)}else this.player.debug.error(this.TAG_NAME," this.streamVideoType is null")}extractH264PPS(e){const t=this.handleAddNaluStartCode(e);this.extractNALu(t).forEach((e=>{Wn(zn(e))?this.extractH264SEI(e):this.handleVideoH264Nalu(e)}))}extractH265PPS(e){const t=this.handleAddNaluStartCode(e);this.extractNALu(t).forEach((e=>{const t=to(e);t===xt?this.extractH265SEI(e):this.handleVideoH265Nalu(e)}))}extractH264SEI(e){const t=this.handleAddNaluStartCode(e);this.extractNALu(t).forEach((e=>{this.handleVideoH264Nalu(e)}))}extractH265SEI(e){const t=this.handleAddNaluStartCode(e);this.extractNALu(t).forEach((e=>{this.handleVideoH265Nalu(e)}))}handleAddNaluStartCode(e){const t=[0,0,0,1],i=new Uint8Array(e.length+t.length);return i.set(t),i.set(e,t.length),i}handleAudioAACNalu(e){if(!e||e.byteLength<1)return;this.streamAudioType||(this.streamAudioType=wt.AAC);let t=new Uint8Array(e);const i=t.slice(0,7);if(t=t.slice(7),!this.isSendAACSeqHeader){const e=(192&i[2])>>6,t=(60&i[2])>>2,r=(1&i[2])<<2|(192&i[3])>>6,s=new Uint8Array([175,0,e<<3|(14&t)>>1,(1&t)<<7|r<<3]);this.isSendAACSeqHeader=!0,this._doDecode(s,Oe,0,!1,0)}const r=this.getNaluAudioDts(),s=new Uint8Array(t.length+2);s.set([175,1],0),s.set(t,2),this._doDecode(s,Oe,r,!1,0)}handleAudioG711ANalu(e){if(!e||e.byteLength<1)return;this.streamAudioType||(this.streamAudioType=wt.ALAW);let t=new Uint8Array(e);const i=this.getNaluAudioDts(),r=new Uint8Array(t.length+1);r.set([114],0),r.set(t,1),this._doDecode(r,Oe,i,!1,0)}handleAudioG711UNalu(e){if(!e||e.byteLength<1)return;this.streamAudioType||(this.streamAudioType=wt.MULAW);let t=new Uint8Array(e);const i=this.getNaluAudioDts(),r=new Uint8Array(t.length+1);r.set([130],0),r.set(t,1),this._doDecode(r,Oe,i,!1,0)}handleVideoH264Nalu(e){const t=zn(e);switch(t){case St.sps:this.sps=e;break;case St.pps:this.pps=e}if(this.isSendSeqHeader){if(this.sps&&this.pps){const e=Nn({sps:this.sps,pps:this.pps}),t=this.getNaluDts();this._doDecode(e,Ne,t,!0,0),this.sps=null,this.pps=null}if(Vn(t)){this.player._times.demuxStart||(this.player._times.demuxStart=vs());const i=Hn(t),r=this.getNaluDts(),s=function(e,t){let i=[];i[0]=t?23:39,i[1]=1,i[2]=0,i[3]=0,i[4]=0,i[5]=e.byteLength>>24&255,i[6]=e.byteLength>>16&255,i[7]=e.byteLength>>8&255,i[8]=255&e.byteLength;const r=new Uint8Array(i.length+e.byteLength);return r.set(i,0),r.set(e,i.length),r}(e,i);this._preDoDecode(s,Ne,r,i,0)}else this.player.debug.warn(this.TAG_NAME,`handleVideoH264Nalu is avc seq head nalType is ${t}`)}else if(this.sps&&this.pps){this.isSendSeqHeader=!0;const e=Nn({sps:this.sps,pps:this.pps});this._doDecode(e,Ne,0,!0,0),this.sps=null,this.pps=null}}handleVideoH264NaluList(e,t,i){if(this.isSendSeqHeader){this.player._times.demuxStart||(this.player._times.demuxStart=vs());const i=this.getNaluDts(),r=Gn(e.reduce(((e,t)=>{const i=Yn(e),r=Yn(t),s=new Uint8Array(i.byteLength+r.byteLength);return s.set(i,0),s.set(r,i.byteLength),s})),t);this._preDoDecode(r,Ne,i,t,0)}else this.player.debug.warn(this.TAG_NAME,"handleVideoH264NaluList isSendSeqHeader is false")}handleVideoH265Nalu(e){const t=to(e);switch(t){case Ct:this.vps=e;break;case Dt:this.sps=e;break;case Rt:this.pps=e}if(this.isSendSeqHeader){if(this.vps&&this.sps&&this.pps){const e=Zn({vps:this.vps,sps:this.sps,pps:this.pps}),t=this.getNaluDts();this._doDecode(e,Ne,t,!0,0),this.vps=null,this.sps=null,this.pps=null}if(io(t)){this.player._times.demuxStart||(this.player._times.demuxStart=vs());const i=ro(t),r=this.getNaluDts(),s=function(e,t){let i=[];i[0]=t?28:44,i[1]=1,i[2]=0,i[3]=0,i[4]=0,i[5]=e.byteLength>>24&255,i[6]=e.byteLength>>16&255,i[7]=e.byteLength>>8&255,i[8]=255&e.byteLength;const r=new Uint8Array(i.length+e.byteLength);return r.set(i,0),r.set(e,i.length),r}(e,i);this._preDoDecode(s,Ne,r,i,0)}}else if(this.vps&&this.sps&&this.pps){this.isSendSeqHeader=!0;const e=Zn({vps:this.vps,sps:this.sps,pps:this.pps});this._doDecode(e,Ne,0,!0,0),this.vps=null,this.sps=null,this.pps=null}}handleVideoH265NaluList(e,t,i){if(this.isSendSeqHeader){this.player._times.demuxStart||(this.player._times.demuxStart=vs());const i=this.getNaluDts(),r=eo(e.reduce(((e,t)=>{const i=Yn(e),r=Yn(t),s=new Uint8Array(i.byteLength+r.byteLength);return s.set(i,0),s.set(r,i.byteLength),s})),t);this._preDoDecode(r,Ne,i,t,0)}else this.player.debug.warn(this.TAG_NAME,"handleVideoH265NaluList isSendSeqHeader is false")}_preDoDecode(e,t,i,r,s){this.player.updateStats({vbps:e.byteLength,dts:i}),r&&this.calcIframeIntervalTimestamp(i),this._doDecode(e,Ne,i,r,s)}getInputByteLength(){let e=0;return this.lastBuf&&(e=this.lastBuf.byteLength),e}}class jl extends Ul{constructor(e){super(e),this.player=e,e.debug.log("EmptyDemux","init")}destroy(){super.destroy(),this.player.debug.log("EmptyDemux","destroy")}}var Kl=Zr((function(e,t){var i,r,s,a=(i=new Date,r=4,s={setLogLevel:function(e){r=e==this.debug?1:e==this.info?2:e==this.warn?3:(this.error,4)},debug:function(e,t){void 0===console.debug&&(console.debug=console.log),1>=r&&console.debug("["+a.getDurationString(new Date-i,1e3)+"]","["+e+"]",t)},log:function(e,t){this.debug(e.msg)},info:function(e,t){2>=r&&console.info("["+a.getDurationString(new Date-i,1e3)+"]","["+e+"]",t)},warn:function(e,t){3>=r&&console.warn("["+a.getDurationString(new Date-i,1e3)+"]","["+e+"]",t)},error:function(e,t){4>=r&&console.error("["+a.getDurationString(new Date-i,1e3)+"]","["+e+"]",t)}},s);a.getDurationString=function(e,t){var i;function r(e,t){for(var i=(""+e).split(".");i[0].length0){for(var i="",r=0;r0&&(i+=","),i+="["+a.getDurationString(e.start(r))+","+a.getDurationString(e.end(r))+"]";return i}return"(empty)"},t.Log=a;var n=function(e){if(!(e instanceof ArrayBuffer))throw"Needs an array buffer";this.buffer=e,this.dataview=new DataView(e),this.position=0};n.prototype.getPosition=function(){return this.position},n.prototype.getEndPosition=function(){return this.buffer.byteLength},n.prototype.getLength=function(){return this.buffer.byteLength},n.prototype.seek=function(e){var t=Math.max(0,Math.min(this.buffer.byteLength,e));return this.position=isNaN(t)||!isFinite(t)?0:t,!0},n.prototype.isEos=function(){return this.getPosition()>=this.getEndPosition()},n.prototype.readAnyInt=function(e,t){var i=0;if(this.position+e<=this.buffer.byteLength){switch(e){case 1:i=t?this.dataview.getInt8(this.position):this.dataview.getUint8(this.position);break;case 2:i=t?this.dataview.getInt16(this.position):this.dataview.getUint16(this.position);break;case 3:if(t)throw"No method for reading signed 24 bits values";i=this.dataview.getUint8(this.position)<<16,i|=this.dataview.getUint8(this.position+1)<<8,i|=this.dataview.getUint8(this.position+2);break;case 4:i=t?this.dataview.getInt32(this.position):this.dataview.getUint32(this.position);break;case 8:if(t)throw"No method for reading signed 64 bits values";i=this.dataview.getUint32(this.position)<<32,i|=this.dataview.getUint32(this.position+4);break;default:throw"readInt method not implemented for size: "+e}return this.position+=e,i}throw"Not enough bytes in buffer"},n.prototype.readUint8=function(){return this.readAnyInt(1,!1)},n.prototype.readUint16=function(){return this.readAnyInt(2,!1)},n.prototype.readUint24=function(){return this.readAnyInt(3,!1)},n.prototype.readUint32=function(){return this.readAnyInt(4,!1)},n.prototype.readUint64=function(){return this.readAnyInt(8,!1)},n.prototype.readString=function(e){if(this.position+e<=this.buffer.byteLength){for(var t="",i=0;ithis._byteLength&&(this._byteLength=t);else{for(i<1&&(i=1);t>i;)i*=2;var r=new ArrayBuffer(i),s=new Uint8Array(this._buffer);new Uint8Array(r,0,s.length).set(s),this.buffer=r,this._byteLength=t}}},o.prototype._trimAlloc=function(){if(this._byteLength!=this._buffer.byteLength){var e=new ArrayBuffer(this._byteLength),t=new Uint8Array(e),i=new Uint8Array(this._buffer,0,t.length);t.set(i),this.buffer=e}},o.BIG_ENDIAN=!1,o.LITTLE_ENDIAN=!0,o.prototype._byteLength=0,Object.defineProperty(o.prototype,"byteLength",{get:function(){return this._byteLength-this._byteOffset}}),Object.defineProperty(o.prototype,"buffer",{get:function(){return this._trimAlloc(),this._buffer},set:function(e){this._buffer=e,this._dataView=new DataView(this._buffer,this._byteOffset),this._byteLength=this._buffer.byteLength}}),Object.defineProperty(o.prototype,"byteOffset",{get:function(){return this._byteOffset},set:function(e){this._byteOffset=e,this._dataView=new DataView(this._buffer,this._byteOffset),this._byteLength=this._buffer.byteLength}}),Object.defineProperty(o.prototype,"dataView",{get:function(){return this._dataView},set:function(e){this._byteOffset=e.byteOffset,this._buffer=e.buffer,this._dataView=new DataView(this._buffer,this._byteOffset),this._byteLength=this._byteOffset+e.byteLength}}),o.prototype.seek=function(e){var t=Math.max(0,Math.min(this.byteLength,e));this.position=isNaN(t)||!isFinite(t)?0:t},o.prototype.isEof=function(){return this.position>=this._byteLength},o.prototype.mapUint8Array=function(e){this._realloc(1*e);var t=new Uint8Array(this._buffer,this.byteOffset+this.position,e);return this.position+=1*e,t},o.prototype.readInt32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var i=new Int32Array(e);return o.memcpy(i.buffer,0,this.buffer,this.byteOffset+this.position,e*i.BYTES_PER_ELEMENT),o.arrayToNative(i,null==t?this.endianness:t),this.position+=i.byteLength,i},o.prototype.readInt16Array=function(e,t){e=null==e?this.byteLength-this.position/2:e;var i=new Int16Array(e);return o.memcpy(i.buffer,0,this.buffer,this.byteOffset+this.position,e*i.BYTES_PER_ELEMENT),o.arrayToNative(i,null==t?this.endianness:t),this.position+=i.byteLength,i},o.prototype.readInt8Array=function(e){e=null==e?this.byteLength-this.position:e;var t=new Int8Array(e);return o.memcpy(t.buffer,0,this.buffer,this.byteOffset+this.position,e*t.BYTES_PER_ELEMENT),this.position+=t.byteLength,t},o.prototype.readUint32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var i=new Uint32Array(e);return o.memcpy(i.buffer,0,this.buffer,this.byteOffset+this.position,e*i.BYTES_PER_ELEMENT),o.arrayToNative(i,null==t?this.endianness:t),this.position+=i.byteLength,i},o.prototype.readUint16Array=function(e,t){e=null==e?this.byteLength-this.position/2:e;var i=new Uint16Array(e);return o.memcpy(i.buffer,0,this.buffer,this.byteOffset+this.position,e*i.BYTES_PER_ELEMENT),o.arrayToNative(i,null==t?this.endianness:t),this.position+=i.byteLength,i},o.prototype.readUint8Array=function(e){e=null==e?this.byteLength-this.position:e;var t=new Uint8Array(e);return o.memcpy(t.buffer,0,this.buffer,this.byteOffset+this.position,e*t.BYTES_PER_ELEMENT),this.position+=t.byteLength,t},o.prototype.readFloat64Array=function(e,t){e=null==e?this.byteLength-this.position/8:e;var i=new Float64Array(e);return o.memcpy(i.buffer,0,this.buffer,this.byteOffset+this.position,e*i.BYTES_PER_ELEMENT),o.arrayToNative(i,null==t?this.endianness:t),this.position+=i.byteLength,i},o.prototype.readFloat32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var i=new Float32Array(e);return o.memcpy(i.buffer,0,this.buffer,this.byteOffset+this.position,e*i.BYTES_PER_ELEMENT),o.arrayToNative(i,null==t?this.endianness:t),this.position+=i.byteLength,i},o.prototype.readInt32=function(e){var t=this._dataView.getInt32(this.position,null==e?this.endianness:e);return this.position+=4,t},o.prototype.readInt16=function(e){var t=this._dataView.getInt16(this.position,null==e?this.endianness:e);return this.position+=2,t},o.prototype.readInt8=function(){var e=this._dataView.getInt8(this.position);return this.position+=1,e},o.prototype.readUint32=function(e){var t=this._dataView.getUint32(this.position,null==e?this.endianness:e);return this.position+=4,t},o.prototype.readUint16=function(e){var t=this._dataView.getUint16(this.position,null==e?this.endianness:e);return this.position+=2,t},o.prototype.readUint8=function(){var e=this._dataView.getUint8(this.position);return this.position+=1,e},o.prototype.readFloat32=function(e){var t=this._dataView.getFloat32(this.position,null==e?this.endianness:e);return this.position+=4,t},o.prototype.readFloat64=function(e){var t=this._dataView.getFloat64(this.position,null==e?this.endianness:e);return this.position+=8,t},o.endianness=new Int8Array(new Int16Array([1]).buffer)[0]>0,o.memcpy=function(e,t,i,r,s){var a=new Uint8Array(e,t,s),n=new Uint8Array(i,r,s);a.set(n)},o.arrayToNative=function(e,t){return t==this.endianness?e:this.flipArrayEndianness(e)},o.nativeToEndian=function(e,t){return this.endianness==t?e:this.flipArrayEndianness(e)},o.flipArrayEndianness=function(e){for(var t=new Uint8Array(e.buffer,e.byteOffset,e.byteLength),i=0;is;r--,s++){var a=t[s];t[s]=t[r],t[r]=a}return e},o.prototype.failurePosition=0,String.fromCharCodeUint8=function(e){for(var t=[],i=0;i>16),this.writeUint8((65280&e)>>8),this.writeUint8(255&e)},o.prototype.adjustUint32=function(e,t){var i=this.position;this.seek(e),this.writeUint32(t),this.seek(i)},o.prototype.mapInt32Array=function(e,t){this._realloc(4*e);var i=new Int32Array(this._buffer,this.byteOffset+this.position,e);return o.arrayToNative(i,null==t?this.endianness:t),this.position+=4*e,i},o.prototype.mapInt16Array=function(e,t){this._realloc(2*e);var i=new Int16Array(this._buffer,this.byteOffset+this.position,e);return o.arrayToNative(i,null==t?this.endianness:t),this.position+=2*e,i},o.prototype.mapInt8Array=function(e){this._realloc(1*e);var t=new Int8Array(this._buffer,this.byteOffset+this.position,e);return this.position+=1*e,t},o.prototype.mapUint32Array=function(e,t){this._realloc(4*e);var i=new Uint32Array(this._buffer,this.byteOffset+this.position,e);return o.arrayToNative(i,null==t?this.endianness:t),this.position+=4*e,i},o.prototype.mapUint16Array=function(e,t){this._realloc(2*e);var i=new Uint16Array(this._buffer,this.byteOffset+this.position,e);return o.arrayToNative(i,null==t?this.endianness:t),this.position+=2*e,i},o.prototype.mapFloat64Array=function(e,t){this._realloc(8*e);var i=new Float64Array(this._buffer,this.byteOffset+this.position,e);return o.arrayToNative(i,null==t?this.endianness:t),this.position+=8*e,i},o.prototype.mapFloat32Array=function(e,t){this._realloc(4*e);var i=new Float32Array(this._buffer,this.byteOffset+this.position,e);return o.arrayToNative(i,null==t?this.endianness:t),this.position+=4*e,i};var d=function(e){this.buffers=[],this.bufferIndex=-1,e&&(this.insertBuffer(e),this.bufferIndex=0)};(d.prototype=new o(new ArrayBuffer,0,o.BIG_ENDIAN)).initialized=function(){var e;return this.bufferIndex>-1||(this.buffers.length>0?0===(e=this.buffers[0]).fileStart?(this.buffer=e,this.bufferIndex=0,a.debug("MultiBufferStream","Stream ready for parsing"),!0):(a.warn("MultiBufferStream","The first buffer should have a fileStart of 0"),this.logBufferLevel(),!1):(a.warn("MultiBufferStream","No buffer to start parsing from"),this.logBufferLevel(),!1))},ArrayBuffer.concat=function(e,t){a.debug("ArrayBuffer","Trying to create a new buffer of size: "+(e.byteLength+t.byteLength));var i=new Uint8Array(e.byteLength+t.byteLength);return i.set(new Uint8Array(e),0),i.set(new Uint8Array(t),e.byteLength),i.buffer},d.prototype.reduceBuffer=function(e,t,i){var r;return(r=new Uint8Array(i)).set(new Uint8Array(e,t,i)),r.buffer.fileStart=e.fileStart+t,r.buffer.usedBytes=0,r.buffer},d.prototype.insertBuffer=function(e){for(var t=!0,i=0;ir.byteLength){this.buffers.splice(i,1),i--;continue}a.warn("MultiBufferStream","Buffer (fileStart: "+e.fileStart+" - Length: "+e.byteLength+") already appended, ignoring")}else e.fileStart+e.byteLength<=r.fileStart||(e=this.reduceBuffer(e,0,r.fileStart-e.fileStart)),a.debug("MultiBufferStream","Appending new buffer (fileStart: "+e.fileStart+" - Length: "+e.byteLength+")"),this.buffers.splice(i,0,e),0===i&&(this.buffer=e);t=!1;break}if(e.fileStart0)){t=!1;break}e=this.reduceBuffer(e,s,n)}}t&&(a.debug("MultiBufferStream","Appending new buffer (fileStart: "+e.fileStart+" - Length: "+e.byteLength+")"),this.buffers.push(e),0===i&&(this.buffer=e))},d.prototype.logBufferLevel=function(e){var t,i,r,s,n,o=[],l="";for(r=0,s=0,t=0;t0&&(l+=n.end-1+"]");var d=e?a.info:a.debug;0===this.buffers.length?d("MultiBufferStream","No more buffer in memory"):d("MultiBufferStream",this.buffers.length+" stored buffer(s) ("+r+"/"+s+" bytes), continuous ranges: "+l)},d.prototype.cleanBuffers=function(){var e,t;for(e=0;e"+this.buffer.byteLength+")"),!0}return!1}return!1},d.prototype.findPosition=function(e,t,i){var r,s=null,n=-1;for(r=!0===e?0:this.bufferIndex;r=t?(a.debug("MultiBufferStream","Found position in existing buffer #"+n),n):-1},d.prototype.findEndContiguousBuf=function(e){var t,i,r,s=void 0!==e?e:this.bufferIndex;if(i=this.buffers[s],this.buffers.length>s+1)for(t=s+1;t>3;return 31===r&&i.data.length>=2&&(r=32+((7&i.data[0])<<3)+((224&i.data[1])>>5)),r}return null},i.DecoderConfigDescriptor=function(e){i.Descriptor.call(this,4,e)},i.DecoderConfigDescriptor.prototype=new i.Descriptor,i.DecoderConfigDescriptor.prototype.parse=function(e){this.oti=e.readUint8(),this.streamType=e.readUint8(),this.bufferSize=e.readUint24(),this.maxBitrate=e.readUint32(),this.avgBitrate=e.readUint32(),this.size-=13,this.parseRemainingDescriptors(e)},i.DecoderSpecificInfo=function(e){i.Descriptor.call(this,5,e)},i.DecoderSpecificInfo.prototype=new i.Descriptor,i.SLConfigDescriptor=function(e){i.Descriptor.call(this,6,e)},i.SLConfigDescriptor.prototype=new i.Descriptor,this};t.MPEG4DescriptorParser=h;var c={ERR_INVALID_DATA:-1,ERR_NOT_ENOUGH_DATA:0,OK:1,BASIC_BOXES:["mdat","idat","free","skip","meco","strk"],FULL_BOXES:["hmhd","nmhd","iods","xml ","bxml","ipro","mere"],CONTAINER_BOXES:[["moov",["trak","pssh"]],["trak"],["edts"],["mdia"],["minf"],["dinf"],["stbl",["sgpd","sbgp"]],["mvex",["trex"]],["moof",["traf"]],["traf",["trun","sgpd","sbgp"]],["vttc"],["tref"],["iref"],["mfra",["tfra"]],["meco"],["hnti"],["hinf"],["strk"],["strd"],["sinf"],["rinf"],["schi"],["trgr"],["udta",["kind"]],["iprp",["ipma"]],["ipco"]],boxCodes:[],fullBoxCodes:[],containerBoxCodes:[],sampleEntryCodes:{},sampleGroupEntryCodes:[],trackGroupTypes:[],UUIDBoxes:{},UUIDs:[],initialize:function(){c.FullBox.prototype=new c.Box,c.ContainerBox.prototype=new c.Box,c.SampleEntry.prototype=new c.Box,c.TrackGroupTypeBox.prototype=new c.FullBox,c.BASIC_BOXES.forEach((function(e){c.createBoxCtor(e)})),c.FULL_BOXES.forEach((function(e){c.createFullBoxCtor(e)})),c.CONTAINER_BOXES.forEach((function(e){c.createContainerBoxCtor(e[0],null,e[1])}))},Box:function(e,t,i){this.type=e,this.size=t,this.uuid=i},FullBox:function(e,t,i){c.Box.call(this,e,t,i),this.flags=0,this.version=0},ContainerBox:function(e,t,i){c.Box.call(this,e,t,i),this.boxes=[]},SampleEntry:function(e,t,i,r){c.ContainerBox.call(this,e,t),this.hdr_size=i,this.start=r},SampleGroupEntry:function(e){this.grouping_type=e},TrackGroupTypeBox:function(e,t){c.FullBox.call(this,e,t)},createBoxCtor:function(e,t){c.boxCodes.push(e),c[e+"Box"]=function(t){c.Box.call(this,e,t)},c[e+"Box"].prototype=new c.Box,t&&(c[e+"Box"].prototype.parse=t)},createFullBoxCtor:function(e,t){c[e+"Box"]=function(t){c.FullBox.call(this,e,t)},c[e+"Box"].prototype=new c.FullBox,c[e+"Box"].prototype.parse=function(e){this.parseFullHeader(e),t&&t.call(this,e)}},addSubBoxArrays:function(e){if(e){this.subBoxNames=e;for(var t=e.length,i=0;ii?(a.error("BoxParser","Box of type '"+h+"' has a size "+d+" greater than its container size "+i),{code:c.ERR_NOT_ENOUGH_DATA,type:h,size:d,hdr_size:l,start:o}):0!==d&&o+d>e.getEndPosition()?(e.seek(o),a.info("BoxParser","Not enough data in stream to parse the entire '"+h+"' box"),{code:c.ERR_NOT_ENOUGH_DATA,type:h,size:d,hdr_size:l,start:o}):t?{code:c.OK,type:h,size:d,hdr_size:l,start:o}:(c[h+"Box"]?r=new c[h+"Box"](d):"uuid"!==h?(a.warn("BoxParser","Unknown box type: '"+h+"'"),(r=new c.Box(h,d)).has_unparsed_data=!0):c.UUIDBoxes[n]?r=new c.UUIDBoxes[n](d):(a.warn("BoxParser","Unknown uuid type: '"+n+"'"),(r=new c.Box(h,d)).uuid=n,r.has_unparsed_data=!0),r.hdr_size=l,r.start=o,r.write===c.Box.prototype.write&&"mdat"!==r.type&&(a.info("BoxParser","'"+u+"' box writing not yet implemented, keeping unparsed data in memory for later write"),r.parseDataAndRewind(e)),r.parse(e),(s=e.getPosition()-(r.start+r.size))<0?(a.warn("BoxParser","Parsing of box '"+u+"' did not read the entire indicated box data size (missing "+-s+" bytes), seeking forward"),e.seek(r.start+r.size)):s>0&&(a.error("BoxParser","Parsing of box '"+u+"' read "+s+" more bytes than the indicated box data size, seeking backwards"),0!==r.size&&e.seek(r.start+r.size)),{code:c.OK,box:r,size:r.size})},c.Box.prototype.parse=function(e){"mdat"!=this.type?this.data=e.readUint8Array(this.size-this.hdr_size):0===this.size?e.seek(e.getEndPosition()):e.seek(this.start+this.size)},c.Box.prototype.parseDataAndRewind=function(e){this.data=e.readUint8Array(this.size-this.hdr_size),e.position-=this.size-this.hdr_size},c.FullBox.prototype.parseDataAndRewind=function(e){this.parseFullHeader(e),this.data=e.readUint8Array(this.size-this.hdr_size),this.hdr_size-=4,e.position-=this.size-this.hdr_size},c.FullBox.prototype.parseFullHeader=function(e){this.version=e.readUint8(),this.flags=e.readUint24(),this.hdr_size+=4},c.FullBox.prototype.parse=function(e){this.parseFullHeader(e),this.data=e.readUint8Array(this.size-this.hdr_size)},c.ContainerBox.prototype.parse=function(e){for(var t,i;e.getPosition()>10&31,t[1]=this.language>>5&31,t[2]=31&this.language,this.languageString=String.fromCharCode(t[0]+96,t[1]+96,t[2]+96)},c.SAMPLE_ENTRY_TYPE_VISUAL="Visual",c.SAMPLE_ENTRY_TYPE_AUDIO="Audio",c.SAMPLE_ENTRY_TYPE_HINT="Hint",c.SAMPLE_ENTRY_TYPE_METADATA="Metadata",c.SAMPLE_ENTRY_TYPE_SUBTITLE="Subtitle",c.SAMPLE_ENTRY_TYPE_SYSTEM="System",c.SAMPLE_ENTRY_TYPE_TEXT="Text",c.SampleEntry.prototype.parseHeader=function(e){e.readUint8Array(6),this.data_reference_index=e.readUint16(),this.hdr_size+=8},c.SampleEntry.prototype.parse=function(e){this.parseHeader(e),this.data=e.readUint8Array(this.size-this.hdr_size)},c.SampleEntry.prototype.parseDataAndRewind=function(e){this.parseHeader(e),this.data=e.readUint8Array(this.size-this.hdr_size),this.hdr_size-=8,e.position-=this.size-this.hdr_size},c.SampleEntry.prototype.parseFooter=function(e){c.ContainerBox.prototype.parse.call(this,e)},c.createMediaSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_HINT),c.createMediaSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_METADATA),c.createMediaSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_SUBTITLE),c.createMediaSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_SYSTEM),c.createMediaSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_TEXT),c.createMediaSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_VISUAL,(function(e){var t;this.parseHeader(e),e.readUint16(),e.readUint16(),e.readUint32Array(3),this.width=e.readUint16(),this.height=e.readUint16(),this.horizresolution=e.readUint32(),this.vertresolution=e.readUint32(),e.readUint32(),this.frame_count=e.readUint16(),t=Math.min(31,e.readUint8()),this.compressorname=e.readString(t),t<31&&e.readString(31-t),this.depth=e.readUint16(),e.readUint16(),this.parseFooter(e)})),c.createMediaSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_AUDIO,(function(e){this.parseHeader(e),e.readUint32Array(2),this.channel_count=e.readUint16(),this.samplesize=e.readUint16(),e.readUint16(),e.readUint16(),this.samplerate=e.readUint32()/65536,this.parseFooter(e)})),c.createSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_VISUAL,"avc1"),c.createSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_VISUAL,"avc2"),c.createSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_VISUAL,"avc3"),c.createSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_VISUAL,"avc4"),c.createSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_VISUAL,"av01"),c.createSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_VISUAL,"hvc1"),c.createSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_VISUAL,"hev1"),c.createSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_VISUAL,"vvc1"),c.createSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_VISUAL,"vvi1"),c.createSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_VISUAL,"vvs1"),c.createSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_VISUAL,"vvcN"),c.createSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_VISUAL,"vp08"),c.createSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_VISUAL,"vp09"),c.createSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_AUDIO,"mp4a"),c.createSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_AUDIO,"ac-3"),c.createSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_AUDIO,"ec-3"),c.createSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_AUDIO,"Opus"),c.createEncryptedSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_VISUAL,"encv"),c.createEncryptedSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_AUDIO,"enca"),c.createEncryptedSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_SUBTITLE,"encu"),c.createEncryptedSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_SYSTEM,"encs"),c.createEncryptedSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_TEXT,"enct"),c.createEncryptedSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_METADATA,"encm"),c.createBoxCtor("a1lx",(function(e){var t=16*(1+(1&(1&e.readUint8())));this.layer_size=[];for(var i=0;i<3;i++)this.layer_size[i]=16==t?e.readUint16():e.readUint32()})),c.createBoxCtor("a1op",(function(e){this.op_index=e.readUint8()})),c.createFullBoxCtor("auxC",(function(e){this.aux_type=e.readCString();var t=this.size-this.hdr_size-(this.aux_type.length+1);this.aux_subtype=e.readUint8Array(t)})),c.createBoxCtor("av1C",(function(e){var t=e.readUint8();if(t>>7&!1)a.error("av1C marker problem");else if(this.version=127&t,1===this.version)if(t=e.readUint8(),this.seq_profile=t>>5&7,this.seq_level_idx_0=31&t,t=e.readUint8(),this.seq_tier_0=t>>7&1,this.high_bitdepth=t>>6&1,this.twelve_bit=t>>5&1,this.monochrome=t>>4&1,this.chroma_subsampling_x=t>>3&1,this.chroma_subsampling_y=t>>2&1,this.chroma_sample_position=3&t,t=e.readUint8(),this.reserved_1=t>>5&7,0===this.reserved_1){if(this.initial_presentation_delay_present=t>>4&1,1===this.initial_presentation_delay_present)this.initial_presentation_delay_minus_one=15&t;else if(this.reserved_2=15&t,0!==this.reserved_2)return void a.error("av1C reserved_2 parsing problem");var i=this.size-this.hdr_size-4;this.configOBUs=e.readUint8Array(i)}else a.error("av1C reserved_1 parsing problem");else a.error("av1C version "+this.version+" not supported")})),c.createBoxCtor("avcC",(function(e){var t,i;for(this.configurationVersion=e.readUint8(),this.AVCProfileIndication=e.readUint8(),this.profile_compatibility=e.readUint8(),this.AVCLevelIndication=e.readUint8(),this.lengthSizeMinusOne=3&e.readUint8(),this.nb_SPS_nalus=31&e.readUint8(),i=this.size-this.hdr_size-6,this.SPS=[],t=0;t0&&(this.ext=e.readUint8Array(i))})),c.createBoxCtor("btrt",(function(e){this.bufferSizeDB=e.readUint32(),this.maxBitrate=e.readUint32(),this.avgBitrate=e.readUint32()})),c.createBoxCtor("clap",(function(e){this.cleanApertureWidthN=e.readUint32(),this.cleanApertureWidthD=e.readUint32(),this.cleanApertureHeightN=e.readUint32(),this.cleanApertureHeightD=e.readUint32(),this.horizOffN=e.readUint32(),this.horizOffD=e.readUint32(),this.vertOffN=e.readUint32(),this.vertOffD=e.readUint32()})),c.createBoxCtor("clli",(function(e){this.max_content_light_level=e.readUint16(),this.max_pic_average_light_level=e.readUint16()})),c.createFullBoxCtor("co64",(function(e){var t,i;if(t=e.readUint32(),this.chunk_offsets=[],0===this.version)for(i=0;i>7}else("rICC"===this.colour_type||"prof"===this.colour_type)&&(this.ICC_profile=e.readUint8Array(this.size-4))})),c.createFullBoxCtor("cprt",(function(e){this.parseLanguage(e),this.notice=e.readCString()})),c.createFullBoxCtor("cslg",(function(e){0===this.version&&(this.compositionToDTSShift=e.readInt32(),this.leastDecodeToDisplayDelta=e.readInt32(),this.greatestDecodeToDisplayDelta=e.readInt32(),this.compositionStartTime=e.readInt32(),this.compositionEndTime=e.readInt32())})),c.createFullBoxCtor("ctts",(function(e){var t,i;if(t=e.readUint32(),this.sample_counts=[],this.sample_offsets=[],0===this.version)for(i=0;i>6,this.bsid=t>>1&31,this.bsmod=(1&t)<<2|i>>6&3,this.acmod=i>>3&7,this.lfeon=i>>2&1,this.bit_rate_code=3&i|r>>5&7})),c.createBoxCtor("dec3",(function(e){var t=e.readUint16();this.data_rate=t>>3,this.num_ind_sub=7&t,this.ind_subs=[];for(var i=0;i>6,r.bsid=s>>1&31,r.bsmod=(1&s)<<4|a>>4&15,r.acmod=a>>1&7,r.lfeon=1&a,r.num_dep_sub=n>>1&15,r.num_dep_sub>0&&(r.chan_loc=(1&n)<<8|e.readUint8())}})),c.createFullBoxCtor("dfLa",(function(e){var t=[],i=["STREAMINFO","PADDING","APPLICATION","SEEKTABLE","VORBIS_COMMENT","CUESHEET","PICTURE","RESERVED"];for(this.parseFullHeader(e);;){var r=e.readUint8(),s=Math.min(127&r,i.length-1);if(s?e.readUint8Array(e.readUint24()):(e.readUint8Array(13),this.samplerate=e.readUint32()>>12,e.readUint8Array(20)),t.push(i[s]),128&r)break}this.numMetadataBlocks=t.length+" ("+t.join(", ")+")"})),c.createBoxCtor("dimm",(function(e){this.bytessent=e.readUint64()})),c.createBoxCtor("dmax",(function(e){this.time=e.readUint32()})),c.createBoxCtor("dmed",(function(e){this.bytessent=e.readUint64()})),c.createBoxCtor("dOps",(function(e){if(this.Version=e.readUint8(),this.OutputChannelCount=e.readUint8(),this.PreSkip=e.readUint16(),this.InputSampleRate=e.readUint32(),this.OutputGain=e.readInt16(),this.ChannelMappingFamily=e.readUint8(),0!==this.ChannelMappingFamily){this.StreamCount=e.readUint8(),this.CoupledCount=e.readUint8(),this.ChannelMapping=[];for(var t=0;t=4;)this.compatible_brands[i]=e.readString(4),t-=4,i++})),c.createFullBoxCtor("hdlr",(function(e){0===this.version&&(e.readUint32(),this.handler=e.readString(4),e.readUint32Array(3),this.name=e.readString(this.size-this.hdr_size-20),"\0"===this.name[this.name.length-1]&&(this.name=this.name.slice(0,-1)))})),c.createBoxCtor("hvcC",(function(e){var t,i,r,s;this.configurationVersion=e.readUint8(),s=e.readUint8(),this.general_profile_space=s>>6,this.general_tier_flag=(32&s)>>5,this.general_profile_idc=31&s,this.general_profile_compatibility=e.readUint32(),this.general_constraint_indicator=e.readUint8Array(6),this.general_level_idc=e.readUint8(),this.min_spatial_segmentation_idc=4095&e.readUint16(),this.parallelismType=3&e.readUint8(),this.chroma_format_idc=3&e.readUint8(),this.bit_depth_luma_minus8=7&e.readUint8(),this.bit_depth_chroma_minus8=7&e.readUint8(),this.avgFrameRate=e.readUint16(),s=e.readUint8(),this.constantFrameRate=s>>6,this.numTemporalLayers=(13&s)>>3,this.temporalIdNested=(4&s)>>2,this.lengthSizeMinusOne=3&s,this.nalu_arrays=[];var a=e.readUint8();for(t=0;t>7,n.nalu_type=63&s;var o=e.readUint16();for(i=0;i>4&15,this.length_size=15&t,t=e.readUint8(),this.base_offset_size=t>>4&15,1===this.version||2===this.version?this.index_size=15&t:this.index_size=0,this.items=[];var i=0;if(this.version<2)i=e.readUint16();else{if(2!==this.version)throw"version of iloc box not supported";i=e.readUint32()}for(var r=0;r>7,this.axis=1&t})),c.createFullBoxCtor("infe",(function(e){if(0!==this.version&&1!==this.version||(this.item_ID=e.readUint16(),this.item_protection_index=e.readUint16(),this.item_name=e.readCString(),this.content_type=e.readCString(),this.content_encoding=e.readCString()),1===this.version)return this.extension_type=e.readString(4),a.warn("BoxParser","Cannot parse extension type"),void e.seek(this.start+this.size);this.version>=2&&(2===this.version?this.item_ID=e.readUint16():3===this.version&&(this.item_ID=e.readUint32()),this.item_protection_index=e.readUint16(),this.item_type=e.readString(4),this.item_name=e.readCString(),"mime"===this.item_type?(this.content_type=e.readCString(),this.content_encoding=e.readCString()):"uri "===this.item_type&&(this.item_uri_type=e.readCString()))})),c.createFullBoxCtor("ipma",(function(e){var t,i;for(entry_count=e.readUint32(),this.associations=[],t=0;t>7==1,1&this.flags?n.property_index=(127&a)<<8|e.readUint8():n.property_index=127&a}}})),c.createFullBoxCtor("iref",(function(e){var t,i;for(this.references=[];e.getPosition()>7,r.assignment_type=127&s,r.assignment_type){case 0:r.grouping_type=e.readString(4);break;case 1:r.grouping_type=e.readString(4),r.grouping_type_parameter=e.readUint32();break;case 2:case 3:break;case 4:r.sub_track_id=e.readUint32();break;default:a.warn("BoxParser","Unknown leva assignement type")}}})),c.createBoxCtor("lsel",(function(e){this.layer_id=e.readUint16()})),c.createBoxCtor("maxr",(function(e){this.period=e.readUint32(),this.bytes=e.readUint32()})),c.createBoxCtor("mdcv",(function(e){this.display_primaries=[],this.display_primaries[0]={},this.display_primaries[0].x=e.readUint16(),this.display_primaries[0].y=e.readUint16(),this.display_primaries[1]={},this.display_primaries[1].x=e.readUint16(),this.display_primaries[1].y=e.readUint16(),this.display_primaries[2]={},this.display_primaries[2].x=e.readUint16(),this.display_primaries[2].y=e.readUint16(),this.white_point={},this.white_point.x=e.readUint16(),this.white_point.y=e.readUint16(),this.max_display_mastering_luminance=e.readUint32(),this.min_display_mastering_luminance=e.readUint32()})),c.createFullBoxCtor("mdhd",(function(e){1==this.version?(this.creation_time=e.readUint64(),this.modification_time=e.readUint64(),this.timescale=e.readUint32(),this.duration=e.readUint64()):(this.creation_time=e.readUint32(),this.modification_time=e.readUint32(),this.timescale=e.readUint32(),this.duration=e.readUint32()),this.parseLanguage(e),e.readUint16()})),c.createFullBoxCtor("mehd",(function(e){1&this.flags&&(a.warn("BoxParser","mehd box incorrectly uses flags set to 1, converting version to 1"),this.version=1),1==this.version?this.fragment_duration=e.readUint64():this.fragment_duration=e.readUint32()})),c.createFullBoxCtor("meta",(function(e){this.boxes=[],c.ContainerBox.prototype.parse.call(this,e)})),c.createFullBoxCtor("mfhd",(function(e){this.sequence_number=e.readUint32()})),c.createFullBoxCtor("mfro",(function(e){this._size=e.readUint32()})),c.createFullBoxCtor("mvhd",(function(e){1==this.version?(this.creation_time=e.readUint64(),this.modification_time=e.readUint64(),this.timescale=e.readUint32(),this.duration=e.readUint64()):(this.creation_time=e.readUint32(),this.modification_time=e.readUint32(),this.timescale=e.readUint32(),this.duration=e.readUint32()),this.rate=e.readUint32(),this.volume=e.readUint16()>>8,e.readUint16(),e.readUint32Array(2),this.matrix=e.readUint32Array(9),e.readUint32Array(6),this.next_track_id=e.readUint32()})),c.createBoxCtor("npck",(function(e){this.packetssent=e.readUint32()})),c.createBoxCtor("nump",(function(e){this.packetssent=e.readUint64()})),c.createFullBoxCtor("padb",(function(e){var t=e.readUint32();this.padbits=[];for(var i=0;i0){var t=e.readUint32();this.kid=[];for(var i=0;i0&&(this.data=e.readUint8Array(r))})),c.createFullBoxCtor("clef",(function(e){this.width=e.readUint32(),this.height=e.readUint32()})),c.createFullBoxCtor("enof",(function(e){this.width=e.readUint32(),this.height=e.readUint32()})),c.createFullBoxCtor("prof",(function(e){this.width=e.readUint32(),this.height=e.readUint32()})),c.createContainerBoxCtor("tapt",null,["clef","prof","enof"]),c.createBoxCtor("rtp ",(function(e){this.descriptionformat=e.readString(4),this.sdptext=e.readString(this.size-this.hdr_size-4)})),c.createFullBoxCtor("saio",(function(e){1&this.flags&&(this.aux_info_type=e.readUint32(),this.aux_info_type_parameter=e.readUint32());var t=e.readUint32();this.offset=[];for(var i=0;i>7,this.avgRateFlag=t>>6&1,this.durationFlag&&(this.duration=e.readUint32()),this.avgRateFlag&&(this.accurateStatisticsFlag=e.readUint8(),this.avgBitRate=e.readUint16(),this.avgFrameRate=e.readUint16()),this.dependency=[];for(var i=e.readUint8(),r=0;r>7,this.num_leading_samples=127&t})),c.createSampleGroupCtor("rash",(function(e){if(this.operation_point_count=e.readUint16(),this.description_length!==2+(1===this.operation_point_count?2:6*this.operation_point_count)+9)a.warn("BoxParser","Mismatch in "+this.grouping_type+" sample group length"),this.data=e.readUint8Array(this.description_length-2);else{if(1===this.operation_point_count)this.target_rate_share=e.readUint16();else{this.target_rate_share=[],this.available_bitrate=[];for(var t=0;t>4,this.skip_byte_block=15&t,this.isProtected=e.readUint8(),this.Per_Sample_IV_Size=e.readUint8(),this.KID=c.parseHex16(e),this.constant_IV_size=0,this.constant_IV=0,1===this.isProtected&&0===this.Per_Sample_IV_Size&&(this.constant_IV_size=e.readUint8(),this.constant_IV=e.readUint8Array(this.constant_IV_size))})),c.createSampleGroupCtor("stsa",(function(e){a.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),c.createSampleGroupCtor("sync",(function(e){var t=e.readUint8();this.NAL_unit_type=63&t})),c.createSampleGroupCtor("tele",(function(e){var t=e.readUint8();this.level_independently_decodable=t>>7})),c.createSampleGroupCtor("tsas",(function(e){a.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),c.createSampleGroupCtor("tscl",(function(e){a.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),c.createSampleGroupCtor("vipr",(function(e){a.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),c.createFullBoxCtor("sbgp",(function(e){this.grouping_type=e.readString(4),1===this.version?this.grouping_type_parameter=e.readUint32():this.grouping_type_parameter=0,this.entries=[];for(var t=e.readUint32(),i=0;i>6,this.sample_depends_on[r]=t>>4&3,this.sample_is_depended_on[r]=t>>2&3,this.sample_has_redundancy[r]=3&t})),c.createFullBoxCtor("senc"),c.createFullBoxCtor("sgpd",(function(e){this.grouping_type=e.readString(4),a.debug("BoxParser","Found Sample Groups of type "+this.grouping_type),1===this.version?this.default_length=e.readUint32():this.default_length=0,this.version>=2&&(this.default_group_description_index=e.readUint32()),this.entries=[];for(var t=e.readUint32(),i=0;i>31&1,r.referenced_size=2147483647&s,r.subsegment_duration=e.readUint32(),s=e.readUint32(),r.starts_with_SAP=s>>31&1,r.SAP_type=s>>28&7,r.SAP_delta_time=268435455&s}})),c.SingleItemTypeReferenceBox=function(e,t,i,r){c.Box.call(this,e,t),this.hdr_size=i,this.start=r},c.SingleItemTypeReferenceBox.prototype=new c.Box,c.SingleItemTypeReferenceBox.prototype.parse=function(e){this.from_item_ID=e.readUint16();var t=e.readUint16();this.references=[];for(var i=0;i>4&15,this.sample_sizes[t+1]=15&r}else if(8===this.field_size)for(t=0;t0)for(i=0;i>4&15,this.default_skip_byte_block=15&t}this.default_isProtected=e.readUint8(),this.default_Per_Sample_IV_Size=e.readUint8(),this.default_KID=c.parseHex16(e),1===this.default_isProtected&&0===this.default_Per_Sample_IV_Size&&(this.default_constant_IV_size=e.readUint8(),this.default_constant_IV=e.readUint8Array(this.default_constant_IV_size))})),c.createFullBoxCtor("tfdt",(function(e){1==this.version?this.baseMediaDecodeTime=e.readUint64():this.baseMediaDecodeTime=e.readUint32()})),c.createFullBoxCtor("tfhd",(function(e){var t=0;this.track_id=e.readUint32(),this.size-this.hdr_size>t&&this.flags&c.TFHD_FLAG_BASE_DATA_OFFSET?(this.base_data_offset=e.readUint64(),t+=8):this.base_data_offset=0,this.size-this.hdr_size>t&&this.flags&c.TFHD_FLAG_SAMPLE_DESC?(this.default_sample_description_index=e.readUint32(),t+=4):this.default_sample_description_index=0,this.size-this.hdr_size>t&&this.flags&c.TFHD_FLAG_SAMPLE_DUR?(this.default_sample_duration=e.readUint32(),t+=4):this.default_sample_duration=0,this.size-this.hdr_size>t&&this.flags&c.TFHD_FLAG_SAMPLE_SIZE?(this.default_sample_size=e.readUint32(),t+=4):this.default_sample_size=0,this.size-this.hdr_size>t&&this.flags&c.TFHD_FLAG_SAMPLE_FLAGS?(this.default_sample_flags=e.readUint32(),t+=4):this.default_sample_flags=0})),c.createFullBoxCtor("tfra",(function(e){this.track_ID=e.readUint32(),e.readUint24();var t=e.readUint8();this.length_size_of_traf_num=t>>4&3,this.length_size_of_trun_num=t>>2&3,this.length_size_of_sample_num=3&t,this.entries=[];for(var i=e.readUint32(),r=0;r>8,e.readUint16(),this.matrix=e.readInt32Array(9),this.width=e.readUint32(),this.height=e.readUint32()})),c.createBoxCtor("tmax",(function(e){this.time=e.readUint32()})),c.createBoxCtor("tmin",(function(e){this.time=e.readUint32()})),c.createBoxCtor("totl",(function(e){this.bytessent=e.readUint32()})),c.createBoxCtor("tpay",(function(e){this.bytessent=e.readUint32()})),c.createBoxCtor("tpyl",(function(e){this.bytessent=e.readUint64()})),c.TrackGroupTypeBox.prototype.parse=function(e){this.parseFullHeader(e),this.track_group_id=e.readUint32()},c.createTrackGroupCtor("msrc"),c.TrackReferenceTypeBox=function(e,t,i,r){c.Box.call(this,e,t),this.hdr_size=i,this.start=r},c.TrackReferenceTypeBox.prototype=new c.Box,c.TrackReferenceTypeBox.prototype.parse=function(e){this.track_ids=e.readUint32Array((this.size-this.hdr_size)/4)},c.trefBox.prototype.parse=function(e){for(var t,i;e.getPosition()t&&this.flags&c.TRUN_FLAGS_DATA_OFFSET?(this.data_offset=e.readInt32(),t+=4):this.data_offset=0,this.size-this.hdr_size>t&&this.flags&c.TRUN_FLAGS_FIRST_FLAG?(this.first_sample_flags=e.readUint32(),t+=4):this.first_sample_flags=0,this.sample_duration=[],this.sample_size=[],this.sample_flags=[],this.sample_composition_time_offset=[],this.size-this.hdr_size>t)for(var i=0;i0&&(this.location=e.readCString())})),c.createUUIDBox("a5d40b30e81411ddba2f0800200c9a66",!0,!1,(function(e){this.LiveServerManifest=e.readString(this.size-this.hdr_size).replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")})),c.createUUIDBox("d08a4f1810f34a82b6c832d8aba183d3",!0,!1,(function(e){this.system_id=c.parseHex16(e);var t=e.readUint32();t>0&&(this.data=e.readUint8Array(t))})),c.createUUIDBox("a2394f525a9b4f14a2446c427c648df4",!0,!1),c.createUUIDBox("8974dbce7be74c5184f97148f9882554",!0,!1,(function(e){this.default_AlgorithmID=e.readUint24(),this.default_IV_size=e.readUint8(),this.default_KID=c.parseHex16(e)})),c.createUUIDBox("d4807ef2ca3946958e5426cb9e46a79f",!0,!1,(function(e){this.fragment_count=e.readUint8(),this.entries=[];for(var t=0;t>4,this.chromaSubsampling=t>>1&7,this.videoFullRangeFlag=1&t,this.colourPrimaries=e.readUint8(),this.transferCharacteristics=e.readUint8(),this.matrixCoefficients=e.readUint8(),this.codecIntializationDataSize=e.readUint16(),this.codecIntializationData=e.readUint8Array(this.codecIntializationDataSize)):(this.profile=e.readUint8(),this.level=e.readUint8(),t=e.readUint8(),this.bitDepth=t>>4&15,this.colorSpace=15&t,t=e.readUint8(),this.chromaSubsampling=t>>4&15,this.transferFunction=t>>1&7,this.videoFullRangeFlag=1&t,this.codecIntializationDataSize=e.readUint16(),this.codecIntializationData=e.readUint8Array(this.codecIntializationDataSize))})),c.createBoxCtor("vttC",(function(e){this.text=e.readString(this.size-this.hdr_size)})),c.createFullBoxCtor("vvcC",(function(e){var t,i,r={held_bits:void 0,num_held_bits:0,stream_read_1_bytes:function(e){this.held_bits=e.readUint8(),this.num_held_bits=8},stream_read_2_bytes:function(e){this.held_bits=e.readUint16(),this.num_held_bits=16},extract_bits:function(e){var t=this.held_bits>>this.num_held_bits-e&(1<=0;--i){var n=r.extract_bits(1);this.ptl_sublayer_present_mask|=n<1;++i)r.extract_bits(1);for(i=this.num_sublayers-2;i>=0;--i)this.ptl_sublayer_present_mask&1<>=1;t+=c.decimalToHex(r,0),t+=".",0===this.hvcC.general_tier_flag?t+="L":t+="H",t+=this.hvcC.general_level_idc;var s=!1,a="";for(e=5;e>=0;e--)(this.hvcC.general_constraint_indicator[e]||s)&&(a="."+c.decimalToHex(this.hvcC.general_constraint_indicator[e],0)+a,s=!0);t+=a}return t},c.vvc1SampleEntry.prototype.getCodec=c.vvi1SampleEntry.prototype.getCodec=function(){var e,t=c.SampleEntry.prototype.getCodec.call(this);if(this.vvcC){t+="."+this.vvcC.general_profile_idc,this.vvcC.general_tier_flag?t+=".H":t+=".L",t+=this.vvcC.general_level_idc;var i="";if(this.vvcC.general_constraint_info){var r,s=[],a=0;for(a|=this.vvcC.ptl_frame_only_constraint<<7,a|=this.vvcC.ptl_multilayer_enabled<<6,e=0;e>2&63,s.push(a),a&&(r=e),a=this.vvcC.general_constraint_info[e]>>2&3;if(void 0===r)i=".CA";else{i=".C";var n="ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",o=0,l=0;for(e=0;e<=r;++e)for(o=o<<8|s[e],l+=8;l>=5;){i+=n[o>>l-5&31],o&=(1<<(l-=5))-1}l&&(i+=n[31&(o<<=5-l)])}}t+=i}return t},c.mp4aSampleEntry.prototype.getCodec=function(){var e=c.SampleEntry.prototype.getCodec.call(this);if(this.esds&&this.esds.esd){var t=this.esds.esd.getOTI(),i=this.esds.esd.getAudioConfig();return e+"."+c.decimalToHex(t)+(i?"."+i:"")}return e},c.stxtSampleEntry.prototype.getCodec=function(){var e=c.SampleEntry.prototype.getCodec.call(this);return this.mime_format?e+"."+this.mime_format:e},c.vp08SampleEntry.prototype.getCodec=c.vp09SampleEntry.prototype.getCodec=function(){var e=c.SampleEntry.prototype.getCodec.call(this),t=this.vpcC.level;0==t&&(t="00");var i=this.vpcC.bitDepth;return 8==i&&(i="08"),e+".0"+this.vpcC.profile+"."+t+"."+i},c.av01SampleEntry.prototype.getCodec=function(){var e,t=c.SampleEntry.prototype.getCodec.call(this),i=this.av1C.seq_level_idx_0;return i<10&&(i="0"+i),2===this.av1C.seq_profile&&1===this.av1C.high_bitdepth?e=1===this.av1C.twelve_bit?"12":"10":this.av1C.seq_profile<=2&&(e=1===this.av1C.high_bitdepth?"10":"08"),t+"."+this.av1C.seq_profile+"."+i+(this.av1C.seq_tier_0?"H":"M")+"."+e},c.Box.prototype.writeHeader=function(e,t){this.size+=8,this.size>l&&(this.size+=8),"uuid"===this.type&&(this.size+=16),a.debug("BoxWriter","Writing box "+this.type+" of size: "+this.size+" at position "+e.getPosition()+(t||"")),this.size>l?e.writeUint32(1):(this.sizePosition=e.getPosition(),e.writeUint32(this.size)),e.writeString(this.type,null,4),"uuid"===this.type&&e.writeUint8Array(this.uuid),this.size>l&&e.writeUint64(this.size)},c.FullBox.prototype.writeHeader=function(e){this.size+=4,c.Box.prototype.writeHeader.call(this,e," v="+this.version+" f="+this.flags),e.writeUint8(this.version),e.writeUint24(this.flags)},c.Box.prototype.write=function(e){"mdat"===this.type?this.data&&(this.size=this.data.length,this.writeHeader(e),e.writeUint8Array(this.data)):(this.size=this.data?this.data.length:0,this.writeHeader(e),this.data&&e.writeUint8Array(this.data))},c.ContainerBox.prototype.write=function(e){this.size=0,this.writeHeader(e);for(var t=0;t=2&&e.writeUint32(this.default_sample_description_index),e.writeUint32(this.entries.length),t=0;t0)for(t=0;t+1t?1:0,this.flags=0,this.size=4,1===this.version&&(this.size+=4),this.writeHeader(e),1===this.version?e.writeUint64(this.baseMediaDecodeTime):e.writeUint32(this.baseMediaDecodeTime)},c.tfhdBox.prototype.write=function(e){this.version=0,this.size=4,this.flags&c.TFHD_FLAG_BASE_DATA_OFFSET&&(this.size+=8),this.flags&c.TFHD_FLAG_SAMPLE_DESC&&(this.size+=4),this.flags&c.TFHD_FLAG_SAMPLE_DUR&&(this.size+=4),this.flags&c.TFHD_FLAG_SAMPLE_SIZE&&(this.size+=4),this.flags&c.TFHD_FLAG_SAMPLE_FLAGS&&(this.size+=4),this.writeHeader(e),e.writeUint32(this.track_id),this.flags&c.TFHD_FLAG_BASE_DATA_OFFSET&&e.writeUint64(this.base_data_offset),this.flags&c.TFHD_FLAG_SAMPLE_DESC&&e.writeUint32(this.default_sample_description_index),this.flags&c.TFHD_FLAG_SAMPLE_DUR&&e.writeUint32(this.default_sample_duration),this.flags&c.TFHD_FLAG_SAMPLE_SIZE&&e.writeUint32(this.default_sample_size),this.flags&c.TFHD_FLAG_SAMPLE_FLAGS&&e.writeUint32(this.default_sample_flags)},c.tkhdBox.prototype.write=function(e){this.version=0,this.size=80,this.writeHeader(e),e.writeUint32(this.creation_time),e.writeUint32(this.modification_time),e.writeUint32(this.track_id),e.writeUint32(0),e.writeUint32(this.duration),e.writeUint32(0),e.writeUint32(0),e.writeInt16(this.layer),e.writeInt16(this.alternate_group),e.writeInt16(this.volume<<8),e.writeUint16(0),e.writeInt32Array(this.matrix),e.writeUint32(this.width),e.writeUint32(this.height)},c.trexBox.prototype.write=function(e){this.version=0,this.flags=0,this.size=20,this.writeHeader(e),e.writeUint32(this.track_id),e.writeUint32(this.default_sample_description_index),e.writeUint32(this.default_sample_duration),e.writeUint32(this.default_sample_size),e.writeUint32(this.default_sample_flags)},c.trunBox.prototype.write=function(e){this.version=0,this.size=4,this.flags&c.TRUN_FLAGS_DATA_OFFSET&&(this.size+=4),this.flags&c.TRUN_FLAGS_FIRST_FLAG&&(this.size+=4),this.flags&c.TRUN_FLAGS_DURATION&&(this.size+=4*this.sample_duration.length),this.flags&c.TRUN_FLAGS_SIZE&&(this.size+=4*this.sample_size.length),this.flags&c.TRUN_FLAGS_FLAGS&&(this.size+=4*this.sample_flags.length),this.flags&c.TRUN_FLAGS_CTS_OFFSET&&(this.size+=4*this.sample_composition_time_offset.length),this.writeHeader(e),e.writeUint32(this.sample_count),this.flags&c.TRUN_FLAGS_DATA_OFFSET&&(this.data_offset_position=e.getPosition(),e.writeInt32(this.data_offset)),this.flags&c.TRUN_FLAGS_FIRST_FLAG&&e.writeUint32(this.first_sample_flags);for(var t=0;t-1||e[i]instanceof c.Box||t[i]instanceof c.Box||void 0===e[i]||void 0===t[i]||"function"==typeof e[i]||"function"==typeof t[i]||e.subBoxNames&&e.subBoxNames.indexOf(i.slice(0,4))>-1||t.subBoxNames&&t.subBoxNames.indexOf(i.slice(0,4))>-1||"data"===i||"start"===i||"size"===i||"creation_time"===i||"modification_time"===i||c.DIFF_PRIMITIVE_ARRAY_PROP_NAMES.indexOf(i)>-1||e[i]===t[i]))return!1;return!0},c.boxEqual=function(e,t){if(!c.boxEqualFields(e,t))return!1;for(var i=0;i1)for(t=1;t-1&&this.fragmentedTracks.splice(t,1)},f.prototype.setExtractionOptions=function(e,t,i){var r=this.getTrackById(e);if(r){var s={};this.extractedTracks.push(s),s.id=e,s.user=t,s.trak=r,r.nextSample=0,s.nb_samples=1e3,s.samples=[],i&&i.nbSamples&&(s.nb_samples=i.nbSamples)}},f.prototype.unsetExtractionOptions=function(e){for(var t=-1,i=0;i-1&&this.extractedTracks.splice(t,1)},f.prototype.parse=function(){var e,t;if(!this.restoreParsePosition||this.restoreParsePosition())for(;;){if(this.hasIncompleteMdat&&this.hasIncompleteMdat()){if(this.processIncompleteMdat())continue;return}if(this.saveParsePosition&&this.saveParsePosition(),(e=c.parseOneBox(this.stream,false)).code===c.ERR_NOT_ENOUGH_DATA){if(this.processIncompleteBox){if(this.processIncompleteBox(e))continue;return}return}var i;switch(i="uuid"!==(t=e.box).type?t.type:t.uuid,this.boxes.push(t),i){case"mdat":this.mdats.push(t);break;case"moof":this.moofs.push(t);break;case"moov":this.moovStartFound=!0,0===this.mdats.length&&(this.isProgressive=!0);default:void 0!==this[i]&&a.warn("ISOFile","Duplicate Box of type: "+i+", overriding previous occurrence"),this[i]=t}this.updateUsedBytes&&this.updateUsedBytes(t,e)}},f.prototype.checkBuffer=function(e){if(null==e)throw"Buffer must be defined and non empty";if(void 0===e.fileStart)throw"Buffer must have a fileStart property";return 0===e.byteLength?(a.warn("ISOFile","Ignoring empty buffer (fileStart: "+e.fileStart+")"),this.stream.logBufferLevel(),!1):(a.info("ISOFile","Processing buffer (fileStart: "+e.fileStart+")"),e.usedBytes=0,this.stream.insertBuffer(e),this.stream.logBufferLevel(),!!this.stream.initialized()||(a.warn("ISOFile","Not ready to start parsing"),!1))},f.prototype.appendBuffer=function(e,t){var i;if(this.checkBuffer(e))return this.parse(),this.moovStartFound&&!this.moovStartSent&&(this.moovStartSent=!0,this.onMoovStart&&this.onMoovStart()),this.moov?(this.sampleListBuilt||(this.buildSampleLists(),this.sampleListBuilt=!0),this.updateSampleLists(),this.onReady&&!this.readySent&&(this.readySent=!0,this.onReady(this.getInfo())),this.processSamples(t),this.nextSeekPosition?(i=this.nextSeekPosition,this.nextSeekPosition=void 0):i=this.nextParsePosition,this.stream.getEndFilePositionAfter&&(i=this.stream.getEndFilePositionAfter(i))):i=this.nextParsePosition?this.nextParsePosition:0,this.sidx&&this.onSidx&&!this.sidxSent&&(this.onSidx(this.sidx),this.sidxSent=!0),this.meta&&(this.flattenItemInfo&&!this.itemListBuilt&&(this.flattenItemInfo(),this.itemListBuilt=!0),this.processItems&&this.processItems(this.onItem)),this.stream.cleanBuffers&&(a.info("ISOFile","Done processing buffer (fileStart: "+e.fileStart+") - next buffer to fetch should have a fileStart position of "+i),this.stream.logBufferLevel(),this.stream.cleanBuffers(),this.stream.logBufferLevel(!0),a.info("ISOFile","Sample data size in memory: "+this.getAllocatedSampleDataSize())),i},f.prototype.getInfo=function(){var e,t,i,r,s,a,n={},o=new Date("1904-01-01T00:00:00Z").getTime();if(this.moov)for(n.hasMoov=!0,n.duration=this.moov.mvhd.duration,n.timescale=this.moov.mvhd.timescale,n.isFragmented=null!=this.moov.mvex,n.isFragmented&&this.moov.mvex.mehd&&(n.fragment_duration=this.moov.mvex.mehd.fragment_duration),n.isProgressive=this.isProgressive,n.hasIOD=null!=this.moov.iods,n.brands=[],n.brands.push(this.ftyp.major_brand),n.brands=n.brands.concat(this.ftyp.compatible_brands),n.created=new Date(o+1e3*this.moov.mvhd.creation_time),n.modified=new Date(o+1e3*this.moov.mvhd.modification_time),n.tracks=[],n.audioTracks=[],n.videoTracks=[],n.subtitleTracks=[],n.metadataTracks=[],n.hintTracks=[],n.otherTracks=[],e=0;e0?n.mime+='video/mp4; codecs="':n.audioTracks&&n.audioTracks.length>0?n.mime+='audio/mp4; codecs="':n.mime+='application/mp4; codecs="',e=0;e=i.samples.length)&&(a.info("ISOFile","Sending fragmented data on track #"+r.id+" for samples ["+Math.max(0,i.nextSample-r.nb_samples)+","+(i.nextSample-1)+"]"),a.info("ISOFile","Sample data size in memory: "+this.getAllocatedSampleDataSize()),this.onSegment&&this.onSegment(r.id,r.user,r.segmentStream.buffer,i.nextSample,e||i.nextSample>=i.samples.length),r.segmentStream=null,r!==this.fragmentedTracks[t]))break}}if(null!==this.onSamples)for(t=0;t=i.samples.length)&&(a.debug("ISOFile","Sending samples on track #"+n.id+" for sample "+i.nextSample),this.onSamples&&this.onSamples(n.id,n.user,n.samples),n.samples=[],n!==this.extractedTracks[t]))break}}}},f.prototype.getBox=function(e){var t=this.getBoxes(e,!0);return t.length?t[0]:null},f.prototype.getBoxes=function(e,t){var i=[];return f._sweep.call(this,e,i,t),i},f._sweep=function(e,t,i){for(var r in this.type&&this.type==e&&t.push(this),this.boxes){if(t.length&&i)return;f._sweep.call(this.boxes[r],e,t,i)}},f.prototype.getTrackSamplesInfo=function(e){var t=this.getTrackById(e);return t?t.samples:void 0},f.prototype.getTrackSample=function(e,t){var i=this.getTrackById(e);return this.getSample(i,t)},f.prototype.releaseUsedSamples=function(e,t){var i=0,r=this.getTrackById(e);r.lastValidSample||(r.lastValidSample=0);for(var s=r.lastValidSample;se*s.timescale){d=r-1;break}t&&s.is_sync&&(l=r)}for(t&&(d=l),e=i.samples[d].cts,i.nextSample=d;i.samples[d].alreadyRead===i.samples[d].size&&i.samples[d+1];)d++;return n=i.samples[d].offset+i.samples[d].alreadyRead,a.info("ISOFile","Seeking to "+(t?"RAP":"")+" sample #"+i.nextSample+" on track "+i.tkhd.track_id+", time "+a.getDurationString(e,o)+" and offset: "+n),{offset:n,time:e/o}},f.prototype.seek=function(e,t){var i,r,s,n=this.moov,o={offset:1/0,time:1/0};if(this.moov){for(s=0;s-1){o=l;break}switch(o){case"Visual":if(s.add("vmhd").set("graphicsmode",0).set("opcolor",[0,0,0]),a.set("width",t.width).set("height",t.height).set("horizresolution",72<<16).set("vertresolution",72<<16).set("frame_count",1).set("compressorname",t.type+" Compressor").set("depth",24),t.avcDecoderConfigRecord){var u=new c.avcCBox,p=new n(t.avcDecoderConfigRecord);u.parse(p),a.addBox(u)}break;case"Audio":s.add("smhd").set("balance",t.balance||0),a.set("channel_count",t.channel_count||2).set("samplesize",t.samplesize||16).set("samplerate",t.samplerate||65536);break;case"Hint":s.add("hmhd");break;case"Subtitle":if(s.add("sthd"),"stpp"===t.type)a.set("namespace",t.namespace||"nonamespace").set("schema_location",t.schema_location||"").set("auxiliary_mime_types",t.auxiliary_mime_types||"");break;default:s.add("nmhd")}t.description&&a.addBox(t.description),t.description_boxes&&t.description_boxes.forEach((function(e){a.addBox(e)})),s.add("dinf").add("dref").addEntry((new c["url Box"]).set("flags",1));var f=s.add("stbl");return f.add("stsd").addEntry(a),f.add("stts").set("sample_counts",[]).set("sample_deltas",[]),f.add("stsc").set("first_chunk",[]).set("samples_per_chunk",[]).set("sample_description_index",[]),f.add("stco").set("chunk_offsets",[]),f.add("stsz").set("sample_sizes",[]),this.moov.mvex.add("trex").set("track_id",t.id).set("default_sample_description_index",t.default_sample_description_index||1).set("default_sample_duration",t.default_sample_duration||0).set("default_sample_size",t.default_sample_size||0).set("default_sample_flags",t.default_sample_flags||0),this.buildTrakSampleLists(i),t.id}},c.Box.prototype.computeSize=function(e){var t=e||new o;t.endianness=o.BIG_ENDIAN,this.write(t)},f.prototype.addSample=function(e,t,i){var r=i||{},s={},a=this.getTrackById(e);if(null!==a){s.number=a.samples.length,s.track_id=a.tkhd.track_id,s.timescale=a.mdia.mdhd.timescale,s.description_index=r.sample_description_index?r.sample_description_index-1:0,s.description=a.mdia.minf.stbl.stsd.entries[s.description_index],s.data=t,s.size=t.byteLength,s.alreadyRead=s.size,s.duration=r.duration||1,s.cts=r.cts||0,s.dts=r.dts||0,s.is_sync=r.is_sync||!1,s.is_leading=r.is_leading||0,s.depends_on=r.depends_on||0,s.is_depended_on=r.is_depended_on||0,s.has_redundancy=r.has_redundancy||0,s.degradation_priority=r.degradation_priority||0,s.offset=0,s.subsamples=r.subsamples,a.samples.push(s),a.samples_size+=s.size,a.samples_duration+=s.duration,a.first_dts||(a.first_dts=r.dts),this.processSamples();var n=this.createSingleSampleMoof(s);return this.addBox(n),n.computeSize(),n.trafs[0].truns[0].data_offset=n.size+8,this.add("mdat").data=new Uint8Array(t),s}},f.prototype.createSingleSampleMoof=function(e){var t=0;t=e.is_sync?1<<25:65536;var i=new c.moofBox;i.add("mfhd").set("sequence_number",this.nextMoofNumber),this.nextMoofNumber++;var r=i.add("traf"),s=this.getTrackById(e.track_id);return r.add("tfhd").set("track_id",e.track_id).set("flags",c.TFHD_FLAG_DEFAULT_BASE_IS_MOOF),r.add("tfdt").set("baseMediaDecodeTime",e.dts-(s.first_dts||0)),r.add("trun").set("flags",c.TRUN_FLAGS_DATA_OFFSET|c.TRUN_FLAGS_DURATION|c.TRUN_FLAGS_SIZE|c.TRUN_FLAGS_FLAGS|c.TRUN_FLAGS_CTS_OFFSET).set("data_offset",0).set("first_sample_flags",0).set("sample_count",1).set("sample_duration",[e.duration]).set("sample_size",[e.size]).set("sample_flags",[t]).set("sample_composition_time_offset",[e.cts-e.dts]),i},f.prototype.lastMoofIndex=0,f.prototype.samplesDataSize=0,f.prototype.resetTables=function(){var e,t,i,r,s,a;for(this.initial_duration=this.moov.mvhd.duration,this.moov.mvhd.duration=0,e=0;e=2&&(l=s[n].grouping_type+"/0",(o=new d(s[n].grouping_type,0)).is_fragment=!0,t.sample_groups_info[l]||(t.sample_groups_info[l]=o))}else for(n=0;n=2&&(l=r[n].grouping_type+"/0",o=new d(r[n].grouping_type,0),e.sample_groups_info[l]||(e.sample_groups_info[l]=o))},f.setSampleGroupProperties=function(e,t,i,r){var s,a;for(s in t.sample_groups=[],r){var n;if(t.sample_groups[s]={},t.sample_groups[s].grouping_type=r[s].grouping_type,t.sample_groups[s].grouping_type_parameter=r[s].grouping_type_parameter,i>=r[s].last_sample_in_run&&(r[s].last_sample_in_run<0&&(r[s].last_sample_in_run=0),r[s].entry_index++,r[s].entry_index<=r[s].sbgp.entries.length-1&&(r[s].last_sample_in_run+=r[s].sbgp.entries[r[s].entry_index].sample_count)),r[s].entry_index<=r[s].sbgp.entries.length-1?t.sample_groups[s].group_description_index=r[s].sbgp.entries[r[s].entry_index].group_description_index:t.sample_groups[s].group_description_index=-1,0!==t.sample_groups[s].group_description_index)n=r[s].fragment_description?r[s].fragment_description:r[s].description,t.sample_groups[s].group_description_index>0?(a=t.sample_groups[s].group_description_index>65535?(t.sample_groups[s].group_description_index>>16)-1:t.sample_groups[s].group_description_index-1,n&&a>=0&&(t.sample_groups[s].description=n.entries[a])):n&&n.version>=2&&n.default_group_description_index>0&&(t.sample_groups[s].description=n.entries[n.default_group_description_index-1])}},f.process_sdtp=function(e,t,i){t&&(e?(t.is_leading=e.is_leading[i],t.depends_on=e.sample_depends_on[i],t.is_depended_on=e.sample_is_depended_on[i],t.has_redundancy=e.sample_has_redundancy[i]):(t.is_leading=0,t.depends_on=0,t.is_depended_on=0,t.has_redundancy=0))},f.prototype.buildSampleLists=function(){var e,t;for(e=0;ev&&(b++,v<0&&(v=0),v+=a.sample_counts[b]),t>0?(e.samples[t-1].duration=a.sample_deltas[b],e.samples_duration+=e.samples[t-1].duration,k.dts=e.samples[t-1].dts+e.samples[t-1].duration):k.dts=0,n?(t>=_&&(w++,_<0&&(_=0),_+=n.sample_counts[w]),k.cts=e.samples[t].dts+n.sample_offsets[w]):k.cts=k.dts,o?(t==o.sample_numbers[E]-1?(k.is_sync=!0,E++):(k.is_sync=!1,k.degradation_priority=0),d&&d.entries[S].sample_delta+T==t+1&&(k.subsamples=d.entries[S].subsamples,T+=d.entries[S].sample_delta,S++)):k.is_sync=!0,f.process_sdtp(e.mdia.minf.stbl.sdtp,k,k.number),k.degradation_priority=u?u.priority[t]:0,d&&d.entries[S].sample_delta+T==t&&(k.subsamples=d.entries[S].subsamples,T+=d.entries[S].sample_delta),(h.length>0||c.length>0)&&f.setSampleGroupProperties(e,k,t,e.sample_groups_info)}t>0&&(e.samples[t-1].duration=Math.max(e.mdia.mdhd.duration-e.samples[t-1].dts,0),e.samples_duration+=e.samples[t-1].duration)}},f.prototype.updateSampleLists=function(){var e,t,i,r,s,a,n,o,l,d,h,u,p,y,m;if(void 0!==this.moov)for(;this.lastMoofIndex0&&f.initSampleGroups(u,h,h.sbgps,u.mdia.minf.stbl.sgpds,h.sgpds),t=0;t0?y.dts=u.samples[u.samples.length-2].dts+u.samples[u.samples.length-2].duration:(h.tfdt?y.dts=h.tfdt.baseMediaDecodeTime:y.dts=0,u.first_traf_merged=!0),y.cts=y.dts,g.flags&c.TRUN_FLAGS_CTS_OFFSET&&(y.cts=y.dts+g.sample_composition_time_offset[i]),m=n,g.flags&c.TRUN_FLAGS_FLAGS?m=g.sample_flags[i]:0===i&&g.flags&c.TRUN_FLAGS_FIRST_FLAG&&(m=g.first_sample_flags),y.is_sync=!(m>>16&1),y.is_leading=m>>26&3,y.depends_on=m>>24&3,y.is_depended_on=m>>22&3,y.has_redundancy=m>>20&3,y.degradation_priority=65535&m;var A=!!(h.tfhd.flags&c.TFHD_FLAG_BASE_DATA_OFFSET),v=!!(h.tfhd.flags&c.TFHD_FLAG_DEFAULT_BASE_IS_MOOF),b=!!(g.flags&c.TRUN_FLAGS_DATA_OFFSET),_=0;_=A?h.tfhd.base_data_offset:v||0===t?d.start:o,y.offset=0===t&&0===i?b?_+g.data_offset:_:o,o=y.offset+y.size,(h.sbgps.length>0||h.sgpds.length>0||u.mdia.minf.stbl.sbgps.length>0||u.mdia.minf.stbl.sgpds.length>0)&&f.setSampleGroupProperties(u,y,y.number_in_traf,h.sample_groups_info)}}if(h.subs){u.has_fragment_subsamples=!0;var w=h.first_sample_index;for(t=0;t-1))return null;var n=(i=this.stream.buffers[s]).byteLength-(r.offset+r.alreadyRead-i.fileStart);if(r.size-r.alreadyRead<=n)return a.debug("ISOFile","Getting sample #"+t+" data (alreadyRead: "+r.alreadyRead+" offset: "+(r.offset+r.alreadyRead-i.fileStart)+" read size: "+(r.size-r.alreadyRead)+" full size: "+r.size+")"),o.memcpy(r.data.buffer,r.alreadyRead,i,r.offset+r.alreadyRead-i.fileStart,r.size-r.alreadyRead),i.usedBytes+=r.size-r.alreadyRead,this.stream.logBufferLevel(),r.alreadyRead=r.size,r;if(0===n)return null;a.debug("ISOFile","Getting sample #"+t+" partial data (alreadyRead: "+r.alreadyRead+" offset: "+(r.offset+r.alreadyRead-i.fileStart)+" read size: "+n+" full size: "+r.size+")"),o.memcpy(r.data.buffer,r.alreadyRead,i,r.offset+r.alreadyRead-i.fileStart,n),r.alreadyRead+=n,i.usedBytes+=n,this.stream.logBufferLevel()}},f.prototype.releaseSample=function(e,t){var i=e.samples[t];return i.data?(this.samplesDataSize-=i.size,i.data=null,i.alreadyRead=0,i.size):0},f.prototype.getAllocatedSampleDataSize=function(){return this.samplesDataSize},f.prototype.getCodecs=function(){var e,t="";for(e=0;e0&&(t+=","),t+=this.moov.traks[e].mdia.minf.stbl.stsd.entries[0].getCodec()}return t},f.prototype.getTrexById=function(e){var t;if(!this.moov||!this.moov.mvex)return null;for(t=0;t0&&(i.protection=s.ipro.protections[s.iinf.item_infos[e].protection_index-1]),s.iinf.item_infos[e].item_type?i.type=s.iinf.item_infos[e].item_type:i.type="mime",i.content_type=s.iinf.item_infos[e].content_type,i.content_encoding=s.iinf.item_infos[e].content_encoding;if(s.iloc)for(e=0;e0&&c.property_index-1-1))return null;var l=(t=this.stream.buffers[n]).byteLength-(s.offset+s.alreadyRead-t.fileStart);if(!(s.length-s.alreadyRead<=l))return a.debug("ISOFile","Getting item #"+e+" extent #"+r+" partial data (alreadyRead: "+s.alreadyRead+" offset: "+(s.offset+s.alreadyRead-t.fileStart)+" read size: "+l+" full extent size: "+s.length+" full item size: "+i.size+")"),o.memcpy(i.data.buffer,i.alreadyRead,t,s.offset+s.alreadyRead-t.fileStart,l),s.alreadyRead+=l,i.alreadyRead+=l,t.usedBytes+=l,this.stream.logBufferLevel(),null;a.debug("ISOFile","Getting item #"+e+" extent #"+r+" data (alreadyRead: "+s.alreadyRead+" offset: "+(s.offset+s.alreadyRead-t.fileStart)+" read size: "+(s.length-s.alreadyRead)+" full extent size: "+s.length+" full item size: "+i.size+")"),o.memcpy(i.data.buffer,i.alreadyRead,t,s.offset+s.alreadyRead-t.fileStart,s.length-s.alreadyRead),t.usedBytes+=s.length-s.alreadyRead,this.stream.logBufferLevel(),i.alreadyRead+=s.length-s.alreadyRead,s.alreadyRead=s.length}}return i.alreadyRead===i.size?i:null},f.prototype.releaseItem=function(e){var t=this.items[e];if(t.data){this.itemsDataSize-=t.size,t.data=null,t.alreadyRead=0;for(var i=0;i0?this.moov.traks[e].samples[0].duration:0),t.push(r)}return t},c.Box.prototype.printHeader=function(e){this.size+=8,this.size>l&&(this.size+=8),"uuid"===this.type&&(this.size+=16),e.log(e.indent+"size:"+this.size),e.log(e.indent+"type:"+this.type)},c.FullBox.prototype.printHeader=function(e){this.size+=4,c.Box.prototype.printHeader.call(this,e),e.log(e.indent+"version:"+this.version),e.log(e.indent+"flags:"+this.flags)},c.Box.prototype.print=function(e){this.printHeader(e)},c.ContainerBox.prototype.print=function(e){this.printHeader(e);for(var t=0;t>8)),e.log(e.indent+"matrix: "+this.matrix.join(", ")),e.log(e.indent+"next_track_id: "+this.next_track_id)},c.tkhdBox.prototype.print=function(e){c.FullBox.prototype.printHeader.call(this,e),e.log(e.indent+"creation_time: "+this.creation_time),e.log(e.indent+"modification_time: "+this.modification_time),e.log(e.indent+"track_id: "+this.track_id),e.log(e.indent+"duration: "+this.duration),e.log(e.indent+"volume: "+(this.volume>>8)),e.log(e.indent+"matrix: "+this.matrix.join(", ")),e.log(e.indent+"layer: "+this.layer),e.log(e.indent+"alternate_group: "+this.alternate_group),e.log(e.indent+"width: "+this.width),e.log(e.indent+"height: "+this.height)};var y={createFile:function(e,t){var i=void 0===e||e,r=new f(t);return r.discardMdatData=!i,r}};t.createFile=y.createFile}));function ql(e){return e.reduce(((e,t)=>256*e+t))}function Yl(e){const t=[101,103,119,99],i=e.length-28,r=e.slice(i,i+t.length);return t.every(((e,t)=>e===r[t]))}Kl.Log,Kl.MP4BoxStream,Kl.DataStream,Kl.MultiBufferStream,Kl.MPEG4DescriptorParser,Kl.BoxParser,Kl.XMLSubtitlein4Parser,Kl.Textin4Parser,Kl.ISOFile,Kl.createFile;class Ql{constructor(){this.s=null,this.a=null,this.l=0,this.c=0,this.u=1/0,this.A=!1,this.d=!1,this.r=4194304,this.n=new Uint8Array([30,158,90,33,244,57,83,165,2,70,35,87,215,231,226,108]),this.t=this.n.slice().reverse()}destroy(){this.s=null,this.a=null,this.l=0,this.c=0,this.u=1/0,this.A=!1,this.d=!1,this.r=4194304,this.n=null,this.t=null}transport(e){if(!this.s&&this.l>50)return e;if(this.l++,this.d)return e;const t=new Uint8Array(e);if(this.A){if(!(this.c~e))}(e.slice(i+32,i+32+t))]}return null}(t,this.t);if(!i)return e;const r=function(e){try{if("object"!=typeof WebAssembly||"function"!=typeof WebAssembly.instantiate)throw null;{const e=new WebAssembly.Module(Uint8Array.of(0,97,115,109,1,0,0,0));if(!(e instanceof WebAssembly.Module&&new WebAssembly.Instance(e)instanceof WebAssembly.Instance))throw null}}catch(e){return new Error("video_error_4")}let t;try{t={env:{__handle_stack_overflow:()=>e(new Error("video_error_1")),memory:new WebAssembly.Memory({initial:256,maximum:256})}}}catch(e){return new Error("video_error_5")}return t}(e);if(r instanceof Error)return console.error(r.message),this.d=!0,e;this.A=!0,this.u=i[1],Yl(t)&&this.c++,WebAssembly.instantiate(i[2],r).then((e=>{if(!function(e){return"function"==typeof e.parse&&"object"==typeof e.memory}(e.instance.exports))return this.d=!0,void console.error("video_error_3");this.s=e.instance.exports,this.a=new Uint8Array(this.s.memory.buffer)})).catch((e=>{this.d=!0,console.error("video_error_6")}))}return e}}class Xl extends Ul{constructor(e){super(e),this.TAG_NAME="Fmp4Loader",this.player=e,this.mp4Box=Kl.createFile(),this.tempFmp4List=[],this.offset=0,this.videoTrackId=null,this.audioTrackId=null,this.isHevc=!1,this.transportDescarmber=null,this.player._opt.isFmp4Private&&(this.transportDescarmber=new Ql),this._listenMp4Box(),e.debug.log(this.TAG_NAME,"init")}destroy(){this.mp4Box&&(this.mp4Box.flush(),this.mp4Box=null),this.transportDescarmber&&(this.transportDescarmber.destroy(),this.transportDescarmber=null),this.tempFmp4List=[],this.offset=0,this.videoTrackId=null,this.audioTrackId=null,this.isHevc=!1,this.player.debug.log(this.TAG_NAME,"destroy")}_listenMp4Box(){this.mp4Box.onReady=this.onReady.bind(this),this.mp4Box.onError=this.onError.bind(this),this.mp4Box.onSamples=this.onSamples.bind(this)}onReady(e){this.player.debug.log(this.TAG_NAME,"onReady",e);const t=e.videoTracks[0],i=e.audioTracks[0];if(t){this.videoTrackId=t.id;const e=this.getSeqHeader(t);e&&(this.player.debug.log(this.TAG_NAME,"seqHeader",e),this._doDecodeByFmp4(e,Ne,0,!0,0)),this.mp4Box.setExtractionOptions(t.id)}if(i&&this.player._opt.hasAudio){this.audioTrackId=i.id;const e=i.audio||{},t=as.indexOf(e.sample_rate),r=i.codec.replace("mp4a.40.","");this.mp4Box.setExtractionOptions(i.id);const s={profile:parseInt(r,10),sampleRate:t,channel:e.channel_count},a=ts(s);this.player.debug.log(this.TAG_NAME,"aacADTSHeader",a,"config",s),this._doDecodeByFmp4(a,Oe,0,!1,0)}this.mp4Box.start()}onError(e){this.player.debug.error(this.TAG_NAME,"mp4Box onError",e)}onSamples(e,t,i){if(e===this.videoTrackId)for(const e of i){const t=e.data,i=e.is_sync,r=1e3*e.cts/e.timescale;e.duration,e.timescale,this.player.updateStats({vbps:t.byteLength,dts:r}),i&&this.calcIframeIntervalTimestamp(r);let s=null;s=this.isHevc?eo(t,i):Gn(t,i),this._doDecodeByFmp4(s,Ne,r,i,0)}else if(e===this.audioTrackId){if(this.player._opt.hasAudio)for(const e of i){const t=e.data;this.player.updateStats({abps:t.byteLength});const i=1e3*e.cts/e.timescale;e.duration,e.timescale;const r=new Uint8Array(t.byteLength+2);r.set([175,1],0),r.set(t,2),this._doDecodeByFmp4(r,Oe,i,!1,0)}}else this.player.debug.warn(this.TAG_NAME,"onSamples() trackId error",e)}getSeqHeader(e){const t=this.mp4Box.getTrackById(e.id);for(const e of t.mdia.minf.stbl.stsd.entries)if(e.avcC||e.hvcC){const t=new Kl.DataStream(void 0,0,Kl.DataStream.BIG_ENDIAN);let i=[];e.avcC?(e.avcC.write(t),i=[23,0,0,0,0]):(this.isHevc=!0,e.hvcC.write(t),i=[28,0,0,0,0]);const r=new Uint8Array(t.buffer,8),s=new Uint8Array(i.length+r.length);return s.set(i,0),s.set(r,i.length),s}return null}dispatch(e){let t=new Uint8Array(e);"string"!=typeof e?"object"==typeof e?(this.transportDescarmber&&(t=this.transportDescarmber.transport(t)),t.buffer.fileStart=this.offset,this.offset+=t.byteLength,this.mp4Box.appendBuffer(t.buffer)):this.player.debug.warn(this.TAG_NAME,"dispatch()","data is not object",e):this.player.debug.warn(this.TAG_NAME,"dispatch()","data is string",e)}downloadFmp4File(){const e=new Blob(this.tempFmp4List,{type:'video/mp4; codecs="avc1.640028,mp4a.40.2"'}),t=URL.createObjectURL(e),i=document.createElement("a");i.href=t,i.download=vs()+".fmp4",i.click(),URL.revokeObjectURL(t)}}class Jl extends Ul{LOG_NAME="Mpeg4Loader";constructor(e){super(e),this.player=e,this.player.debug.log(this.LOG_NAME,"init")}destroy(){super.destroy(),this.player.debug.log(this.LOG_NAME,"destroy")}}function Zl(...e){if((e=e.filter(Boolean)).length<2)return e[0];const t=new Uint8Array(e.reduce(((e,t)=>e+t.byteLength),0));let i=0;return e.forEach((e=>{t.set(e,i),i+=e.byteLength})),t}class ed extends Ul{constructor(e){super(e),this.player=e,this._pmtId=-1,this._remainingPacketData=null,this._videoPesData=[],this._audioPesData=[],this._gopId=0,this._videoPid=-1,this._audioPid=-1,this._codecType=gt,this._audioCodecType=_t.AAC,this._vps=null,this._sps=null,this._pps=null,this.TAG_NAME="HlsTsLoader",this._isForHls=!0,this.videoTrack=ed.initVideoTrack(),this.audioTrack=ed.initAudioTrack(),this._baseDts=-1,this._baseDtsInited=!1,this._basefps=25,this._baseFpsInterval=null,this._tempSampleTsList=[],this._hasAudio=!1,this._hasVideo=!1,this._audioNextPts=void 0,this._videoNextDts=void 0,this._audioTimestampBreak=!1,this._videoTimestampBreak=!1,this._lastAudioExceptionGapDot=0,this._lastAudioExceptionOverlapDot=0,this._lastAudioExceptionLargeGapDot=0,this._isSendAACSeqHeader=!1,this.workerClearTimeout=null,this.workerUrl=null,this.loopWorker=null,this.tempSampleListInfo={},this._isUseWorker()&&this._initLoopWorker(),this.player.debug.log(this.TAG_NAME,"init")}destroy(){super.destroy(),this.workerUrl&&(URL.revokeObjectURL(this.workerUrl),this.workerUrl=null),this.workerClearTimeout&&(clearTimeout(this.workerClearTimeout),this.workerClearTimeout=null),this.loopWorker&&(this.loopWorker.postMessage({cmd:"destroy"}),this.loopWorker.terminate(),this.loopWorker=null),this._stopDecodeLoopInterval(),this.videoTrack=null,this.audioTrack=null,this.tempSampleListInfo={},this._baseDts=-1,this._baseDtsInited=!1,this._basefps=50,this._hasCalcFps=!1,this._audioNextPts=void 0,this._videoNextDts=void 0,this._audioTimestampBreak=!1,this._videoTimestampBreak=!1,this._lastAudioExceptionGapDot=0,this._lastAudioExceptionOverlapDot=0,this._lastAudioExceptionLargeGapDot=0,this._isForHls=!0,this._isSendAACSeqHeader=!1,this.player.debug.log(this.TAG_NAME,"destroy")}static initVideoTrack(){return{samples:[]}}static initAudioTrack(){return{samples:[]}}static probe(e){return!!e.length&&(71===e[0]&&71===e[188]&&71===e[376])}static _parsePES(e){const t=e[8];if(null==t||e.lengthe.length-6)return;let r,s;const a=e[7];return 192&a&&(r=536870912*(14&e[9])+4194304*(255&e[10])+16384*(254&e[11])+128*(255&e[12])+(254&e[13])/2,64&a?(s=536870912*(14&e[14])+4194304*(255&e[15])+16384*(254&e[16])+128*(255&e[17])+(254&e[18])/2,r-s>54e5&&(r=s)):s=r),{data:e.subarray(9+t),pts:r,dts:s,originalPts:r,originalDts:s}}_demux(e,t=!1,i=!0){t&&(this._pmtId=-1,this.videoTrack=ed.initVideoTrack(),this.audioTrack=ed.initAudioTrack()),!i||t?(this._remainingPacketData=null,this._videoPesData=[],this._audioPesData=[]):(this.videoTrack.samples=[],this.audioTrack.samples=[],this._remainingPacketData&&(e=Zl(this._remainingPacketData,e),this._remainingPacketData=null));let r=e.length;const s=r%188;s&&(this._remainingPacketData=e.subarray(r-s),r-=s);for(let t=0;t>4>1){if(s=t+5+e[t+4],s===t+188)continue}else s=t+4;switch(r){case 0:i&&(s+=e[s]+1),this._pmtId=(31&e[s+10])<<8|e[s+11];break;case this._pmtId:{i&&(s+=e[s]+1);const t=s+3+((15&e[s+1])<<8|e[s+2])-4;for(s+=12+((15&e[s+10])<<8|e[s+11]);s=t)return[];const s=[];for(;r{const t=r?e[0]>>>1&63:31&e[0];switch(t){case 5:case 16:case 17:case 18:case 19:case 20:case 21:case 22:case 23:if(!r&&5!==t||r&&5===t)break;s.isIFrame=!0,this._gopId++;break;case 6:case 39:case 40:if(!r&&6!==t||r&&6===t)break;return void function(e,t){const i=e.length;let r=t?2:1,s=0,a=0,n="";for(;255===e[r];)s+=255,r++;for(s+=e[r++];255===e[r];)a+=255,r++;if(a+=e[r++],5===s&&i>r+16)for(let t=0;t<16;t++)n+=e[r].toString(16),r++;e.subarray(r)}(function(e){const t=e.byteLength,i=[];let r=1;for(;r=i)return;const s=r,a=[],n=(60&e[r+2])>>>2,o=ss[n];if(!o)throw new Error(`Invalid sampling index: ${n}`);const l=1+((192&e[r+2])>>>6),d=(1&e[r+2])<<2|(192&e[r+3])>>>6;let h,c,u=0;const p=os(o);for(;r+7>5,i-r=i?void 0:e.subarray(r),frames:a,samplingFrequencyIndex:n,sampleRate:o,objectType:l,channelCount:d,originCodec:`mp4a.40.${l}`}}(e.data,e.originalPts);if(t){if(this.audioTrack.codec=t.codec,this.audioTrack.sampleRate=t.sampleRate,this.audioTrack.channelCount=t.channelCount,!this._isSendAACSeqHeader){const e=ts({profile:t.objectType,sampleRate:t.samplingFrequencyIndex,channel:t.channelCount});this._isSendAACSeqHeader=!0,this.player.debug.log(this.TAG_NAME,"aac seq header",`profile: ${t.objectType}, sampleRate:${t.sampleRate},sampleRateIndex: ${t.samplingFrequencyIndex}, channel: ${t.channelCount}`),this._doDecodeByHls(e,Oe,0,!1,0)}if(this._isSendAACSeqHeader){const e=[];t.frames.forEach((t=>{const i=t.pts,r=new Uint8Array(t.data.length+2);r.set([175,1],0),r.set(t.data,2);const s={type:Oe,pts:i,dts:i,payload:r};e.push(s)})),this.audioTrack.samples=this.audioTrack.samples.concat(e)}else this.player.debug.warn(this.TAG_NAME,"aac seq header not send")}else this.player.debug.warn(this.TAG_NAME,"aac parseADTS error")}this._audioPesData=[]}}else this.player.debug.warn(this.TAG_NAME,"Cannot parse audio pes",this._audioPesData)}_fix(e=0,t=!1,i=!0){e=Math.round(9e4*e);const r=this.videoTrack,s=this.audioTrack,a=r.samples,n=s.samples;if(!a.length&&!n.length)return;const o=a[0],l=n[0];let d=0;if(a.length&&n.length&&(d=o.dts-l.pts),this._baseDtsInited||this._calculateBaseDts(),t&&(this._calculateBaseDts(),this._baseDts-=e),!i){this._videoNextDts=d>0?e+d:e,this._audioNextPts=d>0?e:e-d;const t=o?o.dts-this._baseDts-this._videoNextDts:0,i=l?l.pts-this._baseDts-this._audioNextPts:0;Math.abs(t||i)>Qr&&(this._calculateBaseDts(this.audioTrack,this.videoTrack),this._baseDts-=e)}this._resetBaseDtsWhenStreamBreaked(),this._fixAudio(s),this._fixVideo(r);let h=r.samples.concat(s.samples);h=h.map((e=>(e.dts=Math.round(e.dts/90),e.pts=Math.round(e.pts/90),e.cts=e.pts-e.dts,e))).sort(((e,t)=>e.dts-t.dts)),h.forEach((e=>{const t=new Uint8Array(e.payload);delete e.payload,this._isUseWorker()?this.loopWorker.postMessage({...e,payload:t,cmd:"sample"},[t.buffer]):e.type===Ne?this._doDecodeVideo({...e,payload:t}):e.type===Oe&&this._doDecodeAudio({...e,payload:t})})),ka(this._hasCalcFps)&&this._isUseWorker()&&(this._hasCalcFps=!0,this._calcDecodeFps(h))}_isUseWorker(){return!this.player.isUseMSE()&&this.isForHls()}_calculateBaseDts(){const e=this.audioTrack,t=this.videoTrack,i=e.samples,r=t.samples;if(!i.length&&!r.length)return!1;let s=1/0,a=1/0;i.length&&(e.baseDts=s=i[0].pts),r.length&&(t.baseDts=a=r[0].dts),this._baseDts=Math.min(s,a);const n=a-s;return Number.isFinite(n)&&Math.abs(n)>45e3&&this.player.debug.warn(this.TAG_NAME,`large av first frame gap,\n video pts: ${a},\n audio pts: ${s},\n base dts: ${this._baseDts},\n detect is: ${n}`),this._baseDtsInited=!0,!0}_resetBaseDtsWhenStreamBreaked(){if(this._baseDtsInited&&this._videoTimestampBreak&&this._audioTimestampBreak){if(!this._calculateBaseDts(this.audioTrack,this.videoTrack))return;this._baseDts-=Math.min(this._audioNextPts,this._videoNextDts),this._audioLastSample=null,this._videoLastSample=null,this._videoTimestampBreak=!1,this._audioTimestampBreak=!1}}_fixAudio(e){const t=e.samples;t.length&&(t.forEach((e=>{e.pts-=this._baseDts,e.dts=e.pts})),this._doFixAudioInternal(e,t,9e4))}_fixVideo(e){const t=e.samples;if(!t.length)return;if(t.forEach((e=>{e.dts-=this._baseDts,e.pts-=this._baseDts})),void 0===this._videoNextDts){const e=t[0];this._videoNextDts=e.dts}const i=t.length;let r=0;const s=t[0],a=t[1],n=this._videoNextDts-s.dts;let o;Math.abs(n)>45e3&&(s.dts+=n,s.pts+=n,this.player.debug.warn(this.TAG_NAME,`large video gap between chunk,\n next dts is ${this._videoNextDts},\n first dts is ${s.dts},\n next dts is ${a.dts},\n duration is ${n}`),a&&Math.abs(a.dts-s.dts)>Qr&&(this._videoTimestampBreak=!0,t.forEach(((e,t)=>{0!==t&&(e.dts+=n,e.pts+=n)}))));const l=e.samples[0],d=e.samples[i-1];o=1===i?9e3:Math.floor((d.dts-l.dts)/(i-1));for(let s=0;sQr||r<0){this._videoTimestampBreak=!0,r=this._audioTimestampBreak?o:Math.max(r,2700);const i=this._audioNextPts||0;n&&n.dts>i&&(r=o),this.player.debug.warn(this.TAG_NAME,`large video gap between frames,\n time is ${a/e.timescale},\n dts is ${a},\n origin dts is ${t[s].originalDts},\n next dts is ${this._videoNextDts},\n sample Duration is ${r} ,\n ref Sample DurationInt is ${o}`)}t[s].duration=r,this._videoNextDts+=r}}_doFixAudioInternal(e,t,i){e.sampleDuration||(e.sampleDuration=os(e.timescale,i));const r=e.sampleDuration;if(void 0===this._audioNextPts){const e=t[0];this._audioNextPts=e.pts}for(let i=0;i=3*r&&n<=qr&&!Is()){ns(e.codec,e.channelCount)||t[0].data.subarray();const o=Math.floor(n/r);Math.abs(a.pts-this._lastAudioExceptionGapDot)>Yr&&(this._lastAudioExceptionGapDot=a.pts),this.player.debug.warn(this.TAG_NAME,`audio gap detected,\n pts is ${t.pts},\n originPts is ${t.originalPts},\n count is ${o},\n nextPts is ${s},\n ref sample duration is ${r}`);for(let e=0;e=-9e4?(Math.abs(a.pts-this._lastAudioExceptionOverlapDot)>Yr&&(this._lastAudioExceptionOverlapDot=a.pts,this.player.debug.warn(this.TAG_NAME,`audio overlap detected,\n pts is ${a.pts},\n originPts is ${a.originalPts},\n nextPts is ${s},\n ref sample duration is ${r}`)),t.splice(i,1),i--):(Math.abs(n)>=qr&&(this._audioTimestampBreak=!0,Math.abs(a.pts-this._lastAudioExceptionLargeGapDot)>Yr&&(this._lastAudioExceptionLargeGapDot=a.pts,this.player.debug.warn(this.TAG_NAME,`large audio gap detected,\n time is ${a.pts/1e3}\n pts is ${a.pts},\n originPts is ${a.originalPts},\n nextPts is ${s},\n sample duration is ${n}\n ref sample duration is ${r}`))),a.dts=a.pts=s,this._audioNextPts+=r)}}_calcDecodeFps(e){const t=Aa(e.map((e=>({ts:e.dts||e.pts,type:e.type}))),Ne);t&&(this._basefps=t,this._postMessageToLoopWorker("updateBaseFps",{baseFps:this._basefps}),this.player.debug.log(this.TAG_NAME,`_calcDecodeFps() video fps is ${t}, update base fps is ${this._basefps}`))}_initLoopWorker(){this.player.debug.log(this.TAG_NAME,"_initLoopWorker()");const e=Ia(function(){const e=1,t=2;let i=new class{constructor(){this.baseFps=0,this.fpsInterval=null,this.preLoopTimestamp=null,this.startBpsTime=null,this.allSampleList=[]}destroy(){this._clearInterval(),this.baseFps=0,this.allSampleList=[],this.preLoopTimestamp=null,this.startBpsTime=null}updateBaseFps(e){this.baseFps=e,this._clearInterval(),this._startInterval()}pushSample(e){delete e.cmd,this.allSampleList.push(e)}_startInterval(){const e=Math.ceil(1e3/this.baseFps);this.fpsInterval=setInterval((()=>{let t=(new Date).getTime();this.preLoopTimestamp||(this.preLoopTimestamp=t),this.startBpsTime||(this.startBpsTime=t);const i=t-this.preLoopTimestamp;if(i>2*e&&console.warn(`EasyPro:[TsLoader LoopWorker] loop interval is ${i}ms, more than ${e} * 2ms`),this._loop(),this.preLoopTimestamp=(new Date).getTime(),this.startBpsTime){t-this.startBpsTime>=1e3&&(this._calcSampleList(),this.startBpsTime=t)}}),e)}_clearInterval(){this.fpsInterval&&(clearInterval(this.fpsInterval),this.fpsInterval=null)}_calcSampleList(){const i={buferredDuration:0,allListLength:this.allSampleList.length,audioListLength:0,videoListLength:0};this.allSampleList.forEach((r=>{r.type===t?(i.videoListLength++,r.duration&&(i.buferredDuration+=Math.round(r.duration/90))):r.type===e&&i.audioListLength++})),postMessage({cmd:"sampleListInfo",...i})}_loop(){let i=null;if(this.allSampleList.length)if(i=this.allSampleList.shift(),i.type===t){postMessage({cmd:"decodeVideo",...i},[i.payload.buffer]);let t=this.allSampleList[0];for(;t&&t.type===e;)i=this.allSampleList.shift(),postMessage({cmd:"decodeAudio",...i},[i.payload.buffer]),t=this.allSampleList[0]}else i.type===e&&(postMessage({cmd:"decodeAudio",...i},[i.payload.buffer]),this.allSampleList.length&&this.allSampleList[0].type===t&&(i=this.allSampleList.shift(),postMessage({cmd:"decodeVideo",...i},[i.payload.buffer])))}};self.onmessage=e=>{const t=e.data;switch(t.cmd){case"updateBaseFps":i.updateBaseFps(t.baseFps);break;case"sample":i.pushSample(t);break;case"destroy":i.destroy(),i=null}}}.toString()),t=new Blob([e],{type:"text/javascript"}),i=URL.createObjectURL(t);let r=new Worker(i);this.workerUrl=i,this.workerClearTimeout=setTimeout((()=>{window.URL.revokeObjectURL(this.workerUrl),this.workerUrl=null,this.workerClearTimeout=null}),re),r.onmessage=e=>{const t=e.data;switch(t.cmd){case"decodeVideo":this._doDecodeVideo(t);break;case"decodeAudio":this._doDecodeAudio(t);break;case"sampleListInfo":this.tempSampleListInfo=t}},this.loopWorker=r}_postMessageToLoopWorker(e,t){this._isUseWorker()&&(this.loopWorker?this.loopWorker.postMessage({cmd:e,...t}):this.player.debug.warn(this.TAG_NAME,"loop worker is not init, can not post message"))}_doDecodeAudio(e){const t=new Uint8Array(e.payload);this.player.updateStats({abps:t.byteLength});let i=t;Ta(this.player._opt.m7sCryptoAudio)&&(i=this.cryptoPayloadAudio(t)),this.isForHls()?this._doDecodeByHls(i,Oe,e.dts,!1,0):this._doDecodeByTs(i,Oe,e.dts,!1,0)}_doDecodeVideo(e){const t=new Uint8Array(e.payload);let i=null;i=e.isHevc?eo(t,e.isIFrame):Gn(t,e.isIFrame),this.player.updateStats({dts:e.dts,vbps:i.byteLength});const r=e.pts-e.dts;let s=this.cryptoPayload(i,e.isIFrame);this.isForHls()?this._doDecodeByHls(s,Ne,e.dts,e.isIFrame,r):this._doDecodeByTs(s,Ne,e.dts,e.isIFrame,r)}_stopDecodeLoopInterval(){this._baseFpsInterval&&(clearInterval(this._baseFpsInterval),this._baseFpsInterval=null)}getBuferredDuration(){return this.tempSampleListInfo.buferredDuration||0}getSampleListLength(){return this.tempSampleListInfo.allListLength||0}getSampleAudioListLength(){return this.tempSampleListInfo.audioListLength||0}getSampleVideoListLength(){return this.tempSampleListInfo.videoListLength||0}isForHls(){return this._isForHls}}class td extends ed{constructor(e){super(e),this.player=e,this.TAG_NAME="TsLoader",this.isFirstDispatch=!0,this._isForHls=!1,this.player.debug.log(this.TAG_NAME,"init")}destroy(){super.destroy(),this.isFirstDispatch=!0,this._isForHls=!1}dispatch(e){this.demuxAndFix(e,this.isFirstDispatch,!0,0),this.isFirstDispatch&&(this.isFirstDispatch=!1)}}class id{constructor(e){return new(id.getLoaderFactory(e))(e)}static getLoaderFactory(e){const t=e._opt.demuxType;return t===k?Vl:t===T||e.isWebrtcH265()?Wl:t===R?Hl:t===x?$l:t===L?Xl:t===I?Jl:t===B?td:jl}}const rd=[44100,48e3,32e3,0],sd=[22050,24e3,16e3,0],ad=[11025,12e3,8e3,0],nd=[0,32,64,96,128,160,192,224,256,288,320,352,384,416,448,-1],od=[0,32,48,56,64,80,96,112,128,160,192,224,256,320,384,-1],ld=[0,32,40,48,56,64,80,96,112,128,160,192,224,256,320,-1];function dd(e){if(e.length<4)return void console.error("Invalid MP3 packet, header missing!");let t=new Uint8Array(e.buffer),i=null;if(255!==t[0])return void console.error("Invalid MP3 packet, first byte != 0xFF ");let r=t[1]>>>3&3,s=(6&t[1])>>1,a=(240&t[2])>>>4,n=(12&t[2])>>>2,o=3!==(t[3]>>>6&3)?2:1,l=0,d=0;switch(r){case 0:l=ad[n];break;case 2:l=sd[n];break;case 3:l=rd[n]}switch(s){case 1:a{this._clearAudioSourceBufferCheckTimeout(),this.player.emit(lt.webcodecsAudioInitTimeout)}),1e3)):this.player.isPlayer()?(this.player.updateStats({dfps:!0}),this.player._times.videoStart||(this.player._times.videoStart=vs(),this.player.handlePlayToRenderTimes()),this.player.video.render({videoFrame:e,ts:e.timestamp}),this.player.handleRender()):this.player.isPlayback()&&(this.player.updateStats({dfps:!0}),ka(this.player.playbackPause)?(this.player.playback.isUseLocalCalculateTime&&this.player.playback.increaseLocalTimestamp(),this.player.playback.isUseFpsRender?this.player.video.pushData({videoFrame:e,ts:e.timestamp}):this.player.video.render$2({videoFrame:e,ts:e.timestamp})):ka(this.player.playback.isPlaybackPauseClearCache)&&this.player.playback.isCacheBeforeDecodeForFpsRender&&this.player.playback.isUseFpsRender&&this.player.video.pushData({videoFrame:e,ts:e.timestamp})))}handleError(e){this.player.debug.error(this.TAG_NAME,"VideoDecoder handleError:",e.code,e);const t=e.toString();-1!==t.indexOf(xi)?this.player.emitError(lt.webcodecsUnsupportedConfigurationError,t):-1!==t.indexOf(Li)||-1!==t.indexOf(Ii)||-1!==t.indexOf(Pi)?this.player.emitError(lt.webcodecsDecodeError,t):-1!==t.indexOf(Bi)&&this.player.emitError(lt.webcodecsH265NotSupport,t)}handleDecodeAudio(e){this.player.isPlayer()?this.player.audio.play(e,e.timestamp):this.player.isPlayback()}handleErrorAudio(e){this.player.debug.error(this.TAG_NAME,"AudioDecoder handleError:",e.code,e)}decodeVideo(e,t,i,r){if(this.player)if(this.player.isDestroyedOrClosed())this.player.debug&&this.player.debug.warn(this.TAG_NAME,"decodeVideo() player is destroyed");else if(this.hasInit)if(!this.isDecodeFirstIIframe&&i&&(this.isDecodeFirstIIframe=!0),this.isDecodeFirstIIframe){if(this.isDecodeStateClosed())return void this.player.debug.warn(this.TAG_NAME,"VideoDecoder isDecodeStateClosed true");if(i&&0===e[1]){const t=15&e[0];let i={};if(t===gt){i=On(e.slice(5))}else t===At&&(i=Xn(e));const r=this.player.video.videoInfo;r&&r.width&&r.height&&i&&i.codecWidth&&i.codecHeight&&(i.codecWidth!==r.width||i.codecHeight!==r.height)&&(this.player.debug.warn(this.TAG_NAME,`decodeVideo: video width or height is changed,\n old width is ${r.width}, old height is ${r.height},\n new width is ${i.codecWidth}, new height is ${i.codecHeight},\n and emit change event`),this.isWidthOrHeightChanged=!0,this.player.emitError(lt.wcsWidthOrHeightChange,`width ${r.width}->${r.height} height ${i.codecWidth}->${i.codecHeight}`))}if(this.isWidthOrHeightChanged)return void this.player.debug.warn(this.TAG_NAME,"decodeVideo: video width or height is changed, and return");if(Sa(e))return void this.player.debug.log(this.TAG_NAME,"decodeVideo and payload is video sequence header so drop this frame");if(e.byteLength<12)return void this.player.debug.warn(this.TAG_NAME,`decodeVideo and payload is too small , payload length is ${e.byteLength}`);let r=!1,s=(new Date).getTime();this.prevTimestamp||(this.prevTimestamp=s,r=!0);const a=s-this.prevTimestamp;this.decodeDiffTimestamp=a,a>500&&!r&&this.player.isPlayer()&&this.player.debug.warn(this.TAG_NAME,"decodeVideo diff time is ",a);const n=e.slice(5),o=new EncodedVideoChunk({data:n,timestamp:t,type:i?$t:jt});this.player.emit(st.timeUpdate,t);try{this.decoder.decode(o)}catch(e){this.player.debug.error(this.TAG_NAME,"VideoDecoder",e);const t=e.toString();(-1!==t.indexOf(Di)||-1!==t.indexOf(Ri))&&this.player.emitError(lt.webcodecsDecodeError,t)}this.prevTimestamp=(new Date).getTime()}else this.player.debug.log(this.TAG_NAME,"VideoDecoder first frame is not iFrame");else if(i&&e[1]===Ni){const t=15&e[0];if(this.player.video.updateVideoInfo({encTypeCode:t}),t===At&&!zs()){const e=xs();return this.player.debug.warn(this.TAG_NAME,"WebcodecsDecoder not support hevc decode",e.type,e.version),void this.player.emitError(lt.webcodecsH265NotSupport)}this.player._times.decodeStart||(this.player._times.decodeStart=vs());let i=null,r=null;const s=e.slice(5);if(t===gt?(r=On(s),i={codec:r.codec,description:s}):t===At&&(r=parseHEVCDecoderConfigurationRecord$4(s),i={codec:r.codec,description:s}),!i||i&&!i.codec||r&&0===r.codecWidth&&0===r.codecHeight)return this.player.debug.warn(this.TAG_NAME,"decodeVideo and webcodecs configure is",JSON.stringify(i)),void this.player.emitError(lt.webcodecsDecodeConfigureError,"configure or configure.code is null");i.codedHeight=r.codecHeight,i.codedWidth=r.codecWidth,this.isInitInfo||(this.player.debug.log(this.TAG_NAME,`updateVideoInfo: ${r.codecWidth},${r.codecHeight}`),this.player.video.updateVideoInfo({width:r.codecWidth,height:r.codecHeight}),this.player.video.initCanvasViewSize(),this.isInitInfo=!0),this.player.recorder&&this.player._opt.recordType===_&&this.player.recorder.initMetaData(e,t),this.player.debug.log(this.TAG_NAME,`decoder.configure() and codec is ${i.codec}`);try{this.decoder.configure(i),this.hasInit=!0}catch(e){this.player.debug.error(this.TAG_NAME,"configure error",e.code,e);const t=e.toString();-1!==t.indexOf(Bi)?this.player.emitError(lt.webcodecsH265NotSupport,t):this.player.emitError(lt.webcodecsDecodeConfigureError,t)}}else this.player.debug.warn(this.TAG_NAME,`decodeVideo has not init , isIframe is ${i} , payload is ${e[1]} so drop this frame`)}decodeAudio(e,t){if(this.player)if(this.player.isDestroyedOrClosed())this.player.debug&&this.player.debug.warn(this.TAG_NAME,"decodeAudio() player is destroyed");else if(this.hasAudioInit){if(is(e))return void this.player.debug.log(this.TAG_NAME,"decodeAudio and has already initialized and payload is aac codec packet so drop this frame");if(this._clearAudioNoDataCheckTimeout(),this.isDecodeFirstIIframe){if(this.isAudioDecodeStateClosed())return void this.player.debug.warn(this.TAG_NAME,"AudioDecoder isDecodeStateClosed true");const i=this.isAAC?e.slice(2):e.slice(1),r=i.length/this.player.audio.audioInfo.sampleRate*1e3,s=new EncodedAudioChunk({type:"key",data:i,timestamp:t,duration:parseInt(r,10)});try{this.decoderAudio.decode(s)}catch(e){this.player.debug.error(this.TAG_NAME,"AudioDecoder",e),e.toString()}}}else{const t=e[0]>>4,i=e[0]>>1&1,r=t===_t.MP3,s=t===_t.AAC,a=t===_t.ALAW;let n="";n=s?i?16:8:0===i?8:16;const o={codec:"",numberOfChannels:"",sampleRate:""};let l=null;if(s||r){let t=null;if(is(e)){const i=e.slice(2);t=ds(i),t&&(o.codec=t.originalCodec,o.numberOfChannels=t.channelCount,o.sampleRate=t.sampleRate),l=i,this.isAAC=s}else r&&(t=dd(e),t&&(o.codec=Kr,o.numberOfChannels=t.channelCount,o.sampleRate=t.samplingRate))}else o.codec=a?jr:$r,o.numberOfChannels=1,o.sampleRate=8e3;if(o.codec&&o.numberOfChannels&&o.sampleRate){this.isAudioInitInfo||(this.player.audio.updateAudioInfo({encTypeCode:t,channels:o.numberOfChannels,sampleRate:o.sampleRate,depth:n}),this.isAudioInitInfo=!0),this.player.recorder&&this.player._opt.recordType===_&&l&&this.player.recorder.initAudioAacExtraData(l),this.player.debug.log(this.TAG_NAME,`decoderAudio.configure() and codec is ${o.codec}`);try{this.decoderAudio.configure(o),this._clearAudioSourceBufferCheckTimeout(),this.hasAudioInit=!0,null===this.audioSourceNoDataCheckTimeout&&(this.audioSourceNoDataCheckTimeout=setTimeout((()=>{this._clearAudioNoDataCheckTimeout(),this.player.emit(lt.webcodecsAudioNoDataTimeout)}),1e3))}catch(e){this.player.debug.error(this.TAG_NAME,"configure audio error",e.code,e),e.toString()}}}}_clearAudioSourceBufferCheckTimeout(){this.audioSourceBufferCheckTimeout&&(clearTimeout(this.audioSourceBufferCheckTimeout),this.audioSourceBufferCheckTimeout=null)}_clearAudioNoDataCheckTimeout(){this.audioSourceNoDataCheckTimeout&&(clearTimeout(this.audioSourceNoDataCheckTimeout),this.audioSourceNoDataCheckTimeout=null)}getDecodeDiffTimes(){return this.decodeDiffTimestamp}isDecodeStateClosed(){return"closed"===this.decoder.state}isDecodeStateConfigured(){return"configured"===this.decoder.state}isDecodeStateUnConfigured(){return"unconfigured"===this.decoder.state}isAudioDecodeStateClosed(){return"closed"===this.decoderAudio.state}isAudioDecodeStateConfigured(){return"configured"===this.decoderAudio.state}isAudioDecodeStateUnConfigured(){return"unconfigured"===this.decoderAudio.state}}const cd={play:"播放",pause:"暂停",audio:"",mute:"",screenshot:"截图",loading:"",fullscreen:"全屏",fullscreenExit:"退出全屏",record:"录制",recordStop:"停止录制",narrow:"缩小",expand:"放大",ptz:"操作盘",ptzActive:"操作盘激活",zoom:"电子放大",zoomStop:"关闭电子放大",close:"关闭",performance:"性能面板",performanceActive:"性能面板激活",face:"人脸识别",faceActive:"人脸识别激活",object:"物品识别",objectActive:"物品识别激活",occlusion:"遮挡物检查",occlusionActive:"遮挡物检查激活",logSave:"保存日志"};var ud=Object.keys(cd).reduce(((e,t)=>(e[t]=`\n \n ${cd[t]?`${cd[t]}`:""}\n`,e)),{});function pd(e,t){let i=!1;return e.forEach((e=>{i||e.startTimestamp<=t&&e.endTimestamp>t&&(i=!0)})),i}function fd(e=[],t=[],i){const r=e.length,s=t.length,a=Math.max(r,s),n=Jt,o=Math.ceil(a/n);let l=0,d=0;!function s(){let a="",h="";for(let i=0;i\n ${i.title}\n \n `);const s=t[d];s&&(h+=`\n
${s.title}
\n `),d+=1}a&&i.$playbackTimeListOne.insertAdjacentHTML("beforeend",a),h&&i.$playbackTimeListSecond.insertAdjacentHTML("beforeend",h),l+=1,l0?[t,i,r]:[i,r]).map((e=>e<10?`0${e}`:String(e))).join(":")}function bd(e,t,i){const r=e.$playbackProgress,{left:s}=r.getBoundingClientRect(),a=bs((ks()?i.touches[0].clientX:i.pageX)-s,0,r.clientWidth),n=parseInt(a/r.clientWidth*t,10);return{second:n,time:vd(n),width:a,percentage:bs(a/r.clientWidth,0,1)}}function _d(e,t){return t instanceof Element?e.appendChild(t):e.insertAdjacentHTML("beforeend",String(t)),e.lastElementChild||e.lastChild}function wd(e,t,i){return e&&e.style&&Ks(t)&&(e.style[t]=i),e}function Ed(e,t){return e.composedPath&&e.composedPath().indexOf(t)>-1}function Sd(e){let t=!1;return e&&e.parentNode&&(e.parentNode.removeChild(e),t=!0),t}var Td=(e,t)=>{const{events:{proxy:i}}=e,r=document.createElement("object");r.setAttribute("aria-hidden","true"),r.setAttribute("tabindex",-1),r.type="text/html",r.data="about:blank",_s(r,{display:"block",position:"absolute",top:"0",left:"0",height:"100%",width:"100%",overflow:"hidden",pointerEvents:"none",zIndex:"-1"});let s=e.width,a=e.height;const n=Fs((()=>{e.width===s&&e.height===a||(s=e.width,a=e.height,e.emit(st.resize),c())}),500);i(r,"load",(()=>{i(r.contentDocument.defaultView,"resize",(()=>{n()}))})),e.$container.appendChild(r),e.on(st.destroy,(()=>{e.$container.removeChild(r)})),e.on(st.volumechange,(()=>{!function(e){if(0===e)_s(t.$volumeOn,"display","none"),_s(t.$volumeOff,"display","flex"),_s(t.$volumeHandle,"top","48px");else if(t.$volumeHandle&&t.$volumePanel){const i=ws(t.$volumePanel,"height")||60,r=ws(t.$volumeHandle,"height"),s=i-(i-r)*e-r;_s(t.$volumeHandle,"top",`${s}px`),_s(t.$volumeOn,"display","flex"),_s(t.$volumeOff,"display","none")}t.$volumePanelText&&(t.$volumePanelText.innerHTML=parseInt(100*e))}(e.volume)})),e.on(st.loading,(i=>{_s(t.$loading,"display",i?"flex":"none"),(ka(e._opt.backgroundLoadingShow)&&Ta(i)||ka(i))&&_s(t.$poster,"display","none"),i&&(_s(t.$playBig,"display","none"),_s(t.$tipsMessage,"display","none")),i||e._opt.extendDomConfig.showAfterLoading&&t.$extendDom&&_s(t.$extendDom,"display","block"),ks()||i||e.getRenderType()===K&&ka(e._opt.useMSE)&&o()})),e.on(st.removeLoadingBgImage,(()=>{ks()||o()}));const o=()=>{t.$loadingBgImage&&t.$loadingBg&&t.$loadingBgImage.src&&(e.debug&&e.debug.log("Control","remove loading bg image"),t.$loadingBgImage.width=0,t.$loadingBgImage.height=0,t.$loadingBgImage.src="",_s(t.$loadingBg,"display","none"))},l=t=>{e.fullscreen?la(t)===e.$container&&d():d()},d=i=>{let r=js(i)?i:e.fullscreen;_s(t.$fullscreenExit,"display",r?"flex":"none"),_s(t.$fullscreen,"display",r?"none":"flex")},h=()=>e._opt.playType===b&&e._opt.playbackConfig.showControl,c=i=>{ks()&&t.$controls&&e._opt.useWebFullScreen&&setTimeout((()=>{if(e.fullscreen){const i=h()?Pt:0;let r=e.height/2-e.width+i/2,s=e.height/2-i/2;if(t.$controls.style.transform=`translateX(${-r}px) translateY(-${s}px) rotate(-90deg)`,t.$zoomControls){const i=156,r=30,s=e.width/2+i/2-r/2;t.$zoomControls.style.transform=`translateX(${-s}px) translateY(${e.height/2}px) rotate(-90deg)`}if(t.$recording){const i=101,r=20,s=e.width/2+i/2-r/2;t.$recording.style.transform=`translateX(${-s}px) translateY(${e.height/2}px) rotate(-90deg)`}}else t.$controls.style.transform="translateX(0) translateY(0) rotate(0)",t.$zoomControls&&(t.$zoomControls.style.transform="translateX(-50%) translateY(0) rotate(0)"),t.$recording&&(t.$recording.style.transform="translateX(-50%) translateY(0) rotate(0)");i&&i()}),10)};try{es.on("change",l),e.events.destroys.push((()=>{es.off("change",l)}))}catch(e){}e.on(st.webFullscreen,(e=>{ks()&&(d(e),c((()=>{p()})))})),e.on(st.recording,(()=>{e.playing&&(_s(t.$record,"display",e.recording?"none":"flex"),_s(t.$recordStop,"display",e.recording?"flex":"none"),(e._opt.hasControl||e._opt.isShowRecordingUI)&&(_s(t.$recording,"display",e.recording?"flex":"none"),ka(e.recording)&&t.$recordingTime&&(t.$recordingTime.innerHTML=Xs(0))))})),e.on(st.recordingTimestamp,(e=>{t.$recordingTime&&(t.$recordingTime.innerHTML=Xs(e))})),e.on(st.zooming,(()=>{e.playing&&(_s(t.$zoom,"display",e.zooming?"none":"flex"),_s(t.$zoomStop,"display",e.zooming?"flex":"none"),(e._opt.hasControl||e._opt.isShowZoomingUI)&&_s(t.$zoomControls,"display",e.zooming?"flex":"none"))})),e.on(st.playing,(e=>{u(e)}));const u=i=>{_s(t.$play,"display",i?"none":"flex"),_s(t.$playBig,"display",i?"none":"block"),_s(t.$pause,"display",i?"flex":"none"),_s(t.$screenshot,"display",i?"flex":"none"),_s(t.$record,"display",i?"flex":"none"),_s(t.$qualityMenu,"display",i?"flex":"none"),_s(t.$volume,"display",i?"flex":"none"),_s(t.$ptz,"display",i?"flex":"none"),_s(t.$zoom,"display",i?"flex":"none"),_s(t.$scaleMenu,"display",i?"flex":"none"),_s(t.$faceDetect,"display",i?"flex":"none"),_s(t.$objectDetect,"display",i?"flex":"none"),_s(t.$occlusionDetect,"display",i?"flex":"none"),_s(t.$controlHtml,"display",i?"flex":"none"),e.isPlayback()&&_s(t.$speedMenu,"display",i?"flex":"none"),d(),t.extendBtnList.forEach((e=>{e.$iconWrap&&_s(e.$iconWrap,"display",i?"flex":"none"),e.$activeIconWrap&&_s(e.$activeIconWrap,"display","none")})),e._opt.showPerformance?_s(t.$performanceActive,"display",i?"flex":"none"):(_s(t.$performance,"display",i?"flex":"none"),_s(t.$performanceActive,"display","none")),_s(t.$poster,"display","none"),_s(t.$ptzActive,"display","none"),_s(t.$recordStop,"display","none"),_s(t.$zoomStop,"display","none"),_s(t.$faceDetectActive,"display","none"),_s(t.$objectDetectActive,"display","none"),i||(t.$speed&&(t.$speed.innerHTML=function(e){if(null==e||""===e)return"0 KB/s";let t=parseFloat(e);return t=t.toFixed(2),t+"KB/s"}("")),_s(t.$zoomControls,"display","none"),_s(t.$recording,"display","none"),t.$ptzControl&&t.$ptzControl.classList.remove("easyplayer-ptz-controls-show")),p(),i&&f()};e.on(st.playbackPause,(e=>{u(!e)})),e.on(st.kBps,(i=>{const r=function(e){if(null==e||""===e||0===parseFloat(e)||"NaN"===e)return"0 KB/s";const t=["KB/s","MB/s","GB/s","TB/s","PB/s","EB/s","ZB/s","YB/s"];let i=0;const r=parseFloat(e);i=Math.floor(Math.log(r)/Math.log(1024));let s=r/Math.pow(1024,i);return s=s.toFixed(2),s+(t[i]||t[0])}(i);t.kbpsShow=r,e._opt.showBandwidth&&(t.$speed&&(t.$speed.innerHTML=r),p())}));const p=()=>{if(h()&&e._opt.playbackConfig.controlType===Z.normal){let i=t.controlsInnerRect.width-t.controlsLeftRect.width-t.controlsRightRect.width-t.controlsPlaybackBtnsRect.width;ks()&&e.webFullscreen&&(i=t.controlsInnerRect.height-t.controlsLeftRect.height-t.controlsRightRect.height-t.controlsPlaybackBtnsRect.height),t.$playbackTimeInner.style.width=i+"px"}},f=()=>{if(!h()||e._opt.playbackConfig.controlType!==Z.normal)return;const i=t.$playbackCurrentTime.style.left;let r=parseInt(i,10);const s=t.controlsPlaybackTimeInner.width;r=r-s/2>0?parseInt(r-s/2,10):0,t.$playbackTimeInner.scrollLeft=r};if(h()){const i=()=>{if(h()){let i=0;const r=e.playback&&e.playback.playingTimestamp;if(r){const s=new Date(r),a=s.getHours(),n=s.getMinutes(),o=s.getSeconds();e.playback.is60Min?i=60*a+n:e.playback.is30Min?i=2*(60*a+n)+parseInt(o/30,10):e.playback.is10Min?i=6*(60*a+n)+parseInt(o/10,10):e.playback.is5Min?i=12*(60*a+n)+parseInt(o/5,10):e.playback.is1Min&&(i=60*(60*a+n)+parseInt(o,10)),t.$playbackCurrentTime.style.left=i+"px"}}},r=e=>{t.$playbackNarrow.classList.remove("disabled"),t.$playbackExpand.classList.remove("disabled"),e===ii&&t.$playbackNarrow.classList.add("disabled"),e===ai&&t.$playbackExpand.classList.add("disabled")};e.on(st.playbackTime,(r=>{if(e._opt.playbackConfig.controlType===Z.normal)t.$playbackCurrentTimeText&&(t.$playbackCurrentTimeText.innerText=Ps(r,"{h}:{i}:{s}")),i();else if(e._opt.playbackConfig.controlType===Z.simple){const i=(s=r,a=e.playback.totalDuration,bs(s/a,0,1));t.$playbackProgressPlayed.style.width=100*i+"%",t.$playbackProgressIndicator.style.left=`calc(${100*i}% - 7px)`,t.$playbackProgressTime.innerText=`${vd(r)} / ${vd(e.playback.totalDuration)}`}var s,a})),e.on(st.playbackPrecision,((s,a)=>{h()&&e._opt.playbackConfig.controlType===Z.normal&&(t.$playbackTimeScroll.classList.remove(ni.oneHour,ni.halfHour,ni.fiveMin,ni.tenMin),t.$playbackTimeScroll.classList.add(ni[s]),t.rafId&&(window.cancelAnimationFrame(t.rafId),t.rafId=null),t.changePercisitionInterval&&(clearTimeout(t.changePercisitionInterval),t.changePercisitionInterval=null),t.$playbackTimeListOne.innerHTML="",t.$playbackTimeListSecond.innerHTML="",t.changePercisitionInterval=setTimeout((()=>{switch(t.$playbackTimeListOne.innerHTML="",t.$playbackTimeListSecond.innerHTML="",s){case ii:yd(a,t);break;case ri:md(a,t);break;case si:gd(a,t);break;case ai:Ad(a,t)}i(),e._opt.playbackConfig.showPrecisionBtn&&r(s),f()}),16))})),e.on(st.resize,(()=>{p()})),e.on(st.playbackTimeScroll,(()=>{f()})),p()}if(e._opt.operateBtns.quality&&e._opt.qualityConfig.length>0){e.on(st.streamQualityChange,(e=>{i(e)}));const i=e=>{t.$qualityText.innerText=e,t.$qualityMenuItems.forEach((t=>{const i=t.dataset.quality;t.classList.remove("easyplayer-quality-menu-item-active"),i===e&&t.classList.add("easyplayer-quality-menu-item-active")}))};(()=>{const i=e._opt.qualityConfig||[];let r="";i.forEach((e=>{r+=`\n
${e}
\n `})),r&&(t.$qualityMenuList.insertAdjacentHTML("beforeend",r),Object.defineProperty(t,"$qualityMenuItems",{value:e.$container.querySelectorAll(".easyplayer-quality-menu-item")}))})(),e.streamQuality&&i(e.streamQuality)}if(e._opt.operateBtns.scale&&e._opt.scaleConfig.length>0){e.on(st.viewResizeChange,(e=>{i(e)}));const i=i=>{const r=e._opt.scaleConfig[i];t.$scaleText.innerText=r,t.$scaleMenuItems.forEach((e=>{const t=e.dataset.scale;e.classList.remove("easyplayer-scale-menu-item-active"),Ms(t)===Ms(i)&&e.classList.add("easyplayer-scale-menu-item-active")}))};(()=>{const i=e._opt.scaleConfig||[];let r="";i.forEach(((e,t)=>{r+=`\n
${e}
\n `})),r&&(t.$scaleMenuList.insertAdjacentHTML("beforeend",r),Object.defineProperty(t,"$scaleMenuItems",{value:e.$container.querySelectorAll(".easyplayer-scale-menu-item")}))})(),i(e.scaleType)}if(e.isPlayback()&&e._opt.playbackConfig.showRateBtn&&e._opt.playbackConfig.rateConfig.length>0){e.on(st.playbackRateChange,(e=>{i(e)}));const i=i=>{const r=e._opt.playbackConfig.rateConfig.find((e=>Ms(e.value)===Ms(i)));r&&(t.$speedText.innerText=r.label,t.$speedMenuItems.forEach((e=>{const t=e.dataset.speed;e.classList.remove("easyplayer-speed-menu-item-active"),Ms(t)===Ms(i)&&e.classList.add("easyplayer-speed-menu-item-active")})))};(()=>{const i=e._opt.playbackConfig.rateConfig;let r="";i.forEach(((e,t)=>{r+=`\n
${e.label}
\n `})),r&&(t.$speedMenuList.insertAdjacentHTML("beforeend",r),Object.defineProperty(t,"$speedMenuItems",{value:e.$container.querySelectorAll(".easyplayer-speed-menu-item")}))})();const r=e.playback?e.playback.playbackRate:1;i(r)}e.on(st.stats,((i={})=>{if(e._opt.showPerformance){_s(t.$performancePanel,"display","block"),t.$performancePanel.innerHTML="";const r=Ts,s=window.performance&&window.performance.memory?window.performance.memory:null,a=e.getCpuLevel(),n=Ks(a)&&-1!==a?`${Lr[a]}`:"",o=e.video&&e.video.videoInfo||{},l=e.audio&&e.audio.audioInfo||{},d=e._times||{},h=e.getRenderType(),c=e.getCanvasRenderType(),u=e.getDecodeType(),p=e.getDemuxType(),f=e.getStreamType(),y=e.getAudioEngineType();let m=e.getRecordingDuration(),g=e.getRecordingByteLength();const A=e.isAudioPlaybackRateSpeed(),v=e.videoIframeIntervalTs;m=Xs(m),g=Os(g);const b=e.isPlayback()?"录播":"直播";let _=i.isDropping;const w=e._opt.useMSE&&e._opt.mseDecodeAudio,E=e.control?e.control.kbpsShow:"0 KB/s",S=e.getVideoPlaybackQuality(),T=`\n
\n 版本 ${r}\n
\n ${e._opt.isMulti?`\n
\n UUid ${e._opt.debugUuid}\n
\n `:""}\n ${e.isInMulti()?`\n
\n 窗口下标 ${e._opt.multiIndex}\n
\n `:""}\n ${s?`\n
\n 内存大小限制 ${Os(s.jsHeapSizeLimit)}\n
\n
\n 可使用的内存 ${Os(s.totalJSHeapSize)}\n
\n
\n 已使用的内存 ${Os(s.usedJSHeapSize)}\n
\n `:""}\n ${n?`\n
\n CPU压力情况 ${n}\n
\n `:""}\n\n ${s&&s.usedJSHeapSize>s.totalJSHeapSize?'\n
\n 可能内存泄漏 是}\n
\n ':""}\n
\n 播放模式 ${b}\n
\n ${e.isPlayback()?`\n
\n 播放倍率 ${e.playback.rate}倍\n
\n
\n 播放模式 ${e.playback.isUseFpsRender?"固定FPS":"动态FPS"}\n
\n ${e.playback.isUseFpsRender?`\n
\n 固定FPS ${e.video.getStreamFps()}\n
\n `:""}\n `:""}\n
\n 解封装模式 ${U[p]}\n
\n
\n 解码模式 ${u}\n
\n
\n 渲染组件 ${h}\n
\n ${h===K?`\n
\n 渲染引擎 ${c}\n
\n `:""}\n
\n 网络请求组件 ${f}\n
\n
\n 视频格式 ${o.encType||"-"}\n
\n
\n 视频(宽x高) ${o.width||"-"}x${o.height||"-"}\n
\n ${e.isPlayer()?`\n
\n 视频GOP(ms) ${v||"-"}\n
\n `:""}\n
\n 音频格式 ${wt[l.encType]||"-"}\n
\n
\n 音频引擎 ${y||"-"}\n
\n
\n 音频通道 ${l.channels||"-"}\n
\n
\n 音频采样率 ${l.sampleRate||"-"}\n
\n ${e.isPlayer()?`\n
\n 播放器初始化(ms) ${d.playTimestamp}\n
\n
\n 开始请求地址(ms) ${d.streamTimestamp}\n
\n
\n 请求响应(ms) ${d.streamResponseTimestamp}\n
\n
\n 解封装(ms) ${d.demuxTimestamp}\n
\n
\n 解码(ms) ${d.decodeTimestamp}\n
\n
\n 页面开始渲染(ms) ${d.videoTimestamp}\n
\n
\n 初始化到页面渲染(ms) ${d.allTimestamp}\n
\n ${e.recording?`\n
\n 视频录制时间 ${m}\n
\n
\n 视频录制大小 ${g}\n
\n `:""}\n `:""}\n
\n 音频码率(bit) ${i.abps}\n
\n
\n 视频码率(bit) ${i.vbps}\n
\n
\n 视频帧率(fps) ${i.fps}\n
\n
\n 视频峰值帧率(fps) ${i.maxFps}\n
\n
\n 解码帧率(fps) ${i.dfps}\n
\n
\n 音频缓冲帧 ${i.audioBuffer}\n
\n
\n 音频缓冲时长(ms) ${i.audioBufferDelayTs}\n
\n ${e.isPlayer()?`\n
\n 视频待解码帧 ${i.demuxBuffer}\n
\n `:`\n
\n 缓存时长(ms) ${i.playbackCacheDataDuration}\n
\n
\n 视频待渲染帧 ${i.playbackVideoBuffer}\n
\n
\n 视频待解码帧 ${i.demuxBuffer}\n
\n
\n 音频待解码帧 ${i.audioDemuxBuffer}\n
\n `}\n
\n 待解封装数据(byte) ${i.flvBuffer}\n
\n ${e._opt.useMSE?`\n
\n MSE缓冲时长(ms) ${i.mseDelay}\n
\n
\n MSE待解码帧 ${i.msePendingBuffer}\n
\n
\n MSE缓存时长(s) ${i.mseStore}\n
\n
\n MSE解码间隔(ms) ${i.mseDecodeDiffTimes}\n
\n
\n MSE解码时间(ms) ${i.mseTs}\n
\n
\n MSE播放模式 ${i.mseDecodePlaybackRate>1?"加速":"正常"}\n
\n `:""}\n ${e._opt.useWCS?`\n
\n WCS解码间隔(ms) ${i.wcsDecodeDiffTimes}\n
\n `:""}\n ${e.isOldHls()?`
\n HLS缓冲时长(ms) ${i.hlsDelay}\n
\n `:""}\n ${e.isUseHls265()?`
\n HLS缓冲时长(ms) ${i.hlsDelay}\n
\n
\n HLS待解码帧 ${i.hlsDemuxLength}\n
\n
\n HLS待解码视频帧 ${i.hlsDemuxVideoLength}\n
\n
\n HLS待解码音频帧 ${i.hlsDemuxAudioLength}\n
\n `:""}\n ${e.isPlayer()&&S?`\n
\n Video已渲染帧 ${S.renderedVideoFrames}\n
\n
\n Video已丢弃帧 ${S.droppedVideoFrames}\n
\n `:""}\n ${e.isPlayer()?`\n
\n 网络延迟(ms) ${i.netBuf}\n
\n
\n 缓冲时长(ms) ${i.buf}\n
\n
\n 最新缓冲时长(ms) ${i.pushLatestDelay}\n
\n `:""}\n ${e._opt.useMSE||e.isWebrtcH264()||e.isAliyunRtc()?`\n
\n video显示时间(s) ${i.videoCurrentTime}\n
\n
\n video间隔时间(s) ${i.videoCurrentTimeDiff}\n
\n
\n videoBuffer缓存时间(ms) ${i.mseVideoBufferDelayTime}\n
\n `:""}\n
\n 视频显示时间(ms) ${i.currentPts||i.ts}\n
\n ${e._opt.hasAudio&&e.isAudioNotMute()&&ka(w)?`\n
\n 音频显示时间(ms) ${i.audioTs}\n
\n ${e._opt.hasVideo?`\n
\n 音视频同步时间戳(ms) ${i.audioSyncVideo}\n
\n `:""}\n
\n 音频播放模式 ${A?"加速":"正常"}\n
\n `:""}\n
\n 视频解码时间(ms) ${i.dts}\n
\n ${e.isPlayer()?`\n
\n 解码前-解码后延迟(ms) ${i.delayTs}\n
\n
\n 总延迟(网络+解码)(ms) ${i.totalDelayTs}\n
\n `:""}\n ${e.isPlayer()&&i.isStreamTsMoreThanLocal?'
\n 是否超过一倍率推流 是\n
\n ':""}\n ${e.isPlayer()?`\n
\n 是否播放流畅 ${i.videoSmooth}\n
\n `:""}\n ${e.isPlayer()?`\n
\n 是否在丢帧 ${_}\n
\n `:""}\n
\n 网速 ${E}\n
\n
\n 播放时长(s) ${Xs(i.pTs)}\n
\n
\n `;t.$performancePanel.insertAdjacentHTML("beforeend",T)}else t.$performancePanel.innerHTML="",_s(t.$performancePanel,"display","none")})),e.on(st.togglePerformancePanel,(e=>{_s(t.$performance,"display",e?"none":"flex"),_s(t.$performanceActive,"display",e?"flex":"none")})),e.on(st.faceDetectActive,(e=>{_s(t.$faceDetect,"display",e?"none":"flex"),_s(t.$faceDetectActive,"display",e?"flex":"none")})),e.on(st.objectDetectActive,(e=>{_s(t.$objectDetect,"display",e?"none":"flex"),_s(t.$objectDetectActive,"display",e?"flex":"none")})),e.on(st.occlusionDetectActive,(e=>{_s(t.$occlusionDetect,"display",e?"none":"flex"),_s(t.$occlusionDetectActive,"display",e?"flex":"none")}))};function kd(e,t){void 0===t&&(t={});var i=t.insertAt;if(e&&"undefined"!=typeof document){var r=document.head||document.getElementsByTagName("head")[0],s=document.createElement("style");s.type="text/css","top"===i&&r.firstChild?r.insertBefore(s,r.firstChild):r.appendChild(s),s.styleSheet?s.styleSheet.cssText=e:s.appendChild(document.createTextNode(e))}}kd('@keyframes rotation{0%{-webkit-transform:rotate(0deg)}to{-webkit-transform:rotate(1turn)}}@keyframes magentaPulse{0%{background-color:#630030;-webkit-box-shadow:0 0 9px #333}50%{background-color:#a9014b;-webkit-box-shadow:0 0 18px #a9014b}to{background-color:#630030;-webkit-box-shadow:0 0 9px #333}}.easyplayer-container video::-webkit-media-controls{display:none!important}.easyplayer-container .easyplayer-icon{cursor:pointer;width:16px;height:16px;display:inline-block}.easyplayer-container .easyplayer-ptz-controls{position:absolute;width:156px;height:156px;visibility:hidden;opacity:0;border-radius:78px;background:url("data:image/png;base64,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") no-repeat 50%;background-size:100% 100%;transition:visibility .3s,opacity .3s;right:43px;bottom:135px}.easyplayer-container .easyplayer-ptz-controls.easyplayer-ptz-controls-show{visibility:visible;opacity:1}.easyplayer-container .easyplayer-ptz-bg-active{visibility:hidden;opacity:0;width:156px;height:156px;background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAATgAAAE4CAMAAAD4oR9YAAAAM1BMVEX///////////////////////////9HcEz///////////////////////////////////85yRS0AAAAEXRSTlO5DCgVgZBxAK2fQDRkBR5XTPLKM/gAABnnSURBVHja7F0Jkqs6DGQPO9z/tD8Jq6WWbCCvIjKfzAGmulrW3ooedr6ui+M4TdP++SXPr1l/SdL3aRrHhv7ZyA5qb9xe0L3Am+DrkzeCL/BeX908MezTuPsfOArdgl3KsZuhq99fk/Tx3waum+ByAHua5QbYilkzY1aP728YhrH5InrfBa57OLAtVjpRbYaumex04dq4APeC7vnVSfo/45bXLe33jGscMx3f0A1vyg3t69e2dRL/NeA6wrgdcCvjyPM2U25mXDt9xVD3f/qN0yi3Mm6P20S54vlXtGPS/R3GPSbYOsC4ZAvmJtiaGiL3Zlzx/Ht+Y/KXTJXbqmaqe9za1VYn3N7YpX/OVGev2qduOLIiB7xqOzGuWCiXFVmWtU3368A5lkqeOJI21I5XXaORxVRnxmUTdNnY/4U3riNvHMJts9XRtdXVUttipdzrK/4x7UyY6sK4Gbo+nU21T1zKcd9AGJetlMvyLKvj3zXVfeqQElMljINx3MK4xVQ3xj2Ry7N/6CiMOIfYyVUXWxUyBx7HuZRbcHt9bf/Lb9zsHlzKzabauJaK47iVcC7jJujS33/joKkmxDnM4QiJ4xDjZuT+DXQW3jgxV012qcPuiePhCGfchlv1/P0D6Czmqmuq2gPGkbIS8Q4ZsNU3dGP3Y2+cW1RyKpkrbAnwqhi3iXHFHrU3bFVV5c3vBsCsOALjkXErAW85F3rjFvBm5Kos+TngCOXYG7fA1ojFER7GPUHbmer0tfGPANeROM6pjvDMQSkrsWQ1d564Fbr61964TvSqDa6O0ELmAtvGuc2rrpQrn/aa/qCpYq+6mSpOVhnjWBy38u2JXFl9yL8acg6CV3Ur5yxVZfW4AsRxG+XKssz6n3njVMYR4Eg8sj1yi3tgtroxrpyhG38gc+h8PYddPQ551dVQW5jju2/cG7kXdB946Uy9cbDnQOpxuCCHcq5dHDcht8D2/K67VxPNGtLJd7qDTcgb1zLGbXEcY9z0Fd39GReTzIH1B/2lcxrGTYxj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") no-repeat 50%;background-size:100% 100%}.easyplayer-container .easyplayer-ptz-bg-active.easyplayer-ptz-bg-active-up{transform:rotate(-90deg)}.easyplayer-container .easyplayer-ptz-bg-active.easyplayer-ptz-bg-active-left{transform:rotate(180deg)}.easyplayer-container .easyplayer-ptz-bg-active.easyplayer-ptz-bg-active-down{transform:rotate(90deg)}.easyplayer-container .easyplayer-ptz-bg-active.easyplayer-ptz-bg-active-left-up{transform:rotate(-135deg)}.easyplayer-container .easyplayer-ptz-bg-active.easyplayer-ptz-bg-active-right-up{transform:rotate(-45deg)}.easyplayer-container .easyplayer-ptz-bg-active.easyplayer-ptz-bg-active-left-down{transform:rotate(135deg)}.easyplayer-container .easyplayer-ptz-bg-active.easyplayer-ptz-bg-active-right-down{transform:rotate(45deg)}.easyplayer-container .easyplayer-ptz-bg-active.easyplayer-ptz-bg-active-show{visibility:visible;opacity:1}.easyplayer-container .easyplayer-ptz-control{position:absolute;left:53px;top:53px;width:50px;height:50px;background:#fff;border-radius:50%;transition:left .3s,top .3s}.easyplayer-container .easyplayer-ptz-control.easyplayer-ptz-control-left{left:33px}.easyplayer-container .easyplayer-ptz-control.easyplayer-ptz-control-up{top:33px}.easyplayer-container .easyplayer-ptz-control.easyplayer-ptz-control-right{left:73px}.easyplayer-container .easyplayer-ptz-control.easyplayer-ptz-control-down{top:73px}.easyplayer-container .easyplayer-ptz-control.easyplayer-ptz-control-left-up{top:39px;left:39px}.easyplayer-container .easyplayer-ptz-control.easyplayer-ptz-control-left-down{left:39px;top:67px}.easyplayer-container .easyplayer-ptz-control.easyplayer-ptz-control-right-up{top:39px;left:67px}.easyplayer-container .easyplayer-ptz-control.easyplayer-ptz-control-right-down{top:67px;left:67px}.easyplayer-container .easyplayer-ptz-icon{position:relative}.easyplayer-container .easyplayer-ptz-icon:hover .icon-title-tips{visibility:visible;opacity:1}.easyplayer-container .easyplayer-ptz-btns{display:block;position:absolute;left:0;top:156px;width:156px;box-sizing:border-box;padding:0 30px}.easyplayer-container .easyplayer-ptz-btns .easyplayer-ptz-btn{display:flex;justify-content:space-between}.easyplayer-container .easyplayer-ptz-expand .easyplayer-ptz-expand-icon{display:inline-block;width:28px;height:28px;cursor:pointer;background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAMAAABF0y+mAAAANlBMVEVfX19fX19fX19fX19fX19fX19fX19HcExfX19fX19fX1/////Pz8+oqKjCwsKhoaHn5+eWlpaOqTaDAAAAC3RSTlP/3CaKxwJiAELtp4ri/s4AAACuSURBVCjPfZPREoUgCERXBdPRyv7/Z6/Z1aQp9oWJMyYLiKUrOIpAJBdGCldgbzBkPM/QEoTI3jBEPBRDhwEvChe08Q1Ge0ImvIq4Qj8ljrLdH77CyQPWlCdHC0Q1e9rmmuC+oQN9Q4LwcQg40L6eyqm0uEpXSUqe3fKpkkqL+Y/o+07SrahNEO0T0LBsvOitf4xsLqiNTB32wtqaVKosGLO2mhUrS93+PZ4D99wPqzMJVcbEyA8AAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.easyplayer-container .easyplayer-ptz-expand:hover .easyplayer-ptz-expand-icon{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAMAAABF0y+mAAAAM1BMVEVHcEyZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZn////i4uLZ2dnIyMjExMS8vLy+iXNeAAAACnRSTlMAYomLxwEm9+NCLo6DKwAAALNJREFUKM99k9kWgyAMRIMmEMLm/39tKaVKFJkXl3sYJ4sAXeQ3ZOcYd0+gRYblFBuFLYoS2ot5lpvYn8zJQ65TO2GVNmdCmQq/qczw4gjpejD14BgmhziEIvCjVRlPioftHW6A7xBB1a8CCUMvsuSqEkPM7eZX6h8GrQ67bYpNIbRL6rb4/k2EfVXKsgmqfQrW9qnGq96a28jGQG1ky2HXpVysyYyeDIhWq7le6ua9P36HD6+2GRi8iBZBAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.easyplayer-container .easyplayer-ptz-narrow .easyplayer-ptz-narrow-icon{display:inline-block;width:28px;height:28px;background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAMAAABF0y+mAAAAM1BMVEVHcExfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX1/9/f2/v7/y8vLUObqxAAAADXRSTlMA3IrE6SZi9wI+y0gNXAn3CgAAAI5JREFUKM+Fk1kOwyAMBQ04bJHT3P+0JVUMNMWv8zvSk1cipfjAKXHwhR7k6KTjYp7dVuWLug1XWB5wz96T/JD2O3Phmv0k5ypL6lVVFIPYpLOka5WKSSFvS0/BloHYlkza5HkMzrvVLo8ZlRr7mtFYWBBsBQ4BjC//GTxcGVw2PpOVHQ6fJj7qS4936OoN2K4e5yE6N1UAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%;cursor:pointer}.easyplayer-container .easyplayer-ptz-narrow:hover .easyplayer-ptz-narrow-icon{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcBAMAAACAI8KnAAAAJ1BMVEVHcEyZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZn+/v7X19ckk9ihAAAACnRSTlMA9+NCAsuKJsRiPv/2GwAAAJlJREFUGNNjYAAC5gxFoTYDBijw1FoFBIumQHjsUavAYGkBmGu0CgqUwRqlYNyFIO2Fq+BAnIGBJQrBXerAwLkKCUxgYELmKjBYIXMXM2Qhc5cxdCFzVzBoIXMXMYAcsRsMdgEdgs4FKT4DBqdAitGMQrMIzRkojlRB9wKaB9G8z+CMGjgshjCuMCjoWNxRAxYt2KGRYgJiAQAnZcjElaB/xwAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.easyplayer-container .easyplayer-ptz-aperture-far .easyplayer-ptz-aperture-icon{display:inline-block;width:28px;height:28px;background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAMAAABF0y+mAAAASFBMVEVHcExfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX1////9fX1+kpKRzc3ODg4PFxcW1tbXW1tbk5OT29vaVlZVmZmZ8vCMFAAAADHRSTlMAxGJ5Mssm9+NCiYtiH91SAAABAklEQVQoz41T7Q6DIAyEJQooUL55/zddhVazzZjdHyqXXo8DhWCYTWqltNyN+MZLuxP69UGti/vAsl6c0e4L+tQ2yv1AEbvecMhO5cXdYhk+6aO3WGrNAMwentlMz/ZAKIlNoRsqY2wtFWu9t8wasc0iYVN0LkQfrG1zbxNyrIBcntOQrH1Ukkb60QcxYF1xMA2dh8zWj6ZDsLCsIrL4Ds5Hm9FMbCEROWUB0COaLXEIZJKV7CKybGO7UuxjxY2C/TkMbxboKBQCxgMN6MCJQ6Ch/QjOZg/B13LGx8FDTe3IFvl+Bc9XBi3UWoex68qeL/vxmdyxyvz3NJ8f9dDef36HN7koIK2LjxB0AAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%;cursor:pointer}.easyplayer-container .easyplayer-ptz-aperture-far:hover .easyplayer-ptz-aperture-icon{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAMAAABF0y+mAAAAOVBMVEVHcEyZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZn+/v6cnJzr6+u/v7+xsbGlpaXNzc3b29vqh7uRAAAAC3RSTlMAyRjKA59J/3PzPhe1wxwAAAD2SURBVCjPjZPrssMgCIR1mkYtisD7P+zBCyZpM5mzv5hs0M8VnZvaok9BlXzc3FXbO5z0vtifFC5Kn8OL4UfxwVvuHm61d5Z0b6ZGZZwZpQAUosWsjVZntVS1sH3ZFo1IRVYfGXgx+VGwNkkIVbhq9/jm3cAhaNv1Uk3IA8mNn7D3kbQeWK3TLH2jCthrDFcTMwUWaKiClc9mJtJWhS3SF5BpJqMQW1b3xwnkDahMoHYomkeJRgSENA/MFsKML7fgoCBVbGvM+Cx4JcKWbWHKK/h1ZYS1Jy/nK3u8bB3KhzG5deMxtfv3aO7/Heq+9ms8h9fxHP4AHzAWU9zlWNgAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.easyplayer-container .easyplayer-ptz-aperture-near .easyplayer-ptz-aperture-icon{display:inline-block;width:28px;height:28px;background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAMAAABF0y+mAAAAQlBMVEVHcExfX19fX19fX19fX19fX19fX19fX19fX19fX19fX1////9fX1+FhYWbm5vz8/Nzc3OwsLDi4uLDw8PW1tZmZmYgm6a+AAAAC3RSTlMAYmOLx4kn9+NCIVJiPGAAAAD+SURBVCjPjVPttoMgDMOJAqOU8uH7v+qKFN2c597lF5LTJg1VqQG3aGuM1bNTV0wWDtjpg3pq+IB+npyzcIE9ejsDXzDCrjccs+tOariF3n2OLyw5xko0vh9MDjNb9Q0hp2GK3cixlIApe4/JD9appR8SFxWAUFLg6n63iB1irnY1Jv0mlrok7nUdcZRa1YeshxBA9iijChlxI6iZEaBgSEL2tkRcymPGGJpqlbZ6uDg0WR/F0DwuMpxDkYwiIXA8hO2uMJdGCCK6teB8RQoY8xGfevQjxYQt25qoRwDT25MRBjZ7GtP/P/afa3LHmrflXa+ruf661Hvv+et3eAF6Fh3v+sSUGgAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%;cursor:pointer}.easyplayer-container .easyplayer-ptz-aperture-near:hover .easyplayer-ptz-aperture-icon{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAMAAABF0y+mAAAAM1BMVEWZmZmZmZmZmZmZmZmZmZmZmZmZmZlHcEyZmZmZmZn///+qqqq9vb3z8/PMzMzo6Oja2tpXGg+mAAAACnRSTlP/JomLxwJiAONCr+rW2wAAAOtJREFUKM99U9sWhCAInEpLBS///7WLEWy7p9O8qEzCMBIOQ15DAlLYsoegS9yFMKQ93skl4Adh+ZI54Q8pG5nxgKzkgkcsk4zhmQxRyN1OPHqtncjOu5AuppcJ6s1EHTA1YzC3Wgq3YmzGqpsmlwZAo7F8oLEVKoeE6+TbSxK0JJ/3FLOwFnUxzXuoltYDDMLoAlmYXLAWIrkqbdZKs+q4KBfkNV1uwGaBim9TdLWS3R7iGRvCNTPB7JvGlc5EXK8cKbrxooint73RzXh7Msl6Oj/uT/b62O9j8sj6gMXX0Xwf6jP3Zr9DtNAHTYMMXrXSK0YAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.easyplayer-container .easyplayer-ptz-focus-far .easyplayer-ptz-focus-icon{display:inline-block;width:28px;height:28px;background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAMAAABF0y+mAAAAPFBMVEVHcExfX19fX19fX19fX19fX19fX19fX19fX19fX19fX1////92dnbs7OyFhYWjo6Pe3t7Ly8uxsbG8vLyG+Q0EAAAAC3RSTlMAiWJjx9wm/0Lti7mfpe0AAADaSURBVCjPfVMJDoQgDERFC/bg8P9/XUSO6CqTqA0TptNDpSrMpC2A1btRT8wrNKzzjdo03KC3zhkLD9imbeAFhd3sG2kvZQ2v0NknfGBJZKkhBM9MxOxDKBV1N4iHi0TRHYjN01Qi7/kK2PtyNDU7DAEJgDAAN0u1jsQEFEkcVVmrqjeXrkWRmC67eqbgG7bJyvkQSQkvUvec7szpek6t9ubWJSK/uJVSm+APzHKCh++DWWuH4plQKNYOpfappcjy2VvJn9744cjGwx6uyXjBxqs5Xuqsvf/9Dj8rLhRg+bQ5VAAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%;cursor:pointer}.easyplayer-container .easyplayer-ptz-focus-far:hover .easyplayer-ptz-focus-icon{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAMAAABF0y+mAAAAOVBMVEWZmZmZmZmZmZmZmZmZmZmZmZmZmZlHcEyZmZmZmZmZmZn///+xsbGoqKjt7e309PTExMTQ0NDe3t774OlGAAAAC3RSTlP/itxixwImAELtp8B2gZgAAADmSURBVCjPjZMLjsUgCEVpq60G8Lf/xQ62gvNeOmZuUiWeKHC1cKnC5iJAdFuwJXgmf+xg2g//G54OPuTOCUOEL8WgMMCLwgPP+Abj2aF38CrnBR7whw6Bo4fWUk7MMrQ2OrpAq0GspTLLgKg1wTailNITZA0EaTkZGjIAY5NwlATah5CGRMJYj50tFtlWiapsLvAPRdtL/WOmET7QzZyl5ywzp7NWsjBJ1odsragJqeJ9HGFNZoLaJw71hMTm0O7NeDE1Z6YsU5rGL69sedmXXz0ToW8PzA/oV09T8OJR32fb7+B17Qe3WwtC9PVbHAAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.easyplayer-container .easyplayer-ptz-focus-near .easyplayer-ptz-focus-icon{display:inline-block;width:28px;height:28px;background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAMAAABF0y+mAAAARVBMVEVHcExfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX1/////t7e2dnZ3W1tbGxsa3t7eDg4Oqqqri4uKTk5NImu/5AAAADXRSTlMAYieJ3MvE/0Lti4oh87zNagAAAOtJREFUKM+NU1sOwyAMY30FtoWS8Lj/UZe2gWpVh2aJH1wcO0mNqbDj4gDc8rLmiscEDdPji3rP8IX5fXLWwQWuaVu4gbKDuyPdsJMz3GLefcIPbJ6PDCEAFDlUAJiORM3NigQFAXAFlqOeRhWJyFFIHxNGvRrN0mp470U++3axGM2RAmXcXqKnkDSN0a9WIk5Sa01MpDXBQAdVtrA8lBhFnnKpsmoo5VBrhszV0KuJ5N2tP92O50iQjpzcctravoihdoi0Q1NrfN56m0VWzFBoje+OrD/s7pr0F0yUr6s5/LvUu/bz+B2ep+IHdMIV2SUZfCsAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%;cursor:pointer}.easyplayer-container .easyplayer-ptz-focus-near:hover .easyplayer-ptz-focus-icon{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAMAAABF0y+mAAAAQlBMVEVHcEyZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZn////c3Nz09PTp6enR0dHFxcW7u7uwsLAUKT0cAAAADXRSTlMA3IrE6WIm9wI+y0gNQZpqdwAAAOdJREFUKM99U9GShCAMQ8BF3Cmlpfz/r15dAe88l8zwQiQkoRrTEa3zIXhno7lhWxcYWNbtN/fa4Q/218VFDzf4of0O8A/h3TQfOGU/ytsOj9gPVyt8warkmYEQQAgABYDxTKROz88koS6AVIB1fRCNbSI1cVUy15Jq27LGjTtyzipPeWw40/IXQkrHyZSRmqw3LaQgctFNKYzYyGACfEXossLMojFEj7J0WfdwJ3dD9uY2X25tL0Hj45mTR87Y66u9IQFsDS1bL57o7JbUDNIofvpk08eej8kTe3Hz0ZwP9UFfv8OgfgBUByCEUZhYtAAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.easyplayer-container .easyplayer-ptz-arrow{cursor:pointer;position:absolute;width:0;height:0}.easyplayer-container .easyplayer-ptz-arrow-up{left:71px;top:15px;border:7px solid transparent;border-bottom:10px solid #fff}.easyplayer-container .easyplayer-ptz-arrow-right{top:71px;right:15px;border:7px solid transparent;border-left:10px solid #fff}.easyplayer-container .easyplayer-ptz-arrow-left{left:15px;top:71px;border:7px solid transparent;border-right:10px solid #fff}.easyplayer-container .easyplayer-ptz-arrow-down{left:71px;bottom:15px;border:7px solid transparent;border-top:10px solid #fff}.easyplayer-container .easyplayer-ptz-arrow-left-up{transform:rotate(45deg);left:32px;top:33px;border:7px solid transparent;border-right:10px solid #fff}.easyplayer-container .easyplayer-ptz-arrow-right-up{transform:rotate(-45deg);right:32px;top:33px;border:7px solid transparent;border-left:10px solid #fff}.easyplayer-container .easyplayer-ptz-arrow-left-down{transform:rotate(45deg);left:32px;bottom:33px;border:7px solid transparent;border-top:10px solid #fff}.easyplayer-container .easyplayer-ptz-arrow-right-down{transform:rotate(-45deg);right:32px;bottom:33px;border:7px solid transparent;border-top:10px solid #fff}.easyplayer-container .easyplayer-loading-bg{display:none}.easyplayer-container .easyplayer-loading-bg,.easyplayer-container .easyplayer-poster{position:absolute;z-index:10;left:0;top:0;right:0;bottom:0;height:100%;width:100%;background-position:50%;background-repeat:no-repeat;background-size:contain;pointer-events:none}.easyplayer-container .easyplayer-play-big{position:absolute;display:none;height:100%;width:100%;z-index:1;background:rgba(0,0,0,.4)}.easyplayer-container .easyplayer-play-big:after{cursor:pointer;content:"";position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);display:block;width:48px;height:48px;background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAIVBMVEVHcEzMzMzMzMzNzc3MzMzPz8/Nzc3MzMzMzMzMzMzMzMzLVn6fAAAACnRSTlMA+duduRUwSGSD8toSsAAAAI9JREFUOMvV07ENgzAQhWG3lLSp6MwCViYIRSpG8AiM4FWMaPymDBKESMF/cQ0S136F353vnLuo3gp1kOYEoCXW4LFKIZAnqAXYICeASoAdzgG+cApwgF4EfwF+oDkCqIwA6gnyAKA8AaizQhsBAjzuqUHofInGIQbjRxXjMrTJuHDestR4Bng4eGrN0929PqNfzC6h06weAAAAAElFTkSuQmCC");background-repeat:no-repeat;background-position:50%}.easyplayer-container .easyplayer-play-big:hover:after{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAJFBMVEVHcEz///////////////////////////////////////////8Uel1nAAAAC3RSTlMA+rbVFUecgC7rYhEEz+4AAACbSURBVDjL1dMhDsJAEIXhdeiGpKYWQVKDWc8ReojFc4ReAlPFFQazad7lIGkb0jK/WEPSsZ+YN5mZEP5UrZIP0vgE0Kv3oPlIJlAk8AJM4ASYwAkww2+ABfQg0ImgugPYsfNBVl99kA0AsjOArAPQpRTGHiBB8whxM0y+3skXNltsvMYriIWrpWPA80mFJ5qL3gAfB1/tcAt7rzdiV+HEgs1oBgAAAABJRU5ErkJggg==")}.easyplayer-container .easyplayer-recording{display:none;position:absolute;box-sizing:border-box;left:50%;top:0;padding:0 3px;transform:translateX(-50%);justify-content:space-around;align-items:center;width:101px;height:20px;background:#000;opacity:1;border-radius:0 0 8px 8px;z-index:1}.easyplayer-container .easyplayer-recording .easyplayer-recording-red-point{width:8px;height:8px;background:#ff1f1f;border-radius:50%;animation:magentaPulse 1s linear infinite}.easyplayer-container .easyplayer-recording .easyplayer-recording-time{font-size:14px;font-weight:500;color:#ddd}.easyplayer-container .easyplayer-recording .easyplayer-recording-stop{height:100%}.easyplayer-container .easyplayer-recording .easyplayer-icon-recordStop{width:16px;height:16px;cursor:pointer}.easyplayer-container .easyplayer-zoom-controls{display:none;position:absolute;box-sizing:border-box;left:50%;top:0;padding:0 3px;transform:translateX(-50%);justify-content:space-around;align-items:center;width:156px;height:30px;background:#000;opacity:1;border-radius:0 0 8px 8px;z-index:1}.easyplayer-container .easyplayer-zoom-controls .easyplayer-icon{vertical-align:top}.easyplayer-container .easyplayer-zoom-controls .easyplayer-zoom-narrow{width:16px;height:16px;cursor:pointer}.easyplayer-container .easyplayer-zoom-controls .easyplayer-zoom-tips{font-size:14px;font-weight:500;color:#ddd}.easyplayer-container .easyplayer-zoom-controls .easyplayer-zoom-expand,.easyplayer-container .easyplayer-zoom-controls .easyplayer-zoom-stop2{width:16px;height:16px;cursor:pointer}.easyplayer-container .easyplayer-loading{display:none;flex-direction:column;justify-content:center;align-items:center;position:absolute;z-index:20;left:0;top:0;right:0;bottom:0;width:100%;height:100%;pointer-events:none}.easyplayer-container .easyplayer-loading-text{line-height:20px;font-size:13px;color:#fff;margin-top:10px}.easyplayer-container .easyplayer-controls{background-image:linear-gradient(180deg,transparent,rgba(0,0,0,.37),rgba(0,0,0,.75),rgba(0,0,0,.75));box-sizing:border-box;display:flex;flex-direction:column;justify-content:flex-end;position:absolute;z-index:40;left:0;right:0;bottom:0;height:48px;width:100%;padding-left:13px;padding-right:13px;font-size:14px;color:#fff;opacity:0;visibility:hidden;transition:all .2s ease-in-out;-webkit-user-select:none;-moz-user-select:none;user-select:none;transition:width .5s ease-in}.easyplayer-container .easyplayer-controls .easyplayer-controls-item{position:relative;display:flex;justify-content:center;padding:0 8px}.easyplayer-container .easyplayer-controls .easyplayer-controls-item:hover .icon-title-tips{visibility:visible;opacity:1}.easyplayer-container .easyplayer-controls .easyplayer-controls-item.easyplayer-face,.easyplayer-container .easyplayer-controls .easyplayer-controls-item.easyplayer-face-active,.easyplayer-container .easyplayer-controls .easyplayer-controls-item.easyplayer-fullscreen,.easyplayer-container .easyplayer-controls .easyplayer-controls-item.easyplayer-fullscreen-exit,.easyplayer-container .easyplayer-controls .easyplayer-controls-item.easyplayer-icon-audio,.easyplayer-container .easyplayer-controls .easyplayer-controls-item.easyplayer-microphone-close,.easyplayer-container .easyplayer-controls .easyplayer-controls-item.easyplayer-object,.easyplayer-container .easyplayer-controls .easyplayer-controls-item.easyplayer-object-active,.easyplayer-container .easyplayer-controls .easyplayer-controls-item.easyplayer-occlusion,.easyplayer-container .easyplayer-controls .easyplayer-controls-item.easyplayer-occlusion-active,.easyplayer-container .easyplayer-controls .easyplayer-controls-item.easyplayer-pause,.easyplayer-container .easyplayer-controls .easyplayer-controls-item.easyplayer-performance,.easyplayer-container .easyplayer-controls .easyplayer-controls-item.easyplayer-performance-active,.easyplayer-container .easyplayer-controls .easyplayer-controls-item.easyplayer-play,.easyplayer-container .easyplayer-controls .easyplayer-controls-item.easyplayer-ptz,.easyplayer-container .easyplayer-controls .easyplayer-controls-item.easyplayer-ptz-active,.easyplayer-container .easyplayer-controls .easyplayer-controls-item.easyplayer-quality-menu,.easyplayer-container .easyplayer-controls .easyplayer-controls-item.easyplayer-record,.easyplayer-container .easyplayer-controls .easyplayer-controls-item.easyplayer-record-stop,.easyplayer-container .easyplayer-controls .easyplayer-controls-item.easyplayer-scale-menu,.easyplayer-container .easyplayer-controls .easyplayer-controls-item.easyplayer-screenshot,.easyplayer-container .easyplayer-controls .easyplayer-controls-item.easyplayer-speed-menu,.easyplayer-container .easyplayer-controls .easyplayer-controls-item.easyplayer-template-menu,.easyplayer-container .easyplayer-controls .easyplayer-controls-item.easyplayer-volume,.easyplayer-container .easyplayer-controls .easyplayer-controls-item.easyplayer-zoom,.easyplayer-container .easyplayer-controls .easyplayer-controls-item.easyplayer-zoom-stop{display:none}.easyplayer-container .easyplayer-controls .easyplayer-controls-item.easyplayer-speed{padding:0}.easyplayer-container .easyplayer-controls .easyplayer-controls-item-html{position:relative;display:none;justify-content:center}.easyplayer-container .easyplayer-controls .easyplayer-playback-control-time{position:relative;justify-content:center;padding:0 8px}.easyplayer-container .easyplayer-controls .easyplayer-icon-audio,.easyplayer-container .easyplayer-controls .easyplayer-icon-mute{z-index:1}.easyplayer-container .easyplayer-controls .easyplayer-controls-bottom{display:flex;justify-content:space-between;height:100%}.easyplayer-container .easyplayer-controls .easyplayer-controls-bottom .easyplayer-controls-left,.easyplayer-container .easyplayer-controls .easyplayer-controls-bottom .easyplayer-controls-right{display:flex;align-items:center}.easyplayer-container.easyplayer-controls-show .easyplayer-controls{opacity:1;visibility:visible}.easyplayer-container.easyplayer-controls-show-auto-hide .easyplayer-controls{opacity:.8;visibility:visible;display:none}.easyplayer-container.easyplayer-hide-cursor *{cursor:none!important}.easyplayer-container .easyplayer-icon-loading{width:50px;height:50px;background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8BAMAAADI0sRBAAAAIVBMVEVHcEx4eHh4eHh4eHh4eHh3d3d4eHh4eHh4eHh4eHh4eHiqaCaRAAAACnRSTlMAikwX3CxpwZ7zIGi5xgAAAZ9JREFUOMt9lb9Lw0AUx2Njqm4iGEqmEnBxslKUdhJctFMVcW5wKZ0CLpJJQRw6iVqQbg3FtPdX+l5+XHJ3796bQj557773fe8ujtOI+6jz5p84dHjTkYD4+RhT9CIRZWRPJr1bChnbY532GhT4oUpbI6HEuqvgIH9544dh9J4/rpr0Ms8oV3zMNT7X1MXSmaznzfHjM4n72moe5n8ryYrW9rKRvgf0S93JA7yKa9lbzUg3keJb8OVCtwkrFmoO4MnsAuj5rGqnZg+GZXUXkl9NjEui9n3YA9XgpMgakLXz6ujMTIgrCkPVv0Jil8KgKQN/wRN69hLcb1vrbR2nQkxwiZTGQ5Teb7TO8PUaS8Q03sE+zkjP8qbjzgJtEhRbV4gnlkOFeM7hDYNdxPbiYFvKSHN6L2NmY5WzMYPtplZdTxncRvn2sI+DHIoug22jWMaA12Y7BrXzrG8BX32XPMDKWVzw1bdMOnH1KNqNi8toqn7JGumZnStXLi0e4tcP6R3I635Nc/mzsMxl9aux9b78UVmn2pve8u6eR50j9c0/ywzyVl5+z84AAAAASUVORK5CYII=");background-position:50%;background-repeat:no-repeat;background-size:100% 100%;animation-name:rotation;animation-duration:1s;animation-timing-function:linear;animation-iteration-count:infinite}.easyplayer-container .easyplayer-icon-screenshot{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAJFBMVEVHcEzMzMzMzMzMzMzMzMzNzc3MzMzMzMzNzc3Nzc3MzMzMzMwv5ahDAAAAC3RSTlMAW+8S2UGVwyyZnOTRhEMAAAEfSURBVDjLzZKxbsJADIYdBQpsSCyVMlXAdEuQYGKpWFk6dWHJgsQ7sMDSpUv3PgITAQT0f7ly57ucQ45KXRAZot+/89k+X4ju9KzL4XOhlm3pR0enYrWViSRPXQIQSASkRSkIJEFRimYCuQAHSW89IOv6SH5TCsuAj68Ab1wDzqkAzqoC7AUAPtgsABgkBBgkCJiNHehGok//KRVsHqd+3Dj1/vukt3AH/Jj05s5/AmyZhFVWXDls44iVvfQWkCvgxU6g9ZdJfCLvjJbYaT3GvjOY4mQSG3SJGjhr/Y1Xohp+TGKqqzexZ/1GVGdNCitt6R8zVvb9d+JmKdl8o5sPWbtxT6zFuJcDQtk92MNmYiXHquYlZlVt1j4P6cd7fgHFW7Nhqu29TwAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.easyplayer-container .easyplayer-icon-screenshot:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAALVBMVEVHcEz////////////////////////////////////////////////////////NXt0CAAAADnRSTlMAWe+X2TINXUYZvctoYyuS2NgAAAEVSURBVDjLzZKhDsJADIZLCAsEg8WgEGCWGSwCgZxB4MgEAonB8wQEXoBH4BEWXgPJgEBG0mdgR3u77raRYAgnlq+9+/t3TQF+dKbZcJXSYSnzlViT457lRScKmBqILSFA3GoO8S4E+Ex5JiSJ4CbVdyOQdZNomX9D4dl+ko3NC8vFFmhPy8FIsi0ZlwLBW/LY5BxYYreUSgoFAEmhB5Rc9OCbUoXmTmDadQKTn4y6A/XTaoSKdb6KyGU6RJ7eHgpb3ABinAoil303xB6vQnRahNhXvMdre+fzOgxVrokX4jHAnBh8PALU8Eq8BqgTg/vePF8tpuPy9/NFaalSc273RizarYqfkswjifNMQ/TyTGMv4v87L+ks5gqDbc9OAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.easyplayer-container .easyplayer-icon-play{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAIVBMVEVHcEzMzMzMzMzNzc3MzMzPz8/Nzc3MzMzMzMzMzMzMzMzLVn6fAAAACnRSTlMA+duduRUwSGSD8toSsAAAAI9JREFUOMvV07ENgzAQhWG3lLSp6MwCViYIRSpG8AiM4FWMaPymDBKESMF/cQ0S136F353vnLuo3gp1kOYEoCXW4LFKIZAnqAXYICeASoAdzgG+cApwgF4EfwF+oDkCqIwA6gnyAKA8AaizQhsBAjzuqUHofInGIQbjRxXjMrTJuHDestR4Bng4eGrN0929PqNfzC6h06weAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.easyplayer-container .easyplayer-icon-play:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAJFBMVEVHcEz///////////////////////////////////////////8Uel1nAAAAC3RSTlMA+rbVFUecgC7rYhEEz+4AAACbSURBVDjL1dMhDsJAEIXhdeiGpKYWQVKDWc8ReojFc4ReAlPFFQazad7lIGkb0jK/WEPSsZ+YN5mZEP5UrZIP0vgE0Kv3oPlIJlAk8AJM4ASYwAkww2+ABfQg0ImgugPYsfNBVl99kA0AsjOArAPQpRTGHiBB8whxM0y+3skXNltsvMYriIWrpWPA80mFJ5qL3gAfB1/tcAt7rzdiV+HEgs1oBgAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.easyplayer-container .easyplayer-icon-pause{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAFVBMVEVHcEzMzMzHx8fMzMzMzMzOzs7MzMz4IlKVAAAABnRSTlMA6xIU1hVqIuOVAAAAMUlEQVQ4y2NgGFYgLS3RAEQziQFZoxKjEqMSaBJpEAkgIw1ZQlBQRAEs4QhkDeIMDgAWx1gMHyIL4wAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.easyplayer-container .easyplayer-icon-pause:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAFVBMVEVHcEz///////////////////////+3ygHaAAAABnRSTlMA7OgSFBXMmAA4AAAAM0lEQVQ4y2NgGFYgLS3JAUQzi6WlJY5KjEqMSqBJpEEkgIw0ZAklJSUDsISikpLQIM7gAJjhWp6XcaOxAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.easyplayer-container .easyplayer-icon-record{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAHlBMVEVHcEzGxsbMzMzMzMzLy8vMzMzMzMzNzc3MzMzMzMxEZ/aQAAAACXRSTlMADPKKKeBxlV6neZ4mAAAArUlEQVQ4y2NgGDZgJhpowCURAJeYpIQENJEkCgWRgCeShAGyjfgl2EqwS7BFToZJiLg4ICTEImdOh0pwRM6cDJcIjpw5E6aDFeh8B5gECBCUYAkKCoMbNXNSOlyCgUEQ4apJJmxIEkjOVWFgxi4RgEsikGQJnEYp4pLA6VxUDyJLIAUJcRLIwY7qXKSIQvOHWCQODzKIleBPPjgTHM4kijNR48oGkajiYUMykwMAAfmZhUjBISQAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.easyplayer-container .easyplayer-icon-record:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAJ1BMVEVHcEz///////////////////////////////////////////////8NopmKAAAADHRSTlMA8gyMLeRw1x2DBpWGN2QDAAAAt0lEQVQ4y2NgGDbgDBpIwCVRAJc4KIgEZM4EwCU2KSEBHySJCcg29iBJGCBLgHUs24FdYlnNYZiESksDXKJALebMaagES8yZw3CJypgzZ2A6WIHOd4BJgABMgh2XBEtpaBjcqDMHs+ESDFyLEK46aMGGkEB2rgQDJ3aJAFwSUSRL4DQKp+VHcTkXxYMoEkhBQpwEcrCjSCBHFJo/1GIO408MOJMPzgSHM4niTNS4skENqnjYkMzkAEgzyFpeX6L3AAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.easyplayer-container .easyplayer-icon-recordStop{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAMAAABg3Am1AAAAOVBMVEVHcEz///////////////////////////////////////////////////////////////////////99PJZNAAAAEnRSTlMAMPndsnZj1CSYPcmL6wsdoU80pOJLAAABu0lEQVRIx5VV26KEIAhMA++p9f8fezatFDPr8LSrjMxwiWlqzRuMYKW0ENH46c3WuGyVLXEduuO83UyK59fl1jX5EEUXD9DOaSh43XEP5zUIdZ4pAecTofVnWSt3ip4rx7N61vjnY1D30CpH4QQR8vsP+RA5Rs3KpjfMU/pMim/LgbvH7DF2F8sU0owqapKLqgnhuGWwImUagn2zhUX6WQQoYkXG9WxSAJd700/ygsCpAoliaDsPiG48GM1X5Ft/06sfp8DrDE+3DpekWjxM6366fgEcnklC+AIIWYQmPEeAaUmjFOnhCLDfxZRH+w1gU5b/DYjfNcyJ0p7dxX8B+FwxQVtvAGB5ig0d5gFA5KbzS91hI8CenvlHflfN/XvzJQnxbBEko1gbvVnPii+FadSVRUEaYylQfJtpLB+aRG4LY/80yKdUbCraM0lozGR4ewZ0Wtnj1iC7hjWKNnjYmR62W15cLlL3+2pyMR09jccyuyUrHKsvthc5xsY1iWJ0Xk3t+2XP7AnWwrAQmBH6asXubmL1Z5Lz6o992jWiu9lnMSiQsK27FS9NxhCumZgB2fTBPFsFolhZr5B/D3o9sJAI6skAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.easyplayer-container .easyplayer-icon-recordStop:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAMFBMVEVHcEwimP0imPwimP8imPwimP0imPsimP0imfsimPwimP0imPwimf8imPwimPwimPxLmg1rAAAAD3RSTlMA15sisGUvdz3szYwMT8H+hDJEAAABx0lEQVQ4y3WUO08CQRCADxBQchBiMDE24KswFlw0Wtig/oHzUWglJBZWio3GDjUxlhhrEzT+ABMrO2iptLLVRluDggI+xtmdXW73LkxxNzvfzuzszNwZhhDzdOxqaPGgYrgkOgFczh90ezAJQmpL2v6OHYnqk2aWxOTtAnu/O/Y5XNZXmTZjo3ot7aESwLdFeqAM0MoJkMf9ltwVQJ9PcQN0UFIJogvdJgLQVFMsAlxyBaPmVBDCE8W7qd+2SDsx0q4OwhSrCG134W54jDfKLjDNxaL8/9AAMM/solptRnoALBbwEPWYrOEzLnrZsTGoMW+fBHG2SiLPUNI6KMOH8QS/XsCMBYQekIEv7NGZF/Rht2yqmA4i3UG9O0iTqgMfhirDhRdU8XJZqqEO8tDAqje8IIt1r+I5HmBjfD9AxQ1MgJQRpc6GJRALHOAS1WRlhMs4VaSFzwIWzCUF3op71kdNsNs/FDCuA58YqCQl7IhN3WbDnlLtfjnuON515WM17c7w41QPOuBIzDT5wqi0T4ESGV3gjtTjkuPATwHoX9+cPRlmmvJ57YAir2qKy459QL/UhrS/uAu3xf8KiX3DI+b22t6jc9F/qfaum9E1pJ4AAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.easyplayer-container .easyplayer-icon-fullscreen{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAALVBMVEVHcEzMzMzOzs7Pz8/MzMzMzMzNzc3MzMzMzMzMzMzMzMzMzMzNzc3MzMzMzMxdHBitAAAADnRSTlMA8AwGYt0aUcg+til5kgmZywUAAAGWSURBVDjL1VM9SwNBEB12IcGkMagxNktQSZFCYimIJAqKpZ3Vco3YBYs0NkKQgBg4ECtLFSFVCGgQrERBsLayPE0Ip7n5De73BdKLTrE3ezPvze6+GYDfsAQKy/Rz0i/OZJjY9XREuohTKulS+ZFGiADfyZXU5uHktI44VH5apDx554aXwJqloiIwiEsStAjCAsRNF1jCmGqa4Vc+BvS4JkjwzyPE6xiwzsxxeTbZxqjkANSWZFkoIj5bQBl4aBDfkPDNpeRRialB+SRAFz8UU1sAaEUjSCDoJ7iukZJ1V+c01bFczM1pWaa+a0Rp7MHn4V8Z1R9vLLCv9WjKdVFfk77JP+bZdz35YAfKXx6KhKp93abUYVbrj49g9aAYSuFCLbPUwzdCsYEWTloXgw1oGwQbENeuKwxzXhxwAADRMFd+zzRc6AAASY6RH8VjUHaXTrlOpDgCUP3gelc01e2d+f16cWbnQ46BGCRNVsWAWQJVw2xGfUXVv2k1OsLfazXqblzS99u1FwKFvBJioXBY2+r82U75Ab7O0ypVV0wKAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.easyplayer-container .easyplayer-icon-fullscreen:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAMAAABg3Am1AAAANlBMVEVHcEz///////////////////////////////////////////////////////////////////+GUsxbAAAAEXRSTlMA3clDHfdfDQbsVG00u4Cqkr04dRsAAAGaSURBVEjH7VXLdsQgCPUBAROdjP//s1UTDUxsz3TRTc+wC94bHsLVmP9hkE8LIdvgupt2tFhcpy2CMZyVxNePEoqDp4hwEGz5PTqWoZNzLrmD9riltBEYzzpZQ8bweXy56Qy6Tivsp5JQYtawuMH3eJlSxIJtdSSa4xer4lMB89pK23mKrwjZVpsRzLq35vEE3+r26h6w5EKppcp3fP2lIpTPWJvoXoobeNI1sM3haHvx56tu2sdElJ54GbnPQ7RZ1sCpl8qPEMXBNQ8vN82jNbzLCPzGSDOZj/2Bqd19R1rELIEbDFrUJfKYdlALbDuDMko/hz7t8DqtCfr8h1Vt4rn7eh/6Ph37ch20aW8McsfGCOXzcr+GOlQG1rJ2HSHUDO/4Mu01qVAqTCpCJfgZ3phTS2pKm5aZOMUbs7Q6nk6L8UzRh6W78jH+gD/VRxHokPuNgUGTaPPR+zDR1mrlvcGgwkAVacSbeoN4Z0rb5/6XLrW/2GTLk2NhXHRKzrqAt9cD4rr4ddvae0NAYgOICdZyvPj4UYRf2BdfbB8iWvnTUwAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.easyplayer-container .easyplayer-icon-fullscreenExit{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAG1BMVEVHcEzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMxi4XDRAAAACHRSTlMAf3WqJmy+7azWNnMAAADNSURBVDjLxZQ9E4IwDIaLfMzCOTDSOz07OjLir5CR0dmJFVHIzzZtnMzbOzcyZHnuaXpJWmO2ji4GhpAzzZeQzw8FKCj1pMHss9OgpwsGOS0YGOcVUMPsfBVkmJoVCBJW0FFB6SFIaMKAlRGDnEiDkuM00lP3SmL6H5QSh+iIr9ZWVWntUV9Z4qWbHAWrhcUYNLC4Wwm3xb1r2mOQYoVn2EKFAVb81KHiQQq6L3vSUoMBUmSzgCKbVeiL3eTp3Odf8H1sxRAZZNZt/Vt8AHcPQbiQQVF+AAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.easyplayer-container .easyplayer-icon-fullscreenExit:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAJ1BMVEVHcEz///////////////////////////////////////////////8NopmKAAAADHRSTlMAe4Fzh7MZbKPtN8gpX19xAAAA3klEQVQ4y8XUIQ7CQBAF0CWhKQHDGtQKQFcURUgqEARBED0Aoqp3IKnoATAEW8MNOACmhQYKcyi6uyjmr+aLqXj56bSbVoh/J3HBxcw0ZfA2c3FiQLGeQcWh1lOVDDJTAeCbCgAR6QqCDj0xCEU5Bl2BIALKMwhdKjGILRUYfCIOEynlvABANk64M5jabJxHfJY2I76yzYu/ZCc0s1WbNYAQ3jxqwMoGHoqWGHpUQajEgcYYcKWFtjLE4FGJQewoxODRDQOqKPPcHl9sfzSXa/0L349tEDsOsp/8+2/xAY+BZBY9KhM5AAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.easyplayer-container .easyplayer-icon-audio{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAIVBMVEVHcEzKysrMzMzMzMzMzMzMzMzMzMzMzMzMzMzNzc3MzMz8gU00AAAACnRSTlMAL0jMZKt96hGJsSKv1QAAAJ9JREFUOMvN078KQFAYBfCbJEw2q6SUyWxTnsJT2JTJ6D38Gb6n5PpT6BwbuaNfTnz3fEp9fZwAP7czD0MsGCzBYJcEYsGwBEHQQRB0EII1CMAWdAOzyJUvJ4jyDVyZVHKGpj9guEI2IuhaDFadYnCkIm9I+kPgn8t+kI7kOsT72HcwQnJR9Gofy8DrwwtHK8pLzdeALg5fNb6cdJ1fOjOGYrl5CLFcggAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.easyplayer-container .easyplayer-icon-audio:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAJ1BMVEVHcEz///////////////////////////////////////////////8NopmKAAAADHRSTlMAL0TQf2frEaZYt8E+idL4AAAAnUlEQVQ4y2NgoDdgUcAuzr4Hh4TaGQHsBp3BLsG+BoeE2hnsEkCDsEqADMIqATIImwTYICwSEIPQJFhnBjKInUGSUA2CSPCcOcIwB1ki5xRM4iiDDrKEzQlsEuUF2CVY0jbgkDhjMLQkEkj0IM4gQQ1EHMHOOXMiakRpTiQQtXgTA+7kgzvB4UyiuBM17myAM+Pgzmq4MyfO7EwjAAAEf+BAxqI/agAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.easyplayer-container .easyplayer-icon-mute{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAMFBMVEVHcEzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMztXryaAAAAD3RSTlMAHd4P7ztyiy1OnKhdx7uY2gyAAAAB8ElEQVQ4y72Uu0vDQBzHE45C3SJFaSGjUEiRpJRCBifXokkpSv0DfOBrEKxUUSoFH9ClFAUfU7c4OARRCs5WjThIsJuDlLo4ldvPe8SYxGyCt1zgw+dev+8vHPcvYybvfCR2OgUv2CoLdI62bUn3gq5UJxOomZofXPUNrIChJRklfcDSiKK2bYQ6PiCaREk0EQoYPFYa3F73F+DGsBJLmAjBAMBKakG15KAxqIhd2KuK5reRccBDNbqGJhfSlnNc/kBh4OY+vaoR5QrRC0afKgxMrKdXNKI8yxRENpyd+i0VA6wMm5IOBmORCwfAFjGwolofevbuPrvpGhRgpVaqiJflrLuUQQFRToS9l894EMDe7q6yL7/G5wMATc5mQCiAvQo3HAbwLtyYHQZgTxhohgGUa/CP12EA16W2/Ou4ZEj1dNG9oPMkZGiwJWQ8j+huPoJy9Z/XHTfUFSbAURveCtE5px5vs7hQDKS25FSDn2KR5Up1/lRmIHne7BvKd82LMRJbSjr5M40lmaYZ5/PRpiCpizjJyk+CwOGOzACLpSdz02QxkiuRhd8dNOwkV7zl2YX1mcySKJrQiPkXY9klSt6rkJPRwIlmzrcWSGyzHuTb11V/N0y/S6SdwdCR4m/47OIN7XOQCfwJwHGp8IcfyRdBLEZK4Uxp6wAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.easyplayer-container .easyplayer-icon-mute:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAMAAABg3Am1AAAAP1BMVEVHcEz///////////////////////////////////////////////////////////////////////////////9KjZoYAAAAFHRSTlMAbk2o8o0P5TsGnVojFi/XHcV9urLaq0oAAAIQSURBVEjH3ZZZkqswDEXxLM8T+1/rkw0BuwM0f131+IvDyZVk6SrL8p88QCHp8UAnWmoWoG8AwQRN4/vOiqwUuwWqiob646MMhEW+KnMLMIXffgiZoODBusb7kCzjByF7OOszkOyp4amJ7fWVPwCN6BpyWRypvANPCvi7u4aTXe13YI+KkYA5bMRTSMlLnSyGwisSH40B0FJOrKVB6iAw2U7sGgPgQ/DTPQjitCOZT4Q6gWCtGwGFbSM34ENUNSpAKTACmC31rnRgJwjDdkFAJpfkAsZcAJvCSVQB2FaWWKdB/ATMAHwIUYL21lRBZRDiC5AnsBHBUqxEyaraFMoz0AnvHNa6xDWS34FGgNf6PYAEZoCt+BroUWFVbeb5HbCqSvB2cToyca+Adjlycdawt0C/HeyScl1W/w3gsU3aAd7JF8AuAN6isr7NAogXAFeq59Ec7ifAm49hF8wCMWfVNXAeCAkjEGuBr6R5ZGJzBrl4gGniBME+w8aMMyCsNZtfaemnmYaAQ6I3Rz0fnDhHJxc93Vrr7sHWjP3XRtTba2L3EkdFVaPC6YmXxKI9DGF1YPLdiwfD2r37cL5nDVw+uKzU5K27hsXCXPtyC2uyyl0D0p2TY7VaIvFYWU0Dm8TdOXmrVp52HG4lU4K/N38PpS/Kw70dbmb/sC0WCcQwNNzzjrzUj7veUyIIyL/4m/EP8V829O8zh5EAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.easyplayer-container .easyplayer-icon-ptz{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAMAAABg3Am1AAAAM1BMVEVHcEzMzMzMzMzMzMzMzMzMzMzNzc3MzMzNzc3MzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMxDm1AzAAAAEXRSTlMAHqw+E8It/gjxc03jhGDTlgAjE2kAAAI6SURBVEjHpVbZkoQgDBwg3Of/f+12gtfMbK1Yy4NampCju4Ov1y8ruNyyo9fyCibVlNW6vUu29GpWQwTVdPTernqwffHex0WP4Nro3k+PrMKCvew/PcZ95aoNsY9yua+cGxTZsnf2K7ch4CAdGnWwYx/5LgKZCgxGdrhH3BeqNmnwviFXPZbQJmcM25HJ5n7/Pczr2QqksMJfO7BJOHLKLWFdMiL1QXYRwFagMklb4GB1zS7s8Le3fqH7Q28tVLkKdIzeaOJB2OKtY8KfTQCUa4++dNsLbrqpTR7xguHGt8hfg8P+seuaEkNdBjahzOD7g1cHP21SL2LtMNBKMdTRJjffTX1wVgrsEb1ITJU6QknwYJAcQky2cE02NbzPp70KyKggtpu9xM7Ik+CBIqY+8FrYyRUkrs+MEm1TG6tG9LZxNDNFGDue63TYGgIHqUUcuNhvhyZtn5LnlDq3Juxa4noCuX0scErOpNMDCrVcHPCS5rFGuQR9KZpxnB6CQ0ZO+AIBcTPk3UdbTx1L7jLEEHsMW7ZYm8NlIFyxn8+xdL7MURYEhzd5k2N2TabxIAORwC2r00QQfNSgrnqTJfh7cDmDu9ggtV0EZFr7kGu4KAxtNDln406TLwF9iZCIwn9EfjPuncRHYm5x3NfK3cFAS5kWxljSnTFlPHBAUFg5HsCCVOd9cdwXq+027un2QJlMjqISJutCDceRtTTuT4+1Q3HWHR8cu0fh9sGvADTYH9iLah/9nPz5+/MDJnQfoIVoAnQAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.easyplayer-container .easyplayer-icon-ptz:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAMAAABg3Am1AAAAQlBMVEVHcEz////////////////////////////////////////////////////////////////////////////////////1bZCPAAAAFXRSTlMAeVoYDS1pBiPv4/g6lkzO2qSxvoixscijAAACi0lEQVRIx51W2ZLcIAwcLnPf+P9/NS2wp5xkq0ziF3ZRC3R0i/l8fvi04oxx89n+RBi1sqB38TKw7lw7lNzDa3U0e57bHhJ4d567HlqGC08eLAj9Gv8XD4/OwtsdhlfCW2s9LfWtuNrMhG1uLWP17Xh14LF4m8dx1OJ9jkm85YCYch5JzDVy81on3MFYkpTNYGmHHloYI+aqlNhlh5ZSvmH1AyBUwPcMX+u/clW3XYvA2YgRGXyZIZX6PXv0l3GlV9Jp9FKcK7mytJIg8xEeBdaBtV4P8tAixexnp73tY7ZBkrk9WEL8t7ZUDqtIA3jXa8sODSeUVqw5aztT+g4QeNAgM0PGTA0+EmfVeUvU0CEW4hX+lt/zseE7jJKDSmi0EUKBhr7EAMKPvNjOA9Fz4Yk/CFgcGRSdkYOHCLRxQfzKRN5SB/b5Ot8SzzQiKqcb6ipFdCfi1JI84OBdxzarhJ8RkpxHOQszl7bpn0GpmnXq6R4OfTkwwlyUWzeQg7rSLNhNUzEUEqJF3DMHeeXgqRIaYwHimLKipK8hMZOYVfJ5oKtIFSgXk5z4KcNx3GOIPGYfPigh9YGHBNQKVKbZhxMnqq+OHfWBHARZfWm1dnfSXfJuXInplse8wy39zkisdQ5kuLY+Bpc5hwGiH8Mx1rE24DFaLqXkfrNVkjk+8JPTPF0bUw+R9MCVuA8ks/xDyF/9orMqpBQeiob5RbIbmv7/TxvoX1Oqa914TsYg7QUWx8Y7R89JQY8mY6Dat1G5GARuMOgYHY9cbL1vNvc++fk67olLk4nrQSl7457OPqdeKn+vEwm4LPzW87DyXvqIyei9znHS+cZz9SxV+Qf8nNbjn37NkDx4+PmCXzHOLUMtjgmUAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.easyplayer-container .easyplayer-icon-ptzActive{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAMAAABg3Am1AAAANlBMVEVHcEwgmv8imPwimPwhmP8imP8imPwimPwmmf8imPwimPwhmP0imPwimPwimPwimPsimP0imPoLqfILAAAAEnRSTlMADprCJBnU/gXwh3LiUKxAXjJ/ELXKAAACbklEQVRIx5VW2bbjIAwLa1jM9v8/O7Iht+09MwPlpS2VwLZkJ9f1lxVG1joPdZ0u1ZIxurhv8DH6dMpQI5t439GAEc7xYPgTRnAtV7plReRhd5kDP8+fd+wzt70yPhIJzWT7/6DCJCAYLReZPMIuJC4pClSktHqbNpJO1aTmmAme3cvtWs9NSfq52CPhnJNjlbVHwgmWSWGHeQHcKFjj7fygwidf2fa4mbVOuladcnsoDn9/CKKAWf6HEtpANiJvUp9Fgr0SvocPP/sqjOCK9ktpyCAo4Kt/d4n4/6baseNKAt5XrauPN1A4ZLAd30RUI4kNfELVx+yd3lrXYIg1Bp/B/dGs5N8mPsJoVyiwkofQSlm+K9aiwmoQMDoI4wefoK/rhkESrSuV+BR2i6HZH9juLzxCtBmn6rFmB66gNJQwBOSxncT/N3FAlxAoLQfJDy2+6rMLI3aznl9fhOcGSdZzoNhex2K3TXJEVe3M4Zb6QhHuJc5BWakYIqqietcPw6FK+EHofUHRqtLEQ5X8dKVENXXgEpLOpcjwkFI30YFVHE8fyx2ShZJ/ydTKlZwZ4BCOv/af9uMi0DILe4kieynScgPbhai+DRDckTT6N6zJpI3HMghM3BMg+q9pHmwrbR0Q0D5wc0JHPy0E5Ur7Nf3Rk68LnR0NHfO28/T5P4cNr+uLFR7eEdiNxvMRbd5Onlqsis4iIVdme4di3akWOz+3T0aUnFWHa8QZrO51NO69MeLPafrNuBenxel/3d21j8k/jyxf+75OQabFxOtuT94G3Lpjzb0zBn2Dl0ep/waPidQ/p/XB60Dp7e8F/QO7WSJg4zEzdwAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.easyplayer-container .easyplayer-icon-ptzActive:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAMAAABg3Am1AAAANlBMVEVHcExru/9ru/9qu/9ru/9ru/9ru/9ru/9svP9ruv9ru/9ru/9ru/9ru/9ru/9ru/9ru/9ru/+3uxEqAAAAEnRSTlMA5q0cR/PC/ggSKtN5OIhaa5izIOiAAAACV0lEQVRIx5VW2ZLjMAiMToNu/f/PboNsJ5PaKWv8kKRkWkDTQF6v/zyUfO+JX9sP1dKKd/v2acQcm992kbo1R4il7iHIif0BRNtCUOozH4cikAdt2YfjRLTnzN15/8I85wFCI2xDzlnyMLO7R0aFoTzbFGB+jIkYLkyePvmW8d2fs2ZfZuv8It9s6zvV5uSr2LmKb9oVh37QvpjYOcf8fcO3Cb1jGqOU0SvTTd6X2KUBLgKdLzaiDtE2n+isTh8/+AX7E6/Vh/NNSyfVm10RXIe1nxXRapmsDQB7SMnkmE0IxgqvUn0jteEf1T2CHXgr0gjZllGk1HoJL7lD7fRpD20CgJcwQ6EdSh3lLK0zVfuqz2WvPlPJh7HqnCQ4MysxoAYQE0vHub/toRuqzRy5pEUvbg62MzlJQn1MHBe1x7WSAddpNDSN1c9wRMhKfi2jrICwAIsQvHkD7Al41bOrBNC1Y7QdmSg15LDokGETJB/imxYJKfmFMDqI3FjUkDS3NSEDjBaxknRYSb+4nj4kC43W2OKrkqGB8jV2Fq03YiWbhHQTpUV1mMHXWYf8HlNX7ZUQRC6iwBAIK0r0ILr1UxqKsPattAkhwSIiMl76bT/Ft/TbTy2jHQoM7Cz9isHVMb6GILl0H4DGivbw7xNc8rAtiJn3O/qvD6JT/wgs7Y370ZSdWmbZWEKiG1lXImldW7Q1jGMbZW9tUVKZmGjjGvf+EXAqzWiX5OfFSHVp/zjbfGPc3whdcbTF67V2N1e79qYMru2/AnzVYFsdWFt/+nOypv8vQvoHou4gOtSrG5EAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.easyplayer-container .easyplayer-icon-performance{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAnUExURUdwTM7OzszMzM3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3NzW8hQDoAAAAMdFJOUwC/gO8ra6tUQNmVEKtAA1gAAAE4SURBVDjLzZMhT8RAEIWnpS3tXcWdQ6wgOJIKfFdUICv6AyruB5w4EuSJCwRXgUBWkGArLsEi6JVuaZkfxawguSWz/p7azLdtdt97C3ASagp+PpeXPDjHVx7McMWDCBc8qPCZB4m44YFIeOBh+ckCf9z+sCCYqi8WvA/5Nwu26cfA+JRBs4h7WmX/tr9AXcQHAPdgzEPZh5idTQBOZ3zyiModISKQGxZ7dd85E0SKfMGjM7vXeI/5AE5LvrwpcK9IOrQYB5BlCsFIvjzgrkaSjsBZbmC9XsGsAxfn8gKXpL9sSlnQFBwFTTuaKWXgI5Ar+sfHTrW6DUDO+2jEEtCNQ9wL6gNujMvvdFS3eugxGT51fBXxTvF1wLLngbT0BGphKalAy0MQ3Z4Ha2V7UoMFJKkFVAWcvH4B0OJfd9YsTl0AAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.easyplayer-container .easyplayer-icon-performance:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAMAAABg3Am1AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAzUExURUdwTP///////////////////////////////////////////////////////////////8/RimEAAAAQdFJOUwD2qdfrViyAwW2XORBGtSCsD6SyAAABN0lEQVRIx+2VzQ7DIAyDYfxToH7/p10CbQ+T2s33Rb1MijM3/qDG/EurolD9zSNRggBU0hFelMABmenfADhGkJDhGUFGgiX6I1AAQlDgZK/td8ELtQORiTmIq42I2bYdCD8NjzPmYQxO+rbn2S5qzEUF6YjkgcJude56X3s0SoL7LRAeylyaVPiFq0Jyx230mpeXmXVOHssRbhackhCq25Sny++xcBW1n6Snqw6BTgrqRP6kzfDcgmRLGonDWSf2OecwB491dOrEVZpNsxiyiHzWJ0Z+BbBwzaoWVb49HrqVfSkxHen7WNznLhzl8xpQlT3E9oHUtYaufB+7NY9g9ctbjFfj/h1DwXUrzDltMn1Ql9M814EQWPLmEBg4R7JSzpFQxTmSBMkLvJKOhFHfKEEnv3L/+qw3DuMPzAFH9pIAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.easyplayer-container .easyplayer-icon-performanceActive{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAtUExURUdwTBGW2xKV2hKW3BKW2xGW3BKW2xGW3BGW2xKW2xKV3RGW2xGW2xGW3BKW2+P2IvgAAAAOdFJOUwC/gCvzq1RAleURc9VmrA9rXAAAAT9JREFUOMvNkzFLw1AUhU+SxtTahnZyC+IsIeAenDuE/oJQcS/FTYTi6hKcHYpDZ/EXBME95BeURpM0Me39Db4Mgk/u23umcL8kvHfOucBBKEr5eW95xoMjeuBBlyY86NOQBwt654HrPPHAca/YuUHrDQsG9eybBWa1+GLBqvS3LJiNX0vGJw/R0N6LJ+/f6x9I3uwG0D+luRU0FnmdCtBy6ZM7KvQdjgXwJYuNZVNrFfqF8IX+nFm/oBvyS2iZ8OWxgH4u1IZmU4kgfoa5E77c0jwhoTYCbTRFGE7QrXFCveCURkK/2cRBCp2gFYiyWk7Jw4AgXOmQZMAqa9uAeCP+JsViihtb9OKIPtBUuvy8jeqyHRpMhvc5X0W6Lvg60HrPg0DREySOoqQJKRbByRWbExaqlSoVwB0rwCLFwesHquttxhcsa64AAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.easyplayer-container .easyplayer-icon-performanceActive:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAnUExURUdwTH3G63zE6n3G7H3F633G7H3F633G633F7H3F7HvG7H3G7H3F6xOzy+EAAAAMdFJOUwC/hKbvK0BT2XURZct0z00AAAE3SURBVDjLzZMhU8NAEIX3LiSUNqI1qBMMChFRgYxAd07E4CI6HQwzEUXgKjC4CH5ABAKJyA+oaHqBJO3+KPaYYSZh9nyfyuyXu7l77x3ASSgu+flYX/HgHOc8kC4wwikPMnzhQaTueKAiHvi43bFg0m4OLPBM9sWCjyb9ZsHm8NkwPiUQT8MjfSX/fn+F/C3syJf9YB7oLsDkjIaiHix5QCNbGBmAFPve+3lXi/0viLB3ZnmDz5g2ICry5daAvCbZhSE2oIsFeC35ssJljiQbgZitIY7nIGu4wLG+xBnpL5tClxQhCANR1Q5TSmCCQK7YjftOVbYNUOxot0EsHl0uwHdFfcD14PJLG9W9HfpMho81X0V8MnwdcHvkgS4cBcqVo6QKHQ9B1a6XY1zAcSiIFg6QlXDy+gEd714RcAqEowAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.easyplayer-container .easyplayer-icon-face{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAeUExURUdwTL+/v76+vsDAwL+/v7+/v7+/v8DAwL+/v7+/v96T4QgAAAAJdFJOUwBAgSCbs9hZap+hQJoAAADvSURBVDjLY2AYRkAJCAygbEZBQUEBKJtpJhDAOJpA9kSYxESgKphuIaBuhASqyYzESjC2hDRilQBZ64BFgm2qMLPYNCwSkQpAwlMBWYIRzJsKYrKCxZSRncKSDFYzBSNY2MD2MqRhSFgqgClPAwwJBxwSbAk4jGKZDCKZp2JIsEOcOx0ztjQDYL5ENwsYJKrTsMSvGSgepzVg2pE5qSikPRPT8sopBuDod0ATZ54JsbZyBrJgAVAp1Ax2oPXMykjxYQaLA2CMoERUZQDMrgBUCc8CKIdzAvHJhyQJpLQLSu0TCaV2lPwBSu0KQy+LAwBuJj5UbruNggAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.easyplayer-container .easyplayer-icon-face:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAnUExURUdwTP///////////////////////////////////////////////w2imYoAAAAMdFJOUwBAgBvfrFmcw4wrbtGliFoAAAD2SURBVDjLY2AYRkAJCAygbEZBQUEBKJvpDBDAODpA9kGYxEGgKphuIaBuhASqyYzESjBu79yIVWIP0NoCLBIsR4WZJY5gkYiZACRqFJAlGMG8EyAmK1hMGdkp7M4gkus4RrCwBIApFwwJmwlgqsYAQ6IAIrEAwygHHEaxngJbfhRDgg0sxHoMM7Z0AmC+RAPsJ4S5NE5gid8VoHg8sgHTDh/PzM60HkzLc44bgKMf3RKuMwoQ+dNIgswJDAycUDPYjhgwMCsjxYcJLA6AMYISUTkBMLsaUCVqEqAcngPEJx+SJJDSLii1HySU2lHyByi1Kwy9LA4AqflRBKNSA88AAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.easyplayer-container .easyplayer-icon-faceActive{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAhUExURUdwTBCT2xKV2hGY2hKW2xGW2xGW2xGW2xKX3BGX3BKW23povfoAAAAKdFJOUwBAgRybs9hZLG6hrV9tAAAA80lEQVQ4y2NgGEZACQgMoGxGQUFBASibaRUQwDhaQPZCmMRCoCqYbiGgboQEqsmMxEowTgmZiFViFtBaBywSbEuFmcWWYZGIUgASXgrIEoxg3lIQkxUspozsFJZkEMmxBCNY2MD2MqRhSFgpgCkvAwwJBxwSbAk4jGJZAbZ8KYYEO8S5yzFjSysA5kt0s5YKc6guwxK/baB4XDYB045Vi4pCyrMwLa9aYgCOfgc0cY5VEGurViIJMhcAlULNYF9mwMCsjBQfZrA4AMYISkRVBcDsCkCV8CqAcrgWEJ98SJJASrug1L6QUGpHyR+g1K4w9LI4ALk0RHtSETFcAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.easyplayer-container .easyplayer-icon-faceActive:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAhUExURUdwTHzD63zE6n7H7H3F7H3F633G63zF7H3G7H3F7H3F68TinBIAAAAKdFJOUwBAgR+Z31ipwW4yAjb9AAAA+UlEQVQ4y2NgGEZACQgMoGxGQUFBASibaRUQwDhaQPZCmMRCoCqYbiGgboQEqsmMxEowTmmZiFViFtBaBywSrMuFmSWWYpGoUgASXgrIEowgHtsKEJMDLKaM7BSWYLCaJRjBwloAploxJKwUwJSXAYYE2KUMVRgSrAFgKhTDKPbFIJJ5OYYEG1iIfRlmbGkVwHyJBlhWCDNrrMASvxageFw6AdOOqKCklrQuTMuzlhiAo98BTZx5FcTarJXIgglApVBr2ZYaMDArI8WHKSwOgDGCElFZBTC7GlAlvBKgHK4FxCcfkiSQ0i4otS8klNpR8gcotSsMvSwOAIs+RIlIrewIAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.easyplayer-container .easyplayer-icon-object{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAA51JREFUaEPtmT1oFEEUx9/bnRALGxE70btkZjcR7QMiRisRbCzEQvxCLGyEhCDRBC/RoNaWFgYLFUSwUBAUDKKFFqIQ3OzNJpfCyspS8HaejNyG87J7t7N3l03gttydefP/vbcz8+YNwhZ/cIvrhx5A3hFMjEAQBDwMwzOmAi3LWhBCLDTr5/t+ycSubdtLnPOncX1iAfQAlmXdNBmkru2RVgBSSspg+5kQ4lRjv1iAIAgqRFTIMIju0i2AWNvrAKSUowDwLqP4tACm9rWmbABCiFxXKimlhu0BtPFHtdc19wj4vn/Wtu3XnPOfWVByA5BSngCAuwCwryb8Hud8EhGNltANB/B9/5BlWXcA4GCMx/8g4jjn/H7aaGwYgOd5BxhjcwCgPd/0QcRVAJhM2l3rO3cdQEq5GxFvEdH5VsLX7aKIH8MwLLmu+zapb9cAFhcXt/f3988AwJip8Jj2L2zbLg0MDHxr/NY1gCAIpohIJ2V2BwC0iUd9fX2lQqFQ6cQvtJbICSGOxHhlVOdKjuPMl8vlqzrxI6IdWUAQ8Um1Wp0ZGhryiYghYrUtgDQionxJT0al1IwGkVJeBAANvieNDQB4joglzvmilHIXAIwrpX67rmuUamfKcxoTvnoQ3/dP27Z9g4j2J4C81KBCiC9LS0suY2yMiC7rttoZuQBEQhsiopfT6wAwUvv+hjE2XSwWP0kpRxBxgohO1kPmDhAHEgTBUaVU1XGc98vLy8eVUhoqbpPLPwIx6/wqEV2ovX8AALzZ/Ng0EWgQGa1iLQ8xPYCUyx8YHjt7EWjm2I7sAy0it7ERqNWEDkeiklIJg8pFWwC1ZC6SM9NYc1oXgcaiVlxVYmVlZW8YhlMAcCnFvOkEQPqqRBqASLTneTsZY3pjapZSpwF4Y1nW7ODg4Ie202kTgGiwSqWyrVqtXgOA6Zj0OhGAiF4R0azrup87dqDJAlA/eLlcnkDESQCI0us4gOdEdNtxnK+tfkHjA027AJEgKeUVANBROVd7p3fixwAwJ4T43kp4nR2zylynAOoE/JuAiPiDcx6kFb5pAEwF5zKJ2xXZrH9uc6BTUD0AAGh639Xo6bjUI+G/NglS+p3Y87wCY+y/2ozJSGkuRDLekQFjbEexWPxVryfpjuxhllKhNtwtAESc55xHx9M1hsR0WlcOlFLHTLyv26Ypi5hesyql5oeHh3VBeN2T6TxgCtXN9j2Abno3je0tH4G/KbtRT7VUKs8AAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.easyplayer-container .easyplayer-icon-object:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAwdJREFUaEPtmTuIFTEUhv8fLSxsFrET3UIQRHtBRNdKBBsLsRBfiIWNoIisD1xfqLWlhYuFCiJYKAgKLqKFFqIgoiBoYWVlKbjwy4HMJXs3M5Nk7tzZCzfdvZPk/F9OHicnxIgXjrh+jAG69mCpByStB3AgQ+AcybmqdpJmEvv9SvJhqE0QwBm4lGikqD4VAaCMvh+R3NffrgzgB4DJDCPWpC2AYN+LACTtAPAqU3wsQGr/pikPgGSnO5Ukgx0DNJhRzZp27gFJBwE8J/k7B6UzAEl7ANwEsNEJvwVgmmTSFjp0AEnbANwAsDUw4v8AnCZ5O9YbQwOQtBnAdQA28nXlp/NG8HT1G7cOIGkNgKsADtepDnx/C2CG5Muytq0BSFoJ4DKAUxnC+5s8cSCf+j+0CXDBjAJYNgAA6+Keg7AwpldyAXqBHMmpwKjYyThJclbSSQBWfyIT5IF5kuQ3SctJzjcCiBHhxUu2GM24gRx1IGtj+gDw2I34Z0mrbXcC8JdkUqidFecEAj4fZD+A8wA2lYA8NVCSHyRtcGvouKtrg9EJQKHVB7Ht9ByALe7jCwAXSb6TZP+dAbC3D7JzgBDITgDzJF9L2u2gQoectV0yAD7IEffjDgC7plaVJQdgYotdLOYSMwaI2gETr51jD1SN6qDOgSobw/WAywltLxRVhBIxi7LxInaxUCHHFvmCpFkorWInoR8LheqsA2DB3LGIRdPIAznBXC1AIVrSKncwVYXUMQB2Sl8h+SYQOCanVaIBPJAVAM5aqBAIr6sAnjnh78s82aoHQkYlWYwz7YXXIQCLRK+R/Fg3BYcO4HnlhPPKIfefTYX7dm8m+aVOuNdP+1OoSow79KzKL5LfY4UvGYBUwZ0s4qYiazzY7RRqCtfZIm4qfGBrAEDle1e/0FDoUTKvUxiT3gfsaWlBbibFUsyDiKSkBK9nf4LkH19P2RvZ3cxUIVoEmCVZXE97DFXPrJY52JUy+lY3Ji2S8cxq4i3jsahk3QdSodqsPwZoc3Rj+h55D/wH5CHfQHNA9EUAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.easyplayer-container .easyplayer-icon-objectActive{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAA9JJREFUaEPtmU+IE1ccx7+/N7O0BwUn24UeRKOd7LalvS+I6HoSwYsH8SCtLf1jEqWoyLJVMfEP6nlNIgi6eFChCB4UChaU0h7aQ1GQrnFSdw9e/JNs9LTFzPvJZI27m8xk5k02m13I3sK+33vfz/u9N+/7fo+wzP9ometHF6DTGfTMQF+mYNqwd6sKlFLcK++P3WsWF8nkUyr9stAeTcXN624xrgDVAUgcVxmk1lbaGPIFyFocou9fSonYzvo4d4BsYQLgaIhB0EYA174bAFaNWpuFhrthxDsxQQCMrKXUPwGbvfr2BSglYh39UjmwXYCwy2kh4jqegd5M/itdaL8+i5vPwwB1DMDIWNuJcBbA545wAs4V4+YIiJQ+oYsOYGTzGwniDIANLjP+hkCHiglzNGg2Fg3AGB3/Ugj9NBO2+4ujSSaMeJ2uc+PbDhC5aK1GhU6CeY+/8IZz9E+CnSomBn7zim0bQF/m4QqbPkgDOKgufH4EAzdZaKny3vUP6vtqG0BvtnCUwY4p01oFcOIZuCJ7elKvvo9OtLyESMN7IzeViA3VC3TshiY4Wkz2j0Uyj3+aMX5shAIhuia4kn6Z+DSPu6xjiCotAQQRMeuXaJJYpqsgOetbcBV8TZA+ANxgotRU3Hz48SWr7800DjHL6VJyQMlqh/I5jYZvFsTI5XcRa0cA/sLDv98iieMv98X++Sj7aEBCPwjwD9W2LNMdAqhJnQMyc5D9DGBwRhzukK4fK/647q9I1hoE6DDAO+ZBdh6gEaQ3V9hi27JS3tf/u3Hhv20kpQPldsgthQw0fOcnpc3fVK2EhosEmE33x9LJwKxM54Lj/Ap0SeoCBPz+qVw7uxnwmdQFOge8R1n0DDg1ISaxqSbJy0oE2pTvqhStbOK5FQy2ka6vOTVkoL6o5VaVWHX+yVoh7KMAvvPbNq1mQNmNBgGoiV55fry3R+jOweRpqQMBMO4wxImp5Cd/tGynVQBqg0UvT3z4eroyDMaxenvdHIBvE/GJYnzgb69MtjUDboMa2ceHCTQCoGqvPQBuSOZT5WT/fb8luOgANUFGxkoQYVja+Lq2iQm4ygKnS3tj//oJf9+PamUuzBJqJsY59Jz/9wh6+iJpFoIKXzIAqoI7solbFdksvmN7YKGgugAMNH3vqp9pN+vhtq5VMqT2PpAbjwrW59VmVAYL8iASCfdGBvm/bpQPrCvP1eP+RpYrXA5XKgTaBkA0Voqb1eupL4DToFo5YLlVZfadtkHKIqrPrFLIsXL8s0k3LaHuA6pQ7WzfBWjn7Abpe9ln4C11Qo9Pmb2aMgAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.easyplayer-container .easyplayer-icon-objectActive:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAA8hJREFUaEPtmU1oU1kUx//nvthx4cJqX3RgGLsQBNG1tq8Z7axkwM0sxIX4hbhwIygibfPMeyapunY5iymzGAURZjEDAwoVm8SPhSiIKAjtQtAmiooLiyb3yEtNm76+5L37kjQp5C2Te879/+65H+eeS1jlH61y/egCtDuCNSOQyH3cWirNHVIXKO6kYvqdenbxqVlLxS8J8Txp6Ne9bDwBnA5IiIRKJ5W2LDHsB2BmC6zqmxk3UkP6AbedJ4CZfTsNcL9qJ077VgHU8r0MID5V2EsCk2HEBwbIFdT8M/aGBkgaelt3KtOB7QKEnU9NsGt7BMyp2cOa4P8tY3M+DE/bAC7cK+xnxmUwtjvCCXzFHtRHiEhpC11xADOTjwG4BCLDY8S/MvhsyoheDRqNFQMwc292QmppEPb7i6MZgEdqna7V9i0HSNx/95MscRLgo/7CXS0IWS6VrFRs8+1ati0DSEzm18kesgGcURa+3OAfSGklY5ueuP9qGYCZzceZySKC1gQAgPkvXtNjpXatn258CmlYSOSSg/qwW+B8usH9SSM6Ec/lTxM7iR/3hgEh4Jpk2Kkh/UVikiP2MBUbAggiYjFfchajtB0QM/fuOFg64D8H8QHQTQ3CsowNT8cffdLnPn8+KyXPpWKb1FLtYJ0tbbU84asCyRYOEmiMwTtq+P63JJAYH9AfxTOFbUTlNXRyPlmTdpsAKlIXQZyDDJJGGbx7/l++BSHM5EDfg7HMm91CRM6B+fdqyA4AWA5iZd/++hWymDaid+OZ/G8EGgXB65DrhAi4Jw3NsORj5VRC4A8AW+tN2Q6KwKJM54b2HcD3EtMFCLojqVw7uxHwGdVQ992OjkC5JqSJPRXw2qlEsMpFo1OonMx9/7gE211z8iirLC1qeVUlxrLvtwgU4wBO+K2bpgCoVSX8ASqiRx682hgp/jBaL6UOBsC3pMTFdCyaaUI6HRyg0llicnptqWfdeTBMd3pdH4D/kyQupgf7HtaKZIj7gDpAdefxzOw5IjECoJxeewEQ6CZBpmwj+thvCq44QEWQmZ09BYjzLHFk4SQm/C2KIm3/svGZn/AFP+qVucYi4BbmbLnOb5rGr+zB6MugwjsGQFVwWxZxoyLr2bdtDTQLqgsAQt33LvdIe6UenvNaJUQqJ3Hi3ut+KSNLajMqfQV5EAnzRuZoEF8ivfZw74dqPbXeyP4MVSoE0DoAmkgafeXrqS+A08CpHBDTPpXRd9oGKYuoPrNqETlhD/w446Ul1H1AFaqV7bsArRzdIL5XfQS+AaeCtE+rbksUAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.easyplayer-container .easyplayer-icon-occlusion{background:url("data:image/png;base64,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") no-repeat 50%;background-size:100% 100%}.easyplayer-container .easyplayer-icon-occlusion:hover{background:url("data:image/png;base64,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") no-repeat 50%;background-size:100% 100%}.easyplayer-container .easyplayer-icon-occlusionActive{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAACItJREFUaEO9Wn+MVNUV/s59+wOqyM7bFaxAsDBvFqnWak0MYhBQUEqUVssi/aNJawg7bxaKScFqqKyt0gip4sK8XUKqjX/IL43RlqBSxLZWYqwWdWNh3oIlFClkebMUaXfZefc0983MMjv7Zt7MLrvvn93MPec753v33HPuPfcRhukZt+3YeCndCQpeCO3kmWVTTg+HKbocoKHWjpnEuBfMd4GgnJ7ADAcCJzx8iUlE0AGcBOMkiPYz4c1kNPzXodofNAE9fvheQCyBoLvBOA/wHunSHq7CiXM9+BdWGj39nGuxq8dWYyJdxCSh8UKAFoIwBpL/CMidTmzam4MhUzaBmpYjNwmNVoFEA9jdSEx7zzZFPhiM8dotiduYeAFIWw2Wu6TLm7pW1n9SDlbJBK7d+rev/c8du5aAVQC/Lok2dEWNv5djrJBsTat9s2BeA9AiBjaN1s499eXyW/9bCnZJBNIG0AbQKCb8OhkN7ygFvFyZUGvHQ8R4DOBuSWgs5QUFEkiD8nYAuyuJmk5Hw2fKdawc+fGtHeN6mbcAWMxES4NeVlECequ9DoxmMK9yYpHny3FkqLJ6PPFTEG0CyyedWH1zIbyCBPQ2ewYk3ndMI3CWhuTsOhb6uMQTEBWfOdGpr+Zj6ZbNELjdaTQO+tnxda6m9R/XCa74AoLnO42RfUNysJjyuvYqffyo7QA/AKCXQYuSZnhvrorelpgHSW9LSn2jK3r9P/PhBhLY1V6ld1b/HuBPHDOyZricn/jsidEXRnXvIOD+SzaoS7r8/a4Vxrv9SFiJDQDd5NT13IeGGy7mjg0gELLs9QQsQAp3OiuN/wwHgbrfHh4ju8UOEH3XB/9LkvxAbm3RW+yrUIE/MbA3aRqPFyTgFakKcZCJfhK0+gdLbKz1aUjDaJWG5xfCYKADcB9MmtM+zcpksuELMiVn5Ba7fjOgxxMvgjDKMSNLB+tgMb0xW4/UVUpth7dnCnp8so9uJbaD0e3EIj/OqvcR8PY2VPGqJL6jlAISZD9//Op4+zWSqncwcGewLh8il5eeXVF/OFc2XVDpPXDqwezeqY9AyLJfIpbHiuXcYMP+EnqLPREVUGEzMxCDcFC6vUu7mqYf95PV40eamcSUpGn8SI1fmgHLPiUFL+lqjPw50EgZAjVbjk0Wwt0J4LYgNQYOVBE9VKza17QlZglJOx3T+Hofgdq2o3dJKduSpmEEGSlnfOxWe6pwsZOA75Sgt1dUu0s6H552Pkg2ZNm2EKLxbOPU/d4M6FbHBma+IhkzYkHK+ePpKa34d9Kc2pY7VmcdrpfQVNh8OxCT+TVnutGAOZQKlAUQittxIrrgmOE1aQJx+30p8Xh+AQkC01vtR8B4VskxtFlJc8pfPLw2ezokVNjcEIThjRP9zomG+zJLkE7NZnu2EFjvxIzbMzNgH3c1zD233DgapJwd17fYM0DYD8Lo9G/s9GpX1p9ffm2nZ0DDgUAstcsVNAGMWQBtVG80UAeACk3NxTuOaUzOEkg5KVwx4BhYBE237P0A5vYTIXreiYZXpWf1SDNIrCsIwfyCE4s8rA7/qV73EIBrADzimMamQBItdrVegQuOaVSQAui96H6WjBnjAhUzAnXWsXoJt1+Ozgy1O6Zxo+e8JnbBlQ1+JBiIJ02jqW824/Z8EN5KT6R8Uv1R6dzDyTz56T0Ut89UVmk3Ut1W+xZXYlsyapSSKTy4Osu+XwKv+xFWu0aBio1gXA+BhgEkGL9xYsbP8nVrrY4VDG7JklAOhyz7AAGzc3/L6oVa7Y80gWWDIhCKJ9YQ0TO+MybwTVHpnnB7tDcIuDqXBDM/nYxF1haaabX4ZS+8SFAJRa2lrGx+gukjMJgQCllHFxLkH3wc+coxjTHq95otn08mUflLltoTXU1TfKtqqSHrJ9cXQt6Cs+x+izgni6iicgrg0wBtdkxjtwfmHUSqTgGkmlW5jzrB9W0Xai37MQYWAZioml0ADjmmcfNQHPd0cxdxhkC/NFrXdvRWKeWH+YYY+HnSNLzQ0S37OXgtlpyHaYETC3sNqlrLfoOB+/IwzjumcdVQCQxMo/mFzHvD1ertV+UbIynvPttUv7/muS9qRHVK5Xqv0hLT2rOx8NPq/0JrhIF3k6YxZ6gEfApZx68Aqc4Bq7PgqjqDMMPHWCcTzUlGw+211pHvMcRrquXimEZDxvmlRPSyr5MFMlC5hHQrsREQ3Y4Z/oVXyNLNWd7mmMb0LFiOc374Ddn1oFv24r61obCsRAuBVvgpFTqYl0/A/pyJlqnm8KXtdKt9glz+Qe5ZtNayP2ZgwKJjRiwZMyw/w7pl71JNqQHrh/nRZCyyoVxn8+W9fqpGrzhRY5IXupdCJvEiwMfzK57vYswc99KxKGdDCHaihldB+xWfDDiDNyfNyMqhOu8lD6860+TssbKkI6WuSj3oW0yYSZBnwHxKEc3dtGUbYF5Xg/k6CNHDTB9o4A87zfBHl8P5okfKNLvyDvV+BC6Ho4Uwih7qlVK5bZWRJFBSWyUTw+sJtLCSMC+oEz1SBNIda+xj8J6ijS1FQF1kdLtjVYE6ns3thaZ0pAhkMtvkUdq5OfkXHwWau96FxsdBbfWRIJBts0vCLX79qoKt8+zFRrH2+ogQsGwudtFR/IIjeyws0GYvtl8fajbKttVBaM7WGD/MwMuL7EUHwBuRoqeGq2PdV1C9TjSvBWh1sYuNrHwgAS+9pi88tgIYx0TPDFfnOhO2jwI4Iym13O9CI38WSiLgKe1qrwp1VjePxDVrsq6nOf8io1BIlk4gg5B/0S01emew/VSvz+ny3BG56M5/A6odz6T9kIB5DHwFxtsssbuUTw1IYDEI8wm4koF9xO7LI/apgd9UquYwS74HzHeU+LHHeyToLdWcHWq2KjuESjU4Up/b/B9u0kgtWdqPkwAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.easyplayer-container .easyplayer-icon-occlusionActive:hover{background:url("data:image/png;base64,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") no-repeat 50%;background-size:100% 100%}.easyplayer-container .easyplayer-icon-logSave{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAA1RJREFUaEPtmT1oFEEUx9/bFLFKJzG2WiknZObFxlO8RtFC8SuFWlrYGBtRRNCghV9YmFQWgoVaaAS1ULRRRKvbmYBBQezVYBOIGFMkT0ZuYXPufOxdspuDO7jibmfe/H/z3sy8eYvQ4R/scP3QBSjbg8EemJyc3La4uHgUETcx82YAWNum+N8A8IWZrxLR41ZtBQForUeY+Xarg/j6MfMVIrroa5f13AuglOJWDLfQ56aU8mzefk4ApdR9ADiW12ir7RFxXAgxkqe/FUBrvYeZXzQbY+bh3t7ed5VKZTrPQM2eNHYQ8VGGjTtSypOhtq0AcRyPIeKptCEppTfkbAM3AxhbcRwfyYJg5nEiCvKEVZBS6hUA7EoEIeJ+IcTz0JlpbpcFYNrYIBDxlhDijG88lwd+IGJ/YoCZ1xPRd5/BUA/Mzc31VavVWRcEM18jovOuMV0eWLL7tBM+RoBS6isAbEzERFFUHRwc/JD8dnjishDikg2iSIAJADiU8uhdIjqRFuZYEweI6Gmuc8AWs6EhVK/XR3t6eg4zMyKiEQ/MvOSwQsS3iHhhZmbmY61W++UIp/dSyu2FAmit3zDzTjMoItaFEFuVUt8AYCB0ElLtZqWUfYUCZHlQKXUQAJ60AAC2Nbhia8AWglprAoB7jYQwmGXVACSKzRqJomgLAJjvBh/JqgPwCQ7dRAoPIZ/w5HkXIHQGQlOHvCd56PjdEOpoD6TShT/MfD19OXeFQCPnOYeIaxYWFiaGhoZGQ9Pv5nZthVA6XWjkOsMJRGj+b/IhIURtVQCkIUJvYKUCONLf/+67tjuw+T+rLlTYLmSDCDmwbOIbF6CgC1Vba8B3m3JBuMQXDuC4iGQy+MSXAhAKESK+NAAfRKj4UgFsEHnElw5gBGit9wFAUqy9kbco1vY2Gsfxsha2QrbV1K42gIimAPDvw8zTRLQuy0ZhpcU8AMZ7zPws1ee1lHJ3LoDlLu7mAcioZFuLvYWV130AU1NT/fPz8zuyqtWIuFcI8TKXBxo7QaEvOCyQD6SUx20T4K33F/iKKVOj7yrqBWhsiSv6ki8zNBBPCyHGfKEXBGCMrMBr1mZtPxHxEzN/jqLoYbr07oIIBvDNRFnPuwBlzXwybsd74C95KWhPrxIhsgAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.easyplayer-container .easyplayer-icon-logSave:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAthJREFUaEPtmTuMTUEYx3//TrWdeLRUJCrReISGUBCvLVAqNGiEiASh8IoClUKyBQqPBAWhsREqnYRE9NgoV0T3yci5m9mzc2bmnHvvOXuTO8ktbs7MN//ffPP45hsx4kUjrp8xQNcezPaAmW0EDgFrgLXA0j7F/wG+AlckPW5qKwvAzE4At5p2ktHusqTzGfUWVEkCmJk1MdygzQ1Jp+u2iwKY2X3gcF2jfdS/I8l5O7tUApjZTuBlwNIk8E7STHYvQMCTzs6jgI27ko7l2o4B3AaO+4YkJadcVcdlAGfLzA5WQGR7IgbwGtjuCdoj6UXuyJTrhQBcnQjETUmnUv3FAH4CyzwDKyX9SBnM9QAwIWk2AXFV0tlYnzGAebtPP9OnEPkNWO2J2STpQ+9/xBOXJF2ogmgT4Amw3xNyT9JRX1gEYq+kZyGIoQGY2UXgAPyPt5x4V8qH1TRwDvgk6XdkOr2XtLltgLfA1qLTj5I2mNl3YEWDdTQraaJtgAVryMz2AU8bAFC1Boc5hYKbgJmtB6aKgDCbZdEAeLuOWyPrit+qFMmiA0gJrjr4yu1an0Ip4Z6Hss6hMUBu6FD3JB9PodwRGGkPeOHCX+CafzmPDUAR85wBlrgwQ5LbUueV3AHsaxGbmR8uOAGTPYga8f+0pG2LBWAOosYNrFOAqith6L5bdQee81optG7nHIjE8DlnVlB8EVa3AxCJ4VMAleJbB2gAERXfCUANiKT4zgAyILLEdwoQgcgW3zlAIWA30EvWXq+bFBvESTzQxFZqSyqdAe7i7xIAvTIjaXnIRmupxZoAznvPvTZvJO2oCzDQ5G5NgPKbRGWyt7X0egrAzFwedktFtnqXpFe1PFAsxLYfOEIaH0g6UjUAyXx/i09MQY2pq2gSoPDEsB/5QuJPSnLrMFqyAAqIQT+zloX9Aj4DX4CHfuo9RpANkBqJrr6PAboa+V6/I++Bf0in3kCazcMZAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.easyplayer-container .easyplayer-icon-zoom{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAkUExURUdwTMDAwL+/v7+/v7+/v76+vr+/v7+/v7+/v7+/v7+/v7+/vxtcv/AAAAALdFJOUwBVdZCpGdZE7C3B0wnY6AAAAV9JREFUOMt1lDtPwzAQx20ghGwVsHVJhQRDlsywWKqEULsw8FhRJ2iWiglGGJvFCw8xIVVCSEwkKU25L4ftpOHs2Cclsu7v370smxCLecRh+xOH8Ja5kGEs/6dtYf1XONcWZurbwwRCQjYZ9l7uHAPAOBHpI1QC/QSY9g84ldmnAn7Z3htwsfZnvSe54eJd5hlcC7gccxTwSETZEr5+714vLRdfkFraVNtetXLpR7ha+mkHCV1Y/q8ZOW8AgDkecsIaAEIcGbIGyLUq4KcBYl0o7QAB4FZACBMrQKpaJOCZQqyAIhgayYEpgD1DZghXCvBTNJFKmCvgzmhcCEsBwMjSRx6BslYftRX0JLYKrAsLqzDC54EFMwvy58QhMM8hFNq0UpwET+sLC9/4BmEBTytyRCIbDoAEiR1Qp1dbRxfoyv9g3ogaKVuXhVZZbtqX6Ez6H23PxG4CM259QDwt/h8ABfK8nDqSAAAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.easyplayer-container .easyplayer-icon-zoom:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAMAAABg3Am1AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAzUExURUdwTP///////////////////////////////////////////////////////////////8/RimEAAAAQdFJOUwCCyreU7KZVRCDaZnETLwj6WaYVAAABUUlEQVRIx5WV2Q6EIAxFoVBWxf7/184AOnGUsvTBqDmXrqRCzNou1kwGtyZIQNuiD0P6evWTURFUMtIoPO+iVoGIZPkMqkdKA0jZgoJ6suQc2EoiGBldOoQ9HSDk5+GTs1Fqo9IlcEpvNv3qv0MBhSalIFSv3+MCJCY8fUaCxasycrMu9dp5VTUhubXZ6CqsAvn66ZAsx+e8fON37oT3bZ4aiRU0kDlavGSrQI95HPBZACt8FuCL16IruBVkzBeBW+CLYHvyfiDQd96IpHpOMqP++fAq9VMQ7rwrM5+6gjwG/3y/D/m8ylPYpvpAeqO7DfvwMPO9D6jnBabG56YFZx77fEjD+9AyLdYEhp8nxoNh5wmJtfY8AS+wzIZZrJNcC4h3wV8IH1p87Iyfnc6XVaAd7ICHAsebw97zgDSxZ/yvViiPuYUfTe650knM2+7Ywz9yOCklzohLOwAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.easyplayer-container .easyplayer-icon-zoomStop{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAMAAABg3Am1AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAzUExURUdwTP///////////////////////////////////////////////////////////////8/RimEAAAAQdFJOUwDjmTC6Y0KBVakX8s8iC3JYR1wyAAABVUlEQVRIx62V2baFIAiGcwJRS97/aU/Zbtht0VzrcJOuvl/AAabpXy1RF0F/m2h2PX5mzucEuO9gMon1MY7KlG8w4LImC1XFQmxDGVkm1DYpXi0qS1gXTEGzKoqNS1ajAxPqJDikFLcFS+aukYJffRfXnAj9kYUXFVi86wzzPjuCFRXBwS3KaC/Pt02Ww7uf1jz3BVYtX/OsyDQFDn7yswPXb+Ovs39eJJWwxrOXV4thgC+//QBf/uMAXwAa4AuRBvgdWR58CB2B+eaRG5e8QO7Jn2sIAvzhbdsDnXzev8q0BengGXv8EciH3y1CY5++yI/BRNx82g/La7lc7b0Am/tUC6n3HoZ4SbDyy5BgzSNivV6wbPXeIPOpHlOU+CjkTQKvQOpXdRdJvn+5xttWQa4EZUOzluonT6+q72X6Zb0+T/lNhQd7hg9vm8LWUhW5gT4iN7c/0ZUo8Q3AttYAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.easyplayer-container .easyplayer-icon-zoomStop:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAqUExURUdwTBKV2hGW2xKW2xKW2xKW2xGV3BGW2xGW3BGX2xKW3BKW2xCX2xKW2yDN61kAAAANdFJOUwCAVKxm3T/DmhrxKw97YQBGAAABaklEQVQ4y2NgIA6wGqCLMCqAqV4HdIm9F0Ek22UMM9hiG4AkVzQDA+cmx+YyJJnDlw8wMNQaNpfevbu0QgxJgrN3JQPD3VvhjU57kESnOZqvvXuJgcEXxVFMEkDt1w11gZYwoVgue3d5SzaQSgCydZG1TMkBU8vBuq9guBcqNBNDgj0GQrMEb0CVYEmA2ViANRQZ795tQPZduADciXcVUNSthGu4hGrAJawagBIXsWoAClzGqgEocRWrBqDIrQNQDTPRXZ8A0cB41wBNQgGiQfbubTQJAagGDB0GIA0OsnevbkCTCADiu4J374ahW34JqAEIbiXMRJOAgkvMKJYgJBx6717AKiF4F4eOu+jxgQCXGHBIKPDgkBC8JYCURJDtQHYWN4oEcvpZiyR+C9lZtkgSKKG1CyGOGrxItleixjrcLFBWRAYcMIkG9NQMiY67N7AlcxAQwMwA6SBxM2xZQ3jtVRPsRQ83sg8ACMIUxzzE8wsAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.easyplayer-container .easyplayer-icon-close{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAeUExURUdwTM3Nzc7Ozs7Ozs3Nzc3NzcrKys3Nzc3Nzc3NzePZJxkAAAAJdFJOUwCtKdPBGAmNTt3jdDcAAADfSURBVDjL1dOxDoIwEADQgwR07GTCZtI/IGHgAzBhM9EPkMTB0Y3V0ZXIcn/rtRR6pefgSKeSu3ellyvA9lZ/5F9p/3K7PZY8oPG5BD6MpPUSgIITzdIStifAshjRQV1PCFT8TxaicTzzwEwINOEdHVmDmcTAkRhMhMAp7iQRjcMtDhCp8SA1v0ARGIIK/gnkv0p1OBTS4QRUIpE7DiYYXTBrzcld3JIrAarXrps4AVNwRSZgExoJmIyAaAdsShUMn/JF2fh4YEkpAcgvnuwYCIb6EbbbP4PsDfLD2dD6Av1qTvAQlzUTAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.easyplayer-container .easyplayer-icon-close:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAeUExURUdwTP///////////////////////////////////8kBMKEAAAAJdFJOUwCt0igUwJdJePGbgLgAAADcSURBVDjL1ZMxEoIwFESTCaOWFDapqeicnAALTiANnaWlnVewDTMW/7b+aCAb8jkAVIHN2/lsNkrt73lf8M08nnF1pAYFR/dFmAAx7SIoi4iDbRrWDMAuQFzmmxAGbjjJgjj6dCjMCAND/o8RWQMzUgIRKYE/wsC5TJIRR74rBUZaqqXwLZEXT0WTDGwLW1aavJWQir9qadw++NgykWoMNtcykh8Q5EECgr5C+jjpGjHjPGhPU5eVzyfPJitfnUyhPg6ywMKZ7BygcYcsPCj1Kc8uXYPqpeSLs6PnC4w8S+8OJ9MLAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.easyplayer-container .easyplayer-icon-narrow{background:url("data:image/png;base64,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") no-repeat 50%;background-size:100% 100%}.easyplayer-container .easyplayer-icon-narrow:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAABS1JREFUaEPVmgmoVVUUhr+fosKC5ogGSsqIpKQwMqjIBpsICdMGQ7ISo4wGApugJCoxLClssElpNEuaI5okKjOI5onKhEQrSiKiaKA/Vu3zOu+8c88593qvj7fgcO99e6/h33udtdda+4khThri9tM1ALaPAQ4Btso9GwNfAyuBb7JHUnzvCq0XANuTgePSs00bFr0L3BuPpF/b4BswtSMAyfDzgYPXRznweQ7ID53IaguA7ROBGcC4TpRV8IRL3SNpVrtyGwOwfVYoaaHgW2AZsBT4CliXnt+BXYBd02d8D5c7rIWc+ZJigRpTIwC2rwauKZH6NLBA0jONNQK2jwJOAU4FtijwPgpMkRTga6kWgO2XgSMKkjoyvGiN7d3SwpxZGHsVOEPSmjoElQBsPwScVhAyR9LMOsHtjNu+Hri8wPMBMF7SqipZLQHYvgq4tsA8S1KZK7Vjb+lc24cDsfJ5ul/SlLYBpGjzVIFxsaTw2Z6R7S2BnwoKpkta0Epp6Q7YfqEQKl+XdGjPLM8Jtn088GzuT9/FOyjpkzL9AwCkQ+qB3OSPki9GOrBByPZ1wBU5ZY9LOrkpgDcLJ2zlFvYCke2NgFcK58VkSRFU+lG/HbA9EYg4nNE7kkb3wsg6mSWesEhSMdz2z0Zt3wRcnBO+wVc/0217WMpesyRxraSd6nbgfWC/NOm3OP4lRVowKGQ73sXIeDMaJ+nFvDF9LmQ78pR8nr5U0oRBsTwpLQnn8yTlPeR/F7I9HngiZ/A0SXcPJoDQbftHIHOjLyTt1WoHLgBuyQ3uKylC6KBS8UyS1C/w5F3oRuDSnLWbSPqzynrbkSdFfG6nGstE3inpkbrVsf0Y0OfKVQAWA5OSwJWS9mggPEJuhN5OaLWkqBMqyfZ9QF/4rALwPHBskrZC0pgGwsPFRtbNazH+s6TIfeoA3JqqwH/nVQG4HTg3SVsnadsGwiMznQYMiM91vKmgP7tuXjHVrgJwGXBDTuC2g3kGZHbYXhQVWva7CkCkyg/nAIyRtKJuhXo9bjuSyOFJzypJ2ff/XCqHdBTwXs6gmZLm9NrAKvm29wY+zc1ZKGlqnqeYzH0PbJ8mLJM0dpABTAfuyNkwVdLCKgDFGniEpC8HC4TtaONEOyej4cUaubgDFwLzcgw9q4HrFsV2pAxvANuluaWpfRHAAUAUNJsmpmhrjJa0tk5ht8dtRx0cITqjAYlcv5c49zJHKI2QmtEG3wXbcaDGwZrRamBsmTuX1cTxEi8H8qnEJElLur3KreTZfgk4Mjc+Q9L8svmtuhLnAUWGka06A90EZjt6UdGTymiJpCxHG6CqqrHVL4lKnMMkRaXWE7J9M3BRwXUmSnqrlcK61uLbwIEF5lGSou3XVbJ9F3BOQeglkgJUS2rS3P0F2LwgYYKkaKWvN9neGYgT//QSYR9Hil/lurUAQqjtOMyK9UEkWXMlfdgJihTn45CK1GCHChmVIBoBSCBixU8qKIrdmRuXG5LigqOWbO+fjA7jizsbqcxsINLsfJ3REkRjAAlEVQUWbfDncjc0UYz/BewJjCh8lgGNZvJsSctt75MabLUg2gKQQBydSrwyn63dgRYTrpQUdwR91BRE2wAyDbYPSk2nuPOKVW6X4t15EHhS0mdlzE1AdAygsFpxwX0CEJcUuwM7lhgULhW5VRgeHYnXmiBuAeI2SXHN272b+gKgzRKQrYFIBNdI+qOJwQ13oi8/68oOdGpYO3xpJ2LV/45zI/t3hSEDoBXYIQ/gH99H3EBePlczAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.easyplayer-container .easyplayer-icon-expand{background:url("data:image/png;base64,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") no-repeat 50%;background-size:100% 100%}.easyplayer-container .easyplayer-icon-expand:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAABYZJREFUaEPVmXmoVVUUxn8f0WRzVkJlIWVGUmIJWWADTVaUldFclCnSQBQYNv1RSCWGVFRSlkRh0GBS2YBmJWGJUBHNNJiYWQSZfwTRxBfrce5jv/3Ovefc++4z3oKLD/fea61v7bXXdMQQJw1x/ekKANs7AOcA44Ddkt/2wJbk9z2wTNIP3TLcgADYvhw4q/gFiLq0ClgBLJf0Ud1DZfs6AmD7UuA64JiBCAf+BR4GHpH0TSe82gJgO6x9PXBqJ8JanPktQABzJP3VDu/aAGzfADzYhPnPQLjFUuA7YHPx+xPYHxhZ/Bt/nw4c14TP+8CFkjbWBVELgO2ngfD3nJYBCyW9Wldg7LN9cigKXATsnJ39HTi+7tuoBGDb3VI852P7QOBO4MoSGaMlfVtlmJYAbL8HHJsxmSdpdhXjdtZt3wPcWnJmhKRfWvFqCsD2PODm7PBdksJiXSfbJwDvZIzfAM6VFG+plEoBFNHmlezEc5LCZweNbEcSjMSX0iJJ09sFsDwLlaslTRo0zRPGts8AXstkTZYUOvWjfjdQJKnFyc7PgCmS1m0NACHD9t3AbYm8yNiT6wKIWJxm2JmSFm4t5QsA2wBvZ/liuqRFuR59bsD2JcAzyaYPJU1oV3nbF8fjAw4DlnTy8Es8YYWk06oAPJnF5I6sb/tF4LxC2CZJ+3VghGFAVK17JmdHSVqf8uq9AdtR+kZNsmOx4Y9I/5KiLGiLbEc4jLDYQ5IqE2aZANvxFqNwbNBNkh5oBiAsFpZr0FJJU9vSvNjcRQBRPKbhfJWkE5sBuBe4JVmcIemJ/xNAyLb9a+JGGyRF+dFLqQstAK5J1g6XFCG0berWDRQA8py0raR/et2z8YftiD4RhRq0naS/W2lv+2wgIkNEm5x630BRaufrj0l6tso6tpcAqSuPkfR1GYAoic8sFtZJOqgG8w+Ao6r2NVnfKCn6hJZkO4+MkyStLgPwJhB1etBaSRNrMA8XG1u1r8n6Fkl7VJ21/VDRBTa29nHt9A28AJxf7NosaXgN5lGZzgD2rdpbsh6N0MyqcyWl9si0Y0sBPA6kVd/wTnJAKNTlR/wUcEUCdBdJ0bX1UArgPmBWsnGipLVVFipb7zKAKCJHFXL6uV0K4NpiMtDQabakaGrapm4BsH0o8GWiwEuSosbqpRRARIQNyVq/rFcXSRcBxBt5NJHbvJQo812gVmOdA+sigCifpyX8x0v6uPQGCgDRWEeD3aCOemDb0XrGm9q1KKevrnt7jX22DwFiqLBX8X8rJZ2S88n7gSOBaGiiMg3aBEyQ9FO7Cgx0v+1ooiJEN2iapEhqfaispcyLuo5uYSAAbEf7GBOJBkXpcETZdKIMwN7AGiAtJS6QFIluq5DtlcBJdVy52VglD6nBa6ykLwYbge05wB2JnLckNUqcfuJbDbbS0qJxcJik6NQGhWzfD9yYMI9ucKqkGByXUtVo8ceSOmecpE+6jcB2XsqEiFmS5reSVQVgNNBbeyeMwioxSh8w2Y6GPzJ+2os0+H4OxPtr6rqVzbbtMcBXJZpGkTVf0qedoCjifCSpq4B9WvBoCaISQDC2PQKIN5GPF6MqjCuOsqOpn6bK2R5fKB3K75QpHpPouUAkvrTPaAqiFoACRMxpwuqNniE3WsxrXk++0EQzHr3rwVGSZP+WGTymD3MlrbEdLerzdUDUBtCQaDvSeXyQKPPZTrwpztwuKS1h4tZrgWgbQALkaOCy4hNrn1FHTRTxdmKQ8LKksjdWC0THADK/jtQ/BQhQBwBl7Wi4VNRWoXhMJN6tA7TJTSyQFJ95u/OlPlfEdjzOALI7EIVgzEfb+nyaGSh3p4h+Pd1jV26gjiUHuqe4ibD6eklRqvfQkAHQzABDHsB/7aMVT352GH8AAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.easyplayer-container .easyplayer-menu-icon-text,.easyplayer-container .easyplayer-quality-icon-text,.easyplayer-container .easyplayer-scale-icon-text,.easyplayer-container .easyplayer-speed-icon-text{font-size:14px;min-width:30px;height:20px;line-height:20px;cursor:pointer;text-align:center}.easyplayer-container .easyplayer-speed{box-sizing:border-box;text-align:center;font-size:14px;color:#fff;width:90px}.easyplayer-container .easyplayer-menu-list,.easyplayer-container .easyplayer-quality-menu-list,.easyplayer-container .easyplayer-scale-menu-list,.easyplayer-container .easyplayer-speed-menu-list{position:absolute;left:50%;bottom:100%;visibility:hidden;opacity:0;transform:translateX(-50%);transition:visibility .3s,opacity .3s;border-radius:4px;overflow:hidden;width:-moz-max-content;width:max-content}.easyplayer-container .easyplayer-menu-list.easyplayer-menu-shown,.easyplayer-container .easyplayer-menu-list.easyplayer-quality-menu-shown,.easyplayer-container .easyplayer-menu-list.easyplayer-scale-menu-shown,.easyplayer-container .easyplayer-menu-list.easyplayer-speed-menu-shown,.easyplayer-container .easyplayer-quality-menu-list.easyplayer-menu-shown,.easyplayer-container .easyplayer-quality-menu-list.easyplayer-quality-menu-shown,.easyplayer-container .easyplayer-quality-menu-list.easyplayer-scale-menu-shown,.easyplayer-container .easyplayer-quality-menu-list.easyplayer-speed-menu-shown,.easyplayer-container .easyplayer-scale-menu-list.easyplayer-menu-shown,.easyplayer-container .easyplayer-scale-menu-list.easyplayer-quality-menu-shown,.easyplayer-container .easyplayer-scale-menu-list.easyplayer-scale-menu-shown,.easyplayer-container .easyplayer-scale-menu-list.easyplayer-speed-menu-shown,.easyplayer-container .easyplayer-speed-menu-list.easyplayer-menu-shown,.easyplayer-container .easyplayer-speed-menu-list.easyplayer-quality-menu-shown,.easyplayer-container .easyplayer-speed-menu-list.easyplayer-scale-menu-shown,.easyplayer-container .easyplayer-speed-menu-list.easyplayer-speed-menu-shown{visibility:visible;opacity:1}.easyplayer-container .icon-title-tips{pointer-events:none;position:absolute;left:50%;bottom:100%;visibility:hidden;opacity:0;transform:translateX(-50%);transition:visibility .3s ease 0s,opacity .3s ease 0s;background-color:rgba(0,0,0,.5);border-radius:4px}.easyplayer-container .icon-title{display:inline-block;padding:5px 10px;font-size:12px;white-space:nowrap;color:#fff}.easyplayer-container .easyplayer-quality-menu{padding:8px 0}.easyplayer-container .easyplayer-menu-item,.easyplayer-container .easyplayer-quality-menu-item,.easyplayer-container .easyplayer-scale-menu-item,.easyplayer-container .easyplayer-speed-menu-item{display:block;height:25px;line-height:25px;margin:0;padding:0 10px;cursor:pointer;font-size:14px;text-align:center;width:50px;color:hsla(0,0%,100%,.5);transition:color .3s,background-color .3s}.easyplayer-container .easyplayer-menu-item:hover,.easyplayer-container .easyplayer-quality-menu-item:hover,.easyplayer-container .easyplayer-scale-menu-item:hover,.easyplayer-container .easyplayer-speed-menu-item:hover{background-color:hsla(0,0%,100%,.2)}.easyplayer-container .easyplayer-menu-item:focus,.easyplayer-container .easyplayer-quality-menu-item:focus,.easyplayer-container .easyplayer-scale-menu-item:focus,.easyplayer-container .easyplayer-speed-menu-item:focus{outline:none}.easyplayer-container .easyplayer-menu-item.easyplayer-menu-item-active,.easyplayer-container .easyplayer-menu-item.easyplayer-quality-menu-item-active,.easyplayer-container .easyplayer-menu-item.easyplayer-scale-menu-item-active,.easyplayer-container .easyplayer-menu-item.easyplayer-speed-menu-item-active,.easyplayer-container .easyplayer-quality-menu-item.easyplayer-menu-item-active,.easyplayer-container .easyplayer-quality-menu-item.easyplayer-quality-menu-item-active,.easyplayer-container .easyplayer-quality-menu-item.easyplayer-scale-menu-item-active,.easyplayer-container .easyplayer-quality-menu-item.easyplayer-speed-menu-item-active,.easyplayer-container .easyplayer-scale-menu-item.easyplayer-menu-item-active,.easyplayer-container .easyplayer-scale-menu-item.easyplayer-quality-menu-item-active,.easyplayer-container .easyplayer-scale-menu-item.easyplayer-scale-menu-item-active,.easyplayer-container .easyplayer-scale-menu-item.easyplayer-speed-menu-item-active,.easyplayer-container .easyplayer-speed-menu-item.easyplayer-menu-item-active,.easyplayer-container .easyplayer-speed-menu-item.easyplayer-quality-menu-item-active,.easyplayer-container .easyplayer-speed-menu-item.easyplayer-scale-menu-item-active,.easyplayer-container .easyplayer-speed-menu-item.easyplayer-speed-menu-item-active{color:#2298fc}.easyplayer-container .easyplayer-volume-panel-wrap{position:absolute;left:50%;bottom:100%;visibility:hidden;opacity:0;transform:translateX(-50%) translateY(22%);transition:visibility .3s,opacity .3s;background-color:rgba(0,0,0,.5);border-radius:4px;height:120px;width:50px;overflow:hidden}.easyplayer-container .easyplayer-volume-panel-wrap.easyplayer-volume-panel-wrap-show{visibility:visible;opacity:1}.easyplayer-container .easyplayer-volume-panel{cursor:pointer;position:absolute;top:21px;height:60px;width:50px;overflow:hidden}.easyplayer-container .easyplayer-volume-panel-text{position:absolute;left:0;top:0;width:50px;height:20px;line-height:20px;text-align:center;color:#fff;font-size:12px}.easyplayer-container .easyplayer-volume-panel-handle{position:absolute;top:48px;left:50%;width:12px;height:12px;border-radius:12px;margin-left:-6px;background:#fff}.easyplayer-container .easyplayer-volume-panel-handle:before{bottom:-54px;background:#fff}.easyplayer-container .easyplayer-volume-panel-handle:after{bottom:6px;background:hsla(0,0%,100%,.2)}.easyplayer-container .easyplayer-volume-panel-handle:after,.easyplayer-container .easyplayer-volume-panel-handle:before{content:"";position:absolute;display:block;left:50%;width:3px;margin-left:-1px;height:60px}.easyplayer-container.easyplayer-fullscreen-web .easyplayer-controls{width:100vh}.easyplayer-container.easyplayer-fullscreen-web .easyplayer-play-big:after{transform:translate(-50%,-50%) rotate(270deg)}.easyplayer-container.easyplayer-fullscreen-web .easyplayer-loading{flex-direction:row}.easyplayer-container.easyplayer-fullscreen-web .easyplayer-loading-text{transform:rotate(270deg)}.easyplayer-container .easyplayer-contextmenus{display:none;flex-direction:column;position:absolute;z-index:120;left:10px;top:10px;min-width:200px;padding:5px 0;background-color:rgba(0,0,0,.9);border-radius:3px}.easyplayer-container .easyplayer-contextmenus .easyplayer-contextmenu{cursor:pointer;font-size:12px;display:block;color:#fff;padding:10px 15px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-shadow:0 0 2px rgba(0,0,0,.5);border-bottom:1px solid hsla(0,0%,100%,.1)}.easyplayer-container .easyplayer-contextmenus .easyplayer-contextmenu a{color:#fff;text-decoration:none}.easyplayer-container .easyplayer-contextmenus .easyplayer-contextmenu span{display:inline-block;padding:0 7px}.easyplayer-container .easyplayer-contextmenus .easyplayer-contextmenu span.art-current,.easyplayer-container .easyplayer-contextmenus .easyplayer-contextmenu span:hover{color:var(--theme)}.easyplayer-container .easyplayer-contextmenus .easyplayer-contextmenu:hover{background-color:hsla(0,0%,100%,.1)}.easyplayer-container .easyplayer-contextmenus .easyplayer-contextmenu:last-child{border-bottom:none}.easyplayer-container.easyplayer-contextmenus-show .easyplayer-contextmenus{display:flex}.easyplayer-container .easyplayer-extend-dom{display:block;position:relative;width:100%;height:100%;display:none}.easyplayer-container-playback .easyplayer-controls{height:48px}.easyplayer-container-playback .easyplayer-controls .easyplayer-controls-bottom .easyplayer-controls-center{flex:1;display:flex;box-sizing:border-box;justify-content:space-between;font-size:12px}.easyplayer-container-playback .easyplayer-controls .easyplayer-controls-bottom .easyplayer-controls-center .easyplayer-controls-playback-time{box-sizing:border-box;flex:1;position:relative;height:100%}.easyplayer-container-playback .easyplayer-controls .easyplayer-controls-bottom .easyplayer-controls-center .easyplayer-controls-playback-time-inner{width:300px;height:100%;overflow-y:hidden;overflow-x:auto}.easyplayer-container-playback .easyplayer-controls .easyplayer-controls-bottom .easyplayer-controls-center .easyplayer-controls-playback-current-time{position:absolute;left:0;top:0;height:15px;width:1px;background-color:red;text-align:center;z-index:1}.easyplayer-container-playback .easyplayer-controls .easyplayer-controls-bottom .easyplayer-controls-center .easyplayer-controls-playback-current-time-text{position:absolute;box-sizing:border-box;padding:0 5px;width:60px;left:-25px;top:15px;border:1px solid red;height:15px;line-height:15px;cursor:move;background-color:#fff;color:#000;-webkit-user-select:none;-moz-user-select:none;user-select:none}.easyplayer-container-playback .easyplayer-controls .easyplayer-controls-bottom .easyplayer-controls-center .easyplayer-controls-playback-time-scroll{position:relative;width:1440px;margin:0 auto}.easyplayer-container-playback .easyplayer-controls .easyplayer-controls-bottom .easyplayer-controls-center .easyplayer-controls-playback-time-scroll.one-hour{width:1440px}.easyplayer-container-playback .easyplayer-controls .easyplayer-controls-bottom .easyplayer-controls-center .easyplayer-controls-playback-time-scroll.half-hour{width:2880px}.easyplayer-container-playback .easyplayer-controls .easyplayer-controls-bottom .easyplayer-controls-center .easyplayer-controls-playback-time-scroll.ten-min{width:8640px}.easyplayer-container-playback .easyplayer-controls .easyplayer-controls-bottom .easyplayer-controls-center .easyplayer-controls-playback-time-scroll.five-min{width:17280px}.easyplayer-container-playback .easyplayer-controls .easyplayer-controls-bottom .easyplayer-controls-center .easyplayer-controls-playback-time-scroll.one-min{width:86400px}.easyplayer-container-playback .easyplayer-controls .easyplayer-controls-bottom .easyplayer-controls-center .easyplayer-controls-playback-time-list{position:relative;background-color:#ccc;height:48px}.easyplayer-container-playback .easyplayer-controls .easyplayer-controls-bottom .easyplayer-controls-center .easyplayer-playback-time-day{height:100%;overflow:hidden}.easyplayer-container-playback .easyplayer-controls .easyplayer-controls-bottom .easyplayer-controls-center .easyplayer-playback-time-one-wrap{height:8px;z-index:1}.easyplayer-container-playback .easyplayer-controls .easyplayer-controls-bottom .easyplayer-controls-center .easyplayer-playback-time-second-wrap{height:25px}.easyplayer-container-playback .easyplayer-controls .easyplayer-controls-bottom .easyplayer-controls-center .easyplayer-controls-playback-btns{display:flex;align-items:center}.easyplayer-container-playback .easyplayer-controls .easyplayer-controls-bottom .easyplayer-controls-center .easyplayer-playback-time-minute-one,.easyplayer-container-playback .easyplayer-controls .easyplayer-controls-bottom .easyplayer-controls-center .easyplayer-playback-time-second-one{float:left;width:1px;height:8px;margin:0;cursor:default;position:relative;z-index:1}.easyplayer-container-playback .easyplayer-controls .easyplayer-controls-bottom .easyplayer-controls-center .easyplayer-playback-time-minute-one.active,.easyplayer-container-playback .easyplayer-controls .easyplayer-controls-bottom .easyplayer-controls-center .easyplayer-playback-time-second-one.active{background-color:orange;cursor:pointer}.easyplayer-container-playback .easyplayer-controls .easyplayer-controls-bottom .easyplayer-controls-center .easyplayer-playback-time-minute-one.start,.easyplayer-container-playback .easyplayer-controls .easyplayer-controls-bottom .easyplayer-controls-center .easyplayer-playback-time-second-one.start{background-color:#999}.easyplayer-container-playback .easyplayer-controls .easyplayer-controls-bottom .easyplayer-controls-center .easyplayer-playback-time-minute-one:hover .easyplayer-playback-time-title-tips,.easyplayer-container-playback .easyplayer-controls .easyplayer-controls-bottom .easyplayer-controls-center .easyplayer-playback-time-second-one:hover .easyplayer-playback-time-title-tips{visibility:visible;opacity:1}.easyplayer-container-playback .easyplayer-controls .easyplayer-controls-bottom .easyplayer-controls-center .easyplayer-playback-time-title-tips{pointer-events:none;position:absolute;left:0;top:100%;visibility:hidden;opacity:0;transform:translateX(13%);transition:visibility .3s ease 0s,opacity .3s ease 0s;background-color:#000;border-radius:4px;z-index:1}.easyplayer-container-playback .easyplayer-controls .easyplayer-controls-bottom .easyplayer-controls-center .easyplayer-playback-time-title-tips.easyplayer-playback-time-title-tips-left{transform:translateX(-100%)}.easyplayer-container-playback .easyplayer-controls .easyplayer-controls-bottom .easyplayer-controls-center .easyplayer-playback-time-title-tips .easyplayer-playback-time-title{display:inline-block;padding:2px 5px;font-size:12px;white-space:nowrap;color:#fff}.easyplayer-container-playback .easyplayer-controls .easyplayer-controls-bottom .easyplayer-controls-center .easyplayer-playback-time-hour,.easyplayer-container-playback .easyplayer-controls .easyplayer-controls-bottom .easyplayer-controls-center .easyplayer-playback-time-minute{float:left;position:relative;width:60px;box-sizing:border-box;border-top:1px solid #999;-webkit-user-select:none;-moz-user-select:none;user-select:none;text-align:left;height:25px;line-height:25px}.easyplayer-container-playback .easyplayer-controls .easyplayer-controls-bottom .easyplayer-controls-center .easyplayer-playback-time-hour:first-child,.easyplayer-container-playback .easyplayer-controls .easyplayer-controls-bottom .easyplayer-controls-center .easyplayer-playback-time-minute:first-child{border-left:0}.easyplayer-container-playback .easyplayer-controls .easyplayer-controls-bottom .easyplayer-controls-center .easyplayer-playback-time-hour:first-child .easyplayer-playback-time-hour-text,.easyplayer-container-playback .easyplayer-controls .easyplayer-controls-bottom .easyplayer-controls-center .easyplayer-playback-time-minute:first-child .easyplayer-playback-time-hour-text{left:0}.easyplayer-container-playback .easyplayer-controls .easyplayer-controls-bottom .easyplayer-controls-center .easyplayer-playback-time-hour:after,.easyplayer-container-playback .easyplayer-controls .easyplayer-controls-bottom .easyplayer-controls-center .easyplayer-playback-time-minute:after{content:"";position:absolute;left:0;top:-8px;width:1px;height:14px;background-color:#999}.easyplayer-container-playback .easyplayer-controls .easyplayer-controls-bottom .easyplayer-controls-center .easyplayer-playback-time-hour-text,.easyplayer-container-playback .easyplayer-controls .easyplayer-controls-bottom .easyplayer-controls-center .easyplayer-playback-time-minute-text{position:absolute;left:-13px}.easyplayer-container-playback .easyplayer-playback-expand.disabled .easyplayer-icon-expand,.easyplayer-container-playback .easyplayer-playback-narrow.disabled .easyplayer-icon-narrow{cursor:no-drop}.easyplayer-container-playback .easyplayer-control-progress-simple{position:absolute;box-sizing:border-box;left:0;top:-2px;width:100%;display:flex;flex-direction:row;align-items:center;height:8px;cursor:pointer}.easyplayer-container-playback .easyplayer-control-progress-simple:hover{top:0;align-items:flex-start}.easyplayer-container-playback .easyplayer-control-progress-simple:hover .easyplayer-control-progress-inner{height:100%}.easyplayer-container-playback .easyplayer-control-progress-simple:hover .easyplayer-control-progress-inner .easyplayer-progress-indicator{transform:scale(1);visibility:visible}.easyplayer-container-playback .easyplayer-control-progress-inner{display:flex;align-items:center;position:relative;height:50%;width:100%;transition:all .2s ease;background:hsla(0,0%,100%,.5)}.easyplayer-container-playback .easyplayer-progress-hover{display:none;width:0}.easyplayer-container-playback .easyplayer-progress-played{position:absolute;left:0;top:0;right:0;bottom:0;height:100%;width:0;background-color:orange}.easyplayer-container-playback .easyplayer-progress-indicator{visibility:hidden;align-items:center;justify-content:center;position:absolute;z-index:40;border-radius:50%;transform:scale(.1);transition:transform .1s ease-in-out}.easyplayer-container-playback .easyplayer-progress-indicator .easyplayer-icon{width:100%;height:100%;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.easyplayer-container-playback .easyplayer-progress-indicator:hover{transform:scale(1.2)!important}.easyplayer-container-playback .easyplayer-progress-tip{display:none;position:absolute;z-index:50;top:-25px;left:0;height:20px;padding:0 5px;line-height:20px;color:#fff;font-size:12px;text-align:center;background:rgba(0,0,0,.7);border-radius:3px;font-weight:700;white-space:nowrap}.easyplayer-container-playback.easyplayer-fullscreen-web .easyplayer-controls .easyplayer-controls-bottom .easyplayer-controls-playback-time-inner{overflow-y:auto}.easyplayer-zoom-control{cursor:grab}.easyplayer-performance-panel{position:absolute;box-sizing:border-box;z-index:10000;left:0;top:0;padding:5px;font-size:10px;background:rgba(0,0,0,.2);color:#fff;max-height:100%;overflow-y:auto;display:none}.easyplayer-performance-panel .easyplayer-performance-item{display:flex;align-items:center;margin-top:3px;color:#fff}.easyplayer-performance-panel .easyplayer-performance-item-block{height:10px}.easyplayer-tips-message{position:absolute;top:0;left:0;width:100%;height:100%;background:linear-gradient(180deg,rgba(0,0,0,.8),hsla(0,0%,100%,0));overflow:auto;box-sizing:content-box;display:none}.easyplayer-tips-message:before{color:hsla(0,0%,100%,.3);content:"X";font-family:Arial,Helvetica,sans-serif;font-size:40px;left:0;line-height:1;margin-top:-20px;position:absolute;text-shadow:2em 2em 4em #000;text-align:center;top:50%;vertical-align:middle;width:100%}.easyplayer-tips-message .easyplayer-tips-message-close{position:absolute;z-index:99999;right:0;top:0;width:40px;height:40px;display:flex;align-items:center;justify-content:center}.easyplayer-tips-message .easyplayer-tips-message-close .easyplayer-tips-message-close-icon{width:20px;height:20px;border-radius:10px;cursor:pointer;background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAeUExURUdwTM3Nzc7Ozs7Ozs3Nzc3NzcrKys3Nzc3Nzc3NzePZJxkAAAAJdFJOUwCtKdPBGAmNTt3jdDcAAADfSURBVDjL1dOxDoIwEADQgwR07GTCZtI/IGHgAzBhM9EPkMTB0Y3V0ZXIcn/rtRR6pefgSKeSu3ellyvA9lZ/5F9p/3K7PZY8oPG5BD6MpPUSgIITzdIStifAshjRQV1PCFT8TxaicTzzwEwINOEdHVmDmcTAkRhMhMAp7iQRjcMtDhCp8SA1v0ARGIIK/gnkv0p1OBTS4QRUIpE7DiYYXTBrzcld3JIrAarXrps4AVNwRSZgExoJmIyAaAdsShUMn/JF2fh4YEkpAcgvnuwYCIb6EbbbP4PsDfLD2dD6Av1qTvAQlzUTAAAAAElFTkSuQmCC") no-repeat 50%;background-color:#fff;background-size:100% 100%}.easyplayer-tips-message .easyplayer-tips-message-content{overflow:auto;padding:35px;box-sizing:border-box;width:100%;height:100%}.easyplayer-tips-message .easyplayer-tips-message-content .easyplayer-tips-message-content-item{font-size:14px;color:#fff;text-align:center;line-height:1.5}');class Cd{constructor(e){var t;this.player=e,this.TAG_NAME="Control",this.extendBtnList=[],((e,t)=>{e._opt.hasControl&&e._opt.controlAutoHide?e.$container.classList.add("easyplayer-controls-show-auto-hide"):e.$container.classList.add("easyplayer-controls-show");const i=e._opt,r=i.operateBtns,s=`\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
00:00:00
\n
\n
\n
\n
\n ${i.playbackConfig.showPrecisionBtn?`\n
\n
${ud.narrow}
\n
${ud.expand}
\n
\n `:""}\n
\n `;e.$container.insertAdjacentHTML("beforeend",`\n ${i.background?`
`:""}\n
\n \n
\n ${i.loadingIcon?`\n
\n ${ud.loading}\n
${i.loadingText}
\n
\n `:""}\n ${i.hasControl&&r.play?'
':""}\n ${i.hasControl&&r.ptz?`\n
\n
\n
\n
\n
\n
\n ${i.ptzMoreArrowShow?'\n
\n
\n
\n
\n ':""}\n
\n
\n ${i.ptzZoomShow?'\n
\n
\n \n \n 缩放+\n \n
\n
\n \n \n 缩放-\n \n
\n
\n ':""}\n ${i.ptzApertureShow?'\n
\n
\n \n \n 光圈+\n \n
\n
\n \n \n 光圈-\n \n
\n
\n ':""}\n ${i.ptzFocusShow?'\n
\n
\n \n \n 聚焦+\n \n
\n
\n \n \n 聚焦-\n \n
\n
\n ':""}\n
\n
\n `:""}\n ${i.hasVideo?`\n
\n
${ud.narrow}
\n
电子放大
\n
${ud.expand}
\n
${ud.zoomStop}
\n
\n
\n
\n
00:00:00
\n
${ud.recordStop}
\n
\n `:""}\n\n ${i.hasControl?`\n
\n
\n
\n ${i.showBandwidth?'
':""}\n
\n
${i.controlHtml}
\n
\n ${i.playType===b&&i.playbackConfig.showControl&&i.playbackConfig.controlType===Z.normal?s:""}\n ${i.playType===b&&i.playbackConfig.showControl&&i.playbackConfig.controlType===Z.simple?'\n
\n
\n
\n
\n
\n
00:00
\n
\n
\n ':""}\n
\n ${i.playType===b&&i.playbackConfig.showRateBtn?'\n
\n
\n
\n
\n
\n
\n ':""}\n ${r.close?`
${ud.close}
`:""}\n ${r.logSave?`
${ud.logSave}
`:""}\n ${r.performance?`
${ud.performance}
${ud.performanceActive}
`:""}\n ${r.aiFace?`
${ud.face}
${ud.faceActive}
`:""}\n ${r.aiObject?`
${ud.object}
${ud.objectActive}
`:""}\n ${r.aiOcclusion?`
${ud.occlusion}
${ud.occlusionActive}
`:""}\n ${r.quality?'\n
\n
\n
\n
\n
\n
\n ':""}\n ${r.scale?'\n
\n
\n
\n
\n
\n
\n ':""}\n ${r.audio?`\n
\n
\n ${ud.audio}\n ${ud.mute}\n
\n
\n
\n
\n
\n
\n
\n
\n `:""}\n ${r.play?`
${ud.play}
${ud.pause}
`:""}\n ${r.screenshot?`
${ud.screenshot}
`:""}\n ${r.record?`
${ud.record}
${ud.recordStop}
`:""}\n ${r.ptz?`
${ud.ptz}
${ud.ptzActive}
`:""}\n ${r.zoom?`
${ud.zoom}
${ud.zoomStop}
`:""}\n ${r.fullscreen?`
${ud.fullscreen}
${ud.fullscreenExit}
`:""}\n
\n
\n
\n `:""}\n
\n
\n
\n
\n
\n
\n
\n
\n `),Object.defineProperty(t,"$poster",{value:e.$container.querySelector(".easyplayer-poster")}),Object.defineProperty(t,"$loadingBg",{value:e.$container.querySelector(".easyplayer-loading-bg")}),Object.defineProperty(t,"$loadingBgImage",{value:e.$container.querySelector(".easyplayer-loading-bg-image")}),Object.defineProperty(t,"$loading",{value:e.$container.querySelector(".easyplayer-loading")}),Object.defineProperty(t,"$loadingText",{value:e.$container.querySelector(".easyplayer-loading-text")}),Object.defineProperty(t,"$play",{value:e.$container.querySelector(".easyplayer-play")}),Object.defineProperty(t,"$playBig",{value:e.$container.querySelector(".easyplayer-play-big")}),Object.defineProperty(t,"$recording",{value:e.$container.querySelector(".easyplayer-recording")}),Object.defineProperty(t,"$recordingTime",{value:e.$container.querySelector(".easyplayer-recording-time")}),Object.defineProperty(t,"$recordingStop",{value:e.$container.querySelector(".easyplayer-recording-stop")}),Object.defineProperty(t,"$pause",{value:e.$container.querySelector(".easyplayer-pause")}),Object.defineProperty(t,"$controls",{value:e.$container.querySelector(".easyplayer-controls")}),Object.defineProperty(t,"$controlsInner",{value:e.$container.querySelector(".easyplayer-controls-bottom")}),Object.defineProperty(t,"$controlsLeft",{value:e.$container.querySelector(".easyplayer-controls-left")}),Object.defineProperty(t,"$controlsRight",{value:e.$container.querySelector(".easyplayer-controls-right")}),Object.defineProperty(t,"$volume",{value:e.$container.querySelector(".easyplayer-volume")}),Object.defineProperty(t,"$volumePanelWrap",{value:e.$container.querySelector(".easyplayer-volume-panel-wrap")}),Object.defineProperty(t,"$volumePanelText",{value:e.$container.querySelector(".easyplayer-volume-panel-text")}),Object.defineProperty(t,"$volumePanel",{value:e.$container.querySelector(".easyplayer-volume-panel")}),Object.defineProperty(t,"$volumeHandle",{value:e.$container.querySelector(".easyplayer-volume-panel-handle")}),Object.defineProperty(t,"$volumeOn",{value:e.$container.querySelector(".easyplayer-icon-audio")}),Object.defineProperty(t,"$volumeOff",{value:e.$container.querySelector(".easyplayer-icon-mute")}),Object.defineProperty(t,"$fullscreen",{value:e.$container.querySelector(".easyplayer-fullscreen")}),Object.defineProperty(t,"$fullscreenExit",{value:e.$container.querySelector(".easyplayer-fullscreen-exit")}),Object.defineProperty(t,"$record",{value:e.$container.querySelector(".easyplayer-record")}),Object.defineProperty(t,"$recordStop",{value:e.$container.querySelector(".easyplayer-record-stop")}),Object.defineProperty(t,"$screenshot",{value:e.$container.querySelector(".easyplayer-screenshot")}),Object.defineProperty(t,"$speed",{value:e.$container.querySelector(".easyplayer-speed")}),Object.defineProperty(t,"$controlHtml",{value:e.$container.querySelector(".easyplayer-controls-item-html")}),Object.defineProperty(t,"$playbackTime",{value:e.$container.querySelector(".easyplayer-controls-playback-time")}),Object.defineProperty(t,"$playbackTimeInner",{value:e.$container.querySelector(".easyplayer-controls-playback-time-inner")}),Object.defineProperty(t,"$playbackTimeScroll",{value:e.$container.querySelector(".easyplayer-controls-playback-time-scroll")}),Object.defineProperty(t,"$playbackTimeList",{value:e.$container.querySelector(".easyplayer-controls-playback-time-list")}),Object.defineProperty(t,"$playbackTimeListOne",{value:e.$container.querySelector(".easyplayer-playback-time-one-wrap")}),Object.defineProperty(t,"$playbackTimeListSecond",{value:e.$container.querySelector(".easyplayer-playback-time-second-wrap")}),Object.defineProperty(t,"$playbackCurrentTime",{value:e.$container.querySelector(".easyplayer-controls-playback-current-time")}),Object.defineProperty(t,"$playbackCurrentTimeText",{value:e.$container.querySelector(".easyplayer-controls-playback-current-time-text")}),Object.defineProperty(t,"$controlsPlaybackBtns",{value:e.$container.querySelector(".easyplayer-controls-playback-btns")}),Object.defineProperty(t,"$playbackNarrow",{value:e.$container.querySelector(".easyplayer-playback-narrow")}),Object.defineProperty(t,"$playbackExpand",{value:e.$container.querySelector(".easyplayer-playback-expand")}),Object.defineProperty(t,"$ptz",{value:e.$container.querySelector(".easyplayer-ptz")}),Object.defineProperty(t,"$ptzActive",{value:e.$container.querySelector(".easyplayer-ptz-active")}),Object.defineProperty(t,"$ptzControl",{value:e.$container.querySelector(".easyplayer-ptz-controls")}),Object.defineProperty(t,"$ptzBgActive",{value:e.$container.querySelector(".easyplayer-ptz-bg-active")}),Object.defineProperty(t,"$ptzControlCircular",{value:e.$container.querySelector(".easyplayer-ptz-control")}),Object.defineProperty(t,"$ptzArrows",{value:e.$container.querySelectorAll(".easyplayer-ptz-arrow")}),Object.defineProperty(t,"$ptzExpand",{value:e.$container.querySelector(".easyplayer-ptz-expand")}),Object.defineProperty(t,"$ptzNarrow",{value:e.$container.querySelector(".easyplayer-ptz-narrow")}),Object.defineProperty(t,"$ptzApertureFar",{value:e.$container.querySelector(".easyplayer-ptz-aperture-far")}),Object.defineProperty(t,"$ptzApertureNear",{value:e.$container.querySelector(".easyplayer-ptz-aperture-near")}),Object.defineProperty(t,"$ptzFocusFar",{value:e.$container.querySelector(".easyplayer-ptz-focus-far")}),Object.defineProperty(t,"$ptzFocusNear",{value:e.$container.querySelector(".easyplayer-ptz-focus-near")}),Object.defineProperty(t,"$qualityText",{value:e.$container.querySelector(".easyplayer-quality-icon-text")}),Object.defineProperty(t,"$qualityMenu",{value:e.$container.querySelector(".easyplayer-quality-menu")}),Object.defineProperty(t,"$qualityMenuList",{value:e.$container.querySelector(".easyplayer-quality-menu-list")}),Object.defineProperty(t,"$scaleText",{value:e.$container.querySelector(".easyplayer-scale-icon-text")}),Object.defineProperty(t,"$scaleMenu",{value:e.$container.querySelector(".easyplayer-scale-menu")}),Object.defineProperty(t,"$scaleMenuList",{value:e.$container.querySelector(".easyplayer-scale-menu-list")}),Object.defineProperty(t,"$zoom",{value:e.$container.querySelector(".easyplayer-zoom")}),Object.defineProperty(t,"$zoomStop",{value:e.$container.querySelector(".easyplayer-zoom-stop")}),Object.defineProperty(t,"$zoomNarrow",{value:e.$container.querySelector(".easyplayer-zoom-narrow")}),Object.defineProperty(t,"$zoomExpand",{value:e.$container.querySelector(".easyplayer-zoom-expand")}),Object.defineProperty(t,"$zoomStop2",{value:e.$container.querySelector(".easyplayer-zoom-stop2")}),Object.defineProperty(t,"$close",{value:e.$container.querySelector(".easyplayer-close")}),Object.defineProperty(t,"$zoomControls",{value:e.$container.querySelector(".easyplayer-zoom-controls")}),Object.defineProperty(t,"$performancePanel",{value:e.$container.querySelector(".easyplayer-performance-panel")}),Object.defineProperty(t,"$performance",{value:e.$container.querySelector(".easyplayer-performance")}),Object.defineProperty(t,"$performanceActive",{value:e.$container.querySelector(".easyplayer-performance-active")}),Object.defineProperty(t,"$faceDetect",{value:e.$container.querySelector(".easyplayer-face")}),Object.defineProperty(t,"$faceDetectActive",{value:e.$container.querySelector(".easyplayer-face-active")}),Object.defineProperty(t,"$objectDetect",{value:e.$container.querySelector(".easyplayer-object")}),Object.defineProperty(t,"$objectDetectActive",{value:e.$container.querySelector(".easyplayer-object-active")}),Object.defineProperty(t,"$occlusionDetect",{value:e.$container.querySelector(".easyplayer-occlusion")}),Object.defineProperty(t,"$occlusionDetectActive",{value:e.$container.querySelector(".easyplayer-occlusion-active")}),Object.defineProperty(t,"$contextmenus",{value:e.$container.querySelector(".easyplayer-contextmenus")}),Object.defineProperty(t,"$speedText",{value:e.$container.querySelector(".easyplayer-speed-icon-text")}),Object.defineProperty(t,"$speedMenu",{value:e.$container.querySelector(".easyplayer-speed-menu")}),Object.defineProperty(t,"$speedMenuList",{value:e.$container.querySelector(".easyplayer-speed-menu-list")}),Object.defineProperty(t,"$logSave",{value:e.$container.querySelector(".easyplayer-logSave")}),Object.defineProperty(t,"$playbackProgress",{value:e.$container.querySelector(".easyplayer-control-progress-simple")}),Object.defineProperty(t,"$playbackProgressTip",{value:e.$container.querySelector(".easyplayer-progress-tip")}),Object.defineProperty(t,"$playbackProgressHover",{value:e.$container.querySelector(".easyplayer-progress-hover")}),Object.defineProperty(t,"$playbackProgressPlayed",{value:e.$container.querySelector(".easyplayer-progress-played")}),Object.defineProperty(t,"$playbackProgressIndicator",{value:e.$container.querySelector(".easyplayer-progress-indicator")}),Object.defineProperty(t,"$playbackProgressTime",{value:e.$container.querySelector(".easyplayer-playback-control-time")}),Object.defineProperty(t,"$tipsMessage",{value:e.$container.querySelector(".easyplayer-tips-message")}),Object.defineProperty(t,"$tipsMessageClose",{value:e.$container.querySelector(".easyplayer-tips-message-close")}),Object.defineProperty(t,"$tipsMessageContent",{value:e.$container.querySelector(".easyplayer-tips-message-content")})})(e,this),e._opt.extendOperateBtns.length>0&&e._opt.extendOperateBtns.forEach((e=>{this.addExtendBtn(e)})),e._opt.extendDomConfig&&e._opt.extendDomConfig.html&&this.addExtendDom(e._opt.extendDomConfig),t=this,Object.defineProperty(t,"controlsRect",{get:()=>t.$controls.getBoundingClientRect()}),Object.defineProperty(t,"controlsInnerRect",{get:()=>t.$controlsInner.getBoundingClientRect()}),Object.defineProperty(t,"controlsLeftRect",{get:()=>t.$controlsLeft.getBoundingClientRect()}),Object.defineProperty(t,"controlsRightRect",{get:()=>t.$controlsRight.getBoundingClientRect()}),Object.defineProperty(t,"controlsPlaybackTimeInner",{get:()=>t.$playbackTimeInner&&t.$playbackTimeInner.getBoundingClientRect()||{}}),Object.defineProperty(t,"controlsPlaybackBtnsRect",{get:()=>t.$controlsPlaybackBtns&&t.$controlsPlaybackBtns.getBoundingClientRect()||{width:0}}),Td(e,this),((e,t)=>{const{events:{proxy:i},debug:r}=e,s=e._opt,a=s.operateBtns;function n(e){const{bottom:i,height:r}=t.$volumePanel.getBoundingClientRect(),{height:s}=t.$volumeHandle.getBoundingClientRect();return bs(i-e.y-s/2,0,r-s/2)/(r-s)}if(Cs()&&i(window,["click","contextmenu"],(i=>{i.composedPath().indexOf(e.$container)>-1?t.isFocus=!0:t.isFocus=!1})),i(t.$controls,"click",(e=>{e.stopPropagation()})),a.play&&(i(t.$pause,"click",(t=>{s.playType===b&&s.playbackConfig.uiUsePlaybackPause?e.playbackPause=!0:ha(a.pauseFn)?a.pauseFn():e.pauseForControl()})),i(t.$play,"click",(t=>{s.playType===b&&e.playbackPause?e.playbackPause=!1:ha(a.playFn)?a.playFn():e.playForControl().then((()=>{e.resumeAudioAfterPause()}))}))),i(t.$playBig,"click",(t=>{s.playType===b&&e.playbackPause?e.playbackPause=!1:ha(a.playFn)?a.playFn():e.playForControl().then((()=>{e.resumeAudioAfterPause()}))})),a.screenshot&&i(t.$screenshot,"click",(t=>{e.emit(st.screenshot,!0),t.stopPropagation(),ha(a.screenshotFn)?a.screenshotFn():e.video.screenshot()})),a.audio&&(Cs()&&(i(t.$volume,"mouseover",(()=>{t.$volumePanelWrap.classList.add("easyplayer-volume-panel-wrap-show")})),i(t.$volume,"mouseout",(()=>{t.$volumePanelWrap.classList.remove("easyplayer-volume-panel-wrap-show")})),i(t.$volumePanel,"click",(t=>{e.emit(st.mute,e.volume>0),t.stopPropagation(),e.volume=n(t)})),i(t.$volumeHandle,"mousedown",(e=>{e.stopPropagation(),t.isVolumeDroging=!0})),i(t.$volumeHandle,"mousemove",(i=>{t.isVolumeDroging&&(e.volume=n(i))})),i(document,"mouseup",(()=>{t.isVolumeDroging&&(t.isVolumeDroging=!1)}))),i(t.$volumeOn,"click",(i=>{i.stopPropagation(),_s(t.$volumeOn,"display","none"),_s(t.$volumeOff,"display","block");const r=e.volume;e.volume=0,e._lastVolume=Cs()?r:1})),i(t.$volumeOff,"click",(i=>{i.stopPropagation(),_s(t.$volumeOn,"display","block"),_s(t.$volumeOff,"display","none"),e.volume=Cs()?e.lastVolume||.5:1}))),a.record&&(i(t.$record,"click",(t=>{t.stopPropagation(),ha(a.recordFn)?a.recordFn():e.recording=!0})),i(t.$recordStop,"click",(t=>{t.stopPropagation(),ha(a.recordStopFn)?a.recordStopFn():e.recording=!1}))),i(t.$recordingStop,"click",(t=>{t.stopPropagation(),ha(a.recordStopFn)?a.recordStopFn():e.recording=!1})),a.fullscreen&&(i(t.$fullscreen,"click",(t=>{t.stopPropagation(),ha(a.fullscreenFn)?a.fullscreenFn():e.fullscreen=!0})),i(t.$fullscreenExit,"click",(t=>{t.stopPropagation(),ha(a.fullscreenExitFn)?a.fullscreenExitFn():e.fullscreen=!1}))),a.ptz){if(i(t.$ptz,"click",(e=>{e.stopPropagation(),_s(t.$ptzActive,"display","flex"),_s(t.$ptz,"display","none"),t.$ptzControl.classList.add("easyplayer-ptz-controls-show")})),i(t.$ptzActive,"click",(e=>{e.stopPropagation(),_s(t.$ptz,"display","flex"),_s(t.$ptzActive,"display","none"),t.$ptzControl.classList.remove("easyplayer-ptz-controls-show")})),t.$ptzArrows.forEach((r=>{if(s.ptzClickType===X)i(r,"click",(i=>{i.stopPropagation();const r=i.currentTarget.dataset.arrow;t.$ptzBgActive.classList.add("easyplayer-ptz-bg-active-show"),t.$ptzBgActive.classList.add(`easyplayer-ptz-bg-active-${r}`),t.$ptzControlCircular.classList.add(`easyplayer-ptz-control-${r}`),e.emit(st.ptz,Ra(r)),setTimeout((()=>{t.$ptzBgActive.classList.remove("easyplayer-ptz-bg-active-show"),li.forEach((e=>{t.$ptzBgActive.classList.remove(`easyplayer-ptz-bg-active-${e}`),t.$ptzControlCircular.classList.remove(`easyplayer-ptz-control-${e}`)})),e.emit(st.ptz,di)}),1e3*s.ptzStopEmitDelay)}));else if(s.ptzClickType===J){let s=!1;i(r,"mousedown",(i=>{i.stopPropagation(),s=!0;const r=i.currentTarget.dataset.arrow;t.$ptzBgActive.classList.add("easyplayer-ptz-bg-active-show"),t.$ptzBgActive.classList.add(`easyplayer-ptz-bg-active-${r}`),t.$ptzControlCircular.classList.add(`easyplayer-ptz-control-${r}`),e.emit(st.ptz,Ra(r))}));const a=()=>{s=!1,t.$ptzBgActive.classList.remove("easyplayer-ptz-bg-active-show"),li.forEach((e=>{t.$ptzBgActive.classList.remove(`easyplayer-ptz-bg-active-${e}`),t.$ptzControlCircular.classList.remove(`easyplayer-ptz-control-${e}`)})),e.emit(st.ptz,di)};i(r,"mouseup",(e=>{e.stopPropagation(),s&&a()})),i(window,"mouseup",(e=>{e.stopPropagation(),s&&a()}))}})),s.ptzZoomShow)if(s.ptzClickType===X)i(t.$ptzExpand,"click",(t=>{t.stopPropagation(),e.emit(st.ptz,ci),setTimeout((()=>{e.emit(st.ptz,di)}),1e3*s.ptzStopEmitDelay)})),i(t.$ptzNarrow,"click",(t=>{t.stopPropagation(),e.emit(st.ptz,ui),setTimeout((()=>{e.emit(st.ptz,di)}),1e3*s.ptzStopEmitDelay)}));else if(s.ptzClickType===J){let r=!1,s=!1;i(t.$ptzExpand,"mousedown",(t=>{t.stopPropagation(),r=!0,e.emit(st.ptz,ci)})),i(t.$ptzNarrow,"mousedown",(t=>{t.stopPropagation(),s=!0,e.emit(st.ptz,ui)}));const a=()=>{r=!1,s=!1,e.emit(st.ptz,di)};i(t.$ptzExpand,"mouseup",(e=>{e.stopPropagation(),r&&a()})),i(t.$ptzNarrow,"mouseup",(e=>{e.stopPropagation(),s&&a()})),i(window,"mouseup",(e=>{e.stopPropagation(),(r||s)&&a()}))}if(s.ptzApertureShow)if(s.ptzClickType===X)i(t.$ptzApertureFar,"click",(t=>{t.stopPropagation(),e.emit(st.ptz,pi),setTimeout((()=>{e.emit(st.ptz,hi)}),1e3*s.ptzStopEmitDelay)})),i(t.$ptzApertureNear,"click",(t=>{t.stopPropagation(),e.emit(st.ptz,fi),setTimeout((()=>{e.emit(st.ptz,hi)}),1e3*s.ptzStopEmitDelay)}));else if(s.ptzClickType===J){let r=!1,s=!1;i(t.$ptzApertureFar,"mousedown",(t=>{t.stopPropagation(),r=!0,e.emit(st.ptz,pi)})),i(t.$ptzApertureNear,"mousedown",(t=>{t.stopPropagation(),s=!0,e.emit(st.ptz,fi)}));const a=()=>{r=!1,s=!1,e.emit(st.ptz,hi)};i(t.$ptzApertureFar,"mouseup",(e=>{e.stopPropagation(),r&&a()})),i(t.$ptzApertureNear,"mouseup",(e=>{e.stopPropagation(),s&&a()})),i(window,"mouseup",(e=>{e.stopPropagation(),(r||s)&&a()}))}if(s.ptzFocusShow)if(s.ptzClickType===X)i(t.$ptzFocusFar,"click",(t=>{t.stopPropagation(),e.emit(st.ptz,yi),setTimeout((()=>{e.emit(st.ptz,hi)}),1e3*s.ptzStopEmitDelay)})),i(t.$ptzFocusNear,"click",(t=>{t.stopPropagation(),e.emit(st.ptz,mi),setTimeout((()=>{e.emit(st.ptz,hi)}),1e3*s.ptzStopEmitDelay)}));else if(s.ptzClickType===J){let r=!1,s=!1;i(t.$ptzFocusFar,"mousedown",(t=>{t.stopPropagation(),r=!0,e.emit(st.ptz,yi)})),i(t.$ptzFocusNear,"mousedown",(t=>{t.stopPropagation(),s=!0,e.emit(st.ptz,mi)}));const a=()=>{r=!1,s=!1,e.emit(st.ptz,hi)};i(t.$ptzFocusFar,"mouseup",(e=>{e.stopPropagation(),r&&a()})),i(t.$ptzFocusNear,"mouseup",(e=>{e.stopPropagation(),s&&a()})),i(window,"mouseup",(e=>{e.stopPropagation(),(r||s)&&a()}))}}if(a.performance&&(i(t.$performance,"click",(t=>{t.stopPropagation(),e.togglePerformancePanel(!0)})),i(t.$performanceActive,"click",(t=>{t.stopPropagation(),e.togglePerformancePanel(!1)}))),a.logSave&&i(t.$logSave,"click",(t=>{t.stopPropagation(),e.downloadMemoryLog()})),a.aiFace&&(i(t.$faceDetect,"click",(t=>{t.stopPropagation(),e.faceDetect(!0)})),i(t.$faceDetectActive,"click",(t=>{t.stopPropagation(),e.faceDetect(!1)}))),a.aiObject&&(i(t.$objectDetect,"click",(t=>{t.stopPropagation(),e.objectDetect(!0)})),i(t.$objectDetectActive,"click",(t=>{t.stopPropagation(),e.objectDetect(!1)}))),a.aiOcclusion&&(i(t.$occlusionDetect,"click",(t=>{t.stopPropagation(),e.occlusionDetect(!0)})),i(t.$occlusionDetectActive,"click",(t=>{t.stopPropagation(),e.occlusionDetect(!1)}))),e._opt.hasControl&&e._opt.controlAutoHide){i(e.$container,"mouseover",(()=>{e.fullscreen||(_s(t.$controls,"display","block"),s())})),i(e.$container,"mousemove",(()=>{e.$container&&t.$controls&&(e.fullscreen,"none"===t.$controls.style.display&&(_s(t.$controls,"display","block"),s()))})),i(e.$container,"mouseout",(()=>{a(),_s(t.$controls,"display","none")}));let r=null;const s=()=>{a(),r=setTimeout((()=>{_s(t.$controls,"display","none")}),5e3)},a=()=>{r&&(clearTimeout(r),r=null)}}if(e._opt.playType===b){let r=e._opt.playbackConfig.controlType;e._opt.playbackConfig.showRateBtn&&(i(t.$speedMenu,"mouseover",(()=>{t.$speedMenuList.classList.add("easyplayer-speed-menu-shown")})),i(t.$speedMenu,"mouseout",(()=>{t.$speedMenuList.classList.remove("easyplayer-speed-menu-shown")})),i(t.$speedMenuList,"click",(t=>{const i=la(t);if(i.matches("div.easyplayer-speed-menu-item")){const t=i.dataset;e.emit(st.playbackPreRateChange,t.speed)}}))),r===Z.normal?(i(t.$playbackNarrow,"click",(t=>{t.stopPropagation(),e.playback&&e.playback.narrowPrecision()})),i(t.$playbackExpand,"click",(t=>{t.stopPropagation(),e.playback&&e.playback.expandPrecision()})),i(t.$playbackTimeList,"click",(t=>{const i=la(t);i.matches("div.easyplayer-playback-time-minute-one")&&e.playback&&e.playback.seek(i.dataset)})),e._opt.playbackConfig.supportWheel&&i(t.$playbackTimeInner,"wheel",(t=>{t.preventDefault(),(t.wheelDelta?t.wheelDelta/120:-(t.detail||0)/3)>0?e.playback&&e.playback.expandPrecision():e.playback&&e.playback.narrowPrecision()}))):r===Z.simple&&(t.isDroging=!1,i(t.$playbackProgress,"click",(i=>{if(i.target!==t.$playbackProgressIndicator){let r=0,s=0;if(e.isInWebFullscreen())r=i.touches[0].clientY/e.height,s=r*e.playback.totalDuration;else{const a=bd(t,e.playback.totalDuration,i);r=a.percentage,s=a.second}e.playback&&e.playback.seek({time:s})}})),i(t.$playbackProgress,"mousemove",(i=>{_s(t.$playbackProgressTip,"display","block");const{width:r,time:s}=bd(t,e.playback.totalDuration,i);t.$playbackProgressTip.innerHTML=s;const a=t.$playbackProgressTip.clientWidth;r<=a/2?_s(t.$playbackProgressTip,"left",0):r>t.$playbackProgress.clientWidth-a/2?_s(t.$playbackProgressTip,"left",t.$playbackProgress-a+"px"):_s(t.$playbackProgressTip,"left",r-a/2+"px")})),i(t.$playbackProgress,"mouseout",(()=>{_s(t.$playbackProgressTip,"display","none")})),i(t.$playbackProgressIndicator,"mousedown",(e=>{t.isDroging=!0})),i(t.$playbackProgress,"mousemove",(i=>{if(t.isDroging){const{second:r,percentage:s}=bd(t,e.playback.totalDuration,i);e.playback&&e.playback.seek({time:r})}})),i(t.$playbackProgress,"mouseup",(e=>{t.isDroging&&(t.isDroging=!1)})))}a.quality&&(i(t.$qualityMenu,"mouseover",(()=>{t.$qualityMenuList.classList.add("easyplayer-quality-menu-shown")})),i(t.$qualityMenu,"mouseout",(()=>{t.$qualityMenuList.classList.remove("easyplayer-quality-menu-shown")})),i(t.$qualityMenuList,"click",(t=>{const i=la(t);if(i.matches("div.easyplayer-quality-menu-item")){const t=i.dataset;e.streamQuality=t.quality}}))),a.scale&&(i(t.$scaleMenu,"mouseover",(()=>{t.$scaleMenuList.classList.add("easyplayer-scale-menu-shown")})),i(t.$scaleMenu,"mouseout",(()=>{t.$scaleMenuList.classList.remove("easyplayer-scale-menu-shown")})),i(t.$scaleMenuList,"click",(t=>{const i=la(t);if(i.matches("div.easyplayer-scale-menu-item")){const t=i.dataset;e.setScaleMode(t.scale)}}))),a.zoom&&(i(t.$zoom,"click",(t=>{t.stopPropagation(),e.zooming=!0})),i(t.$zoomStop,"click",(t=>{t.stopPropagation(),e.zooming=!1}))),i(t.$zoomExpand,"click",(t=>{t.stopPropagation(),e.zoom&&e.zoom.expandPrecision()})),i(t.$zoomNarrow,"click",(t=>{t.stopPropagation(),e.zoom&&e.zoom.narrowPrecision()})),i(t.$zoomStop2,"click",(t=>{t.stopPropagation(),e.zooming=!1})),a.close&&i(t.$close,"click",(t=>{t.stopPropagation(),e.doDestroy()})),i(t.$tipsMessageClose,"click",(e=>{e.stopPropagation(),t.$tipsMessageContent.innerHTML="",_s(t.$tipsMessage,"display","none")}))})(e,this),e._opt.hotKey&&((e,t)=>{const{events:{proxy:i}}=e,r={};function s(e,t){r[e]?r[e].push(t):r[e]=[t]}s(Zt,(()=>{e.fullscreen&&(e.fullscreen=!1)})),s(ei,(()=>{e.volume+=.05})),s(ti,(()=>{e.volume-=.05})),i(window,"keydown",(e=>{if(t.isFocus){const t=document.activeElement.tagName.toUpperCase(),i=document.activeElement.getAttribute("contenteditable");if("INPUT"!==t&&"TEXTAREA"!==t&&""!==i&&"true"!==i){const t=r[e.keyCode];t&&(e.preventDefault(),t.forEach((e=>e())))}}}))})(e,this),this.btnIndex=0,this.initLoadingBackground(),sa(e._opt.loadingIconStyle)&&this.initLoadingIconStyle(e._opt.loadingIconStyle),this.kbpsShow="0 KB/s",this.player.debug.log("Control","init")}destroy(){if(this.$performancePanel){this.$performancePanel.innerHTML="";if(!Sd(this.$performancePanel)){const e=this.player.$container.querySelector(".easyplayer-performance-panel");e&&this.player.$container&&this.player.$container.removeChild(e)}}if(this.$poster){if(!Sd(this.$poster)){const e=this.player.$container.querySelector(".easyplayer-poster");e&&this.player.$container&&this.player.$container.removeChild(e)}}if(this.$loading){if(!Sd(this.$loading)){const e=this.player.$container.querySelector(".easyplayer-loading");e&&this.player.$container&&this.player.$container.removeChild(e)}}if(this.$loadingBg){if(!Sd(this.$loadingBg)){const e=this.player.$container.querySelector(".easyplayer-loading-bg");e&&this.player.$container&&this.player.$container.removeChild(e)}}if(this.$controls){if(!Sd(this.$controls)){const e=this.player.$container.querySelector(".easyplayer-controls");e&&this.player.$container&&this.player.$container.removeChild(e)}}if(this.$playBig){if(!Sd(this.$playBig)){const e=this.player.$container.querySelector(".easyplayer-play-big");e&&this.player.$container&&this.player.$container.removeChild(e)}}if(this.$recording){if(!Sd(this.$recording)){const e=this.player.$container.querySelector(".easyplayer-recording");e&&this.player.$container&&this.player.$container.removeChild(e)}}if(this.$ptzControl){if(!Sd(this.$ptzControl)){const e=this.player.$container.querySelector(".easyplayer-ptz-controls");e&&this.player.$container&&this.player.$container.removeChild(e)}}if(this.$zoomControls){if(!Sd(this.$zoomControls)){const e=this.player.$container.querySelector(".easyplayer-zoom-controls");e&&this.player.$container&&this.player.$container.removeChild(e)}}if(this.$contextmenus){this.$contextmenus.innerHTML="";if(!Sd(this.$contextmenus)){const e=this.player.$container.querySelector(".easyplayer-contextmenus");e&&this.player.$container&&this.player.$container.removeChild(e)}}if(this.$tipsMessage){if(!Sd(this.$tipsMessage)){const e=this.player.$container.querySelector(".easyplayer-tips-message");e&&this.player.$container&&this.player.$container.removeChild(e)}}if(this.$extendDom){if(!Sd(this.$extendDom)){const e=this.player.$container.querySelector(".easyplayer-extend-dom");e&&this.player.$container&&this.player.$container.removeChild(e)}}this.btnIndex=0,this.extendBtnList=[],this.kbpsShow="0 KB/s",this.player.$container&&(this.player.$container.classList.remove("easyplayer-controls-show-auto-hide"),this.player.$container.classList.remove("easyplayer-controls-show")),this.player.debug.log("Control","destroy")}getBtnIndex(){return this.btnIndex++}autoSize(){const e=this.player;e.$container.style.padding="0 0";const t=e.width,i=e.height,r=t/i,s=e.video.$videoElement.width/e.video.$videoElement.height;if(r>s){const r=(t-i*s)/2;e.$container.style.padding=`0 ${r}px`}else{const r=(i-t/s)/2;e.$container.style.padding=`${r}px 0`}}initLoadingBackground(){const e=this.player;e._opt.loadingBackground&&e._opt.loadingBackgroundWidth&&e._opt.loadingBackgroundHeight&&(e.debug.log("Control","initLoadingBackground()"),"default"===this.player._opt.aspectRatio||ks()?(e.getRenderType()===K||e.getRenderType()===q)&&this._initLoadingBackground():this._initLoadingBackgroundForRatio(),wd(this.$loadingBg,"display","block"),e._opt.loadingBackground="",e._opt.loadingBackgroundWidth=0,e._opt.loadingBackgroundHeight=0)}initLoadingIconStyle(e){const t=this.player.$container.querySelector(".easyplayer-icon-loading");t&&(e.width&&wd(t,"width",`${e.width}px`),e.height&&wd(t,"height",`${e.height}px`),e.background&&wd(t,"backgroundImage",`url("${e.background}")`),!1===e.hasAnimation&&(wd(t,"animationName","none"),wd(t,"animationDuration",0),wd(t,"animationTimingFunction","ease"),wd(t,"animationIterationCount",1)))}_initLoadingBackgroundForRatio(){const e=this.player._opt.aspectRatio.split(":").map(Number);let t=this.player.width,i=this.player.height;const r=this.player._opt;let s=0;r.hasControl&&!r.controlAutoHide&&(s=r.playType===b?Pt:0,i-=s);const a=this.player._opt.loadingBackgroundWidth,n=this.player._opt.loadingBackgroundHeight,o=a/n,l=e[0]/e[1];if(this.$loadingBgImage.src=this.player._opt.loadingBackground,o>l){const e=l*n/a;this.$loadingBgImage.style.width=100*e+"%",this.$loadingBgImage.style.height=`calc(100% - ${s}px)`,this.$loadingBgImage.style.padding=`0 ${(t-t*e)/2}px`}else{const e=a/l/n;this.$loadingBgImage.style.width="100%",this.$loadingBgImage.style.height=`calc(${100*e}% - ${s}px)`,this.$loadingBgImage.style.padding=(i-i*e)/2+"px 0"}}_initLoadingBackground(){const e=this.player;let t=e.height;const i=e._opt;if(i.hasControl&&!i.controlAutoHide){t-=i.playType===b?Pt:0}let r=e.width,s=t;const a=i.rotate;270!==a&&90!==a||(r=t,s=e.width),this.$loadingBgImage.width=r,this.$loadingBgImage.height=s,this.$loadingBgImage.src=e._opt.loadingBackground;let n=(e.width-r)/2,o=(t-s)/2,l="contain";i.isResize||(l="fill"),i.isFullResize&&(l="none");let d="";"none"===i.mirrorRotate&&a&&(d+=" rotate("+a+"deg)"),"level"===i.mirrorRotate?d+=" rotateY(180deg)":"vertical"===i.mirrorRotate&&(d+=" rotateX(180deg)"),this.player._opt.videoRenderSupportScale&&(this.$loadingBgImage.style.objectFit=l),this.$loadingBgImage.style.transform=d,this.$loadingBgImage.style.padding="0",this.$loadingBgImage.style.left=n+"px",this.$loadingBgImage.style.top=o+"px"}_validateExtendBtn(e){let t=!0;if(e.name||(this.player.debug.warn("Control","extend button name is required"),t=!1),t){-1!==this.extendBtnList.findIndex((t=>t.name===e.name))&&(this.player.debug.warn("Control",`extend button name: ${e.name} is already exist`),t=!1)}return t&&(e.icon||(this.player.debug.warn("Control","extend button icon is required"),t=!1)),t}addExtendBtn(e={}){const t=_a(rr);if(e=Object.assign({},t,e),!this._validateExtendBtn(e))return;const i=e.name||"",r=this.$controlsRight,s=e.activeIcon&&e.activeClick,a=`\n
\n ${e.icon?`
\n \n ${e.iconTitle?`\n ${e.iconTitle}\n `:""}\n
`:""}\n ${e.activeIcon?`
\n \n ${e.activeIconTitle?`\n ${e.activeIconTitle}\n `:""}\n
`:""}\n
\n `,n=Array.from(r.children)[e.index];n?n.insertAdjacentHTML("beforebegin",a):_d(r,a);const o=r.querySelector(`.easyplayer-controls-item-wrap-${i}`),l=e.icon?r.querySelector(`.easyplayer-icon-extend-${i}`):null,d=e.icon?r.querySelector(`.easyplayer-control-extend-${i}`):null,h=e.activeIcon?r.querySelector(`.easyplayer-icon-extend-${i}-active`):null,c=e.activeIcon?r.querySelector(`.easyplayer-control-extend-${i}-active`):null,{events:{proxy:u},debug:p}=this.player;e.icon&&(wd(l,"background",`url(${e.icon}) no-repeat center`),wd(l,"background-size","100% 100%"),wd(d,"display","none"),e.iconHover&&(u(l,"mouseover",(()=>{wd(l,"background",`url(${e.iconHover}) no-repeat center`),wd(l,"background-size","100% 100%")})),u(l,"mouseout",(()=>{wd(l,"background",`url(${e.icon}) no-repeat center`),wd(l,"background-size","100% 100%")})))),e.activeIcon&&(wd(h,"background",`url(${e.activeIcon}) no-repeat center`),wd(h,"background-size","100% 100%"),wd(c,"display","none"),e.activeIconHover&&(u(h,"mouseover",(()=>{wd(h,"background",`url(${e.activeIconHover}) no-repeat center`),wd(h,"background-size","100% 100%")})),u(h,"mouseout",(()=>{wd(h,"background",`url(${e.activeIcon}) no-repeat center`),wd(h,"background-size","100% 100%")})))),e.click&&l&&u(l,"click",(t=>{t.preventDefault(),s&&(wd(d,"display","none"),wd(c,"display","flex")),this.player.isInMulti()?e.click.call(this.player,t,this.player._opt.multiIndex):e.click.call(this.player,t)})),e.activeClick&&h&&u(h,"click",(t=>{t.preventDefault(),wd(d,"display","flex"),wd(c,"display","none"),this.player.isInMulti()?e.activeClick.call(this.player,t,this.player._opt.multiIndex):e.activeClick.call(this.player,t)})),this.extendBtnList.push({name:i,$iconContainer:o,$iconWrap:d,$activeIconWrap:c})}addExtendDom(e){if(this.player.debug.log(this.TAG_NAME,"addExtendDom"),e.html){const t=`\n
\n ${e.html}\n
\n `;this.player.$container.insertAdjacentHTML("beforeend",t),Object.defineProperty(this,"$extendDom",{value:this.player.$container.querySelector(".easyplayer-extend-dom")}),e.showBeforePlay&&wd(this.$extendDom,"display","block")}}toggleExtendDom(e){this.$extendDom&&(js(e)||(e="none"===this.$extendDom.style.display),wd(this.$extendDom,"display",e?"block":"none"))}updateExtendDom(e){this.player.debug.log(this.TAG_NAME,"updateExtendDom"),this.$extendDom&&(this.$extendDom.innerHTML=e)}removeExtendDom(){this.player.debug.log(this.TAG_NAME,"removeExtendDom"),this.$extendDom&&(this.$extendDom.innerHTML="")}updateLoadingText(e){this.$loadingText&&(this.$loadingText.innerText=e)}getExtendBtnList(){return this.extendBtnList}showTipsMessage(e,t){const i=this.$tipsMessage,r=this.$tipsMessageContent;if(i){const s=`\n
${e}
\n ${t?`
Error Type:${t}
`:""}\n `;r.innerHTML=s,wd(i,"display","block")}}hideTipsMessage(){const e=this.$tipsMessage;e&&($tipsMessageContent.innerHTML="",wd(e,"display","none"))}}kd(".easyplayer-container{position:relative;width:100%;height:100%;overflow:hidden}.easyplayer-container.easyplayer-fullscreen-web{position:fixed;z-index:9999;left:0;top:0;right:0;bottom:0;width:100vw!important;height:100vh!important;background:#000}");class Dd{static init(){Dd.types={avc1:[],avcC:[],hvc1:[],hvcC:[],av01:[],av1C:[],btrt:[],dinf:[],dref:[],esds:[],ftyp:[],hdlr:[],mdat:[],mdhd:[],mdia:[],mfhd:[],minf:[],moof:[],moov:[],mp4a:[],mvex:[],mvhd:[],sdtp:[],stbl:[],stco:[],stsc:[],stsd:[],stsz:[],stts:[],tfdt:[],tfhd:[],traf:[],trak:[],trun:[],trex:[],tkhd:[],vmhd:[],smhd:[],".mp3":[],Opus:[],dOps:[],"ac-3":[],dac3:[],"ec-3":[],dec3:[]};for(let e in Dd.types)Dd.types.hasOwnProperty(e)&&(Dd.types[e]=[e.charCodeAt(0),e.charCodeAt(1),e.charCodeAt(2),e.charCodeAt(3)]);let e=Dd.constants={};e.FTYP=new Uint8Array([105,115,111,109,0,0,0,1,105,115,111,109,97,118,99,49]),e.STSD_PREFIX=new Uint8Array([0,0,0,0,0,0,0,1]),e.STTS=new Uint8Array([0,0,0,0,0,0,0,0]),e.STSC=e.STCO=e.STTS,e.STSZ=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0]),e.HDLR_VIDEO=new Uint8Array([0,0,0,0,0,0,0,0,118,105,100,101,0,0,0,0,0,0,0,0,0,0,0,0,86,105,100,101,111,72,97,110,100,108,101,114,0]),e.HDLR_AUDIO=new Uint8Array([0,0,0,0,0,0,0,0,115,111,117,110,0,0,0,0,0,0,0,0,0,0,0,0,83,111,117,110,100,72,97,110,100,108,101,114,0]),e.DREF=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,12,117,114,108,32,0,0,0,1]),e.SMHD=new Uint8Array([0,0,0,0,0,0,0,0]),e.VMHD=new Uint8Array([0,0,0,1,0,0,0,0,0,0,0,0])}static box(e){let t=8,i=null,r=Array.prototype.slice.call(arguments,1),s=r.length;for(let e=0;e>>24&255,i[1]=t>>>16&255,i[2]=t>>>8&255,i[3]=255&t,i.set(e,4);let a=8;for(let e=0;e>>24&255,e>>>16&255,e>>>8&255,255&e,t>>>24&255,t>>>16&255,t>>>8&255,255&t,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255]))}static trak(e){return Dd.box(Dd.types.trak,Dd.tkhd(e),Dd.mdia(e))}static tkhd(e){let t=e.id,i=e.duration,r=e.presentWidth,s=e.presentHeight;return Dd.box(Dd.types.tkhd,new Uint8Array([0,0,0,7,0,0,0,0,0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t,0,0,0,0,i>>>24&255,i>>>16&255,i>>>8&255,255&i,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,r>>>8&255,255&r,0,0,s>>>8&255,255&s,0,0]))}static mdia(e){return Dd.box(Dd.types.mdia,Dd.mdhd(e),Dd.hdlr(e),Dd.minf(e))}static mdhd(e){let t=e.timescale,i=e.duration;return Dd.box(Dd.types.mdhd,new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t,i>>>24&255,i>>>16&255,i>>>8&255,255&i,85,196,0,0]))}static hdlr(e){let t=null;return t="audio"===e.type?Dd.constants.HDLR_AUDIO:Dd.constants.HDLR_VIDEO,Dd.box(Dd.types.hdlr,t)}static minf(e){let t=null;return t="audio"===e.type?Dd.box(Dd.types.smhd,Dd.constants.SMHD):Dd.box(Dd.types.vmhd,Dd.constants.VMHD),Dd.box(Dd.types.minf,t,Dd.dinf(),Dd.stbl(e))}static dinf(){return Dd.box(Dd.types.dinf,Dd.box(Dd.types.dref,Dd.constants.DREF))}static stbl(e){return Dd.box(Dd.types.stbl,Dd.stsd(e),Dd.box(Dd.types.stts,Dd.constants.STTS),Dd.box(Dd.types.stsc,Dd.constants.STSC),Dd.box(Dd.types.stsz,Dd.constants.STSZ),Dd.box(Dd.types.stco,Dd.constants.STCO))}static stsd(e){return"audio"===e.type?"mp3"===e.audioType?Dd.box(Dd.types.stsd,Dd.constants.STSD_PREFIX,Dd.mp3(e)):Dd.box(Dd.types.stsd,Dd.constants.STSD_PREFIX,Dd.mp4a(e)):"avc"===e.videoType?Dd.box(Dd.types.stsd,Dd.constants.STSD_PREFIX,Dd.avc1(e)):Dd.box(Dd.types.stsd,Dd.constants.STSD_PREFIX,Dd.hvc1(e))}static mp3(e){let t=e.channelCount,i=e.audioSampleRate,r=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,t,0,16,0,0,0,0,i>>>8&255,255&i,0,0]);return Dd.box(Dd.types[".mp3"],r)}static mp4a(e){let t=e.channelCount,i=e.audioSampleRate,r=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,t,0,16,0,0,0,0,i>>>8&255,255&i,0,0]);return Dd.box(Dd.types.mp4a,r,Dd.esds(e))}static esds(e){let t=e.config||[],i=t.length,r=new Uint8Array([0,0,0,0,3,23+i,0,1,0,4,15+i,64,21,0,0,0,0,0,0,0,0,0,0,0,5].concat([i]).concat(t).concat([6,1,2]));return Dd.box(Dd.types.esds,r)}static avc1(e){let t=e.avcc;const i=e.codecWidth,r=e.codecHeight;let s=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,i>>>8&255,255&i,r>>>8&255,255&r,0,72,0,0,0,72,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,255,255]);return Dd.box(Dd.types.avc1,s,Dd.box(Dd.types.avcC,t))}static hvc1(e){let t=e.avcc;const i=e.codecWidth,r=e.codecHeight;let s=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,i>>>8&255,255&i,r>>>8&255,255&r,0,72,0,0,0,72,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,255,255]);return Dd.box(Dd.types.hvc1,s,Dd.box(Dd.types.hvcC,t))}static mvex(e){return Dd.box(Dd.types.mvex,Dd.trex(e))}static trex(e){let t=e.id,i=new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1]);return Dd.box(Dd.types.trex,i)}static moof(e,t){return Dd.box(Dd.types.moof,Dd.mfhd(e.sequenceNumber),Dd.traf(e,t))}static mfhd(e){let t=new Uint8Array([0,0,0,0,e>>>24&255,e>>>16&255,e>>>8&255,255&e]);return Dd.box(Dd.types.mfhd,t)}static traf(e,t){let i=e.id,r=Dd.box(Dd.types.tfhd,new Uint8Array([0,0,0,0,i>>>24&255,i>>>16&255,i>>>8&255,255&i])),s=Dd.box(Dd.types.tfdt,new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t])),a=Dd.sdtp(e),n=Dd.trun(e,a.byteLength+16+16+8+16+8+8);return Dd.box(Dd.types.traf,r,s,n,a)}static sdtp(e){let t=new Uint8Array(5),i=e.flags;return t[4]=i.isLeading<<6|i.dependsOn<<4|i.isDependedOn<<2|i.hasRedundancy,Dd.box(Dd.types.sdtp,t)}static trun(e,t){let i=new Uint8Array(28);t+=36,i.set([0,0,15,1,0,0,0,1,t>>>24&255,t>>>16&255,t>>>8&255,255&t],0);let r=e.duration,s=e.size,a=e.flags,n=e.cts;return i.set([r>>>24&255,r>>>16&255,r>>>8&255,255&r,s>>>24&255,s>>>16&255,s>>>8&255,255&s,a.isLeading<<2|a.dependsOn,a.isDependedOn<<6|a.hasRedundancy<<4|a.isNonSync,0,0,n>>>24&255,n>>>16&255,n>>>8&255,255&n],12),Dd.box(Dd.types.trun,i)}static mdat(e){return Dd.box(Dd.types.mdat,e)}}Dd.init();class Rd extends t{constructor(e){super(),this.TAG_NAME="MediaSource",this.player=e,this._resetInIt(),this._useManagedMediaSource="ManagedMediaSource"in self&&!("MediaSource"in self),this.mediaSource=this._useManagedMediaSource?new self.ManagedMediaSource:new self.MediaSource,this.isDecodeFirstIIframe=!!ka(e._opt.checkFirstIFrame),this.mediaSourceObjectURL=null,this._useManagedMediaSource||(this.mediaSourceObjectURL=window.URL.createObjectURL(this.mediaSource)),this.isSupportVideoFrameCallback=Pa(),this.canvasRenderInterval=null,e._opt.mseUseCanvasRender?(this.$videoElement=document.createElement("video"),this._useManagedMediaSource?(this.$videoElement.disableRemotePlayback=!0,this.$videoElement.srcObject=this.mediaSource):this.$videoElement.src=this.mediaSourceObjectURL,this.initVideoEvents()):(this._useManagedMediaSource?(this.player.video.$videoElement.disableRemotePlayback=!0,this.player.video.$videoElement.srcObject=this.mediaSource):this.player.video.$videoElement.src=this.mediaSourceObjectURL,this.$videoElement=this.player.video.$videoElement),this._bindMediaSourceEvents(),this.audioSourceBufferCheckTimeout=null,this.audioSourceNoDataCheckTimeout=null,this.player.isPlayback()&&this.player.on(st.playbackPause,(t=>{ka(t)?(Ta(e._opt.checkFirstIFrame)&&(this.player.debug.log(this.TAG_NAME,"playbackPause is false and _opt.checkFirstIFrame is true so set isDecodeFirstIIframe = false"),this.isDecodeFirstIIframe=!1),this.clearUpAllSourceBuffer(),this.$videoElement.play()):(this.$videoElement.pause(),this.cacheTrack={})})),this.player.on(st.visibilityChange,(e=>{e&&setTimeout((()=>{if(this.player.isPlaying()&&this.$videoElement){const e=this.getVideoBufferLastTime();e>this.$videoElement.currentTime&&(this.player.debug.log(this.TAG_NAME,`visibilityChange is true and lastTime is ${e} and currentTime is ${this.$videoElement.currentTime} so set currentTime to lastTime`),this.$videoElement.currentTime=e)}}),300)})),this._useManagedMediaSource?this.player.debug.log(this.TAG_NAME,"init and using ManagedMediaSource"):this.player.debug.log(this.TAG_NAME,"init")}destroy(){this.stop(),this._clearAudioSourceBufferCheckTimeout(),this._clearAudioNoDataCheckTimeout(),this._stopCanvasRender(),this.eventListenList.length&&(this.eventListenList.forEach((e=>e())),this.eventListenList=[]),this.supportVideoFrameCallbackHandle&&this.$videoElement&&(this.$videoElement.cancelVideoFrameCallback(this.supportVideoFrameCallbackHandle),this.supportVideoFrameCallbackHandle=null),this.$videoElement&&(this.player._opt.mseUseCanvasRender&&this.$videoElement.src&&(this.$videoElement.src="",this.$videoElement.removeAttribute("src")),this.$videoElement=null),this.mediaSourceObjectURL&&(window.URL.revokeObjectURL(this.mediaSourceObjectURL),this.mediaSourceObjectURL=null),this._resetInIt(),this.off(),this.player.debug.log(this.TAG_NAME,"destroy")}needInitAudio(){return this.player._opt.hasAudio&&this.player._opt.mseDecodeAudio}_resetInIt(){this.isAvc=null,this.isAAC=null,this.videoMeta={},this.audioMeta={},this.sourceBuffer=null,this.audioSourceBuffer=null,this.hasInit=!1,this.hasAudioInit=!1,this.isInitInfo=!1,this.isAudioInitInfo=!1,this.audioMimeType="",this.videoMimeType="",this.cacheTrack={},this.cacheAudioTrack={},this.timeInit=!1,this.sequenceNumber=0,this.audioSequenceNumber=0,this.firstRenderTime=null,this.firstAudioTime=null,this.$videoElement=null,this.mediaSourceAppendBufferFull=!1,this.mediaSourceAppendBufferError=!1,this.mediaSourceAddSourceBufferError=!1,this.mediaSourceBufferError=!1,this.mediaSourceError=!1,this.prevTimestamp=null,this.decodeDiffTimestamp=null,this.prevDts=null,this.prevAudioDts=null,this.prevPayloadBufferSize=0,this.isWidthOrHeightChanged=!1,this.prevTs=null,this.prevAudioTs=null,this.eventListenList=[],this.pendingRemoveRanges=[],this.pendingSegments=[],this.pendingAudioRemoveRanges=[],this.pendingAudioSegments=[],this.supportVideoFrameCallbackHandle=null}get state(){return this.mediaSource&&this.mediaSource.readyState}get isStateOpen(){return this.state===Qt}get isStateClosed(){return this.state===Xt}get isStateEnded(){return this.state===Yt}get duration(){return this.mediaSource&&this.mediaSource.duration||-1}set duration(e){this.mediaSource.duration=e}_bindMediaSourceEvents(){const{debug:e,events:{proxy:t}}=this.player,i=t(this.mediaSource,wi.sourceOpen,(()=>{this.player.debug.log(this.TAG_NAME,"sourceOpen"),this._onMediaSourceSourceOpen(),this.player.emit(st.mseSourceOpen)})),r=t(this.mediaSource,wi.sourceClose,(()=>{this.player.debug.log(this.TAG_NAME,"sourceClose"),this.player.emit(st.mseSourceClose)})),s=t(this.mediaSource,wi.sourceended,(()=>{this.player.debug.log(this.TAG_NAME,"sourceended"),this.player.emit(st.mseSourceended)}));this.eventListenList.push(i,r,s);const a=t(this.$videoElement,Ti,(e=>{if(ka(this.isSupportVideoFrameCallback))if(this.player.checkIsInRender())this.player.handleRender();else{const t=parseInt(e.timeStamp,10);this.player.debug.log(this.TAG_NAME,`mseUseCanvasRender is ${this.player._opt.mseUseCanvasRender} and\n $videoElement ts is ${t}, but not in render and vbps is ${this.player._stats.vbps} and fps is ${this.player._stats.fps}`)}})),n=t(this.$videoElement,ki,(()=>{this.player.debug.log(this.TAG_NAME,"video playback Rate change",this.$videoElement&&this.$videoElement.playbackRate),this.$videoElement&&this.$videoElement.paused&&(this.player.debug.warn(this.TAG_NAME,"video is paused and sent isMSEPlaybackRateChangePause true"),this.player.isMSEPlaybackRateChangePause=!0)}));if(this.eventListenList.push(a,n),this._useManagedMediaSource){const e=t(this.mediaSource,wi.startstreaming,(()=>{this.player.debug.log(this.TAG_NAME,"ManagedMediaSource startstreaming"),this.player.emit(st.mseSourceStartStreaming)})),i=t(this.mediaSource,wi.endstreaming,(()=>{this.player.debug.log(this.TAG_NAME,"ManagedMediaSource endstreaming"),this.player.emit(st.mseSourceEndStreaming)})),r=t(this.mediaSource,wi.qualitychange,(()=>{this.player.debug.log(this.TAG_NAME,"ManagedMediaSource qualitychange")}));this.eventListenList.push(e,i,r)}}_onMediaSourceSourceOpen(){this.sourceBuffer||(this.player.debug.log("MediaSource","onMediaSourceSourceOpen() sourceBuffer is null and next init"),this._initSourceBuffer()),this.audioSourceBuffer||(this.player.debug.log("MediaSource","onMediaSourceSourceOpen() audioSourceBuffer is null and next init"),this._initAudioSourceBuffer()),this._hasPendingSegments()&&this._doAppendSegments()}initVideoEvents(){const{proxy:e}=this.player.events,t=e(this.$videoElement,Ei,(()=>{this.player.debug.log(this.TAG_NAME,"video canplay"),this.$videoElement.play().then((()=>{this.player.emit(st.removeLoadingBgImage),Pa()?this.supportVideoFrameCallbackHandle=this.$videoElement.requestVideoFrameCallback(this.videoFrameCallback.bind(this)):this.player.isUseHls265()&&(this._stopCanvasRender(),this.canvasRenderInterval=setInterval((()=>{this.player.video.render({$video:this.$videoElement,ts:parseInt(1e3*this.$videoElement.currentTime,10)||0})}),40)),this.player.debug.log(this.TAG_NAME,"video play")})).catch((e=>{this.player.debug.error(this.TAG_NAME,"video play error ",e),this.player.emitError(lt.mediaSourceUseCanvasRenderPlayFailed,e)}))})),i=e(this.$videoElement,Si,(()=>{this.player.debug.log(this.TAG_NAME,"video waiting")})),r=e(this.$videoElement,Ti,(e=>{parseInt(e.timeStamp,10),this.$videoElement.paused&&(this.player.debug.warn(this.TAG_NAME,"video is paused and next try to replay"),this.$videoElement.play().then((()=>{this.player.debug.log(this.TAG_NAME,"video is paused and replay success")})).catch((e=>{this.player.debug.warn(this.TAG_NAME,"video is paused and replay error ",e)})))}));this.eventListenList.push(t,i,r)}videoFrameCallback(e,t={}){if(this.player.isDestroyedOrClosed())return void this.player.debug.log(this.TAG_NAME,"videoFrameCallback() player is destroyed");const i=parseInt(1e3*Math.max(t.mediaTime,this.$videoElement.currentTime),10)||0;this.player.handleRender(),this.player.video.render({$video:this.$videoElement,ts:i}),this.player.isUseHls265()&&this.player.updateStats({fps:!0,ts:i}),this.supportVideoFrameCallbackHandle=this.$videoElement.requestVideoFrameCallback(this.videoFrameCallback.bind(this))}decodeVideo(e,t,i,r){const s=this.player;if(s)if(this.player.isDestroyedOrClosed())this.player.debug.warn(this.TAG_NAME,"decodeVideo() player is destroyed");else if(this.hasInit)if(!this.isDecodeFirstIIframe&&i&&(this.isDecodeFirstIIframe=!0),this.isDecodeFirstIIframe){if(i&&0===e[1]){const t=15&e[0];let i={};if(t===gt){i=On(e.slice(5))}else t===At&&(i=Xn(e));const r=this.player.video.videoInfo;r&&r.width&&r.height&&i&&i.codecWidth&&i.codecHeight&&(i.codecWidth!==r.width||i.codecHeight!==r.height)&&(this.player.debug.warn(this.TAG_NAME,`\n decodeVideo: video width or height is changed,\n old width is ${r.width}, old height is ${r.height},\n new width is ${i.codecWidth}, new height is ${i.codecHeight},\n and emit change event`),this.isWidthOrHeightChanged=!0,this.player.emitError(lt.mseWidthOrHeightChange))}if(this.isWidthOrHeightChanged)return void this.player.debug.warn(this.TAG_NAME,"decodeVideo: video width or height is changed, and return");if(Sa(e))return void this.player.debug.warn(this.TAG_NAME,"decodeVideo and payload is video sequence header so drop this frame");if(e.byteLength<12)return void this.player.debug.warn(this.TAG_NAME,`decodeVideo and payload is too small , payload length is ${e.byteLength}`);let s=t;if(this.player.isPlayer()){if(null===this.firstRenderTime&&(this.firstRenderTime=t),s=t-this.firstRenderTime,s<0&&(this.player.debug.warn(this.TAG_NAME,`decodeVideo\n local dts is < 0 , ts is ${t} and prevTs is ${this.prevTs},\n firstRenderTime is ${this.firstRenderTime} and mseCorrectTimeDuration is ${this.player._opt.mseCorrectTimeDuration}`),s=null===this.prevDts?0:this.prevDts+this.player._opt.mseCorrectTimeDuration,this._checkTsIsMaxDiff(t)))return this.player.debug.warn(this.TAG_NAME,`decodeVideo is max diff , ts is ${t} and prevTs is ${this.prevTs}, diff is ${this.prevTs-t} and emit replay`),void this.player.emitError(lt.mediaSourceTsIsMaxDiff,`decodeVideo is max diff, prevTs is ${this.prevTs} and ts is ${t}`);if(null!==this.prevDts&&s<=this.prevDts){if(this.player.debug.warn(this.TAG_NAME,`\n decodeVideo dts is less than(or equal) prev dts ,\n dts is ${s} and prev dts is ${this.prevDts} ,\n and now ts is ${t} and prev ts is ${this.prevTs} ,\n and diff is ${t-this.prevTs} and firstRenderTime is ${this.firstRenderTime} and isIframe is ${i},\n and mseCorrectTimeDuration is ${this.player._opt.mseCorrectTimeDuration},\n and prevPayloadBufferSize is ${this.prevPayloadBufferSize} and payload size is ${e.byteLength}`),s===this.prevDts&&this.prevPayloadBufferSize===e.byteLength)return void this.player.debug.warn(this.TAG_NAME,"decodeVideo dts is equal to prev dts and payload size is equal to prev payload size so drop this frame");if(s=this.prevDts+this.player._opt.mseCorrectTimeDuration,this._checkTsIsMaxDiff(t))return this.player.debug.warn(this.TAG_NAME,`decodeVideo is max diff , ts is ${t} and prevTs is ${this.prevTs}, diff is ${this.prevTs-t} and emit replay`),void this.emit(lt.mediaSourceTsIsMaxDiff,`decodeVideo is max diff, prevTs is ${this.prevTs} and ts is ${t}`)}}this.player.isPlayer()?this._decodeVideo(e,s,i,r,t):this.player.isPlayback()&&ka(this.player.playbackPause)&&(this.player.playback.isUseLocalCalculateTime&&this.player.playback.increaseLocalTimestamp(),this._decodeVideo(e,s,i,r,t)),this.prevDts=s,this.prevPayloadBufferSize=e.byteLength,this.prevTs=t}else this.player.debug.log(this.TAG_NAME,"decodeVideo first frame is not iFrame");else if(i&&e[1]===Ni){const r=15&e[0];if(s.video.updateVideoInfo({encTypeCode:r}),r===At&&ka(Gs()))return void this.player.emitError(lt.mediaSourceH265NotSupport);s._times.decodeStart||(s._times.decodeStart=vs()),this.hasInit=this._decodeConfigurationRecord(e,t,i,r)}else this.player.debug.warn(this.TAG_NAME,`decodeVideo has not init , isIframe is ${i} , payload is ${e[1]}`)}decodeAudio(e,t){if(this.player)if(this.player.isDestroyedOrClosed())this.player.debug.warn(this.TAG_NAME,"decodeAudio() player is destroyed");else if(ka(this.hasAudioInit))this.hasAudioInit=this._decodeAudioConfigurationRecord(e,t);else{let i=t;if(is(e))return void this.player.debug.log(this.TAG_NAME,"decodeAudio and has already initialized and payload is aac codec packet so drop this frame");if(this._clearAudioNoDataCheckTimeout(),this.player.isPlayer()){if(null===this.firstAudioTime&&(this.firstAudioTime=t,null!==this.firstRenderTime&&null!==this.prevTs)){const e=Math.abs(this.firstRenderTime-this.prevTs);e>300&&(this.firstAudioTime-=e,this.player.debug.warn(this.TAG_NAME,`video\n firstAudioTime is ${this.firstRenderTime} and current time is ${this.prevTs}\n play time is ${e} and firstAudioTime ${t} - ${e} = ${this.firstAudioTime}`))}if(i=t-this.firstAudioTime,i<0&&(this.player.debug.warn(this.TAG_NAME,`decodeAudio\n local dts is < 0 , ts is ${t} and prevTs is ${this.prevAudioTs},\n firstAudioTime is ${this.firstAudioTime}`),i=null===this.prevAudioDts?0:this.prevAudioDts+this.player._opt.mseCorrectAudioTimeDuration,this._checkAudioTsIsMaxDiff(t)))return this.player.debug.warn(this.TAG_NAME,`decodeAudio is max diff , ts is ${t} and prevTs is ${this.prevAudioDts}, diff is ${this.prevAudioDts-t} and emit replay`),void this.player.emitError(lt.mediaSourceTsIsMaxDiff,`decodeAudio is max diff, prevTs is ${this.prevAudioDts} and ts is ${t}`);null!==this.prevAudioTs&&i<=this.prevAudioDts&&(this.player.debug.warn(this.TAG_NAME,`\n decodeAudio dts is less than(or equal) prev dts ,\n dts is ${i} and prev dts is ${this.prevAudioDts} ,\n and now ts is ${t} and prev ts is ${this.prevAudioTs} ,\n and diff is ${t-this.prevAudioTs}`),i=this.prevAudioDts+this.player._opt.mseCorrectAudioTimeDuration)}(this.player.isPlayer()||this.player.isPlayback()&&ka(this.player.playbackPause))&&this._decodeAudio(e,i,t),this.prevAudioTs=t,this.prevAudioDts=i}}_checkTsIsMaxDiff(e){return this.prevTs>0&&eee}_checkAudioTsIsMaxDiff(e){return this.prevAudioTs>0&&eee}_decodeConfigurationRecord(e,t,i,r){let s=e.slice(5),a={};if(r===gt?a=On(s):r===At&&(a=function(e){const t=e;if(t.length<22)return console.error(`Invalid HEVCDecoderConfigurationRecord, lack of data! ${t.length} < 22`),{};let i={codecWidth:0,codecHeight:0,videoType:Ci},r=function(){let e=new ArrayBuffer(2);return new DataView(e).setInt16(0,256,!0),256===new Int16Array(e)[0]}(),s=new DataView(t.buffer),a=s.getUint8(0),n=31&s.getUint8(1);if(1!==a||0===n)return console.error(`Invalid HEVCDecoderConfigurationRecord,version is ${a}, hevcProfile is ${n}`),{};let o=1+(3&s.getUint8(21));if(3!==o&&4!==o)return console.error("Invalid HEVCDecoderConfigurationRecord, Strange NaluLengthSizeMinusOne: "+(o-1)),{};let l=s.getUint8(22);for(let e=0,a=23;e>4,r=i===_t.MP3,s=i===_t.AAC;if(ka(s||r))return this.player.debug.warn(this.TAG_NAME,`_decodeAudioConfigurationRecord audio codec is not support , codecId is ${i} ant auto wasm decode`),this.player.emit(lt.mediaSourceAudioG711NotSupport),!1;const a={id:Mr,type:"audio",timescale:1e3};let n={};if(is(e)){if(n=ds(e.slice(2)),!n)return!1;a.audioSampleRate=n.sampleRate,a.channelCount=n.channelCount,a.config=n.config,a.refSampleDuration=1024/a.audioSampleRate*a.timescale}else{if(!r)return!1;if(n=dd(e),!n)return!1;a.audioSampleRate=n.samplingRate,a.channelCount=n.channelCount,a.refSampleDuration=1152/a.audioSampleRate*a.timescale}a.codec=n.codec,a.duration=0;let o="mp4",l=n.codec,d=null;r&&ka(Rs())?(o="mpeg",l="",d=new Uint8Array):d=Dd.generateInitSegment(a);let h=`${a.type}/${o}`;return l&&l.length>0&&(h+=`;codecs=${l}`),ka(this.isAudioInitInfo)&&(this.player.audio.updateAudioInfo({encTypeCode:i,channels:a.channelCount,sampleRate:a.audioSampleRate}),this.isAudioInitInfo=!0),this.audioMimeType=h,this.isAAC=s,this._initAudioSourceBuffer(),this.appendAudioBuffer(d.buffer),!0}_initSourceBuffer(){const{debug:e,events:{proxy:t}}=this.player;if(null===this.sourceBuffer&&null!==this.mediaSource&&this.isStateOpen&&this.videoMimeType){try{this.sourceBuffer=this.mediaSource.addSourceBuffer(this.videoMimeType),e.log(this.TAG_NAME,"_initSourceBuffer() this.mediaSource.addSourceBuffer()",this.videoMimeType)}catch(t){return e.error(this.TAG_NAME,"appendBuffer() this.mediaSource.addSourceBuffer()",t.code,t),this.player.emitError(lt.mseAddSourceBufferError,t),void(this.mediaSourceAddSourceBufferError=!0)}if(this.sourceBuffer){const i=t(this.sourceBuffer,"error",(t=>{this.mediaSourceBufferError=!0,e.error(this.TAG_NAME,"mseSourceBufferError this.sourceBuffer",t),this.player.emitError(lt.mseSourceBufferError,t)})),r=t(this.sourceBuffer,"updateend",(()=>{this._hasPendingRemoveRanges()?this._doRemoveRanges():this._hasPendingSegments()&&this._doAppendSegments()}));this.eventListenList.push(i,r)}}else e.log(this.TAG_NAME,`_initSourceBuffer and this.isStateOpen is ${this.isStateOpen} and this.isAvc === null is ${null===this.isAvc}`)}_initAudioSourceBuffer(){const{debug:e,events:{proxy:t}}=this.player;if(null===this.audioSourceBuffer&&null!==this.mediaSource&&this.isStateOpen&&this.audioMimeType){try{this.audioSourceBuffer=this.mediaSource.addSourceBuffer(this.audioMimeType),this._clearAudioSourceBufferCheckTimeout(),e.log(this.TAG_NAME,"_initAudioSourceBuffer() this.mediaSource.addSourceBuffer()",this.audioMimeType)}catch(t){return e.error(this.TAG_NAME,"appendAudioBuffer() this.mediaSource.addSourceBuffer()",t.code,t),this.player.emitError(lt.mseAddSourceBufferError,t),void(this.mediaSourceAddSourceBufferError=!0)}if(this.audioSourceBuffer){const i=t(this.audioSourceBuffer,"error",(t=>{this.mediaSourceBufferError=!0,e.error(this.TAG_NAME,"mseSourceBufferError this.audioSourceBuffer",t),this.player.emitError(lt.mseSourceBufferError,t)})),r=t(this.audioSourceBuffer,"updateend",(()=>{this._hasPendingRemoveRanges()?this._doRemoveRanges():this._hasPendingSegments()&&this._doAppendSegments()}));this.eventListenList.push(i,r),null===this.audioSourceNoDataCheckTimeout&&(this.audioSourceNoDataCheckTimeout=setTimeout((()=>{this._clearAudioNoDataCheckTimeout(),this.player.emit(lt.mediaSourceAudioNoDataTimeout)}),1e3))}}else e.log(this.TAG_NAME,`_initAudioSourceBuffer and this.isStateOpen is ${this.isStateOpen} and this.audioMimeType is ${this.audioMimeType}`)}_decodeVideo(e,t,i,r,s){const a=this.player;let n=e.slice(5),o=n.byteLength;if(0===o)return void a.debug.warn(this.TAG_NAME,"_decodeVideo payload bytes is 0 and return");let l=(new Date).getTime(),d=!1;this.prevTimestamp||(this.prevTimestamp=l,d=!0);const h=l-this.prevTimestamp;this.decodeDiffTimestamp=h,h>500&&!d&&this.player.isPlayer()&&a.debug.warn(this.TAG_NAME,`_decodeVideo now time is ${l} and prev time is ${this.prevTimestamp}, diff time is ${h} ms`);const c=this.$videoElement;if(this.cacheTrack.id&&t>=this.cacheTrack.dts){let e=8+this.cacheTrack.size,i=new Uint8Array(e);i[0]=e>>>24&255,i[1]=e>>>16&255,i[2]=e>>>8&255,i[3]=255&e,i.set(Dd.types.mdat,4),i.set(this.cacheTrack.data,8),this.cacheTrack.duration=t-this.cacheTrack.dts;let r=Dd.moof(this.cacheTrack,this.cacheTrack.dts);this.cacheTrack={};let n=new Uint8Array(r.byteLength+i.byteLength);n.set(r,0),n.set(i,r.byteLength),this.appendBuffer(n.buffer),a.emit(st.timeUpdate,s),a.isPlayer()?a.isUseHls265()?a.updateStats({dfps:!0,mseTs:t}):a.updateStats({fps:!0,dfps:!0,ts:s,mseTs:t}):a.isPlayback()&&a.playback.updateStats({ts:s}),a._times.videoStart||(a._times.videoStart=vs(),a.handlePlayToRenderTimes())}else a.debug.log(this.TAG_NAME,`timeInit set false , cacheTrack = {} now dts is ${t}, and ts is ${s} cacheTrack dts is ${this.cacheTrack&&this.cacheTrack.dts}`),this.timeInit=!1,this.cacheTrack={};this.cacheTrack||(this.cacheTrack={}),this.cacheTrack.id=Br,this.cacheTrack.sequenceNumber=++this.sequenceNumber,this.cacheTrack.size=o,this.cacheTrack.dts=t,this.cacheTrack.cts=r,this.cacheTrack.isKeyframe=i,this.cacheTrack.data=n,this.cacheTrack.flags={isLeading:0,dependsOn:i?2:1,isDependedOn:i?1:0,hasRedundancy:0,isNonSync:i?0:1},!this.isInitInfo&&c.videoWidth>0&&c.videoHeight>0&&(a.debug.log(this.TAG_NAME,`updateVideoInfo: ${c.videoWidth},${c.videoHeight}`),a.video.updateVideoInfo({width:c.videoWidth,height:c.videoHeight}),a.video.initCanvasViewSize(),this.isInitInfo=!0),a._opt.mseUseCanvasRender&&ka(this.isSupportVideoFrameCallback)&&ka(a.isUseHls265())&&a.video.render({$video:c,ts:t}),this.prevTimestamp=(new Date).getTime()}_stopCanvasRender(){this.canvasRenderInterval&&(clearInterval(this.canvasRenderInterval),this.canvasRenderInterval=null)}_decodeAudio(e,t,i){this.player;let r=this.isAAC?e.slice(2):e.slice(1),s=r.byteLength;if(this.cacheAudioTrack.id&&t>=this.cacheAudioTrack.dts){let e=8+this.cacheAudioTrack.size,i=new Uint8Array(e);i[0]=e>>>24&255,i[1]=e>>>16&255,i[2]=e>>>8&255,i[3]=255&e,i.set(Dd.types.mdat,4),i.set(this.cacheAudioTrack.data,8),this.cacheAudioTrack.duration=t-this.cacheAudioTrack.dts;let r=Dd.moof(this.cacheAudioTrack,this.cacheAudioTrack.dts);this.cacheAudioTrack={};let s=new Uint8Array(r.byteLength+i.byteLength);s.set(r,0),s.set(i,r.byteLength),this.appendAudioBuffer(s.buffer)}else this.cacheAudioTrack={};this.cacheAudioTrack||(this.cacheAudioTrack={}),this.cacheAudioTrack.id=Mr,this.cacheAudioTrack.sequenceNumber=++this.audioSequenceNumber,this.cacheAudioTrack.size=s,this.cacheAudioTrack.dts=t,this.cacheAudioTrack.cts=0,this.cacheAudioTrack.data=r,this.cacheAudioTrack.flags={isLeading:0,dependsOn:1,isDependedOn:0,hasRedundancy:0}}appendBuffer(e){if(this.player.isDestroyedOrClosed())return void this.player.debug.warn(this.TAG_NAME,"appendBuffer() player is destroyed");const{debug:t,events:{proxy:i}}=this.player;this.mediaSourceAddSourceBufferError?t.warn(this.TAG_NAME,"appendBuffer() this.mediaSourceAddSourceBufferError is true"):this.mediaSourceAppendBufferFull?t.warn(this.TAG_NAME,"appendBuffer() this.mediaSourceAppendBufferFull is true"):this.mediaSourceAppendBufferError?t.warn(this.TAG_NAME,"appendBuffer() this.mediaSourceAppendBufferError is true"):this.mediaSourceBufferError?t.warn(this.TAG_NAME,"appendBuffer() this.mediaSourceBufferError is true"):(this.pendingSegments.push(e),this.sourceBuffer&&(this.player.isPlayer()&&this._handleUpdatePlaybackRate(),this.player.isPlayback()&&this._handleUpdateBufferDelayTime(),this.player._opt.mseAutoCleanupSourceBuffer&&this._needCleanupSourceBuffer()&&this._doCleanUpSourceBuffer(),ka(this.getSourceBufferUpdating())&&this.isStateOpen&&ka(this._hasPendingRemoveRanges()))?this._doAppendSegments():this.isStateClosed?(this.mediaSourceBufferError=!0,this.player.emitError(lt.mseSourceBufferError,"mediaSource is not attached to video or mediaSource is closed")):this.isStateEnded?(this.mediaSourceBufferError=!0,this.player.emitError(lt.mseSourceBufferError,"mediaSource is end")):this._hasPendingRemoveRanges()&&t.log(this.TAG_NAME,`video has pending remove ranges and video length is ${this.pendingRemoveRanges.length}, audio length is ${this.pendingAudioRemoveRanges.length}`))}appendAudioBuffer(e){if(this.player.isDestroyedOrClosed())return void this.player.debug.warn(this.TAG_NAME,"appendAudioBuffer() player is destroyed");const{debug:t,events:{proxy:i}}=this.player;this.mediaSourceAddSourceBufferError?t.warn(this.TAG_NAME,"appendAudioBuffer() this.mediaSourceAddSourceBufferError is true"):this.mediaSourceAppendBufferFull?t.warn(this.TAG_NAME,"appendAudioBuffer() this.mediaSourceAppendBufferFull is true"):this.mediaSourceAppendBufferError?t.warn(this.TAG_NAME,"appendAudioBuffer() this.mediaSourceAppendBufferError is true"):this.mediaSourceBufferError?t.warn(this.TAG_NAME,"appendAudioBuffer() this.mediaSourceBufferError is true"):(this.pendingAudioSegments.push(e),this.audioSourceBuffer&&(this.player.isPlayer()&&this._handleUpdatePlaybackRate(),this.player.isPlayback()&&this._handleUpdateBufferDelayTime(),this.player._opt.mseAutoCleanupSourceBuffer&&this._needCleanupSourceBuffer()&&this._doCleanUpSourceBuffer(),ka(this.getAudioSourceBufferUpdating())&&this.isStateOpen&&ka(this._hasPendingRemoveRanges()))?this._doAppendSegments():this.isStateClosed?(this.mediaSourceBufferError=!0,this.player.emitError(lt.mseSourceBufferError,"mediaSource is not attached to video or mediaSource is closed")):this.isStateEnded?(this.mediaSourceBufferError=!0,this.player.emitError(lt.mseSourceBufferError,"mediaSource is end")):this._hasPendingRemoveRanges()&&t.log(this.TAG_NAME,`audio has pending remove ranges and video length is ${this.pendingRemoveRanges.length}, audio length is ${this.pendingAudioRemoveRanges.length}`))}getSourceBufferUpdating(){return this.sourceBuffer&&this.sourceBuffer.updating}getAudioSourceBufferUpdating(){return this.audioSourceBuffer&&this.audioSourceBuffer.updating}stop(){this.removeSourceBuffer(),this.endOfStream(),this.abortSourceBuffer()}checkSourceBufferDelay(){const e=this.$videoElement;let t=0,i=0;return e.buffered.length>0&&(i=e.buffered.end(e.buffered.length-1),t=i-e.currentTime),t<0&&(this.player.debug.warn(this.TAG_NAME,`checkMSESourceBufferDelay ${t} < 0, and buffered is ${i} ,currentTime is ${e.currentTime} , try to seek ${e.currentTime} to ${i}`),e.currentTime=i,t=0),t}checkSourceBufferStore(){const e=this.$videoElement;let t=0;return e.buffered.length>0&&(t=e.currentTime-e.buffered.start(0)),t}getDecodeDiffTimes(){return this.decodeDiffTimestamp}removeBuffer(e,t){const i=da();if(this.player.debug.log(this.TAG_NAME,`removeBuffer() start is ${e} and end is ${t} and _isMacOsFirefox is ${i}`),this.isStateOpen&&ka(i)){if(ka(this.getSourceBufferUpdating()))try{this.sourceBuffer.remove(e,t)}catch(e){this.player.debug.warn(this.TAG_NAME,"removeBuffer() sourceBuffer error",e)}if(ka(this.getAudioSourceBufferUpdating()))try{this.audioSourceBuffer.remove(e,t)}catch(e){this.player.debug.warn(this.TAG_NAME,"removeBuffer() audioSourceBuffer error",e)}}}clearUpAllSourceBuffer(){if(this.sourceBuffer){const e=this.sourceBuffer.buffered;for(let t=0;t=1)try{this.player.debug.log(this.TAG_NAME,"endOfStream()"),this.mediaSource.endOfStream()}catch(e){this.player.debug.warn(this.TAG_NAME,"endOfStream() error",e)}}abortSourceBuffer(){if(this.isStateOpen){if(this.sourceBuffer)try{this.player.debug.log(this.TAG_NAME,"abortSourceBuffer() abort sourceBuffer"),this.sourceBuffer.abort()}catch(e){}if(this.audioSourceBuffer)try{this.player.debug.log(this.TAG_NAME,"abortSourceBuffer() abort audioSourceBuffer"),this.audioSourceBuffer.abort()}catch(e){}}this.sourceBuffer=null,this.audioSourceBuffer=null}removeSourceBuffer(){if(!this.isStateClosed&&this.mediaSource){if(this.sourceBuffer)try{this.player.debug.log(this.TAG_NAME,"removeSourceBuffer() sourceBuffer"),this.mediaSource.removeSourceBuffer(this.sourceBuffer)}catch(e){this.player.debug.warn(this.TAG_NAME,"removeSourceBuffer() sourceBuffer error",e)}if(this.audioSourceBuffer)try{this.player.debug.log(this.TAG_NAME,"removeSourceBuffer() audioSourceBuffer"),this.mediaSource.removeSourceBuffer(this.audioSourceBuffer)}catch(e){this.player.debug.warn(this.TAG_NAME,"removeSourceBuffer() audioSourceBuffer error",e)}}}_hasPendingSegments(){return this.pendingSegments.length>0||this.pendingAudioSegments.length>0}getPendingSegmentsLength(){return this.pendingSegments.length}_handleUpdatePlaybackRate(){if(!this.$videoElement)return;const e=this.$videoElement;let t=(this.player._opt.videoBuffer+this.player._opt.videoBufferDelay)/1e3;const i=e.buffered;i.length&&i.start(0);const r=i.length?i.end(i.length-1):0;let s=e.currentTime;const a=r-s,n=Math.max(5,t+3);if(this.player.updateStats({mseVideoBufferDelayTime:a}),a>n)this.player.debug.log(this.TAG_NAME,`handleUpdatePlaybackRate and buffered is ${r} and current is ${s} , delay buffer is more than ${n} is ${a} and new time is ${r}`),e.currentTime=r,s=e.currentTime;else if(a<0){if(this.player.debug.warn(this.TAG_NAME,`handleUpdatePlaybackRate and delay buffer is ${r} - current is ${s} = ${a} < 0 and check video is paused : ${e.paused} `),0===r)return void this.player.emit(lt.mediaSourceBufferedIsZeroError,"video.buffered is empty");e.paused&&e.play()}const o=this._getPlaybackRate(r-s);e.playbackRate!==o&&(this.player.debug.log(this.TAG_NAME,`handleUpdatePlaybackRate and buffered is ${r} and current time is ${s} and delay is ${r-s} set playbackRate is ${o} `),e.playbackRate=o)}_handleUpdateBufferDelayTime(){const e=this.getVideoBufferDelayTime();this.player.updateStats({mseVideoBufferDelayTime:e})}_doAppendSegments(){if(this.isStateClosed||this.isStateEnded)this.player.debug.log(this.TAG_NAME,"_doAppendSegments() mediaSource is closed or ended and return");else if(null!==this.sourceBuffer){if(this.needInitAudio()&&null===this.audioSourceBuffer)return this.player.debug.log(this.TAG_NAME,"_doAppendSegments() audioSourceBuffer is null and need init audio source buffer"),void(null===this.audioSourceBufferCheckTimeout&&(this.audioSourceBufferCheckTimeout=setTimeout((()=>{this._clearAudioSourceBufferCheckTimeout(),this.player.emit(lt.mediaSourceAudioInitTimeout)}),1e3)));if(ka(this.getSourceBufferUpdating())&&this.pendingSegments.length>0){const e=this.pendingSegments.shift();try{this.sourceBuffer.appendBuffer(e)}catch(e){this.player.debug.error(this.TAG_NAME,"this.sourceBuffer.appendBuffer()",e.code,e),22===e.code?(this.stop(),this.mediaSourceAppendBufferFull=!0,this.player.emitError(lt.mediaSourceFull)):11===e.code?(this.stop(),this.mediaSourceAppendBufferError=!0,this.player.emitError(lt.mediaSourceAppendBufferError)):(this.stop(),this.mediaSourceBufferError=!0,this.player.emitError(st.mseSourceBufferError,e))}}if(ka(this.getAudioSourceBufferUpdating())&&this.pendingAudioSegments.length>0){const e=this.pendingAudioSegments.shift();try{this.audioSourceBuffer.appendBuffer(e)}catch(e){this.player.debug.error(this.TAG_NAME,"this.audioSourceBuffer.appendBuffer()",e.code,e),22===e.code?(this.stop(),this.mediaSourceAppendBufferFull=!0,this.player.emitError(lt.mediaSourceFull)):11===e.code?(this.stop(),this.mediaSourceAppendBufferError=!0,this.player.emitError(lt.mediaSourceAppendBufferError)):(this.stop(),this.mediaSourceBufferError=!0,this.player.emitError(st.mseSourceBufferError,e))}}}else this.player.debug.log(this.TAG_NAME,"_doAppendSegments() sourceBuffer is null and wait init and return")}_doCleanUpSourceBuffer(){if(!this.$videoElement)return;const e=this.$videoElement.currentTime;if(this.sourceBuffer){const t=this.sourceBuffer.buffered;let i=!1;for(let r=0;r=this.player._opt.mseAutoCleanupMaxBackwardDuration){i=!0;let t=e-this.player._opt.mseAutoCleanupMinBackwardDuration;this.pendingRemoveRanges.push({start:s,end:t})}}else a=this.player._opt.mseAutoCleanupMaxBackwardDuration){i=!0;let t=e-this.player._opt.mseAutoCleanupMinBackwardDuration;this.pendingAudioRemoveRanges.push({start:s,end:t})}}else a0||this.pendingAudioRemoveRanges.length>0}_doRemoveRanges(){if(this.sourceBuffer&&ka(this.getSourceBufferUpdating())){let e=this.pendingRemoveRanges;for(;e.length&&ka(this.getSourceBufferUpdating());){let t=e.shift();try{this.sourceBuffer.remove(t.start,t.end)}catch(e){this.player.debug.warn(this.TAG_NAME,"_doRemoveRanges() sourceBuffer error",e)}}}if(this.audioSourceBuffer&&ka(this.getAudioSourceBufferUpdating())){let e=this.pendingAudioRemoveRanges;for(;e.length&&ka(this.getAudioSourceBufferUpdating());){let t=e.shift();try{this.audioSourceBuffer.remove(t.start,t.end)}catch(e){this.player.debug.warn(this.TAG_NAME,"_doRemoveRanges() audioSourceBuffer error",e)}}}}getDecodePlaybackRate(){let e=0;const t=this.$videoElement;return t&&(e=t.playbackRate),e}_getPlaybackRate(e){const t=this.$videoElement;let i=this.player._opt.videoBufferDelay+this.player._opt.videoBuffer;const r=Math.max(i,1e3),s=r/2;return e*=1e3,1===t.playbackRate?e>r?1.2:1:e<=s?1:t.playbackRate}_needCleanupSourceBuffer(){if(ka(this.player._opt.mseAutoCleanupSourceBuffer)||!this.$videoElement)return!1;const e=this.$videoElement,t=e.buffered,i=e.currentTime;return t.length>=1&&i-t.start(0)>=this.player._opt.mseAutoCleanupMaxBackwardDuration}getVideoCurrentTime(){let e=0;return this.$videoElement&&(e=this.$videoElement.currentTime),e}getVideoBufferLastTime(){const e=this.$videoElement;let t=0;if(e){const i=e.buffered;i.length&&i.start(0);t=i.length?i.end(i.length-1):0}return t}getVideoBufferDelayTime(){const e=this.$videoElement;const t=this.getVideoBufferLastTime()-e.currentTime;return t>0?t:0}_clearAudioSourceBufferCheckTimeout(){this.audioSourceBufferCheckTimeout&&(clearTimeout(this.audioSourceBufferCheckTimeout),this.audioSourceBufferCheckTimeout=null)}_clearAudioNoDataCheckTimeout(){this.audioSourceNoDataCheckTimeout&&(clearTimeout(this.audioSourceNoDataCheckTimeout),this.audioSourceNoDataCheckTimeout=null)}}const xd=()=>"wakeLock"in navigator&&-1===window.navigator.userAgent.indexOf("Samsung")&&ka(Ls());class Ld{constructor(e){this.player=e,this.enabled=!1,xd()?(this.player.debug.log("NoSleep","Native Wake Lock API supported."),this._wakeLock=null,this.handleVisibilityChange=()=>{null!==this._wakeLock&&"visible"===document.visibilityState&&this.enable()},document.addEventListener("visibilitychange",this.handleVisibilityChange),document.addEventListener("fullscreenchange",this.handleVisibilityChange)):(this.player.debug.log("NoSleep","Native Wake Lock API not supported. so use video element."),this.noSleepVideo=document.createElement("video"),this.noSleepVideo.setAttribute("title","No Sleep"),this.noSleepVideo.setAttribute("playsinline",""),this._addSourceToVideo(this.noSleepVideo,"webm","data:video/webm;base64,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ggOtgPj//qOHggPBgPj//qOHggPVgPj//qOHggPpgPj//qOegQPvANECAAUQrAAYABhYL/QACIAEM1+tck+ccwAAo4eCA/2A+P/+o4eCBBGA+P/+o4eCBCWA+P/+o4eCBDmA+P/+o4eCBE2A+P/+o56BBFMA0QIABRCsABgAGFgv9AAIgAQzX61yT5xzAACjh4IEiID4//6jh4IEnID4//6jh4IEsID4//6jnoEEtwDRAgAFEKwAGAAYWC/0AAiABDNfrXJPnHMAAKOHggTEgPj//qOHggTYgPj//qOHggTsgPj//qOHggUAgPj//qOHggUUgPj//qOegQUbANECAAUQrAAYABhYL/QACIAEM1+tck+ccwAAo4eCBSiA+P/+o4eCBTyA+P/+o4eCBVCA+P/+o4eCBWSA+P/+o4eCBXiA+P/+o56BBX8A0QIABRCsABgAGFgv9AAIgAQzX61yT5xzAACjh4IFjID4//6jh4IFoID4//6jh4IFtID4//6jh4IFyID4//6jh4IF3ID4//6jnoEF4wDRAgAFEKwAGAAYWC/0AAiABDNfrXJPnHMAAKOHggXwgPj//qOHggYEgPj//qOHggYYgPj//qOHggYsgPj//qOHggZAgPj//qOegQZHANECAAUQrAAYABhYL/QACIAEM1+tck+ccwAAo4eCBlSA+P/+o4eCBmiA+P/+o4eCBnyA+P/+o4eCBpCA+P/+o4eCBqSA+P/+o56BBqsA0QIABRCsABgAGFgv9AAIgAQzX61yT5xzAACjh4IGuID4//6jh4IGzID4//6jh4IG4ID4//6jh4IG9ID4//6jh4IHCID4//6jnoEHDwDRAgAFEBAUYABhYL/QACIAEM1+tck+ccwAAKOHggccgPj//qOHggcwgPj//qOHggdEgPj//qOHggdYgPj//qOHggdsgPj//qOegQdzANECAAUQrAAYABhYL/QACIAEM1+tck+ccwAAo4eCB4CA+P/+o4eCB5SA+P/+o4eCB6iA+P/+o4eCB7yA+P/+o4eCB9CA+P/+o56BB9cA0QIABRCsABgAGFgv9AAIgAQzX61yT5xzAACjh4IH5ID4//6jh4IH+ID4//6jh4IIDID4//6jh4IIIID4//6jh4IINID4//6jnoEIOwDRAgAFEKwAGAAYWC/0AAiABDNfrXJPnHMAAKOHgghIgPj//qOHgghcgPj//qOHgghwgPj//qOHggiEgPj//qOegQifANECAAUQrAAYABhYL/QACIAEM1+tck+ccwAAo4eCCMCA+P/+o4eCCNSA+P/+o4eCCOiA+P/+o4eCCPyA+P/+o56BCQMA0QIABRCsABgAGFgv9AAIgAQzX61yT5xzAACjh4IJEID4//6jh4IJJID4//6jh4IJOID4//6jh4IJTID4//6jh4IJYID4//6jnoEJZwDRAgAFEKwAGAAYWC/0AAiABDNfrXJPnHMAAKOHggl0gPj//qOHggmIgPj//qOHggmcgPj//qOHggmwgPj//qOHggnEgPj//qOegQnLANECAAUQrAAYABhYL/QACIAEM1+tck+ccwAAo4eCCdiA+P/+o4eCCeyA+P/+o4eCCgCA+P/+o4eCChSA+P/+o4eCCiiA+P/+o56BCi8A0QIABRCsABgAGFgv9AAIgAQzX61yT5xzAACjh4IKPID4//6jh4IKUID4//6jh4IKZID4//6jh4IKeID4//6jh4IKjID4//6jnoEKkwDRAgAFEKwAGAAYWC/0AAiABDNfrXJPnHMAAKOHggqggPj//qOHggq0gPj//qOHggrIgPj//qOHggrcgPj//qOHggrwgPj//qOegQr3ANECAAUQrAAYABhYL/QACIAEM1+tck+ccwAAo4eCCwSA+P/+o4eCCxiA+P/+o4eCCyyA+P/+o4eCC0CA+P/+o4eCC1SA+P/+o56BC1sA0QIABRAQFGAAYWC/0AAiABDNfrXJPnHMAACjh4ILaID4//6jh4ILfID4//6jh4ILkID4//6jh4ILpID4//6jh4ILuID4//6jnoELvwDRAgAFEKwAGAAYWC/0AAiABDNfrXJPnHMAAKOHggvMgPj//qOHggvggPj//qOHggv0gPj//qOHggwIgPj//qOHggwcgPj//qOegQwjANECAAUQrAAYABhYL/QACIAEM1+tck+ccwAAo4eCDDCA+P/+o4eCDESA+P/+o4eCDFiA+P/+o4eCDGyA+P/+o4eCDICA+P/+o56BDIcA0QIABRCsABgAGFgv9AAIgAQzX61yT5xzAACjh4IMlID4//6jh4IMqID4//6jh4IMvID4//6jh4IM0ID4//6jnoEM6wDRAgAFEKwAGAAYWC/0AAiABDNfrXJPnHMAAKOHgg0MgPj//qOHgg0ggPj//qOHgg00gPj//qOHgg1IgPj//qOegQ1PANECAAUQrAAYABhYL/QACIAEM1+tck+ccwAAo4eCDVyA+P/+o4eCDXCA+P/+o4eCDYSA+P/+o4eCDZiA+P/+o4eCDayA+P/+o56BDbMA0QIABRCsABgAGFgv9AAIgAQzX61yT5xzAACjh4INwID4//6jh4IN1ID4//6jh4IN6ID4//6jh4IN/ID4//6jh4IOEID4//6jnoEOFwDRAgAFEKwAGAAYWC/0AAiABDNfrXJPnHMAAKOHgg4kgPj//qOHgg44gPj//qOHgg5MgPj//qOHgg5ggPj//qOHgg50gPj//qOegQ57ANECAAUQrAAYABhYL/QACIAEM1+tck+ccwAAo4eCDoiA+P/+o4eCDpyA+P/+o4eCDrCA+P/+o4eCDsSA+P/+o4eCDtiA+P/+o56BDt8A0QIABRCsABgAGFgv9AAIgAQzX61yT5xzAACjh4IO7ID4//6jh4IPAID4//6jh4IPFID4//6jh4IPKID4//6jh4IPPID4//6jnoEPQwDRAgAFEKwAGAAYWC/0AAiABDNfrXJPnHMAAKOHgg9QgPj//qOHgg9kgPj//qOHgg94gPj//qOHgg+MgPj//qOHgg+ggPj//qOegQ+nANECAAUQEBRgAGFgv9AAIgAQzX61yT5xzAAAo4eCD7SA+P/+o4eCD8iA+P/+o4eCD9yA+P/+o4eCD/CA+P/+o4eCEASA+P/+o56BEAsA0QIABRCsABgAGFgv9AAIgAQzX61yT5xzAACjh4IQGID4//6jh4IQLID4//6jh4IQQID4//6jh4IQVID4//6jh4IQaID4//6jnoEQbwDRAgAFEKwAGAAYWC/0AAiABDNfrXJPnHMAAKOHghB8gPj//qOHghCQgPj//qOHghCkgPj//qOHghC4gPj//qOHghDMgPj//qOegRDTANECAAUQrAAYABhYL/QACIAEM1+tck+ccwAAo4eCEOCA+P/+o4eCEPSA+P/+o4eCEQiA+P/+o56BETcA0QIABRCsABgAGFgv9AAIgAQzX61yT5xzAACjh4IRQ4D4//6jh4IRV4D4//6jh4IRa4D4//6jh4IRf4D4//6jh4IRk4D4//6jnoERmwDRAgAFEKwAGAAYWC/0AAiABDNfrXJPnHMAAKOHghGngPj//qOHghG7gPj//qOHghHPgPj//qOHghHjgPj//qOHghH3gPj//qOegRH/ANECAAUQrAAYABhYL/QACIAEM1+tck+ccwAAo4eCEguA+P/+o4eCEh+A+P/+o4eCEjOA+P/+o4eCEkeA+P/+o4eCEluA+P/+o56BEmMA0QIABRCsABgAGFgv9AAIgAQzX61yT5xzAACjh4ISb4D4//6jh4ISg4D4//6jh4ISl4D4//6jh4ISq4D4//6jh4ISv4D4//6jnoESxwDRAgAFEKwAGAAYWC/0AAiABDNfrXJPnHMAAKOHghLTgPj//qOHghLngPj//qOHghL7gPj//qOHghMPgPj//qOHghMjgPj//qOegRMrANECAAUQrAAYABhYL/QACIAEM1+tck+ccwAAo4eCEzeA+P/+o4eCE0uA+P/+o4eCE1+A+P/+o4eCE3OA+P/+oAEAAAAAAAAPoYeCE4cA+P/+daKDB/KBHFO7a5G7j7OBB7eK94EB8YIDX/CBDA=="),this._addSourceToVideo(this.noSleepVideo,"mp4","data:video/mp4;base64,AAAAIGZ0eXBpc29tAAACAGlzb21pc28yYXZjMW1wNDEAAAAIZnJlZQAACORtZGF03gIATGF2YzU4LjM1LjEwMAACMEAOAAACcQYF//9t3EXpvebZSLeWLNgg2SPu73gyNjQgLSBjb3JlIDE2MSByMzAyNyA0MTIxMjc3IC0gSC4yNjQvTVBFRy00IEFWQyBjb2RlYyAtIENvcHlsZWZ0IDIwMDMtMjAyMCAtIGh0dHA6Ly93d3cudmlkZW9sYW4ub3JnL3gyNjQuaHRtbCAtIG9wdGlvbnM6IGNhYmFjPTAgcmVmPTMgZGVibG9jaz0xOjA6MCBhbmFseXNlPTB4MToweDExMSBtZT1oZXggc3VibWU9NyBwc3k9MSBwc3lfcmQ9MS4wMDowLjAwIG1peGVkX3JlZj0xIG1lX3JhbmdlPTE2IGNocm9tYV9tZT0xIHRyZWxsaXM9MSA4eDhkY3Q9MCBjcW09MCBkZWFkem9uZT0yMSwxMSBmYXN0X3Bza2lwPTEgY2hyb21hX3FwX29mZnNldD0tMiB0aHJlYWRzPTcgbG9va2FoZWFkX3RocmVhZHM9MSBzbGljZWRfdGhyZWFkcz0wIG5yPTAgZGVjaW1hdGU9MSBpbnRlcmxhY2VkPTAgYmx1cmF5X2NvbXBhdD0wIGNvbnN0cmFpbmVkX2ludHJhPTAgYmZyYW1lcz0wIHdlaWdodHA9MCBrZXlpbnQ9MjUwIGtleWludF9taW49MTAgc2NlbmVjdXQ9NDAgaW50cmFfcmVmcmVzaD0wIHJjX2xvb2thaGVhZD00MCByYz1jcmYgbWJ0cmVlPTEgY3JmPTIzLjAgcWNvbXA9MC42MCBxcG1pbj0wIHFwbWF4PTY5IHFwc3RlcD00IGlwX3JhdGlvPTEuNDAgYXE9MToxLjAwAIAAAADvZYiED/JigADD7JycnJycnJycnJycnJycnJycnJ11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111114BGCAHARggBwEYIAcBGCAHARggBwAAAAdBmjgf4BLYARggBwEYIAcBGCAHARggBwAAAAdBmlQH+AS2ARggBwEYIAcBGCAHARggBwAAAAdBmmA/wCWwARggBwEYIAcBGCAHARggBwEYIAcAAAAHQZqAP8AlsAEYIAcBGCAHARggBwEYIAcAAAAHQZqgP8AlsAEYIAcBGCAHARggBwEYIAcAAAAHQZrAP8AlsAEYIAcBGCAHARggBwEYIAcBGCAHAAAAB0Ga4D/AJbABGCAHARggBwEYIAcBGCAHAAAAB0GbAD/AJbABGCAHARggBwEYIAcBGCAHAAAAB0GbID/AJbABGCAHARggBwEYIAcBGCAHARggBwAAAAdBm0A/wCWwARggBwEYIAcBGCAHAAAAB0GbYD/AJbABGCAHARggBwEYIAcAAAAHQZuAP8AlsAEYIAcBGCAHARggBwEYIAcBGCAHAAAAB0GboD/AJbABGCAHARggBwEYIAcBGCAHAAAAB0GbwD/AJbABGCAHARggBwEYIAcBGCAHAAAAB0Gb4D/AJbABGCAHARggBwEYIAcBGCAHARggBwAAAAdBmgA/wCWwARggBwEYIAcBGCAHARggBwAAAAdBmiA/wCWwARggBwEYIAcBGCAHARggBwAAAAdBmkA/wCWwARggBwEYIAcBGCAHARggBwEYIAcAAAAHQZpgP8AlsAEYIAcBGCAHARggBwEYIAcAAAAHQZqAP8AlsAEYIAcBGCAHARggBwEYIAcAAAAHQZqgP8AlsAEYIAcBGCAHARggBwAAAAdBmsA/wCWwARggBwEYIAcBGCAHARggBwAAAAdBmuA/wCWwARggBwEYIAcBGCAHARggBwAAAAdBmwA/wCWwARggBwEYIAcBGCAHARggBwEYIAcAAAAHQZsgP8AlsAEYIAcBGCAHARggBwEYIAcAAAAHQZtAP8AlsAEYIAcBGCAHARggBwEYIAcAAAAHQZtgP8AlsAEYIAcBGCAHARggBwEYIAcBGCAHAAAAB0GbgD/AJbABGCAHARggBwEYIAcBGCAHAAAAB0GboD/AJbABGCAHARggBwEYIAcBGCAHAAAAB0GbwD/AJbABGCAHARggBwEYIAcBGCAHARggBwAAAAdBm+A/wCWwARggBwEYIAcBGCAHARggBwAAAAdBmgA/wCWwARggBwEYIAcAAAAHQZogP8AlsAEYIAcBGCAHARggBwEYIAcBGCAHAAAAB0GaQD/AJbABGCAHARggBwEYIAcBGCAHAAAAB0GaYD/AJbABGCAHARggBwEYIAcBGCAHAAAAB0GagD/AJbABGCAHARggBwEYIAcBGCAHARggBwAAAAdBmqA/wCWwARggBwEYIAcBGCAHARggBwAAAAdBmsA/wCWwARggBwEYIAcBGCAHARggBwAAAAdBmuA/wCWwARggBwEYIAcBGCAHARggBwEYIAcAAAAHQZsAP8AlsAEYIAcBGCAHARggBwEYIAcAAAAHQZsgP8AlsAEYIAcBGCAHARggBwEYIAcAAAAHQZtAP8AlsAEYIAcBGCAHARggBwEYIAcBGCAHAAAAB0GbYD/AJbABGCAHARggBwAAAAdBm4A/wCWwARggBwEYIAcBGCAHARggBwAAAAdBm6A/wCWwARggBwEYIAcBGCAHARggBwEYIAcAAAAHQZvAP8AlsAEYIAcBGCAHARggBwEYIAcAAAAHQZvgP8AlsAEYIAcBGCAHARggBwEYIAcAAAAHQZoAO8AlsAEYIAcBGCAHARggBwEYIAcBGCAHAAAAB0GaIDfAJbABGCAHARggBwEYIAcBGCAHAAAMxm1vb3YAAABsbXZoZAAAAAAAAAAAAAAAAAAAA+gAABOgAAEAAAEAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAPLdHJhawAAAFx0a2hkAAAAAwAAAAAAAAAAAAAAAQAAAAAAABOIAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAQAAAAAElVVUA8AAAAAAAJGVkdHMAAAAcZWxzdAAAAAAAAAABAAATiAAAAAAAAQAAAAADQ21kaWEAAAAgbWRoZAAAAAAAAAAAAAAAAAAAKAAAAMgAVcQAAAAAAC1oZGxyAAAAAAAAAAB2aWRlAAAAAAAAAAAAAAAAVmlkZW9IYW5kbGVyAAAAAu5taW5mAAAAFHZtaGQAAAABAAAAAAAAAAAAAAAkZGluZgAAABxkcmVmAAAAAAAAAAEAAAAMdXJsIAAAAAEAAAKuc3RibAAAAKpzdHNkAAAAAAAAAAEAAACaYXZjMQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAFAAPAASAAAAEgAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABj//wAAADRhdmNDAULAC//hABxnQsAL2QFB+/8ACwAMEAAAAwAQAAADAUDxQqSAAQAFaMuDyyAAAAAQcGFzcAAAAAsAAAAMAAAAGHN0dHMAAAAAAAAAAQAAADIAAAQAAAAAFHN0c3MAAAAAAAAAAQAAAAEAAAAcc3RzYwAAAAAAAAABAAAAAQAAAAEAAAABAAAA3HN0c3oAAAAAAAAAAAAAADIAAANoAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAANhzdGNvAAAAAAAAADIAAABFAAADwQAAA9wAAAP3AAAEFgAABDEAAARMAAAEawAABIYAAAShAAAEwAAABNcAAATuAAAFDQAABSgAAAVDAAAFYgAABX0AAAWYAAAFtwAABdIAAAXtAAAGBAAABh8AAAY6AAAGWQAABnQAAAaPAAAGrgAABskAAAbkAAAHAwAABx4AAAcxAAAHUAAAB2sAAAeGAAAHpQAAB8AAAAfbAAAH+gAACBUAAAgwAAAITwAACGIAAAh9AAAInAAACLcAAAjSAAAI8QAACCV0cmFrAAAAXHRraGQAAAADAAAAAAAAAAAAAAACAAAAAAAAE6AAAAAAAAAAAAAAAAEBAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAkZWR0cwAAABxlbHN0AAAAAAAAAAEAABOIAAAEAAABAAAAAAedbWRpYQAAACBtZGhkAAAAAAAAAAAAAAAAAACsRAADYVRVxAAAAAAALWhkbHIAAAAAAAAAAHNvdW4AAAAAAAAAAAAAAABTb3VuZEhhbmRsZXIAAAAHSG1pbmYAAAAQc21oZAAAAAAAAAAAAAAAJGRpbmYAAAAcZHJlZgAAAAAAAAABAAAADHVybCAAAAABAAAHDHN0YmwAAABqc3RzZAAAAAAAAAABAAAAWm1wNGEAAAAAAAAAAQAAAAAAAAAAAAIAEAAAAACsRAAAAAAANmVzZHMAAAAAA4CAgCUAAgAEgICAF0AVAAAAAAENiAAABVQFgICABRIIVuUABoCAgAECAAAAYHN0dHMAAAAAAAAACgAAAC8AAAQAAAAAAQAACtUAAAAsAAAEAAAAAAEAAArWAAAALAAABAAAAAABAAAK1QAAACwAAAQAAAAAAQAACtUAAAAaAAAEAAAAAAEAAAH/AAABzHN0c2MAAAAAAAAAJQAAAAEAAAABAAAAAQAAAAIAAAAFAAAAAQAAAAMAAAAEAAAAAQAAAAUAAAAFAAAAAQAAAAYAAAAEAAAAAQAAAAgAAAAFAAAAAQAAAAkAAAAEAAAAAQAAAAsAAAAFAAAAAQAAAAwAAAADAAAAAQAAAA4AAAAFAAAAAQAAAA8AAAAEAAAAAQAAABEAAAAFAAAAAQAAABIAAAAEAAAAAQAAABQAAAAFAAAAAQAAABUAAAAEAAAAAQAAABcAAAADAAAAAQAAABgAAAAEAAAAAQAAABoAAAAFAAAAAQAAABsAAAAEAAAAAQAAAB0AAAAFAAAAAQAAAB4AAAAEAAAAAQAAACAAAAAFAAAAAQAAACEAAAAEAAAAAQAAACIAAAACAAAAAQAAACMAAAAFAAAAAQAAACQAAAAEAAAAAQAAACYAAAAFAAAAAQAAACcAAAAEAAAAAQAAACkAAAAFAAAAAQAAACoAAAAEAAAAAQAAACwAAAAFAAAAAQAAAC0AAAACAAAAAQAAAC4AAAAEAAAAAQAAAC8AAAAFAAAAAQAAADAAAAAEAAAAAQAAADIAAAAFAAAAAQAAADMAAAAEAAAAAQAAA1xzdHN6AAAAAAAAAAAAAADSAAAAFQAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAA3HN0Y28AAAAAAAAAMwAAADAAAAOtAAADzAAAA+cAAAQCAAAEIQAABDwAAARXAAAEdgAABJEAAASsAAAEywAABOIAAAT5AAAFGAAABTMAAAVOAAAFbQAABYgAAAWjAAAFwgAABd0AAAX4AAAGDwAABioAAAZFAAAGZAAABn8AAAaaAAAGuQAABtQAAAbvAAAHDgAABykAAAc8AAAHWwAAB3YAAAeRAAAHsAAAB8sAAAfmAAAIBQAACCAAAAg7AAAIWgAACG0AAAiIAAAIpwAACMIAAAjdAAAI/AAAABpzZ3BkAQAAAHJvbGwAAAACAAAAAf//AAAAHHNiZ3AAAAAAcm9sbAAAAAEAAADSAAAAAQAAAGJ1ZHRhAAAAWm1ldGEAAAAAAAAAIWhkbHIAAAAAAAAAAG1kaXJhcHBsAAAAAAAAAAAAAAAALWlsc3QAAAAlqXRvbwAAAB1kYXRhAAAAAQAAAABMYXZmNTguMjAuMTAw"),Object.assign(this.noSleepVideo.style,{position:"absolute",left:"-100%",top:"-100%"}),document.querySelector("body").append(this.noSleepVideo),this.handleNoSleepVideoTimeUpdate=()=>{this.noSleepVideo&&this.noSleepVideo.currentTime>4&&(this.noSleepVideo.currentTime=1)},this.noSleepVideo.addEventListener("timeupdate",this.handleNoSleepVideoTimeUpdate))}destroy(){if(this._wakeLock&&(this._wakeLock.release(),this._wakeLock=null),this.noSleepVideo){this.handleNoSleepVideoTimeUpdate&&this.noSleepVideo.removeEventListener("timeupdate",this.handleNoSleepVideoTimeUpdate);try{this.noSleepVideo.parentNode&&this.noSleepVideo.parentNode.removeChild(this.noSleepVideo)}catch(e){this.player.debug.warn("NoSleep","Failed to remove noSleepVideo element.")}this.noSleepVideo=null}this.handleVisibilityChange&&(document.removeEventListener("visibilitychange",this.handleVisibilityChange),document.removeEventListener("fullscreenchange",this.handleVisibilityChange))}_addSourceToVideo(e,t,i){var r=document.createElement("source");r.src=i,r.type=`video/${t}`,e.appendChild(r)}get isEnabled(){return this.enabled}enable(){const e=this.player.debug;if(xd())return navigator.wakeLock.request("screen").then((t=>{this._wakeLock=t,this.enabled=!0,e.log("wakeLock","Wake Lock active."),this._wakeLock.addEventListener("release",(()=>{e.log("wakeLock","Wake Lock released.")}))})).catch((t=>{throw this.enabled=!1,e.warn("wakeLock",`${t.name}, ${t.message}`),t}));return this.noSleepVideo.play().then((t=>(e.log("wakeLock","noSleepVideo Wake Lock active."),this.enabled=!0,t))).catch((t=>{throw e.warn("wakeLock",`noSleepVideo ${t.name}, ${t.message}`),this.enabled=!1,t}))}disable(){xd()?(this._wakeLock&&this._wakeLock.release(),this._wakeLock=null):this.noSleepVideo&&this.noSleepVideo.pause(),this.enabled=!1,this.player.debug.log("wakeLock","Disabling wake lock.")}}var Id,Pd=Zr((function(e,t){!function t(i){e.exports=function(){function e(e,t,i){if(r())return Reflect.construct.apply(null,arguments);var s=[null];s.push.apply(s,t);var a=new(e.bind.apply(e,s));return i&&f(a,i.prototype),a}function r(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(e){}return(r=function(){return!!e})()}function s(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,r)}return i}function a(e){for(var t=1;te.length)&&(t=e.length);for(var i=0,r=new Array(t);i=e.length?{done:!0}:{done:!1,value:e[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function b(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var _={exports:{}};!function(e,t){var i,r,s,a,n;i=/^(?=((?:[a-zA-Z0-9+\-.]+:)?))\1(?=((?:\/\/[^\/?#]*)?))\2(?=((?:(?:[^?#\/]*\/)*[^;?#\/]*)?))\3((?:;[^?#]*)?)(\?[^#]*)?(#[^]*)?$/,r=/^(?=([^\/?#]*))\1([^]*)$/,s=/(?:\/|^)\.(?=\/)/g,a=/(?:\/|^)\.\.\/(?!\.\.\/)[^\/]*(?=\/)/g,n={buildAbsoluteURL:function(e,t,i){if(i=i||{},e=e.trim(),!(t=t.trim())){if(!i.alwaysNormalize)return e;var s=n.parseURL(e);if(!s)throw new Error("Error trying to parse base URL.");return s.path=n.normalizePath(s.path),n.buildURLFromParts(s)}var a=n.parseURL(t);if(!a)throw new Error("Error trying to parse relative URL.");if(a.scheme)return i.alwaysNormalize?(a.path=n.normalizePath(a.path),n.buildURLFromParts(a)):t;var o=n.parseURL(e);if(!o)throw new Error("Error trying to parse base URL.");if(!o.netLoc&&o.path&&"/"!==o.path[0]){var l=r.exec(o.path);o.netLoc=l[1],o.path=l[2]}o.netLoc&&!o.path&&(o.path="/");var d={scheme:o.scheme,netLoc:a.netLoc,path:null,params:a.params,query:a.query,fragment:a.fragment};if(!a.netLoc&&(d.netLoc=o.netLoc,"/"!==a.path[0]))if(a.path){var h=o.path,c=h.substring(0,h.lastIndexOf("/")+1)+a.path;d.path=n.normalizePath(c)}else d.path=o.path,a.params||(d.params=o.params,a.query||(d.query=o.query));return null===d.path&&(d.path=i.alwaysNormalize?n.normalizePath(a.path):a.path),n.buildURLFromParts(d)},parseURL:function(e){var t=i.exec(e);return t?{scheme:t[1]||"",netLoc:t[2]||"",path:t[3]||"",params:t[4]||"",query:t[5]||"",fragment:t[6]||""}:null},normalizePath:function(e){for(e=e.split("").reverse().join("").replace(s,"");e.length!==(e=e.replace(a,"")).length;);return e.split("").reverse().join("")},buildURLFromParts:function(e){return e.scheme+e.netLoc+e.path+e.params+e.query+e.fragment}},e.exports=n}(_);var w=_.exports,E=Number.isFinite||function(e){return"number"==typeof e&&isFinite(e)},S=Number.isSafeInteger||function(e){return"number"==typeof e&&Math.abs(e)<=T},T=Number.MAX_SAFE_INTEGER||9007199254740991,k=function(e){return e.MEDIA_ATTACHING="hlsMediaAttaching",e.MEDIA_ATTACHED="hlsMediaAttached",e.MEDIA_DETACHING="hlsMediaDetaching",e.MEDIA_DETACHED="hlsMediaDetached",e.MEDIA_ENDED="hlsMediaEnded",e.BUFFER_RESET="hlsBufferReset",e.BUFFER_CODECS="hlsBufferCodecs",e.BUFFER_CREATED="hlsBufferCreated",e.BUFFER_APPENDING="hlsBufferAppending",e.BUFFER_APPENDED="hlsBufferAppended",e.BUFFER_EOS="hlsBufferEos",e.BUFFER_FLUSHING="hlsBufferFlushing",e.BUFFER_FLUSHED="hlsBufferFlushed",e.MANIFEST_LOADING="hlsManifestLoading",e.MANIFEST_LOADED="hlsManifestLoaded",e.MANIFEST_PARSED="hlsManifestParsed",e.LEVEL_SWITCHING="hlsLevelSwitching",e.LEVEL_SWITCHED="hlsLevelSwitched",e.LEVEL_LOADING="hlsLevelLoading",e.LEVEL_LOADED="hlsLevelLoaded",e.LEVEL_UPDATED="hlsLevelUpdated",e.LEVEL_PTS_UPDATED="hlsLevelPtsUpdated",e.LEVELS_UPDATED="hlsLevelsUpdated",e.AUDIO_TRACKS_UPDATED="hlsAudioTracksUpdated",e.AUDIO_TRACK_SWITCHING="hlsAudioTrackSwitching",e.AUDIO_TRACK_SWITCHED="hlsAudioTrackSwitched",e.AUDIO_TRACK_LOADING="hlsAudioTrackLoading",e.AUDIO_TRACK_LOADED="hlsAudioTrackLoaded",e.SUBTITLE_TRACKS_UPDATED="hlsSubtitleTracksUpdated",e.SUBTITLE_TRACKS_CLEARED="hlsSubtitleTracksCleared",e.SUBTITLE_TRACK_SWITCH="hlsSubtitleTrackSwitch",e.SUBTITLE_TRACK_LOADING="hlsSubtitleTrackLoading",e.SUBTITLE_TRACK_LOADED="hlsSubtitleTrackLoaded",e.SUBTITLE_FRAG_PROCESSED="hlsSubtitleFragProcessed",e.CUES_PARSED="hlsCuesParsed",e.NON_NATIVE_TEXT_TRACKS_FOUND="hlsNonNativeTextTracksFound",e.INIT_PTS_FOUND="hlsInitPtsFound",e.FRAG_LOADING="hlsFragLoading",e.FRAG_LOAD_EMERGENCY_ABORTED="hlsFragLoadEmergencyAborted",e.FRAG_LOADED="hlsFragLoaded",e.FRAG_DECRYPTED="hlsFragDecrypted",e.FRAG_PARSING_INIT_SEGMENT="hlsFragParsingInitSegment",e.FRAG_PARSING_USERDATA="hlsFragParsingUserdata",e.FRAG_PARSING_METADATA="hlsFragParsingMetadata",e.FRAG_PARSED="hlsFragParsed",e.FRAG_BUFFERED="hlsFragBuffered",e.FRAG_CHANGED="hlsFragChanged",e.FPS_DROP="hlsFpsDrop",e.FPS_DROP_LEVEL_CAPPING="hlsFpsDropLevelCapping",e.MAX_AUTO_LEVEL_UPDATED="hlsMaxAutoLevelUpdated",e.ERROR="hlsError",e.DESTROYING="hlsDestroying",e.KEY_LOADING="hlsKeyLoading",e.KEY_LOADED="hlsKeyLoaded",e.LIVE_BACK_BUFFER_REACHED="hlsLiveBackBufferReached",e.BACK_BUFFER_REACHED="hlsBackBufferReached",e.STEERING_MANIFEST_LOADED="hlsSteeringManifestLoaded",e}({}),C=function(e){return e.NETWORK_ERROR="networkError",e.MEDIA_ERROR="mediaError",e.KEY_SYSTEM_ERROR="keySystemError",e.MUX_ERROR="muxError",e.OTHER_ERROR="otherError",e}({}),D=function(e){return e.KEY_SYSTEM_NO_KEYS="keySystemNoKeys",e.KEY_SYSTEM_NO_ACCESS="keySystemNoAccess",e.KEY_SYSTEM_NO_SESSION="keySystemNoSession",e.KEY_SYSTEM_NO_CONFIGURED_LICENSE="keySystemNoConfiguredLicense",e.KEY_SYSTEM_LICENSE_REQUEST_FAILED="keySystemLicenseRequestFailed",e.KEY_SYSTEM_SERVER_CERTIFICATE_REQUEST_FAILED="keySystemServerCertificateRequestFailed",e.KEY_SYSTEM_SERVER_CERTIFICATE_UPDATE_FAILED="keySystemServerCertificateUpdateFailed",e.KEY_SYSTEM_SESSION_UPDATE_FAILED="keySystemSessionUpdateFailed",e.KEY_SYSTEM_STATUS_OUTPUT_RESTRICTED="keySystemStatusOutputRestricted",e.KEY_SYSTEM_STATUS_INTERNAL_ERROR="keySystemStatusInternalError",e.MANIFEST_LOAD_ERROR="manifestLoadError",e.MANIFEST_LOAD_TIMEOUT="manifestLoadTimeOut",e.MANIFEST_PARSING_ERROR="manifestParsingError",e.MANIFEST_INCOMPATIBLE_CODECS_ERROR="manifestIncompatibleCodecsError",e.LEVEL_EMPTY_ERROR="levelEmptyError",e.LEVEL_LOAD_ERROR="levelLoadError",e.LEVEL_LOAD_TIMEOUT="levelLoadTimeOut",e.LEVEL_PARSING_ERROR="levelParsingError",e.LEVEL_SWITCH_ERROR="levelSwitchError",e.AUDIO_TRACK_LOAD_ERROR="audioTrackLoadError",e.AUDIO_TRACK_LOAD_TIMEOUT="audioTrackLoadTimeOut",e.SUBTITLE_LOAD_ERROR="subtitleTrackLoadError",e.SUBTITLE_TRACK_LOAD_TIMEOUT="subtitleTrackLoadTimeOut",e.FRAG_LOAD_ERROR="fragLoadError",e.FRAG_LOAD_TIMEOUT="fragLoadTimeOut",e.FRAG_DECRYPT_ERROR="fragDecryptError",e.FRAG_PARSING_ERROR="fragParsingError",e.FRAG_GAP="fragGap",e.REMUX_ALLOC_ERROR="remuxAllocError",e.KEY_LOAD_ERROR="keyLoadError",e.KEY_LOAD_TIMEOUT="keyLoadTimeOut",e.BUFFER_ADD_CODEC_ERROR="bufferAddCodecError",e.BUFFER_INCOMPATIBLE_CODECS_ERROR="bufferIncompatibleCodecsError",e.BUFFER_APPEND_ERROR="bufferAppendError",e.BUFFER_APPENDING_ERROR="bufferAppendingError",e.BUFFER_STALLED_ERROR="bufferStalledError",e.BUFFER_FULL_ERROR="bufferFullError",e.BUFFER_SEEK_OVER_HOLE="bufferSeekOverHole",e.BUFFER_NUDGE_ON_STALL="bufferNudgeOnStall",e.INTERNAL_EXCEPTION="internalException",e.INTERNAL_ABORTED="aborted",e.UNKNOWN="unknown",e}({}),R=/^(\d+)x(\d+)$/,x=/(.+?)=(".*?"|.*?)(?:,|$)/g,L=function(){function e(t){"string"==typeof t&&(t=e.parseAttrList(t)),c(this,t)}var t=e.prototype;return t.decimalInteger=function(e){var t=parseInt(this[e],10);return t>Number.MAX_SAFE_INTEGER?1/0:t},t.hexadecimalInteger=function(e){if(this[e]){var t=(this[e]||"0x").slice(2);t=(1&t.length?"0":"")+t;for(var i=new Uint8Array(t.length/2),r=0;rNumber.MAX_SAFE_INTEGER?1/0:t},t.decimalFloatingPoint=function(e){return parseFloat(this[e])},t.optionalFloat=function(e,t){var i=this[e];return i?parseFloat(i):t},t.enumeratedString=function(e){return this[e]},t.bool=function(e){return"YES"===this[e]},t.decimalResolution=function(e){var t=R.exec(this[e]);if(null!==t)return{width:parseInt(t[1],10),height:parseInt(t[2],10)}},e.parseAttrList=function(e){var t,i={},r='"';for(x.lastIndex=0;null!==(t=x.exec(e));){var s=t[2];0===s.indexOf(r)&&s.lastIndexOf(r)===s.length-1&&(s=s.slice(1,-1)),i[t[1].trim()]=s}return i},d(e,[{key:"clientAttrs",get:function(){return Object.keys(this).filter((function(e){return"X-"===e.substring(0,2)}))}}])}(),I=function(e,t){this.trace=void 0,this.debug=void 0,this.log=void 0,this.warn=void 0,this.info=void 0,this.error=void 0;var i="["+e+"]:";this.trace=P,this.debug=t.debug.bind(null,i),this.log=t.log.bind(null,i),this.warn=t.warn.bind(null,i),this.info=t.info.bind(null,i),this.error=t.error.bind(null,i)},P=function(){},B={trace:P,debug:P,log:P,warn:P,info:P,error:P};function M(){return c({},B)}function U(e,t){var i=self.console[e];return i?i.bind(self.console,(t?"["+t+"] ":"")+"["+e+"] >"):P}function F(e,t,i){return t[e]?t[e].bind(t):U(e,i)}var O=M();function N(e,t,i){var r=M();if("object"==typeof console&&!0===e||"object"==typeof e){var s=["debug","log","info","warn","error"];s.forEach((function(t){r[t]=F(t,e,i)}));try{r.log('Debug logs enabled for "'+t+'" in hls.js version '+void 0)}catch(e){return M()}s.forEach((function(t){O[t]=F(t,e)}))}else c(O,r);return r}var G=O;function z(e){return"ID"!==e&&"CLASS"!==e&&"START-DATE"!==e&&"DURATION"!==e&&"END-DATE"!==e&&"END-ON-NEXT"!==e}function W(e){return"SCTE35-OUT"===e||"SCTE35-IN"===e}var V=function(){function e(e,t){if(this.attr=void 0,this._startDate=void 0,this._endDate=void 0,this._badValueForSameId=void 0,t){var i=t.attr;for(var r in i)if(Object.prototype.hasOwnProperty.call(e,r)&&e[r]!==i[r]){G.warn('DATERANGE tag attribute: "'+r+'" does not match for tags with ID: "'+e.ID+'"'),this._badValueForSameId=r;break}e=c(new L({}),i,e)}if(this.attr=e,this._startDate=new Date(e["START-DATE"]),"END-DATE"in this.attr){var s=new Date(this.attr["END-DATE"]);E(s.getTime())&&(this._endDate=s)}}return d(e,[{key:"id",get:function(){return this.attr.ID}},{key:"class",get:function(){return this.attr.CLASS}},{key:"startDate",get:function(){return this._startDate}},{key:"endDate",get:function(){if(this._endDate)return this._endDate;var e=this.duration;return null!==e?new Date(this._startDate.getTime()+1e3*e):null}},{key:"duration",get:function(){if("DURATION"in this.attr){var e=this.attr.decimalFloatingPoint("DURATION");if(E(e))return e}else if(this._endDate)return(this._endDate.getTime()-this._startDate.getTime())/1e3;return null}},{key:"plannedDuration",get:function(){return"PLANNED-DURATION"in this.attr?this.attr.decimalFloatingPoint("PLANNED-DURATION"):null}},{key:"endOnNext",get:function(){return this.attr.bool("END-ON-NEXT")}},{key:"isValid",get:function(){return!!this.id&&!this._badValueForSameId&&E(this.startDate.getTime())&&(null===this.duration||this.duration>=0)&&(!this.endOnNext||!!this.class)}}])}(),H=function(){this.aborted=!1,this.loaded=0,this.retry=0,this.total=0,this.chunkCount=0,this.bwEstimate=0,this.loading={start:0,first:0,end:0},this.parsing={start:0,end:0},this.buffering={start:0,first:0,end:0}},$={AUDIO:"audio",VIDEO:"video",AUDIOVIDEO:"audiovideo"},j=function(){function e(e){var t;this._byteRange=null,this._url=null,this.baseurl=void 0,this.relurl=void 0,this.elementaryStreams=((t={})[$.AUDIO]=null,t[$.VIDEO]=null,t[$.AUDIOVIDEO]=null,t),this.baseurl=e}return e.prototype.setByteRange=function(e,t){var i,r=e.split("@",2);i=1===r.length?(null==t?void 0:t.byteRangeEndOffset)||0:parseInt(r[1]),this._byteRange=[i,parseInt(r[0])+i]},d(e,[{key:"byteRange",get:function(){return this._byteRange?this._byteRange:[]}},{key:"byteRangeStartOffset",get:function(){return this.byteRange[0]}},{key:"byteRangeEndOffset",get:function(){return this.byteRange[1]}},{key:"url",get:function(){return!this._url&&this.baseurl&&this.relurl&&(this._url=w.buildAbsoluteURL(this.baseurl,this.relurl,{alwaysNormalize:!0})),this._url||""},set:function(e){this._url=e}}])}(),K=function(e){function t(t,i){var r;return(r=e.call(this,i)||this)._decryptdata=null,r.rawProgramDateTime=null,r.programDateTime=null,r.tagList=[],r.duration=0,r.sn=0,r.levelkeys=void 0,r.type=void 0,r.loader=null,r.keyLoader=null,r.level=-1,r.cc=0,r.startPTS=void 0,r.endPTS=void 0,r.startDTS=void 0,r.endDTS=void 0,r.start=0,r.deltaPTS=void 0,r.maxStartPTS=void 0,r.minEndPTS=void 0,r.stats=new H,r.data=void 0,r.bitrateTest=!1,r.title=null,r.initSegment=null,r.endList=void 0,r.gap=void 0,r.urlId=0,r.type=t,r}u(t,e);var i=t.prototype;return i.setKeyFormat=function(e){if(this.levelkeys){var t=this.levelkeys[e];t&&!this._decryptdata&&(this._decryptdata=t.getDecryptData(this.sn))}},i.abortRequests=function(){var e,t;null==(e=this.loader)||e.abort(),null==(t=this.keyLoader)||t.abort()},i.setElementaryStreamInfo=function(e,t,i,r,s,a){void 0===a&&(a=!1);var n=this.elementaryStreams,o=n[e];o?(o.startPTS=Math.min(o.startPTS,t),o.endPTS=Math.max(o.endPTS,i),o.startDTS=Math.min(o.startDTS,r),o.endDTS=Math.max(o.endDTS,s)):n[e]={startPTS:t,endPTS:i,startDTS:r,endDTS:s,partial:a}},i.clearElementaryStreamInfo=function(){var e=this.elementaryStreams;e[$.AUDIO]=null,e[$.VIDEO]=null,e[$.AUDIOVIDEO]=null},d(t,[{key:"decryptdata",get:function(){if(!this.levelkeys&&!this._decryptdata)return null;if(!this._decryptdata&&this.levelkeys&&!this.levelkeys.NONE){var e=this.levelkeys.identity;if(e)this._decryptdata=e.getDecryptData(this.sn);else{var t=Object.keys(this.levelkeys);if(1===t.length)return this._decryptdata=this.levelkeys[t[0]].getDecryptData(this.sn)}}return this._decryptdata}},{key:"end",get:function(){return this.start+this.duration}},{key:"endProgramDateTime",get:function(){if(null===this.programDateTime)return null;if(!E(this.programDateTime))return null;var e=E(this.duration)?this.duration:0;return this.programDateTime+1e3*e}},{key:"encrypted",get:function(){var e;if(null!=(e=this._decryptdata)&&e.encrypted)return!0;if(this.levelkeys){var t=Object.keys(this.levelkeys),i=t.length;if(i>1||1===i&&this.levelkeys[t[0]].encrypted)return!0}return!1}}])}(j),q=function(e){function t(t,i,r,s,a){var n;(n=e.call(this,r)||this).fragOffset=0,n.duration=0,n.gap=!1,n.independent=!1,n.relurl=void 0,n.fragment=void 0,n.index=void 0,n.stats=new H,n.duration=t.decimalFloatingPoint("DURATION"),n.gap=t.bool("GAP"),n.independent=t.bool("INDEPENDENT"),n.relurl=t.enumeratedString("URI"),n.fragment=i,n.index=s;var o=t.enumeratedString("BYTERANGE");return o&&n.setByteRange(o,a),a&&(n.fragOffset=a.fragOffset+a.duration),n}return u(t,e),d(t,[{key:"start",get:function(){return this.fragment.start+this.fragOffset}},{key:"end",get:function(){return this.start+this.duration}},{key:"loaded",get:function(){var e=this.elementaryStreams;return!!(e.audio||e.video||e.audiovideo)}}])}(j),Y=10,Q=function(){function e(e){this.PTSKnown=!1,this.alignedSliding=!1,this.averagetargetduration=void 0,this.endCC=0,this.endSN=0,this.fragments=void 0,this.fragmentHint=void 0,this.partList=null,this.dateRanges=void 0,this.live=!0,this.ageHeader=0,this.advancedDateTime=void 0,this.updated=!0,this.advanced=!0,this.availabilityDelay=void 0,this.misses=0,this.startCC=0,this.startSN=0,this.startTimeOffset=null,this.targetduration=0,this.totalduration=0,this.type=null,this.url=void 0,this.m3u8="",this.version=null,this.canBlockReload=!1,this.canSkipUntil=0,this.canSkipDateRanges=!1,this.skippedSegments=0,this.recentlyRemovedDateranges=void 0,this.partHoldBack=0,this.holdBack=0,this.partTarget=0,this.preloadHint=void 0,this.renditionReports=void 0,this.tuneInGoal=0,this.deltaUpdateFailed=void 0,this.driftStartTime=0,this.driftEndTime=0,this.driftStart=0,this.driftEnd=0,this.encryptedFragments=void 0,this.playlistParsingError=null,this.variableList=null,this.hasVariableRefs=!1,this.fragments=[],this.encryptedFragments=[],this.dateRanges={},this.url=e}return e.prototype.reloaded=function(e){if(!e)return this.advanced=!0,void(this.updated=!0);var t=this.lastPartSn-e.lastPartSn,i=this.lastPartIndex-e.lastPartIndex;this.updated=this.endSN!==e.endSN||!!i||!!t||!this.live,this.advanced=this.endSN>e.endSN||t>0||0===t&&i>0,this.updated||this.advanced?this.misses=Math.floor(.6*e.misses):this.misses=e.misses+1,this.availabilityDelay=e.availabilityDelay},d(e,[{key:"hasProgramDateTime",get:function(){return!!this.fragments.length&&E(this.fragments[this.fragments.length-1].programDateTime)}},{key:"levelTargetDuration",get:function(){return this.averagetargetduration||this.targetduration||Y}},{key:"drift",get:function(){var e=this.driftEndTime-this.driftStartTime;return e>0?1e3*(this.driftEnd-this.driftStart)/e:1}},{key:"edge",get:function(){return this.partEnd||this.fragmentEnd}},{key:"partEnd",get:function(){var e;return null!=(e=this.partList)&&e.length?this.partList[this.partList.length-1].end:this.fragmentEnd}},{key:"fragmentEnd",get:function(){var e;return null!=(e=this.fragments)&&e.length?this.fragments[this.fragments.length-1].end:0}},{key:"age",get:function(){return this.advancedDateTime?Math.max(Date.now()-this.advancedDateTime,0)/1e3:0}},{key:"lastPartIndex",get:function(){var e;return null!=(e=this.partList)&&e.length?this.partList[this.partList.length-1].index:-1}},{key:"lastPartSn",get:function(){var e;return null!=(e=this.partList)&&e.length?this.partList[this.partList.length-1].fragment.sn:this.endSN}}])}();function X(e){return Uint8Array.from(atob(e),(function(e){return e.charCodeAt(0)}))}function J(e){return Uint8Array.from(unescape(encodeURIComponent(e)),(function(e){return e.charCodeAt(0)}))}function Z(e){var t=J(e).subarray(0,16),i=new Uint8Array(16);return i.set(t,16-t.length),i}function ee(e){var t=function(e,t,i){var r=e[t];e[t]=e[i],e[i]=r};t(e,0,3),t(e,1,2),t(e,4,5),t(e,6,7)}function te(e){var t=e.split(":"),i=null;if("data"===t[0]&&2===t.length){var r=t[1].split(";"),s=r[r.length-1].split(",");if(2===s.length){var a="base64"===s[0],n=s[1];a?(r.splice(-1,1),i=X(n)):i=Z(n)}}return i}var ie={cbc:0,ctr:1};function re(e){return"AES-128"===e||"AES-256"===e||"AES-256-CTR"===e}function se(e){switch(e){case"AES-128":case"AES-256":return ie.cbc;case"AES-256-CTR":return ie.ctr;default:throw new Error("invalid full segment method "+e)}}var ae="undefined"!=typeof self?self:void 0,ne={CLEARKEY:"org.w3.clearkey",FAIRPLAY:"com.apple.fps",PLAYREADY:"com.microsoft.playready",WIDEVINE:"com.widevine.alpha"},oe={CLEARKEY:"org.w3.clearkey",FAIRPLAY:"com.apple.streamingkeydelivery",PLAYREADY:"com.microsoft.playready",WIDEVINE:"urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed"};function le(e){switch(e){case oe.FAIRPLAY:return ne.FAIRPLAY;case oe.PLAYREADY:return ne.PLAYREADY;case oe.WIDEVINE:return ne.WIDEVINE;case oe.CLEARKEY:return ne.CLEARKEY}}var de={WIDEVINE:"edef8ba979d64acea3c827dcd51d21ed"};function he(e){if(e===de.WIDEVINE)return ne.WIDEVINE}function ce(e){switch(e){case ne.FAIRPLAY:return oe.FAIRPLAY;case ne.PLAYREADY:return oe.PLAYREADY;case ne.WIDEVINE:return oe.WIDEVINE;case ne.CLEARKEY:return oe.CLEARKEY}}function ue(e){var t=e.drmSystems,i=e.widevineLicenseUrl,r=t?[ne.FAIRPLAY,ne.WIDEVINE,ne.PLAYREADY,ne.CLEARKEY].filter((function(e){return!!t[e]})):[];return!r[ne.WIDEVINE]&&i&&r.push(ne.WIDEVINE),r}var pe,fe=null!=ae&&null!=(pe=ae.navigator)&&pe.requestMediaKeySystemAccess?self.navigator.requestMediaKeySystemAccess.bind(self.navigator):null;function ye(e,t,i,r){var s;switch(e){case ne.FAIRPLAY:s=["cenc","sinf"];break;case ne.WIDEVINE:case ne.PLAYREADY:s=["cenc"];break;case ne.CLEARKEY:s=["cenc","keyids"];break;default:throw new Error("Unknown key-system: "+e)}return me(s,t,i,r)}function me(e,t,i,r){return[{initDataTypes:e,persistentState:r.persistentState||"optional",distinctiveIdentifier:r.distinctiveIdentifier||"optional",sessionTypes:r.sessionTypes||[r.sessionType||"temporary"],audioCapabilities:t.map((function(e){return{contentType:'audio/mp4; codecs="'+e+'"',robustness:r.audioRobustness||"",encryptionScheme:r.audioEncryptionScheme||null}})),videoCapabilities:i.map((function(e){return{contentType:'video/mp4; codecs="'+e+'"',robustness:r.videoRobustness||"",encryptionScheme:r.videoEncryptionScheme||null}}))}]}function ge(e,t,i){return Uint8Array.prototype.slice?e.slice(t,i):new Uint8Array(Array.prototype.slice.call(e,t,i))}function Ae(e,t){if(void 0===t&&(t=!1),"undefined"!=typeof TextDecoder){var i=new TextDecoder("utf-8").decode(e);if(t){var r=i.indexOf("\0");return-1!==r?i.substring(0,r):i}return i.replace(/\0/g,"")}for(var s,a,n,o=e.length,l="",d=0;d>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:l+=String.fromCharCode(s);break;case 12:case 13:a=e[d++],l+=String.fromCharCode((31&s)<<6|63&a);break;case 14:a=e[d++],n=e[d++],l+=String.fromCharCode((15&s)<<12|(63&a)<<6|63&n)}}return l}var ve={hexDump:function(e){for(var t="",i=0;i>24,e[t+1]=i>>16&255,e[t+2]=i>>8&255,e[t+3]=255&i}function Re(e){for(var t=e.byteLength,i=0;i8&&109===e[i+4]&&111===e[i+5]&&111===e[i+6]&&102===e[i+7])return!0;i=r>1?i+r:t}return!1}function xe(e,t){var i=[];if(!t.length)return i;for(var r=e.byteLength,s=0;s1?s+a:r;if(Ee(e.subarray(s+4,s+8))===t[0])if(1===t.length)i.push(e.subarray(s+8,n));else{var o=xe(e.subarray(s+8,n),t.slice(1));o.length&&_e.apply(i,o)}s=n}return i}function Le(e){var t=[],i=e[0],r=8,s=Te(e,r);r+=4;var a=0,n=0;0===i?(a=Te(e,r),n=Te(e,r+4),r+=8):(a=ke(e,r),n=ke(e,r+8),r+=16),r+=2;var o=e.length+n,l=Se(e,r);r+=2;for(var d=0;d>>31)return G.warn("SIDX has hierarchical references (not supported)"),null;var p=Te(e,h);h+=4,t.push({referenceSize:u,subsegmentDuration:p,info:{duration:p/s,start:o,end:o+u-1}}),o+=u,r=h+=4}return{earliestPresentationTime:a,timescale:s,version:i,referencesCount:l,references:t}}function Ie(e){for(var t=[],i=xe(e,["moov","trak"]),r=0;r7){var h=4;if(3!==d[h++])break;h=Be(d,h),h+=2;var c=d[h++];if(128&c&&(h+=2),64&c&&(h+=d[h++]),4!==d[h++])break;h=Be(d,h);var u=d[h++];if(64!==u)break;if(s+="."+Me(u),h+=12,5!==d[h++])break;h=Be(d,h);var p=d[h++],f=(248&p)>>3;31===f&&(f+=1+((7&p)<<3)+((224&d[h])>>5)),s+="."+f}break;case"hvc1":case"hev1":var y=xe(i,["hvcC"])[0],m=y[1],g=["","A","B","C"][m>>6],A=31&m,v=Te(y,2),b=(32&m)>>5?"H":"L",_=y[12],w=y.subarray(6,12);s+="."+g+A,s+="."+v.toString(16).toUpperCase(),s+="."+b+_;for(var E="",S=w.length;S--;){var T=w[S];(T||E)&&(E="."+T.toString(16).toUpperCase()+E)}s+=E;break;case"dvh1":case"dvhe":var k=xe(i,["dvcC"])[0],C=k[2]>>1&127,D=k[2]<<5&32|k[3]>>3&31;s+="."+Ue(C)+"."+Ue(D);break;case"vp09":var R=xe(i,["vpcC"])[0],x=R[4],L=R[5],I=R[6]>>4&15;s+="."+Ue(x)+"."+Ue(L)+"."+Ue(I);break;case"av01":var P=xe(i,["av1C"])[0],B=P[1]>>>5,M=31&P[1],U=P[2]>>>7?"H":"M",F=(64&P[2])>>6,O=(32&P[2])>>5,N=2===B&&F?O?12:10:F?10:8,G=(16&P[2])>>4,z=(8&P[2])>>3,W=(4&P[2])>>2,V=3&P[2],H=1,$=1,j=1,K=0;s+="."+B+"."+Ue(M)+U+"."+Ue(N)+"."+G+"."+z+W+V+"."+Ue(H)+"."+Ue($)+"."+Ue(j)+"."+K}return{codec:s,encrypted:a}}function Be(e,t){for(var i=t+5;128&e[t++]&&t0;s||(r=xe(t,["encv"])),r.forEach((function(e){xe(s?e.subarray(28):e.subarray(78),["sinf"]).forEach((function(e){var t=Oe(e);if(t){var r=t.subarray(8,24);r.some((function(e){return 0!==e}))||(G.log("[eme] Patching keyId in 'enc"+(s?"a":"v")+">sinf>>tenc' box: "+ve.hexDump(r)+" -> "+ve.hexDump(i)),t.set(i,8))}}))}))})),e}function Oe(e){var t=xe(e,["schm"])[0];if(t){var i=Ee(t.subarray(4,8));if("cbcs"===i||"cenc"===i)return xe(e,["schi","tenc"])[0]}return G.error("[eme] missing 'schm' box"),null}function Ne(e,t){return xe(t,["moof","traf"]).reduce((function(t,i){var r=xe(i,["tfdt"])[0],s=r[0],a=xe(i,["tfhd"]).reduce((function(t,i){var a=Te(i,4),n=e[a];if(n){var o=Te(r,4);if(1===s){if(o===be)return G.warn("[mp4-demuxer]: Ignoring assumed invalid signed 64-bit track fragment decode time"),t;o*=be+1,o+=Te(r,8)}var l=o/(n.timescale||9e4);if(E(l)&&(null===t||l>1&63;return 39===i||40===i}return 6==(31&t)}function qe(e,t,i,r){var s=Ye(e),a=0;a+=t;for(var n=0,o=0,l=0;a=s.length)break;n+=l=s[a++]}while(255===l);o=0;do{if(a>=s.length)break;o+=l=s[a++]}while(255===l);var d=s.length-a,h=a;if(od){G.error("Malformed SEI payload. "+o+" is too small, only "+d+" bytes left to parse.");break}if(4===n){if(181===s[h++]){var c=Se(s,h);if(h+=2,49===c){var u=Te(s,h);if(h+=4,1195456820===u){var p=s[h++];if(3===p){var f=s[h++],y=64&f,m=y?2+3*(31&f):0,g=new Uint8Array(m);if(y){g[0]=f;for(var A=1;A16){for(var v=[],b=0;b<16;b++){var _=s[h++].toString(16);v.push(1==_.length?"0"+_:_),3!==b&&5!==b&&7!==b&&9!==b||v.push("-")}for(var w=o-16,E=new Uint8Array(w),S=0;S1?t-1:0),r=1;r>24&255,o[1]=a>>16&255,o[2]=a>>8&255,o[3]=255&a,o.set(e,4),n=0,a=8;n0?(a=new Uint8Array(4),t.length>0&&new DataView(a.buffer).setUint32(0,t.length,!1)):a=new Uint8Array;var l=new Uint8Array(4);return i&&i.byteLength>0&&new DataView(l.buffer).setUint32(0,i.byteLength,!1),Xe([112,115,115,104],new Uint8Array([r,0,0,0]),e,a,s,l,i||new Uint8Array)}function Ze(e){if(!(e instanceof ArrayBuffer)||e.byteLength<32)return null;var t={version:0,systemId:"",kids:null,data:null},i=new DataView(e),r=i.getUint32(0);if(e.byteLength!==r&&r>44)return null;if(1886614376!==i.getUint32(4))return null;if(t.version=i.getUint32(8)>>>24,t.version>1)return null;t.systemId=ve.hexDump(new Uint8Array(e,12,16));var s=i.getUint32(28);if(0===t.version){if(r-32=22&&(this.keyId=r.subarray(r.length-22,r.length-6));break;case oe.PLAYREADY:var s=new Uint8Array([154,4,240,121,152,64,66,134,171,146,230,91,224,136,95,149]);this.pssh=Je(s,null,r);var a=new Uint16Array(r.buffer,r.byteOffset,r.byteLength/2),n=String.fromCharCode.apply(null,Array.from(a)),o=n.substring(n.indexOf("<"),n.length),l=(new DOMParser).parseFromString(o,"text/xml").getElementsByTagName("KID")[0];if(l){var d=l.childNodes[0]?l.childNodes[0].nodeValue:l.getAttribute("VALUE");if(d){var h=X(d).subarray(0,16);ee(h),this.keyId=h}}break;default:var c=r.subarray(0,16);if(16!==c.length){var u=new Uint8Array(16);u.set(c,16-c.length),c=u}this.keyId=c}if(!this.keyId||16!==this.keyId.byteLength){var p=et[this.uri];if(!p){var f=Object.keys(et).length%Number.MAX_SAFE_INTEGER;p=new Uint8Array(16),new DataView(p.buffer,12,4).setUint32(0,f),et[this.uri]=p}this.keyId=p}return this},e}();function it(e){for(var t=new Uint8Array(16),i=12;i<16;i++)t[i]=e>>8*(15-i)&255;return t}var rt=/\{\$([a-zA-Z0-9-_]+)\}/g;function st(e){return rt.test(e)}function at(e,t,i){if(null!==e.variableList||e.hasVariableRefs)for(var r=i.length;r--;){var s=i[r],a=t[s];a&&(t[s]=nt(e,a))}}function nt(e,t){if(null!==e.variableList||e.hasVariableRefs){var i=e.variableList;return t.replace(rt,(function(t){var r=t.substring(2,t.length-1),s=null==i?void 0:i[r];return void 0===s?(e.playlistParsingError||(e.playlistParsingError=new Error('Missing preceding EXT-X-DEFINE tag for Variable Reference: "'+r+'"')),t):s}))}return t}function ot(e,t,i){var r,s,a=e.variableList;if(a||(e.variableList=a={}),"QUERYPARAM"in t){r=t.QUERYPARAM;try{var n=new self.URL(i).searchParams;if(!n.has(r))throw new Error('"'+r+'" does not match any query parameter in URI: "'+i+'"');s=n.get(r)}catch(t){e.playlistParsingError||(e.playlistParsingError=new Error("EXT-X-DEFINE QUERYPARAM: "+t.message))}}else r=t.NAME,s=t.VALUE;r in a?e.playlistParsingError||(e.playlistParsingError=new Error('EXT-X-DEFINE duplicate Variable Name declarations: "'+r+'"')):a[r]=s||""}function lt(e,t,i){var r=t.IMPORT;if(i&&r in i){var s=e.variableList;s||(e.variableList=s={}),s[r]=i[r]}else e.playlistParsingError||(e.playlistParsingError=new Error('EXT-X-DEFINE IMPORT attribute not found in Multivariant Playlist: "'+r+'"'))}function dt(e){if(void 0===e&&(e=!0),"undefined"!=typeof self)return(e||!self.MediaSource)&&self.ManagedMediaSource||self.MediaSource||self.WebKitMediaSource}var ht={audio:{a3ds:1,"ac-3":.95,"ac-4":1,alac:.9,alaw:1,dra1:1,"dts+":1,"dts-":1,dtsc:1,dtse:1,dtsh:1,"ec-3":.9,enca:1,fLaC:.9,flac:.9,FLAC:.9,g719:1,g726:1,m4ae:1,mha1:1,mha2:1,mhm1:1,mhm2:1,mlpa:1,mp4a:1,"raw ":1,Opus:1,opus:1,samr:1,sawb:1,sawp:1,sevc:1,sqcp:1,ssmv:1,twos:1,ulaw:1},video:{avc1:1,avc2:1,avc3:1,avc4:1,avcp:1,av01:.8,drac:1,dva1:1,dvav:1,dvh1:.7,dvhe:.7,encv:1,hev1:.75,hvc1:.75,mjp2:1,mp4v:1,mvc1:1,mvc2:1,mvc3:1,mvc4:1,resv:1,rv60:1,s263:1,svc1:1,svc2:1,"vc-1":1,vp08:1,vp09:.9},text:{stpp:1,wvtt:1}};function ct(e,t){var i=ht[t];return!!i&&!!i[e.slice(0,4)]}function ut(e,t,i){return void 0===i&&(i=!0),!e.split(",").some((function(e){return!pt(e,t,i)}))}function pt(e,t,i){var r;void 0===i&&(i=!0);var s=dt(i);return null!=(r=null==s?void 0:s.isTypeSupported(ft(e,t)))&&r}function ft(e,t){return t+'/mp4;codecs="'+e+'"'}function yt(e){if(e){var t=e.substring(0,4);return ht.video[t]}return 2}function mt(e){return e.split(",").reduce((function(e,t){var i=ht.video[t];return i?(2*i+e)/(e?3:2):(ht.audio[t]+e)/(e?2:1)}),0)}var gt={};function At(e,t){if(void 0===t&&(t=!0),gt[e])return gt[e];for(var i={flac:["flac","fLaC","FLAC"],opus:["opus","Opus"],"mp4a.40.34":["mp3"]}[e],r=0;r2){var i=t.shift()+".";return i+=parseInt(t.shift()).toString(16),i+=("000"+parseInt(t.shift()).toString(16)).slice(-4)}return e}function Et(e){var t=dt(e)||{isTypeSupported:function(){return!1}};return{mpeg:t.isTypeSupported("audio/mpeg"),mp3:t.isTypeSupported('audio/mp4; codecs="mp3"'),ac3:t.isTypeSupported('audio/mp4; codecs="ac-3"')}}var St=/#EXT-X-STREAM-INF:([^\r\n]*)(?:[\r\n](?:#[^\r\n]*)?)*([^\r\n]+)|#EXT-X-(SESSION-DATA|SESSION-KEY|DEFINE|CONTENT-STEERING|START):([^\r\n]*)[\r\n]+/g,Tt=/#EXT-X-MEDIA:(.*)/g,kt=/^#EXT(?:INF|-X-TARGETDURATION):/m,Ct=new RegExp([/#EXTINF:\s*(\d*(?:\.\d+)?)(?:,(.*)\s+)?/.source,/(?!#) *(\S[\S ]*)/.source,/#EXT-X-BYTERANGE:*(.+)/.source,/#EXT-X-PROGRAM-DATE-TIME:(.+)/.source,/#.*/.source].join("|"),"g"),Dt=new RegExp([/#(EXTM3U)/.source,/#EXT-X-(DATERANGE|DEFINE|KEY|MAP|PART|PART-INF|PLAYLIST-TYPE|PRELOAD-HINT|RENDITION-REPORT|SERVER-CONTROL|SKIP|START):(.+)/.source,/#EXT-X-(BITRATE|DISCONTINUITY-SEQUENCE|MEDIA-SEQUENCE|TARGETDURATION|VERSION): *(\d+)/.source,/#EXT-X-(DISCONTINUITY|ENDLIST|GAP|INDEPENDENT-SEGMENTS)/.source,/(#)([^:]*):(.*)/.source,/(#)(.*)(?:.*)\r?\n?/.source].join("|")),Rt=function(){function e(){}return e.findGroup=function(e,t){for(var i=0;i0&&a.length0&&$.bool("CAN-SKIP-DATERANGES"),d.partHoldBack=$.optionalFloat("PART-HOLD-BACK",0),d.holdBack=$.optionalFloat("HOLD-BACK",0);break;case"PART-INF":var j=new L(D);d.partTarget=j.decimalFloatingPoint("PART-TARGET");break;case"PART":var Y=d.partList;Y||(Y=d.partList=[]);var X=f>0?Y[Y.length-1]:void 0,J=f++,Z=new L(D);at(d,Z,["BYTERANGE","URI"]);var ee=new q(Z,A,t,J,X);Y.push(ee),A.duration+=ee.duration;break;case"PRELOAD-HINT":var te=new L(D);at(d,te,["URI"]),d.preloadHint=te;break;case"RENDITION-REPORT":var ie=new L(D);at(d,ie,["URI"]),d.renditionReports=d.renditionReports||[],d.renditionReports.push(ie);break;default:G.warn("line parsed but not handled: "+n)}}}g&&!g.relurl?(h.pop(),y-=g.duration,d.partList&&(d.fragmentHint=g)):d.partList&&(Mt(A,g),A.cc=m,d.fragmentHint=A,l&&Ft(A,l,d));var re=h.length,se=h[0],ae=h[re-1];if((y+=d.skippedSegments*d.targetduration)>0&&re&&ae){d.averagetargetduration=y/re;var ne=ae.sn;d.endSN="initSegment"!==ne?ne:0,d.live||(ae.endList=!0),se&&(d.startCC=se.cc)}else d.endSN=0,d.startCC=0;return d.fragmentHint&&(y+=d.fragmentHint.duration),d.totalduration=y,d.endCC=m,v>0&&Bt(h,v),d},e}();function xt(e,t,i){var r,s,a=new L(e);at(i,a,["KEYFORMAT","KEYFORMATVERSIONS","URI","IV","URI"]);var n=null!=(r=a.METHOD)?r:"",o=a.URI,l=a.hexadecimalInteger("IV"),d=a.KEYFORMATVERSIONS,h=null!=(s=a.KEYFORMAT)?s:"identity";o&&a.IV&&!l&&G.error("Invalid IV: "+a.IV);var c=o?Rt.resolve(o,t):"",u=(d||"1").split("/").map(Number).filter(Number.isFinite);return new tt(n,c,h,u,l)}function Lt(e){var t=new L(e).decimalFloatingPoint("TIME-OFFSET");return E(t)?t:null}function It(e,t){var i=(e||"").split(/[ ,]+/).filter((function(e){return e}));["video","audio","text"].forEach((function(e){var r=i.filter((function(t){return ct(t,e)}));r.length&&(t[e+"Codec"]=r.join(","),i=i.filter((function(e){return-1===r.indexOf(e)})))})),t.unknownCodecs=i}function Pt(e,t,i){var r=t[i];r&&(e[i]=r)}function Bt(e,t){for(var i=e[t],r=t;r--;){var s=e[r];if(!s)return;s.programDateTime=i.programDateTime-1e3*s.duration,i=s}}function Mt(e,t){e.rawProgramDateTime?e.programDateTime=Date.parse(e.rawProgramDateTime):null!=t&&t.programDateTime&&(e.programDateTime=t.endProgramDateTime),E(e.programDateTime)||(e.programDateTime=null,e.rawProgramDateTime=null)}function Ut(e,t,i,r){e.relurl=t.URI,t.BYTERANGE&&e.setByteRange(t.BYTERANGE),e.level=i,e.sn="initSegment",r&&(e.levelkeys=r),e.initSegment=null}function Ft(e,t,i){e.levelkeys=t;var r=i.encryptedFragments;r.length&&r[r.length-1].levelkeys===t||!Object.keys(t).some((function(e){return t[e].isCommonEncryption}))||r.push(e)}var Ot={MANIFEST:"manifest",LEVEL:"level",AUDIO_TRACK:"audioTrack",SUBTITLE_TRACK:"subtitleTrack"},Nt={MAIN:"main",AUDIO:"audio",SUBTITLE:"subtitle"};function Gt(e){switch(e.type){case Ot.AUDIO_TRACK:return Nt.AUDIO;case Ot.SUBTITLE_TRACK:return Nt.SUBTITLE;default:return Nt.MAIN}}function zt(e,t){var i=e.url;return void 0!==i&&0!==i.indexOf("data:")||(i=t.url),i}var Wt=function(){function e(e){this.hls=void 0,this.loaders=Object.create(null),this.variableList=null,this.hls=e,this.registerListeners()}var t=e.prototype;return t.startLoad=function(e){},t.stopLoad=function(){this.destroyInternalLoaders()},t.registerListeners=function(){var e=this.hls;e.on(k.MANIFEST_LOADING,this.onManifestLoading,this),e.on(k.LEVEL_LOADING,this.onLevelLoading,this),e.on(k.AUDIO_TRACK_LOADING,this.onAudioTrackLoading,this),e.on(k.SUBTITLE_TRACK_LOADING,this.onSubtitleTrackLoading,this)},t.unregisterListeners=function(){var e=this.hls;e.off(k.MANIFEST_LOADING,this.onManifestLoading,this),e.off(k.LEVEL_LOADING,this.onLevelLoading,this),e.off(k.AUDIO_TRACK_LOADING,this.onAudioTrackLoading,this),e.off(k.SUBTITLE_TRACK_LOADING,this.onSubtitleTrackLoading,this)},t.createInternalLoader=function(e){var t=this.hls.config,i=t.pLoader,r=t.loader,s=new(i||r)(t);return this.loaders[e.type]=s,s},t.getInternalLoader=function(e){return this.loaders[e.type]},t.resetInternalLoader=function(e){this.loaders[e]&&delete this.loaders[e]},t.destroyInternalLoaders=function(){for(var e in this.loaders){var t=this.loaders[e];t&&t.destroy(),this.resetInternalLoader(e)}},t.destroy=function(){this.variableList=null,this.unregisterListeners(),this.destroyInternalLoaders()},t.onManifestLoading=function(e,t){var i=t.url;this.variableList=null,this.load({id:null,level:0,responseType:"text",type:Ot.MANIFEST,url:i,deliveryDirectives:null})},t.onLevelLoading=function(e,t){var i=t.id,r=t.level,s=t.pathwayId,a=t.url,n=t.deliveryDirectives;this.load({id:i,level:r,pathwayId:s,responseType:"text",type:Ot.LEVEL,url:a,deliveryDirectives:n})},t.onAudioTrackLoading=function(e,t){var i=t.id,r=t.groupId,s=t.url,a=t.deliveryDirectives;this.load({id:i,groupId:r,level:null,responseType:"text",type:Ot.AUDIO_TRACK,url:s,deliveryDirectives:a})},t.onSubtitleTrackLoading=function(e,t){var i=t.id,r=t.groupId,s=t.url,a=t.deliveryDirectives;this.load({id:i,groupId:r,level:null,responseType:"text",type:Ot.SUBTITLE_TRACK,url:s,deliveryDirectives:a})},t.load=function(e){var t,i,r,s=this,a=this.hls.config,n=this.getInternalLoader(e);if(n){var o=n.context;if(o&&o.url===e.url&&o.level===e.level)return void this.hls.logger.trace("[playlist-loader]: playlist request ongoing");this.hls.logger.log("[playlist-loader]: aborting previous loader for type: "+e.type),n.abort()}if(i=e.type===Ot.MANIFEST?a.manifestLoadPolicy.default:c({},a.playlistLoadPolicy.default,{timeoutRetry:null,errorRetry:null}),n=this.createInternalLoader(e),E(null==(t=e.deliveryDirectives)?void 0:t.part)&&(e.type===Ot.LEVEL&&null!==e.level?r=this.hls.levels[e.level].details:e.type===Ot.AUDIO_TRACK&&null!==e.id?r=this.hls.audioTracks[e.id].details:e.type===Ot.SUBTITLE_TRACK&&null!==e.id&&(r=this.hls.subtitleTracks[e.id].details),r)){var l=r.partTarget,d=r.targetduration;if(l&&d){var h=1e3*Math.max(3*l,.8*d);i=c({},i,{maxTimeToFirstByteMs:Math.min(h,i.maxTimeToFirstByteMs),maxLoadTimeMs:Math.min(h,i.maxTimeToFirstByteMs)})}}var u=i.errorRetry||i.timeoutRetry||{},p={loadPolicy:i,timeout:i.maxLoadTimeMs,maxRetry:u.maxNumRetry||0,retryDelay:u.retryDelayMs||0,maxRetryDelay:u.maxRetryDelayMs||0},f={onSuccess:function(e,t,i,r){var a=s.getInternalLoader(i);s.resetInternalLoader(i.type);var n=e.data;0===n.indexOf("#EXTM3U")?(t.parsing.start=performance.now(),Rt.isMediaPlaylist(n)?s.handleTrackOrLevelPlaylist(e,t,i,r||null,a):s.handleMasterPlaylist(e,t,i,r)):s.handleManifestParsingError(e,i,new Error("no EXTM3U delimiter"),r||null,t)},onError:function(e,t,i,r){s.handleNetworkError(t,i,!1,e,r)},onTimeout:function(e,t,i){s.handleNetworkError(t,i,!0,void 0,e)}};n.load(e,p,f)},t.handleMasterPlaylist=function(e,t,i,r){var s=this.hls,a=e.data,n=zt(e,i),o=Rt.parseMasterPlaylist(a,n);if(o.playlistParsingError)this.handleManifestParsingError(e,i,o.playlistParsingError,r,t);else{var l=o.contentSteering,d=o.levels,h=o.sessionData,c=o.sessionKeys,u=o.startTimeOffset,p=o.variableList;this.variableList=p;var f=Rt.parseMasterPlaylistMedia(a,n,o),y=f.AUDIO,m=void 0===y?[]:y,g=f.SUBTITLES,A=f["CLOSED-CAPTIONS"];m.length&&(m.some((function(e){return!e.url}))||!d[0].audioCodec||d[0].attrs.AUDIO||(this.hls.logger.log("[playlist-loader]: audio codec signaled in quality level, but no embedded audio track signaled, create one"),m.unshift({type:"main",name:"main",groupId:"main",default:!1,autoselect:!1,forced:!1,id:-1,attrs:new L({}),bitrate:0,url:""}))),s.trigger(k.MANIFEST_LOADED,{levels:d,audioTracks:m,subtitles:g,captions:A,contentSteering:l,url:n,stats:t,networkDetails:r,sessionData:h,sessionKeys:c,startTimeOffset:u,variableList:p})}},t.handleTrackOrLevelPlaylist=function(e,t,i,r,s){var a=this.hls,n=i.id,o=i.level,l=i.type,d=zt(e,i),h=0,c=E(o)?o:E(n)?n:0,u=Gt(i),p=Rt.parseLevelPlaylist(e.data,d,c,u,h,this.variableList);if(l===Ot.MANIFEST){var f={attrs:new L({}),bitrate:0,details:p,name:"",url:d};a.trigger(k.MANIFEST_LOADED,{levels:[f],audioTracks:[],url:d,stats:t,networkDetails:r,sessionData:null,sessionKeys:null,contentSteering:null,startTimeOffset:null,variableList:null})}t.parsing.end=performance.now(),i.levelDetails=p,this.handlePlaylistLoaded(p,e,t,i,r,s)},t.handleManifestParsingError=function(e,t,i,r,s){this.hls.trigger(k.ERROR,{type:C.NETWORK_ERROR,details:D.MANIFEST_PARSING_ERROR,fatal:t.type===Ot.MANIFEST,url:e.url,err:i,error:i,reason:i.message,response:e,context:t,networkDetails:r,stats:s})},t.handleNetworkError=function(e,t,i,r,s){void 0===i&&(i=!1);var n="A network "+(i?"timeout":"error"+(r?" (status "+r.code+")":""))+" occurred while loading "+e.type;e.type===Ot.LEVEL?n+=": "+e.level+" id: "+e.id:e.type!==Ot.AUDIO_TRACK&&e.type!==Ot.SUBTITLE_TRACK||(n+=" id: "+e.id+' group-id: "'+e.groupId+'"');var o=new Error(n);this.hls.logger.warn("[playlist-loader]: "+n);var l=D.UNKNOWN,d=!1,h=this.getInternalLoader(e);switch(e.type){case Ot.MANIFEST:l=i?D.MANIFEST_LOAD_TIMEOUT:D.MANIFEST_LOAD_ERROR,d=!0;break;case Ot.LEVEL:l=i?D.LEVEL_LOAD_TIMEOUT:D.LEVEL_LOAD_ERROR,d=!1;break;case Ot.AUDIO_TRACK:l=i?D.AUDIO_TRACK_LOAD_TIMEOUT:D.AUDIO_TRACK_LOAD_ERROR,d=!1;break;case Ot.SUBTITLE_TRACK:l=i?D.SUBTITLE_TRACK_LOAD_TIMEOUT:D.SUBTITLE_LOAD_ERROR,d=!1}h&&this.resetInternalLoader(e.type);var c={type:C.NETWORK_ERROR,details:l,fatal:d,url:e.url,loader:h,context:e,error:o,networkDetails:t,stats:s};if(r){var u=(null==t?void 0:t.url)||e.url;c.response=a({url:u,data:void 0},r)}this.hls.trigger(k.ERROR,c)},t.handlePlaylistLoaded=function(e,t,i,r,s,a){var n=this.hls,o=r.type,l=r.level,d=r.id,h=r.groupId,c=r.deliveryDirectives,u=zt(t,r),p=Gt(r),f="number"==typeof r.level&&p===Nt.MAIN?l:void 0;if(e.fragments.length){e.targetduration||(e.playlistParsingError=new Error("Missing Target Duration"));var y=e.playlistParsingError;if(y)n.trigger(k.ERROR,{type:C.NETWORK_ERROR,details:D.LEVEL_PARSING_ERROR,fatal:!1,url:u,error:y,reason:y.message,response:t,context:r,level:f,parent:p,networkDetails:s,stats:i});else switch(e.live&&a&&(a.getCacheAge&&(e.ageHeader=a.getCacheAge()||0),a.getCacheAge&&!isNaN(e.ageHeader)||(e.ageHeader=0)),o){case Ot.MANIFEST:case Ot.LEVEL:n.trigger(k.LEVEL_LOADED,{details:e,level:f||0,id:d||0,stats:i,networkDetails:s,deliveryDirectives:c});break;case Ot.AUDIO_TRACK:n.trigger(k.AUDIO_TRACK_LOADED,{details:e,id:d||0,groupId:h||"",stats:i,networkDetails:s,deliveryDirectives:c});break;case Ot.SUBTITLE_TRACK:n.trigger(k.SUBTITLE_TRACK_LOADED,{details:e,id:d||0,groupId:h||"",stats:i,networkDetails:s,deliveryDirectives:c})}}else{var m=new Error("No Segments found in Playlist");n.trigger(k.ERROR,{type:C.NETWORK_ERROR,details:D.LEVEL_EMPTY_ERROR,fatal:!1,url:u,error:m,reason:m.message,response:t,context:r,level:f,parent:p,networkDetails:s,stats:i})}},e}();function Vt(e,t){var i;try{i=new Event("addtrack")}catch(e){(i=document.createEvent("Event")).initEvent("addtrack",!1,!1)}i.track=e,t.dispatchEvent(i)}function Ht(e,t){var i=e.mode;if("disabled"===i&&(e.mode="hidden"),e.cues&&!e.cues.getCueById(t.id))try{if(e.addCue(t),!e.cues.getCueById(t.id))throw new Error("addCue is failed for: "+t)}catch(i){G.debug("[texttrack-utils]: "+i);try{var r=new self.TextTrackCue(t.startTime,t.endTime,t.text);r.id=t.id,e.addCue(r)}catch(e){G.debug("[texttrack-utils]: Legacy TextTrackCue fallback failed: "+e)}}"disabled"===i&&(e.mode=i)}function $t(e){var t=e.mode;if("disabled"===t&&(e.mode="hidden"),e.cues)for(var i=e.cues.length;i--;)e.removeCue(e.cues[i]);"disabled"===t&&(e.mode=t)}function jt(e,t,i,r){var s=e.mode;if("disabled"===s&&(e.mode="hidden"),e.cues&&e.cues.length>0)for(var a=qt(e.cues,t,i),n=0;ne[i].endTime)return-1;for(var r=0,s=i;r<=s;){var a=Math.floor((s+r)/2);if(te[a].startTime&&r-1)for(var a=s,n=e.length;a=t&&o.endTime<=i)r.push(o);else if(o.startTime>i)return r}return r}function Yt(e){for(var t=[],i=0;i>6&1&&(t+=yi);for(var s=(t+=yi)+r;t+miwi&&(c=wi),c-h<=0&&(c=h+vi);for(var u=0;ut.startDate&&(!e||t.startDate.05&&t.forwardBufferLength>1){var d=Math.min(2,Math.max(1,n)),h=Math.round(2/(1+Math.exp(-.75*l-t.edgeStalled))*20)/20;e.playbackRate=Math.min(d,Math.max(1,h))}else 1!==e.playbackRate&&0!==e.playbackRate&&(e.playbackRate=1)}}}}},this.hls=e,this.config=e.config,this.registerListeners()}var t=e.prototype;return t.destroy=function(){this.unregisterListeners(),this.onMediaDetaching(),this.levelDetails=null,this.hls=null},t.registerListeners=function(){this.hls.on(k.MEDIA_ATTACHED,this.onMediaAttached,this),this.hls.on(k.MEDIA_DETACHING,this.onMediaDetaching,this),this.hls.on(k.MANIFEST_LOADING,this.onManifestLoading,this),this.hls.on(k.LEVEL_UPDATED,this.onLevelUpdated,this),this.hls.on(k.ERROR,this.onError,this)},t.unregisterListeners=function(){this.hls.off(k.MEDIA_ATTACHED,this.onMediaAttached,this),this.hls.off(k.MEDIA_DETACHING,this.onMediaDetaching,this),this.hls.off(k.MANIFEST_LOADING,this.onManifestLoading,this),this.hls.off(k.LEVEL_UPDATED,this.onLevelUpdated,this),this.hls.off(k.ERROR,this.onError,this)},t.onMediaAttached=function(e,t){this.media=t.media,this.media.addEventListener("timeupdate",this.onTimeupdate)},t.onMediaDetaching=function(){this.media&&(this.media.removeEventListener("timeupdate",this.onTimeupdate),this.media=null)},t.onManifestLoading=function(){this.levelDetails=null,this._latency=null,this.stallCount=0},t.onLevelUpdated=function(e,t){var i=t.details;this.levelDetails=i,i.advanced&&this.onTimeupdate(),!i.live&&this.media&&this.media.removeEventListener("timeupdate",this.onTimeupdate)},t.onError=function(e,t){var i;t.details===D.BUFFER_STALLED_ERROR&&(this.stallCount++,null!=(i=this.levelDetails)&&i.live&&this.hls.logger.warn("[latency-controller]: Stall detected, adjusting target latency"))},t.estimateLiveEdge=function(){var e=this.levelDetails;return null===e?null:e.edge+e.age},t.computeLatency=function(){var e=this.estimateLiveEdge();return null===e?null:e-this.currentTime},d(e,[{key:"latency",get:function(){return this._latency||0}},{key:"maxLatency",get:function(){var e=this.config,t=this.levelDetails;return void 0!==e.liveMaxLatencyDuration?e.liveMaxLatencyDuration:t?e.liveMaxLatencyDurationCount*t.targetduration:0}},{key:"targetLatency",get:function(){var e=this.levelDetails;if(null===e)return null;var t=e.holdBack,i=e.partHoldBack,r=e.targetduration,s=this.config,a=s.liveSyncDuration,n=s.liveSyncDurationCount,o=s.lowLatencyMode,l=this.hls.userConfig,d=o&&i||t;(l.liveSyncDuration||l.liveSyncDurationCount||0===d)&&(d=void 0!==a?a:n*r);var h=r,c=1;return d+Math.min(this.stallCount*c,h)}},{key:"liveSyncPosition",get:function(){var e=this.estimateLiveEdge(),t=this.targetLatency,i=this.levelDetails;if(null===e||null===t||null===i)return null;var r=i.edge,s=e-t-this.edgeStalled,a=r-i.totalduration,n=r-(this.config.lowLatencyMode&&i.partTarget||i.targetduration);return Math.min(Math.max(a,s),n)}},{key:"drift",get:function(){var e=this.levelDetails;return null===e?1:e.drift}},{key:"edgeStalled",get:function(){var e=this.levelDetails;if(null===e)return 0;var t=3*(this.config.lowLatencyMode&&e.partTarget||e.targetduration);return Math.max(e.age-t,0)}},{key:"forwardBufferLength",get:function(){var e=this.media,t=this.levelDetails;if(!e||!t)return 0;var i=e.buffered.length;return(i?e.buffered.end(i-1):t.edge)-this.currentTime}}])}(),Ci=["NONE","TYPE-0","TYPE-1",null];function Di(e){return Ci.indexOf(e)>-1}var Ri=["SDR","PQ","HLG"];function xi(e){return!!e&&Ri.indexOf(e)>-1}var Li={No:"",Yes:"YES",v2:"v2"};function Ii(e){var t=e.canSkipUntil,i=e.canSkipDateRanges,r=e.age;return t&&re.sn?(s=i-e.start,r=e):(s=e.start-i,r=t),r.duration!==s&&(r.duration=s)}else t.sn>e.sn?e.cc===t.cc&&e.minEndPTS?t.start=e.start+(e.minEndPTS-e.start):t.start=e.start+e.duration:t.start=Math.max(e.start-t.duration,0)}function Fi(e,t,i,r,s,a){r-i<=0&&(G.warn("Fragment should have a positive duration",t),r=i+t.duration,a=s+t.duration);var n=i,o=r,l=t.startPTS,d=t.endPTS;if(E(l)){var h=Math.abs(l-i);E(t.deltaPTS)?t.deltaPTS=Math.max(h,t.deltaPTS):t.deltaPTS=h,n=Math.max(i,l),i=Math.min(i,l),s=Math.min(s,t.startDTS),o=Math.min(r,d),r=Math.max(r,d),a=Math.max(a,t.endDTS)}var c=i-t.start;0!==t.start&&(t.start=i),t.duration=r-t.start,t.startPTS=i,t.maxStartPTS=n,t.startDTS=s,t.endPTS=r,t.minEndPTS=o,t.endDTS=a;var u,p=t.sn;if(!e||pe.endSN)return 0;var f=p-e.startSN,y=e.fragments;for(y[f]=t,u=f;u>0;u--)Ui(y[u],y[u-1]);for(u=f;u=0;s--){var a=r[s].initSegment;if(a){i=a;break}}e.fragmentHint&&delete e.fragmentHint.endPTS;var n,o=0;if(zi(e,t,(function(e,r){e.relurl&&(o=e.cc-r.cc),E(e.startPTS)&&E(e.endPTS)&&(r.start=r.startPTS=e.startPTS,r.startDTS=e.startDTS,r.maxStartPTS=e.maxStartPTS,r.endPTS=e.endPTS,r.endDTS=e.endDTS,r.minEndPTS=e.minEndPTS,r.duration=e.endPTS-e.startPTS,r.duration&&(n=r),t.PTSKnown=t.alignedSliding=!0),r.elementaryStreams=e.elementaryStreams,r.loader=e.loader,r.stats=e.stats,e.initSegment&&(r.initSegment=e.initSegment,i=e.initSegment)})),i&&(t.fragmentHint?t.fragments.concat(t.fragmentHint):t.fragments).forEach((function(e){var t;!e||e.initSegment&&e.initSegment.relurl!==(null==(t=i)?void 0:t.relurl)||(e.initSegment=i)})),t.skippedSegments)if(t.deltaUpdateFailed=t.fragments.some((function(e){return!e})),t.deltaUpdateFailed){G.warn("[level-helper] Previous playlist missing segments skipped in delta playlist");for(var l=t.skippedSegments;l--;)t.fragments.shift();t.startSN=t.fragments[0].sn,t.startCC=t.fragments[0].cc}else t.canSkipDateRanges&&(t.dateRanges=Ni(e.dateRanges,t.dateRanges,t.recentlyRemovedDateranges));var d=t.fragments;if(o){G.warn("discontinuity sliding from playlist, take drift into account");for(var h=0;h=r.length||Vi(t,r[i].start)}function Vi(e,t){if(t){for(var i=e.fragments,r=e.skippedSegments;rt){var a=1e3*r[r.length-1].duration;a499)}var tr={search:function(e,t){for(var i=0,r=e.length-1,s=null,a=null;i<=r;){var n=t(a=e[s=(i+r)/2|0]);if(n>0)i=s+1;else{if(!(n<0))return a;r=s-1}}return null}};function ir(e,t,i){if(null===t||!Array.isArray(e)||!e.length||!E(t))return null;if(t<(e[0].programDateTime||0))return null;if(t>=(e[e.length-1].endProgramDateTime||0))return null;i=i||0;for(var r=0;r0&&a<15e-7&&(i+=15e-7)}else 0===i&&0===t[0].start&&(s=t[0]);if(s&&(!e||e.level===s.level)&&0===sr(i,r,s))return s;var n=tr.search(t,sr.bind(null,i,r));return!n||n===e&&s?s:n}function sr(e,t,i){if(void 0===e&&(e=0),void 0===t&&(t=0),i.start<=e&&i.start+i.duration>e)return 0;var r=Math.min(t,i.duration+(i.deltaPTS?i.deltaPTS:0));return i.start+i.duration-r<=e?1:i.start-r>e&&i.start?-1:0}function ar(e,t,i){var r=1e3*Math.min(t,i.duration+(i.deltaPTS?i.deltaPTS:0));return(i.endProgramDateTime||0)-r>e}function nr(e,t){return tr.search(e,(function(e){return e.cct?-1:0}))}var or={DoNothing:0,SendEndCallback:1,SendAlternateToPenaltyBox:2,RemoveAlternatePermanently:3,InsertDiscontinuity:4,RetryRequest:5},lr={None:0,MoveAllAlternatesMatchingHost:1,MoveAllAlternatesMatchingHDCP:2,SwitchToSDR:4},dr=function(e){function t(t){var i;return(i=e.call(this,"error-controller",t.logger)||this).hls=void 0,i.playlistError=0,i.penalizedRenditions={},i.hls=t,i.registerListeners(),i}u(t,e);var i=t.prototype;return i.registerListeners=function(){var e=this.hls;e.on(k.ERROR,this.onError,this),e.on(k.MANIFEST_LOADING,this.onManifestLoading,this),e.on(k.LEVEL_UPDATED,this.onLevelUpdated,this)},i.unregisterListeners=function(){var e=this.hls;e&&(e.off(k.ERROR,this.onError,this),e.off(k.ERROR,this.onErrorOut,this),e.off(k.MANIFEST_LOADING,this.onManifestLoading,this),e.off(k.LEVEL_UPDATED,this.onLevelUpdated,this))},i.destroy=function(){this.unregisterListeners(),this.hls=null,this.penalizedRenditions={}},i.startLoad=function(e){},i.stopLoad=function(){this.playlistError=0},i.getVariantLevelIndex=function(e){return(null==e?void 0:e.type)===Nt.MAIN?e.level:this.hls.loadLevel},i.onManifestLoading=function(){this.playlistError=0,this.penalizedRenditions={}},i.onLevelUpdated=function(){this.playlistError=0},i.onError=function(e,t){var i,r;if(!t.fatal){var s=this.hls,a=t.context;switch(t.details){case D.FRAG_LOAD_ERROR:case D.FRAG_LOAD_TIMEOUT:case D.KEY_LOAD_ERROR:case D.KEY_LOAD_TIMEOUT:return void(t.errorAction=this.getFragRetryOrSwitchAction(t));case D.FRAG_PARSING_ERROR:if(null!=(i=t.frag)&&i.gap)return void(t.errorAction={action:or.DoNothing,flags:lr.None});case D.FRAG_GAP:case D.FRAG_DECRYPT_ERROR:return t.errorAction=this.getFragRetryOrSwitchAction(t),void(t.errorAction.action=or.SendAlternateToPenaltyBox);case D.LEVEL_EMPTY_ERROR:case D.LEVEL_PARSING_ERROR:var n,o,l=t.parent===Nt.MAIN?t.level:s.loadLevel;return void(t.details===D.LEVEL_EMPTY_ERROR&&null!=(n=t.context)&&null!=(o=n.levelDetails)&&o.live?t.errorAction=this.getPlaylistRetryOrSwitchAction(t,l):(t.levelRetry=!1,t.errorAction=this.getLevelSwitchAction(t,l)));case D.LEVEL_LOAD_ERROR:case D.LEVEL_LOAD_TIMEOUT:return void("number"==typeof(null==a?void 0:a.level)&&(t.errorAction=this.getPlaylistRetryOrSwitchAction(t,a.level)));case D.AUDIO_TRACK_LOAD_ERROR:case D.AUDIO_TRACK_LOAD_TIMEOUT:case D.SUBTITLE_LOAD_ERROR:case D.SUBTITLE_TRACK_LOAD_TIMEOUT:if(a){var d=s.levels[s.loadLevel];if(d&&(a.type===Ot.AUDIO_TRACK&&d.hasAudioGroup(a.groupId)||a.type===Ot.SUBTITLE_TRACK&&d.hasSubtitleGroup(a.groupId)))return t.errorAction=this.getPlaylistRetryOrSwitchAction(t,s.loadLevel),t.errorAction.action=or.SendAlternateToPenaltyBox,void(t.errorAction.flags=lr.MoveAllAlternatesMatchingHost)}return;case D.KEY_SYSTEM_STATUS_OUTPUT_RESTRICTED:var h=s.levels[s.loadLevel],c=null==h?void 0:h.attrs["HDCP-LEVEL"];return void(c?t.errorAction={action:or.SendAlternateToPenaltyBox,flags:lr.MoveAllAlternatesMatchingHDCP,hdcpLevel:c}:this.keySystemError(t));case D.BUFFER_ADD_CODEC_ERROR:case D.REMUX_ALLOC_ERROR:case D.BUFFER_APPEND_ERROR:return void(t.errorAction=this.getLevelSwitchAction(t,null!=(r=t.level)?r:s.loadLevel));case D.INTERNAL_EXCEPTION:case D.BUFFER_APPENDING_ERROR:case D.BUFFER_FULL_ERROR:case D.LEVEL_SWITCH_ERROR:case D.BUFFER_STALLED_ERROR:case D.BUFFER_SEEK_OVER_HOLE:case D.BUFFER_NUDGE_ON_STALL:return void(t.errorAction={action:or.DoNothing,flags:lr.None})}t.type===C.KEY_SYSTEM_ERROR&&this.keySystemError(t)}},i.keySystemError=function(e){var t=this.getVariantLevelIndex(e.frag);e.levelRetry=!1,e.errorAction=this.getLevelSwitchAction(e,t)},i.getPlaylistRetryOrSwitchAction=function(e,t){var i=Qi(this.hls.config.playlistLoadPolicy,e),r=this.playlistError++;if(Zi(i,r,Yi(e),e.response))return{action:or.RetryRequest,flags:lr.None,retryConfig:i,retryCount:r};var s=this.getLevelSwitchAction(e,t);return i&&(s.retryConfig=i,s.retryCount=r),s},i.getFragRetryOrSwitchAction=function(e){var t=this.hls,i=this.getVariantLevelIndex(e.frag),r=t.levels[i],s=t.config,a=s.fragLoadPolicy,n=s.keyLoadPolicy,o=Qi(e.details.startsWith("key")?n:a,e),l=t.levels.reduce((function(e,t){return e+t.fragmentError}),0);if(r&&(e.details!==D.FRAG_GAP&&r.fragmentError++,Zi(o,l,Yi(e),e.response)))return{action:or.RetryRequest,flags:lr.None,retryConfig:o,retryCount:l};var d=this.getLevelSwitchAction(e,i);return o&&(d.retryConfig=o,d.retryCount=l),d},i.getLevelSwitchAction=function(e,t){var i=this.hls;null==t&&(t=i.loadLevel);var r=this.hls.levels[t];if(r){var s,a,n=e.details;r.loadError++,n===D.BUFFER_APPEND_ERROR&&r.fragmentError++;var o=-1,l=i.levels,d=i.loadLevel,h=i.minAutoLevel,c=i.maxAutoLevel;i.autoLevelEnabled||(i.loadLevel=-1);for(var u,p=null==(s=e.frag)?void 0:s.type,f=(p===Nt.AUDIO&&n===D.FRAG_PARSING_ERROR||"audio"===e.sourceBufferName&&(n===D.BUFFER_ADD_CODEC_ERROR||n===D.BUFFER_APPEND_ERROR))&&l.some((function(e){var t=e.audioCodec;return r.audioCodec!==t})),y="video"===e.sourceBufferName&&(n===D.BUFFER_ADD_CODEC_ERROR||n===D.BUFFER_APPEND_ERROR)&&l.some((function(e){var t=e.codecSet,i=e.audioCodec;return r.codecSet!==t&&r.audioCodec===i})),m=null!=(a=e.context)?a:{},g=m.type,A=m.groupId,v=function(){var t=(b+d)%l.length;if(t!==d&&t>=h&&t<=c&&0===l[t].loadError){var i,s,a=l[t];if(n===D.FRAG_GAP&&e.frag){var u=l[t].details;if(u){var m=rr(e.frag,u.fragments,e.frag.start);if(null!=m&&m.gap)return 0}}else{if(g===Ot.AUDIO_TRACK&&a.hasAudioGroup(A)||g===Ot.SUBTITLE_TRACK&&a.hasSubtitleGroup(A))return 0;if(p===Nt.AUDIO&&null!=(i=r.audioGroups)&&i.some((function(e){return a.hasAudioGroup(e)}))||p===Nt.SUBTITLE&&null!=(s=r.subtitleGroups)&&s.some((function(e){return a.hasSubtitleGroup(e)}))||f&&r.audioCodec===a.audioCodec||!f&&r.audioCodec!==a.audioCodec||y&&r.codecSet===a.codecSet)return 0}return o=t,1}},b=l.length;b--&&(0===(u=v())||1!==u););if(o>-1&&i.loadLevel!==o)return e.levelRetry=!0,this.playlistError=0,{action:or.SendAlternateToPenaltyBox,flags:lr.None,nextAutoLevel:o}}return{action:or.SendAlternateToPenaltyBox,flags:lr.MoveAllAlternatesMatchingHost}},i.onErrorOut=function(e,t){var i;switch(null==(i=t.errorAction)?void 0:i.action){case or.DoNothing:break;case or.SendAlternateToPenaltyBox:this.sendAlternateToPenaltyBox(t),t.errorAction.resolved||t.details===D.FRAG_GAP?/MediaSource readyState: ended/.test(t.error.message)&&(this.warn('MediaSource ended after "'+t.sourceBufferName+'" sourceBuffer append error. Attempting to recover from media error.'),this.hls.recoverMediaError()):t.fatal=!0}t.fatal&&this.hls.stopLoad()},i.sendAlternateToPenaltyBox=function(e){var t=this.hls,i=e.errorAction;if(i){var r=i.flags,s=i.hdcpLevel,a=i.nextAutoLevel;switch(r){case lr.None:this.switchLevel(e,a);break;case lr.MoveAllAlternatesMatchingHDCP:s&&(t.maxHdcpLevel=Ci[Ci.indexOf(s)-1],i.resolved=!0),this.warn('Restricting playback to HDCP-LEVEL of "'+t.maxHdcpLevel+'" or lower')}i.resolved||this.switchLevel(e,a)}},i.switchLevel=function(e,t){void 0!==t&&e.errorAction&&(this.warn("switching to level "+t+" after "+e.details),this.hls.nextAutoLevel=t,e.errorAction.resolved=!0,this.hls.nextLoadLevel=this.hls.nextAutoLevel)},t}(I),hr=function(e){function t(t,i){var r;return(r=e.call(this,i,t.logger)||this).hls=void 0,r.timer=-1,r.requestScheduled=-1,r.canLoad=!1,r.hls=t,r}u(t,e);var i=t.prototype;return i.destroy=function(){this.clearTimer(),this.hls=this.log=this.warn=null},i.clearTimer=function(){-1!==this.timer&&(self.clearTimeout(this.timer),this.timer=-1)},i.startLoad=function(){this.canLoad=!0,this.requestScheduled=-1,this.loadPlaylist()},i.stopLoad=function(){this.canLoad=!1,this.clearTimer()},i.switchParams=function(e,t,i){var r=null==t?void 0:t.renditionReports;if(r){for(var s=-1,a=0;a=0&&c>t.partTarget&&(h+=1)}var u=i&&Ii(i);return new Pi(d,h>=0?h:void 0,u)}}},i.loadPlaylist=function(e){-1===this.requestScheduled&&(this.requestScheduled=self.performance.now())},i.shouldLoadPlaylist=function(e){return this.canLoad&&!!e&&!!e.url&&(!e.details||e.details.live)},i.shouldReloadPlaylist=function(e){return-1===this.timer&&-1===this.requestScheduled&&this.shouldLoadPlaylist(e)},i.playlistLoaded=function(e,t,i){var r=this,s=t.details,a=t.stats,n=self.performance.now(),o=a.loading.first?Math.max(0,n-a.loading.first):0;if(s.advancedDateTime=Date.now()-o,s.live||null!=i&&i.live){if(s.reloaded(i),i&&this.log("live playlist "+e+" "+(s.advanced?"REFRESHED "+s.lastPartSn+"-"+s.lastPartIndex:s.updated?"UPDATED":"MISSED")),i&&s.fragments.length>0&&Oi(i,s),!this.canLoad||!s.live)return;var l,d=void 0,h=void 0;if(s.canBlockReload&&s.endSN&&s.advanced){var c=this.hls.config.lowLatencyMode,u=s.lastPartSn,p=s.endSN,f=s.lastPartIndex,y=u===p;-1!==f?(d=y?p+1:u,h=y?c?0:f:f+1):d=p+1;var m=s.age,g=m+s.ageHeader,A=Math.min(g-s.partTarget,1.5*s.targetduration);if(A>0){if(g>3*s.targetduration)this.log("Playlist last advanced "+m.toFixed(2)+"s ago. Omitting segment and part directives."),d=void 0,h=void 0;else if(null!=i&&i.tuneInGoal&&g-s.partTarget>i.tuneInGoal)this.warn("CDN Tune-in goal increased from: "+i.tuneInGoal+" to: "+A+" with playlist age: "+s.age),A=0;else{var v=Math.floor(A/s.targetduration);d+=v,void 0!==h&&(h+=Math.round(A%s.targetduration/s.partTarget)),this.log("CDN Tune-in age: "+s.ageHeader+"s last advanced "+m.toFixed(2)+"s goal: "+A+" skip sn "+v+" to part "+h)}s.tuneInGoal=A}if(l=this.getDeliveryDirectives(s,t.deliveryDirectives,d,h),c||!y)return void this.loadPlaylist(l)}else(s.canBlockReload||s.canSkipUntil)&&(l=this.getDeliveryDirectives(s,t.deliveryDirectives,d,h));var b=this.hls.mainForwardBufferInfo,_=b?b.end-b.len:0,w=Hi(s,1e3*(s.edge-_));s.updated&&n>this.requestScheduled+w&&(this.requestScheduled=a.loading.start),void 0!==d&&s.canBlockReload?this.requestScheduled=a.loading.first+w-(1e3*s.partTarget||1e3):-1===this.requestScheduled||this.requestScheduled+w=d.maxNumRetry)return!1;if(r&&null!=(c=e.context)&&c.deliveryDirectives)this.warn("Retrying playlist loading "+(l+1)+"/"+d.maxNumRetry+' after "'+i+'" without delivery-directives'),this.loadPlaylist();else{var u=Xi(d,l);this.timer=self.setTimeout((function(){return t.loadPlaylist()}),u),this.warn("Retrying playlist loading "+(l+1)+"/"+d.maxNumRetry+' after "'+i+'" in '+u+"ms")}e.levelRetry=!0,s.resolved=!0}return h},t}(I),cr=function(){function e(e,t,i){void 0===t&&(t=0),void 0===i&&(i=0),this.halfLife=void 0,this.alpha_=void 0,this.estimate_=void 0,this.totalWeight_=void 0,this.halfLife=e,this.alpha_=e?Math.exp(Math.log(.5)/e):0,this.estimate_=t,this.totalWeight_=i}var t=e.prototype;return t.sample=function(e,t){var i=Math.pow(this.alpha_,e);this.estimate_=t*(1-i)+i*this.estimate_,this.totalWeight_+=e},t.getTotalWeight=function(){return this.totalWeight_},t.getEstimate=function(){if(this.alpha_){var e=1-Math.pow(this.alpha_,this.totalWeight_);if(e)return this.estimate_/e}return this.estimate_},e}(),ur=function(){function e(e,t,i,r){void 0===r&&(r=100),this.defaultEstimate_=void 0,this.minWeight_=void 0,this.minDelayMs_=void 0,this.slow_=void 0,this.fast_=void 0,this.defaultTTFB_=void 0,this.ttfb_=void 0,this.defaultEstimate_=i,this.minWeight_=.001,this.minDelayMs_=50,this.slow_=new cr(e),this.fast_=new cr(t),this.defaultTTFB_=r,this.ttfb_=new cr(e)}var t=e.prototype;return t.update=function(e,t){var i=this.slow_,r=this.fast_,s=this.ttfb_;i.halfLife!==e&&(this.slow_=new cr(e,i.getEstimate(),i.getTotalWeight())),r.halfLife!==t&&(this.fast_=new cr(t,r.getEstimate(),r.getTotalWeight())),s.halfLife!==e&&(this.ttfb_=new cr(e,s.getEstimate(),s.getTotalWeight()))},t.sample=function(e,t){var i=(e=Math.max(e,this.minDelayMs_))/1e3,r=8*t/i;this.fast_.sample(i,r),this.slow_.sample(i,r)},t.sampleTTFB=function(e){var t=e/1e3,i=Math.sqrt(2)*Math.exp(-Math.pow(t,2)/2);this.ttfb_.sample(i,Math.max(e,5))},t.canEstimate=function(){return this.fast_.getTotalWeight()>=this.minWeight_},t.getEstimate=function(){return this.canEstimate()?Math.min(this.fast_.getEstimate(),this.slow_.getEstimate()):this.defaultEstimate_},t.getEstimateTTFB=function(){return this.ttfb_.getTotalWeight()>=this.minWeight_?this.ttfb_.getEstimate():this.defaultTTFB_},t.destroy=function(){},e}(),pr={supported:!0,configurations:[],decodingInfoResults:[{supported:!0,powerEfficient:!0,smooth:!0}]},fr={};function yr(e,t,i,r,s,a){var n=e.audioCodec?e.audioGroups:null,o=null==a?void 0:a.audioCodec,l=null==a?void 0:a.channels,d=l?parseInt(l):o?1/0:2,h=null;if(null!=n&&n.length)try{h=1===n.length&&n[0]?t.groups[n[0]].channels:n.reduce((function(e,i){if(i){var r=t.groups[i];if(!r)throw new Error("Audio track group "+i+" not found");Object.keys(r.channels).forEach((function(t){e[t]=(e[t]||0)+r.channels[t]}))}return e}),{2:0})}catch(e){return!0}return void 0!==e.videoCodec&&(e.width>1920&&e.height>1088||e.height>1920&&e.width>1088||e.frameRate>Math.max(r,30)||"SDR"!==e.videoRange&&e.videoRange!==i||e.bitrate>Math.max(s,8e6))||!!h&&E(d)&&Object.keys(h).some((function(e){return parseInt(e)>d}))}function mr(e,t,i){var r=e.videoCodec,s=e.audioCodec;if(!r||!s||!i)return Promise.resolve(pr);var n={width:e.width,height:e.height,bitrate:Math.ceil(Math.max(.9*e.bitrate,e.averageBitrate)),framerate:e.frameRate||30},o=e.videoRange;"SDR"!==o&&(n.transferFunction=o.toLowerCase());var l=r.split(",").map((function(e){return{type:"media-source",video:a(a({},n),{},{contentType:ft(e,"video")})}}));return s&&e.audioGroups&&e.audioGroups.forEach((function(e){var i;e&&(null==(i=t.groups[e])||i.tracks.forEach((function(t){if(t.groupId===e){var i=t.channels||"",r=parseFloat(i);E(r)&&r>2&&l.push.apply(l,s.split(",").map((function(e){return{type:"media-source",audio:{contentType:ft(e,"audio"),channels:""+r}}})))}})))})),Promise.all(l.map((function(e){var t=gr(e);return fr[t]||(fr[t]=i.decodingInfo(e))}))).then((function(e){return{supported:!e.some((function(e){return!e.supported})),configurations:l,decodingInfoResults:e}})).catch((function(e){return{supported:!1,configurations:l,decodingInfoResults:[],error:e}}))}function gr(e){var t=e.audio,i=e.video,r=i||t;if(r){var s=r.contentType.split('"')[1];if(i)return"r"+i.height+"x"+i.width+"f"+Math.ceil(i.framerate)+(i.transferFunction||"sd")+"_"+s+"_"+Math.ceil(i.bitrate/1e5);if(t)return"c"+t.channels+(t.spatialRendering?"s":"n")+"_"+s}return""}function Ar(){if("function"==typeof matchMedia){var e=matchMedia("(dynamic-range: high)"),t=matchMedia("bad query");if(e.media!==t.media)return!0===e.matches}return!1}function vr(e,t){var i=!1,r=[];return e&&(i="SDR"!==e,r=[e]),t&&(r=t.allowedVideoRanges||Ri.slice(0),r=(i=void 0!==t.preferHDR?t.preferHDR:Ar())?r.filter((function(e){return"SDR"!==e})):["SDR"]),{preferHDR:i,allowedVideoRanges:r}}function br(e,t,i,r,s){for(var a=Object.keys(e),n=null==r?void 0:r.channels,o=null==r?void 0:r.audioCodec,l=n&&2===parseInt(n),d=!0,h=!1,c=1/0,u=1/0,p=1/0,f=0,y=[],m=vr(t,s),g=m.preferHDR,A=m.allowedVideoRanges,v=function(){var t=e[a[b]];d=t.channels[2]>0,c=Math.min(c,t.minHeight),u=Math.min(u,t.minFramerate),p=Math.min(p,t.minBitrate);var i=A.filter((function(e){return t.videoRanges[e]>0}));i.length>0&&(h=!0,y=i)},b=a.length;b--;)v();c=E(c)?c:0,u=E(u)?u:0;var _=Math.max(1080,c),w=Math.max(30,u);p=E(p)?p:i,i=Math.max(p,i),h||(t=void 0,y=[]);var S=a.reduce((function(t,r){var s=e[r];if(r===t)return t;if(s.minBitrate>i)return _r(r,"min bitrate of "+s.minBitrate+" > current estimate of "+i),t;if(!s.hasDefaultAudio)return _r(r,"no renditions with default or auto-select sound found"),t;if(o&&r.indexOf(o.substring(0,4))%5!=0)return _r(r,'audio codec preference "'+o+'" not found'),t;if(n&&!l){if(!s.channels[n])return _r(r,"no renditions with "+n+" channel sound found (channels options: "+Object.keys(s.channels)+")"),t}else if((!o||l)&&d&&0===s.channels[2])return _r(r,"no renditions with stereo sound found"),t;return s.minHeight>_?(_r(r,"min resolution of "+s.minHeight+" > maximum of "+_),t):s.minFramerate>w?(_r(r,"min framerate of "+s.minFramerate+" > maximum of "+w),t):y.some((function(e){return s.videoRanges[e]>0}))?s.maxScore=mt(t)||s.fragmentError>e[t].fragmentError)?t:(f=s.maxScore,r):(_r(r,"no variants with VIDEO-RANGE of "+JSON.stringify(y)+" found"),t)}),void 0);return{codecSet:S,videoRanges:y,preferHDR:g,minFramerate:u,minBitrate:p}}function _r(e,t){G.log('[abr] start candidates with "'+e+'" ignored because '+t)}function wr(e){return e.reduce((function(e,t){var i=e.groups[t.groupId];i||(i=e.groups[t.groupId]={tracks:[],channels:{2:0},hasDefault:!1,hasAutoSelect:!1}),i.tracks.push(t);var r=t.channels||"2";return i.channels[r]=(i.channels[r]||0)+1,i.hasDefault=i.hasDefault||t.default,i.hasAutoSelect=i.hasAutoSelect||t.autoselect,i.hasDefault&&(e.hasDefaultAudio=!0),i.hasAutoSelect&&(e.hasAutoSelectAudio=!0),e}),{hasDefaultAudio:!1,hasAutoSelectAudio:!1,groups:{}})}function Er(e,t,i,r){return e.slice(i,r+1).reduce((function(e,i){if(!i.codecSet)return e;var r=i.audioGroups,s=e[i.codecSet];s||(e[i.codecSet]=s={minBitrate:1/0,minHeight:1/0,minFramerate:1/0,maxScore:0,videoRanges:{SDR:0},channels:{2:0},hasDefaultAudio:!r,fragmentError:0}),s.minBitrate=Math.min(s.minBitrate,i.bitrate);var a=Math.min(i.height,i.width);return s.minHeight=Math.min(s.minHeight,a),s.minFramerate=Math.min(s.minFramerate,i.frameRate),s.maxScore=Math.max(s.maxScore,i.score),s.fragmentError+=i.fragmentError,s.videoRanges[i.videoRange]=(s.videoRanges[i.videoRange]||0)+1,r&&r.forEach((function(e){if(e){var i=t.groups[e];s.hasDefaultAudio=s.hasDefaultAudio||t.hasDefaultAudio?i.hasDefault:i.hasAutoSelect||!t.hasDefaultAudio&&!t.hasAutoSelectAudio,Object.keys(i.channels).forEach((function(e){s.channels[e]=(s.channels[e]||0)+i.channels[e]}))}})),e}),{})}function Sr(e,t,i){if("attrs"in e){var r=t.indexOf(e);if(-1!==r)return r}for(var s=0;s1&&(r=Math.max.apply(Math,n));var o=a.videoRange,l=a.frameRate,d=a.codecSet.substring(0,4),h=Rr(t,r,(function(t){if(t.videoRange!==o||t.frameRate!==l||t.codecSet.substring(0,4)!==d)return!1;var r=t.audioGroups,a=i.filter((function(e){return!r||-1!==r.indexOf(e.groupId)}));return Sr(e,a,s)>-1}));return h>-1?h:Rr(t,r,(function(t){var r=t.audioGroups,a=i.filter((function(e){return!r||-1!==r.indexOf(e.groupId)}));return Sr(e,a,s)>-1}))}function Rr(e,t,i){for(var r=t;r;r--)if(i(e[r]))return r;for(var s=t+1;s-1,A=i.getBwEstimate(),v=s.levels,b=v[t.level],_=l.total||Math.max(l.loaded,Math.round(d*b.averageBitrate/8)),w=g?h-m:h;w<1&&g&&(w=Math.min(h,8*l.loaded/A));var S=g?1e3*l.loaded/w:0,T=S?(_-l.loaded)/S:8*_/A+p/1e3;if(!(T<=y)){var C,D=S?8*S:A,R=Number.POSITIVE_INFINITY;for(C=t.level-1;C>c;C--){var x=v[C].maxBitrate;if((R=i.getTimeToLoadFrag(p/1e3,D,d*x,!v[C].details))=T||R>10*d)){s.nextLoadLevel=s.nextAutoLevel=C,g?i.bwEstimator.sample(h-Math.min(p,m),l.loaded):i.bwEstimator.sampleTTFB(h);var L=v[C].maxBitrate;i.getBwEstimate()*i.hls.config.abrBandWidthUpFactor>L&&i.resetEstimator(L),i.clearTimer(),i.warn("Fragment "+t.sn+(r?" part "+r.index:"")+" of level "+t.level+" is loading too slowly;\n Time to underbuffer: "+y.toFixed(3)+" s\n Estimated load time for current fragment: "+T.toFixed(3)+" s\n Estimated load time for down switch fragment: "+R.toFixed(3)+" s\n TTFB estimate: "+(0|m)+" ms\n Current BW estimate: "+(E(A)?0|A:"Unknown")+" bps\n New BW estimate: "+(0|i.getBwEstimate())+" bps\n Switching to level "+C+" @ "+(0|L)+" bps"),s.trigger(k.FRAG_LOAD_EMERGENCY_ABORTED,{frag:t,part:r,stats:l})}}}}}}},i.hls=t,i.bwEstimator=i.initEstimator(),i.registerListeners(),i}u(t,e);var i=t.prototype;return i.resetEstimator=function(e){e&&(this.log("setting initial bwe to "+e),this.hls.config.abrEwmaDefaultEstimate=e),this.firstSelection=-1,this.bwEstimator=this.initEstimator()},i.initEstimator=function(){var e=this.hls.config;return new ur(e.abrEwmaSlowVoD,e.abrEwmaFastVoD,e.abrEwmaDefaultEstimate)},i.registerListeners=function(){var e=this.hls;e.on(k.MANIFEST_LOADING,this.onManifestLoading,this),e.on(k.FRAG_LOADING,this.onFragLoading,this),e.on(k.FRAG_LOADED,this.onFragLoaded,this),e.on(k.FRAG_BUFFERED,this.onFragBuffered,this),e.on(k.LEVEL_SWITCHING,this.onLevelSwitching,this),e.on(k.LEVEL_LOADED,this.onLevelLoaded,this),e.on(k.LEVELS_UPDATED,this.onLevelsUpdated,this),e.on(k.MAX_AUTO_LEVEL_UPDATED,this.onMaxAutoLevelUpdated,this),e.on(k.ERROR,this.onError,this)},i.unregisterListeners=function(){var e=this.hls;e&&(e.off(k.MANIFEST_LOADING,this.onManifestLoading,this),e.off(k.FRAG_LOADING,this.onFragLoading,this),e.off(k.FRAG_LOADED,this.onFragLoaded,this),e.off(k.FRAG_BUFFERED,this.onFragBuffered,this),e.off(k.LEVEL_SWITCHING,this.onLevelSwitching,this),e.off(k.LEVEL_LOADED,this.onLevelLoaded,this),e.off(k.LEVELS_UPDATED,this.onLevelsUpdated,this),e.off(k.MAX_AUTO_LEVEL_UPDATED,this.onMaxAutoLevelUpdated,this),e.off(k.ERROR,this.onError,this))},i.destroy=function(){this.unregisterListeners(),this.clearTimer(),this.hls=this._abandonRulesCheck=null,this.fragCurrent=this.partCurrent=null},i.onManifestLoading=function(e,t){this.lastLoadedFragLevel=-1,this.firstSelection=-1,this.lastLevelLoadSec=0,this.fragCurrent=this.partCurrent=null,this.onLevelsUpdated(),this.clearTimer()},i.onLevelsUpdated=function(){this.lastLoadedFragLevel>-1&&this.fragCurrent&&(this.lastLoadedFragLevel=this.fragCurrent.level),this._nextAutoLevel=-1,this.onMaxAutoLevelUpdated(),this.codecTiers=null,this.audioTracksByGroup=null},i.onMaxAutoLevelUpdated=function(){this.firstSelection=-1,this.nextAutoLevelKey=""},i.onFragLoading=function(e,t){var i,r=t.frag;this.ignoreFragment(r)||(r.bitrateTest||(this.fragCurrent=r,this.partCurrent=null!=(i=t.part)?i:null),this.clearTimer(),this.timer=self.setInterval(this._abandonRulesCheck,100))},i.onLevelSwitching=function(e,t){this.clearTimer()},i.onError=function(e,t){if(!t.fatal)switch(t.details){case D.BUFFER_ADD_CODEC_ERROR:case D.BUFFER_APPEND_ERROR:this.lastLoadedFragLevel=-1,this.firstSelection=-1;break;case D.FRAG_LOAD_TIMEOUT:var i=t.frag,r=this.fragCurrent,s=this.partCurrent;if(i&&r&&i.sn===r.sn&&i.level===r.level){var a=performance.now(),n=s?s.stats:i.stats,o=a-n.loading.start,l=n.loading.first?n.loading.first-n.loading.start:-1;if(n.loaded&&l>-1){var d=this.bwEstimator.getEstimateTTFB();this.bwEstimator.sample(o-Math.min(d,l),n.loaded)}else this.bwEstimator.sampleTTFB(o)}}},i.getTimeToLoadFrag=function(e,t,i,r){return e+i/t+(r?this.lastLevelLoadSec:0)},i.onLevelLoaded=function(e,t){var i=this.hls.config,r=t.stats.loading,s=r.end-r.start;E(s)&&(this.lastLevelLoadSec=s/1e3),t.details.live?this.bwEstimator.update(i.abrEwmaSlowLive,i.abrEwmaFastLive):this.bwEstimator.update(i.abrEwmaSlowVoD,i.abrEwmaFastVoD)},i.onFragLoaded=function(e,t){var i=t.frag,r=t.part,s=r?r.stats:i.stats;if(i.type===Nt.MAIN&&this.bwEstimator.sampleTTFB(s.loading.first-s.loading.start),!this.ignoreFragment(i)){if(this.clearTimer(),i.level===this._nextAutoLevel&&(this._nextAutoLevel=-1),this.firstSelection=-1,this.hls.config.abrMaxWithRealBitrate){var a=r?r.duration:i.duration,n=this.hls.levels[i.level],o=(n.loaded?n.loaded.bytes:0)+s.loaded,l=(n.loaded?n.loaded.duration:0)+a;n.loaded={bytes:o,duration:l},n.realBitrate=Math.round(8*o/l)}if(i.bitrateTest){var d={stats:s,frag:i,part:r,id:i.type};this.onFragBuffered(k.FRAG_BUFFERED,d),i.bitrateTest=!1}else this.lastLoadedFragLevel=i.level}},i.onFragBuffered=function(e,t){var i=t.frag,r=t.part,s=null!=r&&r.stats.loaded?r.stats:i.stats;if(!s.aborted&&!this.ignoreFragment(i)){var a=s.parsing.end-s.loading.start-Math.min(s.loading.first-s.loading.start,this.bwEstimator.getEstimateTTFB());this.bwEstimator.sample(a,s.loaded),s.bwEstimate=this.getBwEstimate(),i.bitrateTest?this.bitrateTestDelay=a/1e3:this.bitrateTestDelay=0}},i.ignoreFragment=function(e){return e.type!==Nt.MAIN||"initSegment"===e.sn},i.clearTimer=function(){this.timer>-1&&(self.clearInterval(this.timer),this.timer=-1)},i.getAutoLevelKey=function(){return this.getBwEstimate()+"_"+this.getStarvationDelay().toFixed(2)},i.getNextABRAutoLevel=function(){var e=this.fragCurrent,t=this.partCurrent,i=this.hls;if(i.levels.length<=1)return i.loadLevel;var r=i.maxAutoLevel,s=i.config,a=i.minAutoLevel,n=t?t.duration:e?e.duration:0,o=this.getBwEstimate(),l=this.getStarvationDelay(),d=s.abrBandWidthFactor,h=s.abrBandWidthUpFactor;if(l){var c=this.findBestLevel(o,a,r,l,0,d,h);if(c>=0)return c}var u=n?Math.min(n,s.maxStarvationDelay):s.maxStarvationDelay;if(!l){var p=this.bitrateTestDelay;p&&(u=(n?Math.min(n,s.maxLoadingDelay):s.maxLoadingDelay)-p,this.info("bitrate test took "+Math.round(1e3*p)+"ms, set first fragment max fetchDuration to "+Math.round(1e3*u)+" ms"),d=h=1)}var f=this.findBestLevel(o,a,r,l,u,d,h);if(this.info((l?"rebuffering expected":"buffer is empty")+", optimal quality level "+f),f>-1)return f;var y=i.levels[a],m=i.levels[i.loadLevel];return(null==y?void 0:y.bitrate)<(null==m?void 0:m.bitrate)?a:i.loadLevel},i.getStarvationDelay=function(){var e=this.hls,t=e.media;if(!t)return 1/0;var i=t&&0!==t.playbackRate?Math.abs(t.playbackRate):1,r=e.mainForwardBufferInfo;return(r?r.len:0)/i},i.getBwEstimate=function(){return this.bwEstimator.canEstimate()?this.bwEstimator.getEstimate():this.hls.config.abrEwmaDefaultEstimate},i.findBestLevel=function(e,t,i,r,s,a,n){var o,l=this,d=r+s,h=this.lastLoadedFragLevel,c=-1===h?this.hls.firstLevel:h,u=this.fragCurrent,p=this.partCurrent,f=this.hls,y=f.levels,m=f.allAudioTracks,g=f.loadLevel,A=f.config;if(1===y.length)return 0;var v,b=y[c],_=!(null==b||null==(o=b.details)||!o.live),w=-1===g||-1===h,S="SDR",T=(null==b?void 0:b.frameRate)||0,k=A.audioPreference,C=A.videoPreference,D=this.audioTracksByGroup||(this.audioTracksByGroup=wr(m));if(w){if(-1!==this.firstSelection)return this.firstSelection;var R=br(this.codecTiers||(this.codecTiers=Er(y,D,t,i)),S,e,k,C),x=R.codecSet,L=R.videoRanges,I=R.minFramerate,P=R.minBitrate,B=R.preferHDR;v=x,S=B?L[L.length-1]:L[0],T=I,e=Math.max(e,P),this.log("picked start tier "+JSON.stringify(R))}else v=null==b?void 0:b.codecSet,S=null==b?void 0:b.videoRange;for(var M,U=p?p.duration:u?u.duration:0,F=this.bwEstimator.getEstimateTTFB()/1e3,O=[],N=function(){var t,o=y[G],u=G>c;if(!o)return 0;if(A.useMediaCapabilities&&!o.supportedResult&&!o.supportedPromise){var f=navigator.mediaCapabilities;"function"==typeof(null==f?void 0:f.decodingInfo)&&yr(o,D,S,T,e,k)?(o.supportedPromise=mr(o,D,f),o.supportedPromise.then((function(e){if(l.hls){o.supportedResult=e;var t=l.hls.levels,i=t.indexOf(o);e.error?l.warn('MediaCapabilities decodingInfo error: "'+e.error+'" for level '+i+" "+JSON.stringify(e)):e.supported||(l.warn("Unsupported MediaCapabilities decodingInfo result for level "+i+" "+JSON.stringify(e)),i>-1&&t.length>1&&(l.log("Removing unsupported level "+i),l.hls.removeLevel(i)))}}))):o.supportedResult=pr}if(v&&o.codecSet!==v||S&&o.videoRange!==S||u&&T>o.frameRate||!u&&T>0&&T=2*U&&0===s?y[G].averageBitrate:y[G].maxBitrate,L=l.getTimeToLoadFrag(F,m,x*R,void 0===C);if(m>=x&&(G===h||0===o.loadError&&0===o.fragmentError)&&(L<=F||!E(L)||_&&!l.bitrateTestDelay||L"+G+" adjustedbw("+Math.round(m)+")-bitrate="+Math.round(m-x)+" ttfb:"+F.toFixed(1)+" avgDuration:"+R.toFixed(1)+" maxFetchDuration:"+d.toFixed(1)+" fetchDuration:"+L.toFixed(1)+" firstSelection:"+w+" codecSet:"+v+" videoRange:"+S+" hls.loadLevel:"+g)),w&&(l.firstSelection=G),{v:G}}},G=i;G>=t;G--)if(0!==(M=N())&&M)return M.v;return-1},d(t,[{key:"firstAutoLevel",get:function(){var e=this.hls,t=e.maxAutoLevel,i=e.minAutoLevel,r=this.getBwEstimate(),s=this.hls.config.maxStarvationDelay,a=this.findBestLevel(r,i,t,0,s,1,1);if(a>-1)return a;var n=this.hls.firstLevel,o=Math.min(Math.max(n,i),t);return this.warn("Could not find best starting auto level. Defaulting to first in playlist "+n+" clamped to "+o),o}},{key:"forcedAutoLevel",get:function(){return this.nextAutoLevelKey?-1:this._nextAutoLevel}},{key:"nextAutoLevel",get:function(){var e=this.forcedAutoLevel,t=this.bwEstimator.canEstimate(),i=this.lastLoadedFragLevel>-1;if(!(-1===e||t&&i&&this.nextAutoLevelKey!==this.getAutoLevelKey()))return e;var r=t&&i?this.getNextABRAutoLevel():this.firstAutoLevel;if(-1!==e){var s=this.hls.levels;if(s.length>Math.max(e,r)&&s[e].loadError<=s[r].loadError)return e}return this._nextAutoLevel=r,this.nextAutoLevelKey=this.getAutoLevelKey(),r},set:function(e){var t=this.hls,i=t.maxAutoLevel,r=t.minAutoLevel,s=Math.min(Math.max(e,r),i);this._nextAutoLevel!==s&&(this.nextAutoLevelKey="",this._nextAutoLevel=s)}}])}(I),Lr=function(e){function t(t,i){var r;return(r=e.call(this,t,i)||this)._boundTick=void 0,r._tickTimer=null,r._tickInterval=null,r._tickCallCount=0,r._boundTick=r.tick.bind(r),r}u(t,e);var i=t.prototype;return i.destroy=function(){this.onHandlerDestroying(),this.onHandlerDestroyed()},i.onHandlerDestroying=function(){this.clearNextTick(),this.clearInterval()},i.onHandlerDestroyed=function(){},i.hasInterval=function(){return!!this._tickInterval},i.hasNextTick=function(){return!!this._tickTimer},i.setInterval=function(e){return!this._tickInterval&&(this._tickCallCount=0,this._tickInterval=self.setInterval(this._boundTick,e),!0)},i.clearInterval=function(){return!!this._tickInterval&&(self.clearInterval(this._tickInterval),this._tickInterval=null,!0)},i.clearNextTick=function(){return!!this._tickTimer&&(self.clearTimeout(this._tickTimer),this._tickTimer=null,!0)},i.tick=function(){this._tickCallCount++,1===this._tickCallCount&&(this.doTick(),this._tickCallCount>1&&this.tickImmediate(),this._tickCallCount=0)},i.tickImmediate=function(){this.clearNextTick(),this._tickTimer=self.setTimeout(this._boundTick,0)},i.doTick=function(){},t}(I),Ir={NOT_LOADED:"NOT_LOADED",APPENDING:"APPENDING",PARTIAL:"PARTIAL",OK:"OK"},Pr=function(){function e(e){this.activePartLists=Object.create(null),this.endListFragments=Object.create(null),this.fragments=Object.create(null),this.timeRanges=Object.create(null),this.bufferPadding=.2,this.hls=void 0,this.hasGaps=!1,this.hls=e,this._registerListeners()}var t=e.prototype;return t._registerListeners=function(){var e=this.hls;e.on(k.BUFFER_APPENDED,this.onBufferAppended,this),e.on(k.FRAG_BUFFERED,this.onFragBuffered,this),e.on(k.FRAG_LOADED,this.onFragLoaded,this)},t._unregisterListeners=function(){var e=this.hls;e.off(k.BUFFER_APPENDED,this.onBufferAppended,this),e.off(k.FRAG_BUFFERED,this.onFragBuffered,this),e.off(k.FRAG_LOADED,this.onFragLoaded,this)},t.destroy=function(){this._unregisterListeners(),this.fragments=this.activePartLists=this.endListFragments=this.timeRanges=null},t.getAppendedFrag=function(e,t){var i=this.activePartLists[t];if(i)for(var r=i.length;r--;){var s=i[r];if(!s)break;var a=s.end;if(s.start<=e&&null!==a&&e<=a)return s}return this.getBufferedFrag(e,t)},t.getBufferedFrag=function(e,t){return this.getFragAtPos(e,t,!0)},t.getFragAtPos=function(e,t,i){for(var r=this.fragments,s=Object.keys(r),a=s.length;a--;){var n=r[s[a]];if((null==n?void 0:n.body.type)===t&&(!i||n.buffered)){var o=n.body;if(o.start<=e&&e<=o.end)return o}}return null},t.detectEvictedFragments=function(e,t,i,r){var s=this;this.timeRanges&&(this.timeRanges[e]=t);var a=(null==r?void 0:r.fragment.sn)||-1;Object.keys(this.fragments).forEach((function(r){var n=s.fragments[r];if(n&&!(a>=n.body.sn))if(n.buffered||n.loaded){var o=n.range[e];o&&o.time.some((function(e){var i=!s.isTimeBuffered(e.startPTS,e.endPTS,t);return i&&s.removeFragment(n.body),i}))}else n.body.type===i&&s.removeFragment(n.body)}))},t.detectPartialFragments=function(e){var t=this,i=this.timeRanges,r=e.frag,s=e.part;if(i&&"initSegment"!==r.sn){var a=Mr(r),n=this.fragments[a];if(!(!n||n.buffered&&r.gap)){var o=!r.relurl;Object.keys(i).forEach((function(e){var a=r.elementaryStreams[e];if(a){var l=i[e],d=o||!0===a.partial;n.range[e]=t.getBufferedTimes(r,s,d,l)}})),n.loaded=null,Object.keys(n.range).length?(n.buffered=!0,(n.body.endList=r.endList||n.body.endList)&&(this.endListFragments[n.body.type]=n),Br(n)||this.removeParts(r.sn-1,r.type)):this.removeFragment(n.body)}}},t.removeParts=function(e,t){var i=this.activePartLists[t];i&&(this.activePartLists[t]=i.filter((function(t){return t.fragment.sn>=e})))},t.fragBuffered=function(e,t){var i=Mr(e),r=this.fragments[i];!r&&t&&(r=this.fragments[i]={body:e,appendedPTS:null,loaded:null,buffered:!1,range:Object.create(null)},e.gap&&(this.hasGaps=!0)),r&&(r.loaded=null,r.buffered=!0)},t.getBufferedTimes=function(e,t,i,r){for(var s={time:[],partial:i},a=e.start,n=e.end,o=e.minEndPTS||n,l=e.maxStartPTS||a,d=0;d=h&&o<=c){s.time.push({startPTS:Math.max(a,r.start(d)),endPTS:Math.min(n,r.end(d))});break}if(ah){var u=Math.max(a,r.start(d)),p=Math.min(n,r.end(d));p>u&&(s.partial=!0,s.time.push({startPTS:u,endPTS:p}))}else if(n<=h)break}return s},t.getPartialFragment=function(e){var t,i,r,s=null,a=0,n=this.bufferPadding,o=this.fragments;return Object.keys(o).forEach((function(l){var d=o[l];d&&Br(d)&&(i=d.body.start-n,r=d.body.end+n,e>=i&&e<=r&&(t=Math.min(e-i,r-e),a<=t&&(s=d.body,a=t)))})),s},t.isEndListAppended=function(e){var t=this.endListFragments[e];return void 0!==t&&(t.buffered||Br(t))},t.getState=function(e){var t=Mr(e),i=this.fragments[t];return i?i.buffered?Br(i)?Ir.PARTIAL:Ir.OK:Ir.APPENDING:Ir.NOT_LOADED},t.isTimeBuffered=function(e,t,i){for(var r,s,a=0;a=r&&t<=s)return!0;if(t<=r)return!1}return!1},t.onFragLoaded=function(e,t){var i=t.frag,r=t.part;if("initSegment"!==i.sn&&!i.bitrateTest){var s=r?null:t,a=Mr(i);this.fragments[a]={body:i,appendedPTS:null,loaded:s,buffered:!1,range:Object.create(null)}}},t.onBufferAppended=function(e,t){var i=t.frag,r=t.part,s=t.timeRanges,a=t.type;if("initSegment"!==i.sn){var n=i.type;if(r){var o=this.activePartLists[n];o||(this.activePartLists[n]=o=[]),o.push(r)}this.timeRanges=s;var l=s[a];this.detectEvictedFragments(a,l,n,r)}},t.onFragBuffered=function(e,t){this.detectPartialFragments(t)},t.hasFragment=function(e){var t=Mr(e);return!!this.fragments[t]},t.hasParts=function(e){var t;return!(null==(t=this.activePartLists[e])||!t.length)},t.removeFragmentsInRange=function(e,t,i,r,s){var a=this;r&&!this.hasGaps||Object.keys(this.fragments).forEach((function(n){var o=a.fragments[n];if(o){var l=o.body;l.type!==i||r&&!l.gap||l.starte&&(o.buffered||s)&&a.removeFragment(l)}}))},t.removeFragment=function(e){var t=Mr(e);e.stats.loaded=0,e.clearElementaryStreamInfo();var i=this.activePartLists[e.type];if(i){var r=e.sn;this.activePartLists[e.type]=i.filter((function(e){return e.fragment.sn!==r}))}delete this.fragments[t],e.endList&&delete this.endListFragments[e.type]},t.removeAllFragments=function(){this.fragments=Object.create(null),this.endListFragments=Object.create(null),this.activePartLists=Object.create(null),this.hasGaps=!1},e}();function Br(e){var t,i,r;return e.buffered&&(e.body.gap||(null==(t=e.range.video)?void 0:t.partial)||(null==(i=e.range.audio)?void 0:i.partial)||(null==(r=e.range.audiovideo)?void 0:r.partial))}function Mr(e){return e.type+"_"+e.level+"_"+e.sn}var Ur={length:0,start:function(){return 0},end:function(){return 0}},Fr=function(){function e(){}return e.isBuffered=function(t,i){if(t)for(var r=e.getBuffered(t),s=r.length;s--;)if(i>=r.start(s)&&i<=r.end(s))return!0;return!1},e.bufferInfo=function(t,i,r){if(t){var s=e.getBuffered(t);if(s.length){for(var a=[],n=0;nn&&(r[a-1].end=e[s].end):r.push(e[s])}else r.push(e[s])}else r=e;for(var o,l=0,d=t,h=t,c=0;c=u&&ti.startCC||e&&e.cc>>8^255&m^99,e[p]=m,t[m]=p;var g=u[p],A=u[g],v=u[A],b=257*u[m]^16843008*m;r[p]=b<<24|b>>>8,s[p]=b<<16|b>>>16,a[p]=b<<8|b>>>24,n[p]=b,b=16843009*v^65537*A^257*g^16843008*p,l[m]=b<<24|b>>>8,d[m]=b<<16|b>>>16,h[m]=b<<8|b>>>24,c[m]=b,p?(p=g^u[u[u[v^g]]],f^=u[u[f]]):p=f=1}},t.expandKey=function(e){for(var t=this.uint8ArrayToUint32Array_(e),i=!0,r=0;rl.end){var u=o>c;(o0&&null!=a&&a.key&&a.iv&&re(a.method)){var n=self.performance.now();return i.decrypter.decrypt(new Uint8Array(s),a.key.buffer,a.iv.buffer,se(a.method)).catch((function(t){throw r.trigger(k.ERROR,{type:C.MEDIA_ERROR,details:D.FRAG_DECRYPT_ERROR,fatal:!1,error:t,reason:t.message,frag:e}),t})).then((function(s){var a=self.performance.now();return r.trigger(k.FRAG_DECRYPTED,{frag:e,payload:s,stats:{tstart:n,tdecrypt:a}}),t.payload=s,i.completeInitSegmentLoad(t)}))}return i.completeInitSegmentLoad(t)})).catch((function(t){i.state!==ls.STOPPED&&i.state!==ls.ERROR&&(i.warn(t),i.resetFragmentLoading(e))}))},i.completeInitSegmentLoad=function(e){if(!this.levels)throw new Error("init load aborted, missing levels");var t=e.frag.stats;this.state!==ls.STOPPED&&(this.state=ls.IDLE),e.frag.data=new Uint8Array(e.payload),t.parsing.start=t.buffering.start=self.performance.now(),t.parsing.end=t.buffering.end=self.performance.now(),this.tick()},i.fragContextChanged=function(e){var t=this.fragCurrent;return!e||!t||e.sn!==t.sn||e.level!==t.level},i.fragBufferedComplete=function(e,t){var i,r,s,a,n=this.mediaBuffer?this.mediaBuffer:this.media;if(this.log("Buffered "+e.type+" sn: "+e.sn+(t?" part: "+t.index:"")+" of "+(this.playlistType===Nt.MAIN?"level":"track")+" "+e.level+" (frag:["+(null!=(i=e.startPTS)?i:NaN).toFixed(3)+"-"+(null!=(r=e.endPTS)?r:NaN).toFixed(3)+"] > buffer:"+(n?os.toString(Fr.getBuffered(n)):"(detached)")+")"),"initSegment"!==e.sn){var o;if(e.type!==Nt.SUBTITLE){var l=e.elementaryStreams;if(!Object.keys(l).some((function(e){return!!l[e]})))return void(this.state=ls.IDLE)}var d=null==(o=this.levels)?void 0:o[e.level];null!=d&&d.fragmentError&&(this.log("Resetting level fragment error count of "+d.fragmentError+" on frag buffered"),d.fragmentError=0)}this.state=ls.IDLE,n&&(!this.loadedmetadata&&e.type==Nt.MAIN&&n.buffered.length&&(null==(s=this.fragCurrent)?void 0:s.sn)===(null==(a=this.fragPrevious)?void 0:a.sn)&&(this.loadedmetadata=!0,this.seekToStartPos()),this.tick())},i.seekToStartPos=function(){},i._handleFragmentLoadComplete=function(e){var t=this.transmuxer;if(t){var i=e.frag,r=e.part,s=e.partsLoaded,a=!s||0===s.length||s.some((function(e){return!e})),n=new Or(i.level,i.sn,i.stats.chunkCount+1,0,r?r.index:-1,!a);t.flush(n)}},i._handleFragmentLoadProgress=function(e){},i._doFragLoad=function(e,t,i,r){var s,a=this;void 0===i&&(i=null);var n=null==t?void 0:t.details;if(!this.levels||!n)throw new Error("frag load aborted, missing level"+(n?"":" detail")+"s");var o=null;!e.encrypted||null!=(s=e.decryptdata)&&s.key?!e.encrypted&&n.encryptedFragments.length&&this.keyLoader.loadClear(e,n.encryptedFragments):(this.log("Loading key for "+e.sn+" of ["+n.startSN+"-"+n.endSN+"], "+(this.playlistType===Nt.MAIN?"level":"track")+" "+e.level),this.state=ls.KEY_LOADING,this.fragCurrent=e,o=this.keyLoader.load(e).then((function(e){if(!a.fragContextChanged(e.frag))return a.hls.trigger(k.KEY_LOADED,e),a.state===ls.KEY_LOADING&&(a.state=ls.IDLE),e})),this.hls.trigger(k.KEY_LOADING,{frag:e}),null===this.fragCurrent&&(o=Promise.reject(new Error("frag load aborted, context changed in KEY_LOADING"))));var l=this.fragPrevious;if("initSegment"!==e.sn&&(!l||e.sn!==l.sn)){var d=this.shouldLoadParts(t.details,e.end);d!==this.loadingParts&&(this.log("LL-Part loading "+(d?"ON":"OFF")+" loading sn "+(null==l?void 0:l.sn)+"->"+e.sn),this.loadingParts=d)}if(i=Math.max(e.start,i||0),this.loadingParts&&"initSegment"!==e.sn){var h=n.partList;if(h&&r){i>e.end&&n.fragmentHint&&(e=n.fragmentHint);var c=this.getNextPart(h,e,i);if(c>-1){var u,p=h[c];return this.log("Loading part sn: "+e.sn+" p: "+p.index+" cc: "+e.cc+" of playlist ["+n.startSN+"-"+n.endSN+"] parts [0-"+c+"-"+(h.length-1)+"] "+(this.playlistType===Nt.MAIN?"level":"track")+": "+e.level+", target: "+parseFloat(i.toFixed(3))),this.nextLoadPosition=p.start+p.duration,this.state=ls.FRAG_LOADING,u=o?o.then((function(i){return!i||a.fragContextChanged(i.frag)?null:a.doFragPartsLoad(e,p,t,r)})).catch((function(e){return a.handleFragLoadError(e)})):this.doFragPartsLoad(e,p,t,r).catch((function(e){return a.handleFragLoadError(e)})),this.hls.trigger(k.FRAG_LOADING,{frag:e,part:p,targetBufferTime:i}),null===this.fragCurrent?Promise.reject(new Error("frag load aborted, context changed in FRAG_LOADING parts")):u}if(!e.url||this.loadedEndOfParts(h,i))return Promise.resolve(null)}}if("initSegment"!==e.sn&&this.loadingParts)this.log("LL-Part loading OFF after next part miss @"+i.toFixed(2)),this.loadingParts=!1;else if(!e.url)return Promise.resolve(null);this.log("Loading fragment "+e.sn+" cc: "+e.cc+" "+(n?"of ["+n.startSN+"-"+n.endSN+"] ":"")+(this.playlistType===Nt.MAIN?"level":"track")+": "+e.level+", target: "+parseFloat(i.toFixed(3))),E(e.sn)&&!this.bitrateTest&&(this.nextLoadPosition=e.start+e.duration),this.state=ls.FRAG_LOADING;var f,y=this.config.progressive;return f=y&&o?o.then((function(t){return!t||a.fragContextChanged(null==t?void 0:t.frag)?null:a.fragmentLoader.load(e,r)})).catch((function(e){return a.handleFragLoadError(e)})):Promise.all([this.fragmentLoader.load(e,y?r:void 0),o]).then((function(e){var t=e[0];return!y&&t&&r&&r(t),t})).catch((function(e){return a.handleFragLoadError(e)})),this.hls.trigger(k.FRAG_LOADING,{frag:e,targetBufferTime:i}),null===this.fragCurrent?Promise.reject(new Error("frag load aborted, context changed in FRAG_LOADING")):f},i.doFragPartsLoad=function(e,t,i,r){var s=this;return new Promise((function(a,n){var o,l=[],d=null==(o=i.details)?void 0:o.partList;!function t(o){s.fragmentLoader.loadPart(e,o,r).then((function(r){l[o.index]=r;var n=r.part;s.hls.trigger(k.FRAG_LOADED,r);var h=ji(i,e.sn,o.index+1)||Ki(d,e.sn,o.index+1);if(!h)return a({frag:e,part:n,partsLoaded:l});t(h)})).catch(n)}(t)}))},i.handleFragLoadError=function(e){if("data"in e){var t=e.data;e.data&&t.details===D.INTERNAL_ABORTED?this.handleFragLoadAborted(t.frag,t.part):this.hls.trigger(k.ERROR,t)}else this.hls.trigger(k.ERROR,{type:C.OTHER_ERROR,details:D.INTERNAL_EXCEPTION,err:e,error:e,fatal:!0});return null},i._handleTransmuxerFlush=function(e){var t=this.getCurrentContext(e);if(t&&this.state===ls.PARSING){var i=t.frag,r=t.part,s=t.level,a=self.performance.now();if(i.stats.parsing.end=a,r&&(r.stats.parsing.end=a),"initSegment"!==i.sn){var n=this.getLevelDetails(),o=n&&i.sn>n.endSN||this.shouldLoadParts(n,i.end);o!==this.loadingParts&&(this.log("LL-Part loading "+(o?"ON":"OFF")+" after parsing segment ending @"+i.end.toFixed(2)),this.loadingParts=o)}this.updateLevelTiming(i,r,s,e.partial)}else this.fragCurrent||this.state===ls.STOPPED||this.state===ls.ERROR||(this.state=ls.IDLE)},i.shouldLoadParts=function(e,t){if(this.config.lowLatencyMode){if(!e)return this.loadingParts;if(null!=e&&e.partList){var i,r=e.partList[0];if(t>=r.end+((null==(i=e.fragmentHint)?void 0:i.duration)||0)&&this.lastCurrentTime>r.start-r.fragment.duration)return!0}}return!1},i.getCurrentContext=function(e){var t=this.levels,i=this.fragCurrent,r=e.level,s=e.sn,a=e.part;if(null==t||!t[r])return this.warn("Levels object was unset while buffering fragment "+s+" of level "+r+". The current chunk will not be buffered."),null;var n=t[r],o=a>-1?ji(n,s,a):null,l=o?o.fragment:$i(n,s,i);return l?(i&&i!==l&&(l.stats=i.stats),{frag:l,part:o,level:n}):null},i.bufferFragmentData=function(e,t,i,r,s){var a;if(e&&this.state===ls.PARSING){var n=e.data1,o=e.data2,l=n;if(n&&o&&(l=He(n,o)),null!=(a=l)&&a.length){var d={type:e.type,frag:t,part:i,chunkMeta:r,parent:t.type,data:l};if(this.hls.trigger(k.BUFFER_APPENDING,d),e.dropped&&e.independent&&!i){if(s)return;this.flushBufferGap(t)}}}},i.flushBufferGap=function(e){var t=this.media;if(t)if(Fr.isBuffered(t,t.currentTime)){var i=t.currentTime,r=Fr.bufferInfo(t,i,0),s=e.duration,a=Math.min(2*this.config.maxFragLookUpTolerance,.25*s),n=Math.max(Math.min(e.start-a,r.end-a),i+a);e.start-n>a&&this.flushMainBuffer(n,e.start)}else this.flushMainBuffer(0,e.start)},i.getFwdBufferInfo=function(e,t){var i=this.getLoadPosition();return E(i)?this.getFwdBufferInfoAtPos(e,i,t):null},i.getFwdBufferInfoAtPos=function(e,t,i){var r=this.config.maxBufferHole,s=Fr.bufferInfo(e,t,r);if(0===s.len&&void 0!==s.nextStart){var a=this.fragmentTracker.getBufferedFrag(t,i);if(a&&(s.nextStart<=a.end||a.gap))return Fr.bufferInfo(e,t,Math.max(s.nextStart,r))}return s},i.getMaxBufferLength=function(e){var t,i=this.config;return t=e?Math.max(8*i.maxBufferSize/e,i.maxBufferLength):i.maxBufferLength,Math.min(t,i.maxMaxBufferLength)},i.reduceMaxBufferLength=function(e){var t=this.config,i=e||t.maxBufferLength;return t.maxMaxBufferLength>=i&&(t.maxMaxBufferLength/=2,this.warn("Reduce max buffer length to "+t.maxMaxBufferLength+"s"),!0)},i.getAppendedFrag=function(e,t){var i=this.fragmentTracker.getAppendedFrag(e,Nt.MAIN);return i&&"fragment"in i?i.fragment:i},i.getNextFragment=function(e,t){var i=t.fragments,r=i.length;if(!r)return null;var s=this.config,a=i[0].start,n=s.lowLatencyMode&&!!t.partList,o=null;if(t.live){var l=s.initialLiveManifestSize;if(rt},i.getNextFragmentLoopLoading=function(e,t,i,r,s){var a=e.gap,n=this.getNextFragment(this.nextLoadPosition,t);if(null===n)return n;if(e=n,a&&e&&!e.gap&&i.nextStart){var o=this.getFwdBufferInfoAtPos(this.mediaBuffer?this.mediaBuffer:this.media,i.nextStart,r);if(null!==o&&i.len+o.len>=s)return this.log('buffer full after gaps in "'+r+'" playlist starting at sn: '+e.sn),null}return e},i.mapToInitFragWhenRequired=function(e){return null==e||!e.initSegment||null!=e&&e.initSegment.data||this.bitrateTest?e:e.initSegment},i.getNextPart=function(e,t,i){for(var r=-1,s=!1,a=!0,n=0,o=e.length;n-1&&ii.start&&i.loaded},i.getInitialLiveFragment=function(e,t){var i=this.fragPrevious,r=null;if(i){if(e.hasProgramDateTime&&(this.log("Live playlist, switching playlist, load frag with same PDT: "+i.programDateTime),r=ir(t,i.endProgramDateTime,this.config.maxFragLookUpTolerance)),!r){var s=i.sn+1;if(s>=e.startSN&&s<=e.endSN){var a=t[s-e.startSN];i.cc===a.cc&&(r=a,this.log("Live playlist, switching playlist, load frag with next SN: "+r.sn))}r||(r=nr(t,i.cc))&&this.log("Live playlist, switching playlist, load frag with same CC: "+r.sn)}}else{var n=this.hls.liveSyncPosition;null!==n&&(r=this.getFragmentAtPosition(n,this.bitrateTest?e.fragmentEnd:e.edge,e))}return r},i.getFragmentAtPosition=function(e,t,i){var r,s=this.config,a=this.fragPrevious,n=i.fragments,o=i.endSN,l=i.fragmentHint,d=s.maxFragLookUpTolerance,h=i.partList,c=!!(this.loadingParts&&null!=h&&h.length&&l);if(c&&l&&!this.bitrateTest&&(n=n.concat(l),o=l.sn),r=et-d?0:d):n[n.length-1]){var u=r.sn-i.startSN,p=this.fragmentTracker.getState(r);if((p===Ir.OK||p===Ir.PARTIAL&&r.gap)&&(a=r),a&&r.sn===a.sn&&(!c||h[0].fragment.sn>r.sn)&&a&&r.level===a.level){var f=n[u+1];r=r.sn=a-t.maxFragLookUpTolerance&&s<=n;if(null!==r&&i.duration>r&&(s"+e.startSN+" prev-sn: "+(o?o.sn:"na")+" fragments: "+r),l}return s},i.waitForCdnTuneIn=function(e){var t=3;return e.live&&e.canBlockReload&&e.partTarget&&e.tuneInGoal>Math.max(e.partHoldBack,e.partTarget*t)},i.setStartPosition=function(e,t){var i=this.startPosition;if(i "+(null==(s=this.fragCurrent)?void 0:s.url))}else{var a=t.details===D.FRAG_GAP;a&&this.fragmentTracker.fragBuffered(r,!0);var n=t.errorAction,o=n||{},l=o.action,d=o.retryCount,h=void 0===d?0:d,c=o.retryConfig;if(n&&l===or.RetryRequest&&c){this.resetStartWhenNotLoaded(this.levelLastLoaded);var u=Xi(c,h);this.warn("Fragment "+r.sn+" of "+e+" "+r.level+" errored with "+t.details+", retrying loading "+(h+1)+"/"+c.maxNumRetry+" in "+u+"ms"),n.resolved=!0,this.retryDate=self.performance.now()+u,this.state=ls.FRAG_LOADING_WAITING_RETRY}else if(c&&n){if(this.resetFragmentErrors(e),!(h.5;r&&this.reduceMaxBufferLength(i.len);var s=!r;return s&&this.warn("Buffer full error while media.currentTime is not buffered, flush "+t+" buffer"),e.frag&&(this.fragmentTracker.removeFragment(e.frag),this.nextLoadPosition=e.frag.start),this.resetLoadingState(),s}return!1},i.resetFragmentErrors=function(e){e===Nt.AUDIO&&(this.fragCurrent=null),this.loadedmetadata||(this.startFragRequested=!1),this.state!==ls.STOPPED&&(this.state=ls.IDLE)},i.afterBufferFlushed=function(e,t,i){if(e){var r=Fr.getBuffered(e);this.fragmentTracker.detectEvictedFragments(t,r,i),this.state===ls.ENDED&&this.resetLoadingState()}},i.resetLoadingState=function(){this.log("Reset loading state"),this.fragCurrent=null,this.fragPrevious=null,this.state!==ls.STOPPED&&(this.state=ls.IDLE)},i.resetStartWhenNotLoaded=function(e){if(!this.loadedmetadata){this.startFragRequested=!1;var t=e?e.details:null;null!=t&&t.live?(this.startPosition=-1,this.setStartPosition(t,0),this.resetLoadingState()):this.nextLoadPosition=this.startPosition}},i.resetWhenMissingContext=function(e){this.warn("The loading context changed while buffering fragment "+e.sn+" of level "+e.level+". This chunk will not be buffered."),this.removeUnbufferedFrags(),this.resetStartWhenNotLoaded(this.levelLastLoaded),this.resetLoadingState()},i.removeUnbufferedFrags=function(e){void 0===e&&(e=0),this.fragmentTracker.removeFragmentsInRange(e,1/0,this.playlistType,!1,!0)},i.updateLevelTiming=function(e,t,i,r){var s,a=this,n=i.details;if(n){if(!Object.keys(e.elementaryStreams).reduce((function(t,s){var o=e.elementaryStreams[s];if(o){var l=o.endPTS-o.startPTS;if(l<=0)return a.warn("Could not parse fragment "+e.sn+" "+s+" duration reliably ("+l+")"),t||!1;var d=r?0:Fi(n,e,o.startPTS,o.endPTS,o.startDTS,o.endDTS);return a.hls.trigger(k.LEVEL_PTS_UPDATED,{details:n,level:i,drift:d,type:s,frag:e,start:o.startPTS,end:o.endPTS}),!0}return t}),!1)&&null===(null==(s=this.transmuxer)?void 0:s.error)){var o=new Error("Found no media in fragment "+e.sn+" of level "+e.level+" resetting transmuxer to fallback to playlist timing");if(0===i.fragmentError&&(i.fragmentError++,e.gap=!0,this.fragmentTracker.removeFragment(e),this.fragmentTracker.fragBuffered(e,!0)),this.warn(o.message),this.hls.trigger(k.ERROR,{type:C.MEDIA_ERROR,details:D.FRAG_PARSING_ERROR,fatal:!1,error:o,frag:e,reason:"Found no media in msn "+e.sn+' of level "'+i.url+'"'}),!this.hls)return;this.resetTransmuxer()}this.state=ls.PARSED,this.hls.trigger(k.FRAG_PARSED,{frag:e,part:t})}else this.warn("level.details undefined")},i.resetTransmuxer=function(){this.transmuxer&&(this.transmuxer.destroy(),this.transmuxer=null)},i.recoverWorkerError=function(e){"demuxerWorker"===e.event&&(this.fragmentTracker.removeAllFragments(),this.resetTransmuxer(),this.resetStartWhenNotLoaded(this.levelLastLoaded),this.resetLoadingState())},d(t,[{key:"state",get:function(){return this._state},set:function(e){var t=this._state;t!==e&&(this._state=e,this.log(t+"->"+e))}}])}(Lr),hs=function(){function e(){this.chunks=[],this.dataLength=0}var t=e.prototype;return t.push=function(e){this.chunks.push(e),this.dataLength+=e.length},t.flush=function(){var e,t=this.chunks,i=this.dataLength;return t.length?(e=1===t.length?t[0]:cs(t,i),this.reset(),e):new Uint8Array(0)},t.reset=function(){this.chunks.length=0,this.dataLength=0},e}();function cs(e,t){for(var i=new Uint8Array(t),r=0,s=0;s0)return e.subarray(i,i+r)}function fs(e){if(8===e.data.byteLength){var t=new Uint8Array(e.data),i=1&t[3],r=(t[4]<<23)+(t[5]<<15)+(t[6]<<7)+t[7];return r/=45,i&&(r+=47721858.84),Math.round(r)}}function ys(e){for(var t=gi(e),i=0;i0&&n.samples.push({pts:this.lastPTS,dts:this.lastPTS,data:r,type:Qt.audioId3,duration:Number.POSITIVE_INFINITY});s>>6);var u=(60&t[i+2])>>>2;if(!(u>c.length-1))return o=(1&t[i+2])<<2,o|=(192&t[i+3])>>>6,G.log("manifest codec:"+r+", ADTS type:"+s+", samplingIndex:"+u),/firefox|palemoon/i.test(d)?u>=6?(s=5,l=new Array(4),n=u-3):(s=2,l=new Array(2),n=u):-1!==d.indexOf("android")?(s=2,l=new Array(2),n=u):(s=5,l=new Array(4),r&&(-1!==r.indexOf("mp4a.40.29")||-1!==r.indexOf("mp4a.40.5"))||!r&&u>=6?n=u-3:((r&&-1!==r.indexOf("mp4a.40.2")&&(u>=6&&1===o||/vivaldi/i.test(d))||!r&&1===o)&&(s=2,l=new Array(2)),n=u)),l[0]=s<<3,l[0]|=(14&u)>>1,l[1]|=(1&u)<<7,l[1]|=o<<3,5===s&&(l[1]|=(14&n)>>1,l[2]=(1&n)<<7,l[2]|=8,l[3]=0),{config:l,samplerate:c[u],channelCount:o,codec:"mp4a.40."+s,parsedCodec:"mp4a.40."+a,manifestCodec:h};var p=new Error("invalid ADTS sampling index:"+u);e.emit(k.ERROR,k.ERROR,{type:C.MEDIA_ERROR,details:D.FRAG_PARSING_ERROR,fatal:!0,error:p,reason:p.message})}function bs(e,t){return 255===e[t]&&240==(246&e[t+1])}function _s(e,t){return 1&e[t+1]?7:9}function ws(e,t){return(3&e[t+3])<<11|e[t+4]<<3|(224&e[t+5])>>>5}function Es(e,t){return t+5=e.length)return!1;var r=ws(e,t);if(r<=i)return!1;var s=t+r;return s===e.length||Ss(e,s)}return!1}function Cs(e,t,i,r,s){if(!e.samplerate){var a=vs(t,i,r,s);if(!a)return;e.config=a.config,e.samplerate=a.samplerate,e.channelCount=a.channelCount,e.codec=a.codec,e.manifestCodec=a.manifestCodec,e.parsedCodec=a.parsedCodec,G.log("parsed codec:"+e.parsedCodec+", codec:"+e.codec+", rate:"+a.samplerate+", channels:"+a.channelCount)}}function Ds(e){return 9216e4/e}function Rs(e,t){var i=_s(e,t);if(t+i<=e.length){var r=ws(e,t)-i;if(r>0)return{headerLength:i,frameLength:r}}}function xs(e,t,i,r,s){var a,n=r+s*Ds(e.samplerate),o=Rs(t,i);if(o){var l=o.frameLength,d=o.headerLength,h=d+l,c=Math.max(0,i+h-t.length);c?(a=new Uint8Array(h-d)).set(t.subarray(i+d,t.length),0):a=t.subarray(i+d,i+h);var u={unit:a,pts:n};return c||e.samples.push(u),{sample:u,length:h,missing:c}}var p=t.length-i;return(a=new Uint8Array(p)).set(t.subarray(i,t.length),0),{sample:{unit:a,pts:n},length:p,missing:-1}}var Ls=null,Is=[32,64,96,128,160,192,224,256,288,320,352,384,416,448,32,48,56,64,80,96,112,128,160,192,224,256,320,384,32,40,48,56,64,80,96,112,128,160,192,224,256,320,32,48,56,64,80,96,112,128,144,160,176,192,224,256,8,16,24,32,40,48,56,64,80,96,112,128,144,160],Ps=[44100,48e3,32e3,22050,24e3,16e3,11025,12e3,8e3],Bs=[[0,72,144,12],[0,0,0,0],[0,72,144,12],[0,144,144,12]],Ms=[0,1,1,4];function Us(e,t,i,r,s){if(!(i+24>t.length)){var a=Fs(t,i);if(a&&i+a.frameLength<=t.length){var n=r+s*(9e4*a.samplesPerFrame/a.sampleRate),o={unit:t.subarray(i,i+a.frameLength),pts:n,dts:n};return e.config=[],e.channelCount=a.channelCount,e.samplerate=a.sampleRate,e.samples.push(o),{sample:o,length:a.frameLength,missing:0}}}}function Fs(e,t){var i=e[t+1]>>3&3,r=e[t+1]>>1&3,s=e[t+2]>>4&15,a=e[t+2]>>2&3;if(1!==i&&0!==s&&15!==s&&3!==a){var n=e[t+2]>>1&1,o=e[t+3]>>6,l=1e3*Is[14*(3===i?3-r:3===r?3:4)+s-1],d=Ps[3*(3===i?0:2===i?1:2)+a],h=3===o?1:2,c=Bs[i][r],u=Ms[r],p=8*c*u,f=Math.floor(c*l/d+n)*u;if(null===Ls){var y=(navigator.userAgent||"").match(/Chrome\/(\d+)/i);Ls=y?parseInt(y[1]):0}return!!Ls&&Ls<=87&&2===r&&l>=224e3&&0===o&&(e[t+3]=128|e[t+3]),{sampleRate:d,channelCount:h,frameLength:f,samplesPerFrame:p}}}function Os(e,t){return!(255!==e[t]||224&~e[t+1]||!(6&e[t+1]))}function Ns(e,t){return t+10;){n[0]=e[t];var o=Math.min(r,8),l=8-o;a[0]=4278190080>>>24+l<>l,i=i?i<t.length)return-1;if(11!==t[i]||119!==t[i+1])return-1;var a=t[i+4]>>6;if(a>=3)return-1;var n=[48e3,44100,32e3][a],o=63&t[i+4],l=2*[64,69,96,64,70,96,80,87,120,80,88,120,96,104,144,96,105,144,112,121,168,112,122,168,128,139,192,128,140,192,160,174,240,160,175,240,192,208,288,192,209,288,224,243,336,224,244,336,256,278,384,256,279,384,320,348,480,320,349,480,384,417,576,384,418,576,448,487,672,448,488,672,512,557,768,512,558,768,640,696,960,640,697,960,768,835,1152,768,836,1152,896,975,1344,896,976,1344,1024,1114,1536,1024,1115,1536,1152,1253,1728,1152,1254,1728,1280,1393,1920,1280,1394,1920][3*o+a];if(i+l>t.length)return-1;var d=t[i+6]>>5,h=0;2===d?h+=2:(1&d&&1!==d&&(h+=2),4&d&&(h+=2));var c=(t[i+6]<<8|t[i+7])>>12-h&1,u=[2,1,2,3,3,4,4,5][d]+c,p=t[i+5]>>3,f=7&t[i+5],y=new Uint8Array([a<<6|p<<1|f>>2,(3&f)<<6|d<<3|c<<2|o>>4,o<<4&224]),m=r+s*(1536/n*9e4),g=t.subarray(i,i+l);return e.config=y,e.channelCount=u,e.samplerate=n,e.samples.push({unit:g,pts:m}),l}var qs=function(){function e(){this.VideoSample=null}var t=e.prototype;return t.createVideoSample=function(e,t,i,r){return{key:e,frame:!1,pts:t,dts:i,units:[],debug:r,length:0}},t.getLastNalUnit=function(e){var t,i,r=this.VideoSample;if(r&&0!==r.units.length||(r=e[e.length-1]),null!=(t=r)&&t.units){var s=r.units;i=s[s.length-1]}return i},t.pushAccessUnit=function(e,t){if(e.units.length&&e.frame){if(void 0===e.pts){var i=t.samples,r=i.length;if(!r)return void t.dropped++;var s=i[r-1];e.pts=s.pts,e.dts=s.dts}t.samples.push(e)}e.debug.length&&G.log(e.pts+"/"+e.dts+":"+e.debug)},t.parseNALu=function(e,t){var i,r,s=t.byteLength,a=e.naluState||0,n=a,o=[],l=0,d=-1,h=0;for(-1===a&&(d=0,h=this.getNALuType(t,0),a=0,l=1);l=0){var c={data:t.subarray(d,r),type:h};o.push(c)}else{var u=this.getLastNalUnit(e.samples);u&&(n&&l<=4-n&&u.state&&(u.data=u.data.subarray(0,u.data.byteLength-n)),r>0&&(u.data=He(u.data,t.subarray(0,r)),u.state=0))}l=0&&a>=0){var p={data:t.subarray(d,s),type:h,state:a};o.push(p)}if(0===o.length){var f=this.getLastNalUnit(e.samples);f&&(f.data=He(f.data,t))}return e.naluState=a,o},e}(),Ys=function(){function e(e){this.data=void 0,this.bytesAvailable=void 0,this.word=void 0,this.bitsAvailable=void 0,this.data=e,this.bytesAvailable=e.byteLength,this.word=0,this.bitsAvailable=0}var t=e.prototype;return t.loadWord=function(){var e=this.data,t=this.bytesAvailable,i=e.byteLength-t,r=new Uint8Array(4),s=Math.min(4,t);if(0===s)throw new Error("no bytes available");r.set(e.subarray(i,i+s)),this.word=new DataView(r.buffer).getUint32(0),this.bitsAvailable=8*s,this.bytesAvailable-=s},t.skipBits=function(e){var t;e=Math.min(e,8*this.bytesAvailable+this.bitsAvailable),this.bitsAvailable>e?(this.word<<=e,this.bitsAvailable-=e):(e-=this.bitsAvailable,e-=(t=e>>3)<<3,this.bytesAvailable-=t,this.loadWord(),this.word<<=e,this.bitsAvailable-=e)},t.readBits=function(e){var t=Math.min(this.bitsAvailable,e),i=this.word>>>32-t;if(e>32&&G.error("Cannot read more than 32 bits at a time"),this.bitsAvailable-=t,this.bitsAvailable>0)this.word<<=t;else{if(!(this.bytesAvailable>0))throw new Error("no bits available");this.loadWord()}return(t=e-t)>0&&this.bitsAvailable?i<>>e)return this.word<<=e,this.bitsAvailable-=e,e;return this.loadWord(),e+this.skipLZ()},t.skipUEG=function(){this.skipBits(1+this.skipLZ())},t.skipEG=function(){this.skipBits(1+this.skipLZ())},t.readUEG=function(){var e=this.skipLZ();return this.readBits(e+1)-1},t.readEG=function(){var e=this.readUEG();return 1&e?1+e>>>1:-1*(e>>>1)},t.readBoolean=function(){return 1===this.readBits(1)},t.readUByte=function(){return this.readBits(8)},t.readUShort=function(){return this.readBits(16)},t.readUInt=function(){return this.readBits(32)},e}(),Qs=function(e){function t(){return e.apply(this,arguments)||this}u(t,e);var i=t.prototype;return i.parsePES=function(e,t,i,r,s){var a,n=this,o=this.parseNALu(e,i.data),l=this.VideoSample,d=!1;i.data=null,l&&o.length&&!e.audFound&&(this.pushAccessUnit(l,e),l=this.VideoSample=this.createVideoSample(!1,i.pts,i.dts,"")),o.forEach((function(r){var o;switch(r.type){case 1:var h=!1;a=!0;var c,u=r.data;if(d&&u.length>4){var p=n.readSliceType(u);2!==p&&4!==p&&7!==p&&9!==p||(h=!0)}h&&null!=(c=l)&&c.frame&&!l.key&&(n.pushAccessUnit(l,e),l=n.VideoSample=null),l||(l=n.VideoSample=n.createVideoSample(!0,i.pts,i.dts,"")),l.frame=!0,l.key=h;break;case 5:a=!0,null!=(o=l)&&o.frame&&!l.key&&(n.pushAccessUnit(l,e),l=n.VideoSample=null),l||(l=n.VideoSample=n.createVideoSample(!0,i.pts,i.dts,"")),l.key=!0,l.frame=!0;break;case 6:a=!0,qe(r.data,1,i.pts,t.samples);break;case 7:var f,y;a=!0,d=!0;var m=r.data,g=n.readSPS(m);if(!e.sps||e.width!==g.width||e.height!==g.height||(null==(f=e.pixelRatio)?void 0:f[0])!==g.pixelRatio[0]||(null==(y=e.pixelRatio)?void 0:y[1])!==g.pixelRatio[1]){e.width=g.width,e.height=g.height,e.pixelRatio=g.pixelRatio,e.sps=[m],e.duration=s;for(var A=m.subarray(1,4),v="avc1.",b=0;b<3;b++){var _=A[b].toString(16);_.length<2&&(_="0"+_),v+=_}e.codec=v}break;case 8:a=!0,e.pps=[r.data];break;case 9:a=!0,e.audFound=!0,l&&n.pushAccessUnit(l,e),l=n.VideoSample=n.createVideoSample(!1,i.pts,i.dts,"");break;case 12:a=!0;break;default:a=!1,l&&(l.debug+="unknown NAL "+r.type+" ")}l&&a&&l.units.push(r)})),r&&l&&(this.pushAccessUnit(l,e),this.VideoSample=null)},i.getNALuType=function(e,t){return 31&e[t]},i.readSliceType=function(e){var t=new Ys(e);return t.readUByte(),t.readUEG(),t.readUEG()},i.skipScalingList=function(e,t){for(var i=8,r=8,s=0;s>>1},i.ebsp2rbsp=function(e){for(var t=new Uint8Array(e.byteLength),i=0,r=0;r=2&&3===e[r]&&0===e[r-1]&&0===e[r-2]||(t[i]=e[r],i++);return new Uint8Array(t.buffer,0,i)},i.readVPS=function(e){var t=new Ys(e);return t.readUByte(),t.readUByte(),t.readBits(4),t.skipBits(2),t.readBits(6),{numTemporalLayers:t.readBits(3)+1,temporalIdNested:t.readBoolean()}},i.readSPS=function(e){var t=new Ys(this.ebsp2rbsp(e));t.readUByte(),t.readUByte(),t.readBits(4);var i=t.readBits(3);t.readBoolean();for(var r=t.readBits(2),s=t.readBoolean(),a=t.readBits(5),n=t.readUByte(),o=t.readUByte(),l=t.readUByte(),d=t.readUByte(),h=t.readUByte(),c=t.readUByte(),u=t.readUByte(),p=t.readUByte(),f=t.readUByte(),y=t.readUByte(),m=t.readUByte(),g=[],A=[],v=0;v0)for(var b=i;b<8;b++)t.readBits(2);for(var _=0;_1&&t.readEG();for(var F=0;F0&&ne<16?(ee=[1,12,10,16,40,24,20,32,80,18,15,64,160,4,3,2][ne-1],te=[1,11,11,11,33,11,11,11,33,11,11,33,99,3,2,1][ne-1]):255===ne&&(ee=t.readBits(16),te=t.readBits(16))}if(t.readBoolean()&&t.readBoolean(),t.readBoolean()&&(t.readBits(3),t.readBoolean(),t.readBoolean()&&(t.readUByte(),t.readUByte(),t.readUByte())),t.readBoolean()&&(t.readUEG(),t.readUEG()),t.readBoolean(),t.readBoolean(),t.readBoolean(),(ae=t.readBoolean())&&(k+=t.readUEG(),C+=t.readUEG(),D+=t.readUEG(),R+=t.readUEG()),t.readBoolean()&&(re=t.readBits(32),se=t.readBits(32),t.readBoolean()&&t.readUEG(),t.readBoolean())){var oe=t.readBoolean(),le=t.readBoolean(),de=!1;(oe||le)&&((de=t.readBoolean())&&(t.readUByte(),t.readBits(5),t.readBoolean(),t.readBits(5)),t.readBits(4),t.readBits(4),de&&t.readBits(4),t.readBits(5),t.readBits(5),t.readBits(5));for(var he=0;he<=i;he++){var ce=!1;(ie=t.readBoolean())||t.readBoolean()?t.readEG():ce=t.readBoolean();var ue=ce?1:t.readUEG()+1;if(oe)for(var pe=0;pe>we&1)<<31-we)>>>0;var Ee=_e.toString(16);return 1===a&&"2"===Ee&&(Ee="6"),{codecString:"hvc1."+ve+a+"."+Ee+"."+(s?"H":"L")+m+".B0",params:{general_tier_flag:s,general_profile_idc:a,general_profile_space:r,general_profile_compatibility_flags:[n,o,l,d],general_constraint_indicator_flags:[h,c,u,p,f,y],general_level_idc:m,bit_depth:x+8,bit_depth_luma_minus8:x,bit_depth_chroma_minus8:L,min_spatial_segmentation_idc:Z,chroma_format_idc:w,frame_rate:{fixed:ie,fps:se/re}},width:ye,height:me,pixelRatio:[ee,te]}},i.readPPS=function(e){var t=new Ys(this.ebsp2rbsp(e));t.readUByte(),t.readUByte(),t.skipUEG(),t.skipUEG(),t.skipBits(2),t.skipBits(3),t.skipBits(2),t.skipUEG(),t.skipUEG(),t.skipEG(),t.skipBits(2),t.readBoolean()&&t.skipUEG(),t.skipEG(),t.skipEG(),t.skipBits(4);var i=t.readBoolean(),r=t.readBoolean(),s=1;return r&&i?s=0:r?s=3:i&&(s=2),{parallelismType:s}},i.matchSPS=function(e,t){return String.fromCharCode.apply(null,e).substr(3)===String.fromCharCode.apply(null,t).substr(3)},t}(qs),Js=function(){function e(e,t,i){this.keyData=void 0,this.decrypter=void 0,this.keyData=i,this.decrypter=new ns(t,{removePKCS7Padding:!1})}var t=e.prototype;return t.decryptBuffer=function(e){return this.decrypter.decrypt(e,this.keyData.key.buffer,this.keyData.iv.buffer,ie.cbc)},t.decryptAacSample=function(e,t,i){var r=this,s=e[t].unit;if(!(s.length<=16)){var a=s.subarray(16,s.length-s.length%16),n=a.buffer.slice(a.byteOffset,a.byteOffset+a.length);this.decryptBuffer(n).then((function(a){var n=new Uint8Array(a);s.set(n,16),r.decrypter.isSync()||r.decryptAacSamples(e,t+1,i)}))}},t.decryptAacSamples=function(e,t,i){for(;;t++){if(t>=e.length)return void i();if(!(e[t].unit.length<32||(this.decryptAacSample(e,t,i),this.decrypter.isSync())))return}},t.getAvcEncryptedData=function(e){for(var t=16*Math.floor((e.length-48)/160)+16,i=new Int8Array(t),r=0,s=32;s=e.length)return void r();for(var s=e[t].units;!(i>=s.length);i++){var a=s[i];if(!(a.data.length<=48||1!==a.type&&5!==a.type||(this.decryptAvcSample(e,t,i,r,a),this.decrypter.isSync())))return}}},e}(),Zs=188,ea=function(){function e(e,t,i){this.observer=void 0,this.config=void 0,this.typeSupported=void 0,this.sampleAes=null,this.pmtParsed=!1,this.audioCodec=void 0,this.videoCodec=void 0,this._duration=0,this._pmtId=-1,this._videoTrack=void 0,this._audioTrack=void 0,this._id3Track=void 0,this._txtTrack=void 0,this.aacOverFlow=null,this.remainderData=null,this.videoParser=void 0,this.observer=e,this.config=t,this.typeSupported=i,this.videoParser=null}e.probe=function(t){var i=e.syncOffset(t);return i>0&&G.warn("MPEG2-TS detected but first sync word found @ offset "+i),-1!==i},e.syncOffset=function(e){for(var t=e.length,i=Math.min(5*Zs,t-Zs)+1,r=0;r1&&(0===a&&n>2||o+Zs>i))return a}r++}return-1},e.createTrack=function(e,t){return{container:"video"===e||"audio"===e?"video/mp2t":void 0,type:e,id:we[e],pid:-1,inputTimeScale:9e4,sequenceNumber:0,samples:[],dropped:0,duration:"audio"===e?t:void 0}};var t=e.prototype;return t.resetInitSegment=function(t,i,r,s){this.pmtParsed=!1,this._pmtId=-1,this._videoTrack=e.createTrack("video"),this._audioTrack=e.createTrack("audio",s),this._id3Track=e.createTrack("id3"),this._txtTrack=e.createTrack("text"),this._audioTrack.segmentCodec="aac",this.aacOverFlow=null,this.remainderData=null,this.audioCodec=i,this.videoCodec=r,this._duration=s},t.resetTimeStamp=function(){},t.resetContiguity=function(){var e=this._audioTrack,t=this._videoTrack,i=this._id3Track;e&&(e.pesData=null),t&&(t.pesData=null),i&&(i.pesData=null),this.aacOverFlow=null,this.remainderData=null},t.demux=function(t,i,r,s){var a;void 0===r&&(r=!1),void 0===s&&(s=!1),r||(this.sampleAes=null);var n=this._videoTrack,o=this._audioTrack,l=this._id3Track,d=this._txtTrack,h=n.pid,c=n.pesData,u=o.pid,p=l.pid,f=o.pesData,y=l.pesData,m=null,g=this.pmtParsed,A=this._pmtId,v=t.length;if(this.remainderData&&(v=(t=He(this.remainderData,t)).length,this.remainderData=null),v>4>1){if((T=w+5+t[w+4])===w+Zs)continue}else T=w+4;switch(S){case h:if(E){if(c&&(a=aa(c))){if(null===this.videoParser)switch(n.segmentCodec){case"avc":this.videoParser=new Qs;break;case"hevc":this.videoParser=new Xs}null!==this.videoParser&&this.videoParser.parsePES(n,d,a,!1,this._duration)}c={data:[],size:0}}c&&(c.data.push(t.subarray(T,w+Zs)),c.size+=w+Zs-T);break;case u:if(E){if(f&&(a=aa(f)))switch(o.segmentCodec){case"aac":this.parseAACPES(o,a);break;case"mp3":this.parseMPEGPES(o,a);break;case"ac3":this.parseAC3PES(o,a)}f={data:[],size:0}}f&&(f.data.push(t.subarray(T,w+Zs)),f.size+=w+Zs-T);break;case p:E&&(y&&(a=aa(y))&&this.parseID3PES(l,a),y={data:[],size:0}),y&&(y.data.push(t.subarray(T,w+Zs)),y.size+=w+Zs-T);break;case 0:E&&(T+=t[T]+1),A=this._pmtId=ia(t,T);break;case A:E&&(T+=t[T]+1);var R=ra(t,T,this.typeSupported,r);(h=R.videoPid)>0&&(n.pid=h,n.segmentCodec=R.segmentVideoCodec),(u=R.audioPid)>0&&(o.pid=u,o.segmentCodec=R.segmentAudioCodec),(p=R.id3Pid)>0&&(l.pid=p),null===m||g||(G.warn("MPEG-TS PMT found at "+w+" after unknown PID '"+m+"'. Backtracking to sync byte @"+b+" to parse all TS packets."),m=null,w=b-188),g=this.pmtParsed=!0;break;case 17:case 8191:break;default:m=S}}else _++;if(_>0){var x=new Error("Found "+_+" TS packet/s that do not start with 0x47");this.observer.emit(k.ERROR,k.ERROR,{type:C.MEDIA_ERROR,details:D.FRAG_PARSING_ERROR,fatal:!1,error:x,reason:x.message})}n.pesData=c,o.pesData=f,l.pesData=y;var L={audioTrack:o,videoTrack:n,id3Track:l,textTrack:d};return s&&this.extractRemainingSamples(L),L},t.flush=function(){var e,t=this.remainderData;return this.remainderData=null,e=t?this.demux(t,-1,!1,!0):{videoTrack:this._videoTrack,audioTrack:this._audioTrack,id3Track:this._id3Track,textTrack:this._txtTrack},this.extractRemainingSamples(e),this.sampleAes?this.decrypt(e,this.sampleAes):e},t.extractRemainingSamples=function(e){var t,i=e.audioTrack,r=e.videoTrack,s=e.id3Track,a=e.textTrack,n=r.pesData,o=i.pesData,l=s.pesData;if(n&&(t=aa(n))){if(null===this.videoParser)switch(r.segmentCodec){case"avc":this.videoParser=new Qs;break;case"hevc":this.videoParser=new Xs}null!==this.videoParser&&(this.videoParser.parsePES(r,a,t,!0,this._duration),r.pesData=null)}else r.pesData=n;if(o&&(t=aa(o))){switch(i.segmentCodec){case"aac":this.parseAACPES(i,t);break;case"mp3":this.parseMPEGPES(i,t);break;case"ac3":this.parseAC3PES(i,t)}i.pesData=null}else null!=o&&o.size&&G.log("last AAC PES packet truncated,might overlap between fragments"),i.pesData=o;l&&(t=aa(l))?(this.parseID3PES(s,t),s.pesData=null):s.pesData=l},t.demuxSampleAes=function(e,t,i){var r=this.demux(e,i,!0,!this.config.progressive),s=this.sampleAes=new Js(this.observer,this.config,t);return this.decrypt(r,s)},t.decrypt=function(e,t){return new Promise((function(i){var r=e.audioTrack,s=e.videoTrack;r.samples&&"aac"===r.segmentCodec?t.decryptAacSamples(r.samples,0,(function(){s.samples?t.decryptAvcSamples(s.samples,0,0,(function(){i(e)})):i(e)})):s.samples&&t.decryptAvcSamples(s.samples,0,0,(function(){i(e)}))}))},t.destroy=function(){this._duration=0},t.parseAACPES=function(e,t){var i,r,s,a=0,n=this.aacOverFlow,o=t.data;if(n){this.aacOverFlow=null;var l=n.missing,d=n.sample.unit.byteLength;if(-1===l)o=He(n.sample.unit,o);else{var h=d-l;n.sample.unit.set(o.subarray(0,l),h),e.samples.push(n.sample),a=n.missing}}for(i=a,r=o.length;i0;)o+=s;else G.warn("[tsdemuxer]: AC3 PES unknown PTS")},t.parseID3PES=function(e,t){if(void 0!==t.pts){var i=c({},t,{type:this._videoTrack?Qt.emsg:Qt.audioId3,duration:Number.POSITIVE_INFINITY});e.samples.push(i)}else G.warn("[tsdemuxer]: ID3 PES unknown PTS")},e}();function ta(e,t){return((31&e[t+1])<<8)+e[t+2]}function ia(e,t){return(31&e[t+10])<<8|e[t+11]}function ra(e,t,i,r){var s={audioPid:-1,videoPid:-1,id3Pid:-1,segmentVideoCodec:"avc",segmentAudioCodec:"aac"},a=t+3+((15&e[t+1])<<8|e[t+2])-4;for(t+=12+((15&e[t+10])<<8|e[t+11]);t0)for(var l=t+5,d=o;d>2;){106===e[l]&&(!0!==i.ac3?G.log("AC-3 audio found, not supported in this browser for now"):(s.audioPid=n,s.segmentAudioCodec="ac3"));var h=e[l+1]+2;l+=h,d-=h}break;case 194:case 135:G.warn("Unsupported EC-3 in M2TS found");break;case 36:-1===s.videoPid&&(s.videoPid=n,s.segmentVideoCodec="hevc",G.log("HEVC in M2TS found"))}t+=o+5}return s}function sa(e){G.log(e+" with AES-128-CBC encryption found in unencrypted stream")}function aa(e){var t,i,r,s,a,n=0,o=e.data;if(!e||0===e.size)return null;for(;o[0].length<19&&o.length>1;)o[0]=He(o[0],o[1]),o.splice(1,1);if(1===((t=o[0])[0]<<16)+(t[1]<<8)+t[2]){if((i=(t[4]<<8)+t[5])&&i>e.size-6)return null;var l=t[7];192&l&&(s=536870912*(14&t[9])+4194304*(255&t[10])+16384*(254&t[11])+128*(255&t[12])+(254&t[13])/2,64&l?s-(a=536870912*(14&t[14])+4194304*(255&t[15])+16384*(254&t[16])+128*(255&t[17])+(254&t[18])/2)>54e5&&(G.warn(Math.round((s-a)/9e4)+"s delta between PTS and DTS, align them"),s=a):a=s);var d=(r=t[8])+9;if(e.size<=d)return null;e.size-=d;for(var h=new Uint8Array(e.size),c=0,u=o.length;cp){d-=p;continue}t=t.subarray(d),p-=d,d=0}h.set(t,n),n+=p}return i&&(i-=r+3),{data:h,pts:s,dts:a,len:i}}return null}var na=function(e){function t(){return e.apply(this,arguments)||this}u(t,e);var i=t.prototype;return i.resetInitSegment=function(t,i,r,s){e.prototype.resetInitSegment.call(this,t,i,r,s),this._audioTrack={container:"audio/mpeg",type:"audio",id:2,pid:-1,sequenceNumber:0,segmentCodec:"mp3",samples:[],manifestCodec:i,duration:s,inputTimeScale:9e4,dropped:0}},t.probe=function(e){if(!e)return!1;var t=ps(e,0),i=(null==t?void 0:t.length)||0;if(t&&11===e[i]&&119===e[i+1]&&void 0!==ys(t)&&$s(e,i)<=16)return!1;for(var r=e.length;i1?i-1:0),s=1;s>24&255,o[1]=t>>16&255,o[2]=t>>8&255,o[3]=255&t,o.set(e,4),a=0,t=8;a>24&255,t>>16&255,t>>8&255,255&t,r>>24,r>>16&255,r>>8&255,255&r,s>>24,s>>16&255,s>>8&255,255&s,85,196,0,0]))},e.mdia=function(t){return e.box(e.types.mdia,e.mdhd(t.timescale,t.duration),e.hdlr(t.type),e.minf(t))},e.mfhd=function(t){return e.box(e.types.mfhd,new Uint8Array([0,0,0,0,t>>24,t>>16&255,t>>8&255,255&t]))},e.minf=function(t){return"audio"===t.type?e.box(e.types.minf,e.box(e.types.smhd,e.SMHD),e.DINF,e.stbl(t)):e.box(e.types.minf,e.box(e.types.vmhd,e.VMHD),e.DINF,e.stbl(t))},e.moof=function(t,i,r){return e.box(e.types.moof,e.mfhd(t),e.traf(r,i))},e.moov=function(t){for(var i=t.length,r=[];i--;)r[i]=e.trak(t[i]);return e.box.apply(null,[e.types.moov,e.mvhd(t[0].timescale,t[0].duration)].concat(r).concat(e.mvex(t)))},e.mvex=function(t){for(var i=t.length,r=[];i--;)r[i]=e.trex(t[i]);return e.box.apply(null,[e.types.mvex].concat(r))},e.mvhd=function(t,i){i*=t;var r=Math.floor(i/(la+1)),s=Math.floor(i%(la+1)),a=new Uint8Array([1,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,3,t>>24&255,t>>16&255,t>>8&255,255&t,r>>24,r>>16&255,r>>8&255,255&r,s>>24,s>>16&255,s>>8&255,255&s,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255]);return e.box(e.types.mvhd,a)},e.sdtp=function(t){var i,r,s=t.samples||[],a=new Uint8Array(4+s.length);for(i=0;i>>8&255),a.push(255&s),a=a.concat(Array.prototype.slice.call(r));for(i=0;i>>8&255),n.push(255&s),n=n.concat(Array.prototype.slice.call(r));var o=e.box(e.types.avcC,new Uint8Array([1,a[3],a[4],a[5],255,224|t.sps.length].concat(a).concat([t.pps.length]).concat(n))),l=t.width,d=t.height,h=t.pixelRatio[0],c=t.pixelRatio[1];return e.box(e.types.avc1,new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,l>>8&255,255&l,d>>8&255,255&d,0,72,0,0,0,72,0,0,0,0,0,0,0,1,18,100,97,105,108,121,109,111,116,105,111,110,47,104,108,115,46,106,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,17,17]),o,e.box(e.types.btrt,new Uint8Array([0,28,156,128,0,45,198,192,0,45,198,192])),e.box(e.types.pasp,new Uint8Array([h>>24,h>>16&255,h>>8&255,255&h,c>>24,c>>16&255,c>>8&255,255&c])))},e.esds=function(e){var t=e.config.length;return new Uint8Array([0,0,0,0,3,23+t,0,1,0,4,15+t,64,21,0,0,0,0,0,0,0,0,0,0,0,5].concat([t]).concat(e.config).concat([6,1,2]))},e.audioStsd=function(e){var t=e.samplerate;return new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,e.channelCount,0,16,0,0,0,0,t>>8&255,255&t,0,0])},e.mp4a=function(t){return e.box(e.types.mp4a,e.audioStsd(t),e.box(e.types.esds,e.esds(t)))},e.mp3=function(t){return e.box(e.types[".mp3"],e.audioStsd(t))},e.ac3=function(t){return e.box(e.types["ac-3"],e.audioStsd(t),e.box(e.types.dac3,t.config))},e.stsd=function(t){return"audio"===t.type?"mp3"===t.segmentCodec&&"mp3"===t.codec?e.box(e.types.stsd,e.STSD,e.mp3(t)):"ac3"===t.segmentCodec?e.box(e.types.stsd,e.STSD,e.ac3(t)):e.box(e.types.stsd,e.STSD,e.mp4a(t)):"avc"===t.segmentCodec?e.box(e.types.stsd,e.STSD,e.avc1(t)):e.box(e.types.stsd,e.STSD,e.hvc1(t))},e.tkhd=function(t){var i=t.id,r=t.duration*t.timescale,s=t.width,a=t.height,n=Math.floor(r/(la+1)),o=Math.floor(r%(la+1));return e.box(e.types.tkhd,new Uint8Array([1,0,0,7,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,3,i>>24&255,i>>16&255,i>>8&255,255&i,0,0,0,0,n>>24,n>>16&255,n>>8&255,255&n,o>>24,o>>16&255,o>>8&255,255&o,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,s>>8&255,255&s,0,0,a>>8&255,255&a,0,0]))},e.traf=function(t,i){var r=e.sdtp(t),s=t.id,a=Math.floor(i/(la+1)),n=Math.floor(i%(la+1));return e.box(e.types.traf,e.box(e.types.tfhd,new Uint8Array([0,0,0,0,s>>24,s>>16&255,s>>8&255,255&s])),e.box(e.types.tfdt,new Uint8Array([1,0,0,0,a>>24,a>>16&255,a>>8&255,255&a,n>>24,n>>16&255,n>>8&255,255&n])),e.trun(t,r.length+16+20+8+16+8+8),r)},e.trak=function(t){return t.duration=t.duration||4294967295,e.box(e.types.trak,e.tkhd(t),e.mdia(t))},e.trex=function(t){var i=t.id;return e.box(e.types.trex,new Uint8Array([0,0,0,0,i>>24,i>>16&255,i>>8&255,255&i,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1]))},e.trun=function(t,i){var r,s,a,n,o,l,d=t.samples||[],h=d.length,c=12+16*h,u=new Uint8Array(c);for(i+=8+c,u.set(["video"===t.type?1:0,0,15,1,h>>>24&255,h>>>16&255,h>>>8&255,255&h,i>>>24&255,i>>>16&255,i>>>8&255,255&i],0),r=0;r>>24&255,a>>>16&255,a>>>8&255,255&a,n>>>24&255,n>>>16&255,n>>>8&255,255&n,o.isLeading<<2|o.dependsOn,o.isDependedOn<<6|o.hasRedundancy<<4|o.paddingValue<<1|o.isNonSync,61440&o.degradPrio,15&o.degradPrio,l>>>24&255,l>>>16&255,l>>>8&255,255&l],12+16*r);return e.box(e.types.trun,u)},e.initSegment=function(t){e.types||e.init();var i=e.moov(t);return He(e.FTYP,i)},e.hvc1=function(t){for(var i=t.params,r=[t.vps,t.sps,t.pps],s=4,a=new Uint8Array([1,i.general_profile_space<<6|(i.general_tier_flag?32:0)|i.general_profile_idc,i.general_profile_compatibility_flags[0],i.general_profile_compatibility_flags[1],i.general_profile_compatibility_flags[2],i.general_profile_compatibility_flags[3],i.general_constraint_indicator_flags[0],i.general_constraint_indicator_flags[1],i.general_constraint_indicator_flags[2],i.general_constraint_indicator_flags[3],i.general_constraint_indicator_flags[4],i.general_constraint_indicator_flags[5],i.general_level_idc,240|i.min_spatial_segmentation_idc>>8,255&i.min_spatial_segmentation_idc,252|i.parallelismType,252|i.chroma_format_idc,248|i.bit_depth_luma_minus8,248|i.bit_depth_chroma_minus8,0,parseInt(i.frame_rate.fps),s-1|i.temporal_id_nested<<2|i.num_temporal_layers<<3|(i.frame_rate.fixed?64:0),r.length]),n=a.length,o=0;o>8,255&r[c][u].length]),n),n+=2,d.set(r[c][u],n),n+=r[c][u].length}var p=e.box(e.types.hvcC,d),f=t.width,y=t.height,m=t.pixelRatio[0],g=t.pixelRatio[1];return e.box(e.types.hvc1,new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,f>>8&255,255&f,y>>8&255,255&y,0,72,0,0,0,72,0,0,0,0,0,0,0,1,18,100,97,105,108,121,109,111,116,105,111,110,47,104,108,115,46,106,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,17,17]),p,e.box(e.types.btrt,new Uint8Array([0,28,156,128,0,45,198,192,0,45,198,192])),e.box(e.types.pasp,new Uint8Array([m>>24,m>>16&255,m>>8&255,255&m,g>>24,g>>16&255,g>>8&255,255&g])))},e}();da.types=void 0,da.HDLR_TYPES=void 0,da.STTS=void 0,da.STSC=void 0,da.STCO=void 0,da.STSZ=void 0,da.VMHD=void 0,da.SMHD=void 0,da.STSD=void 0,da.FTYP=void 0,da.DINF=void 0;var ha=9e4;function ca(e,t,i,r){void 0===i&&(i=1),void 0===r&&(r=!1);var s=e*t*i;return r?Math.round(s):s}function ua(e,t,i,r){return void 0===i&&(i=1),void 0===r&&(r=!1),ca(e,t,1/i,r)}function pa(e,t){return void 0===t&&(t=!1),ca(e,1e3,1/ha,t)}function fa(e,t){return void 0===t&&(t=1),ca(e,ha,1/t)}var ya=1e4,ma=1024,ga=1152,Aa=1536,va=null,ba=null,_a=function(){function e(e,t,i,r){if(this.observer=void 0,this.config=void 0,this.typeSupported=void 0,this.ISGenerated=!1,this._initPTS=null,this._initDTS=null,this.nextAvcDts=null,this.nextAudioPts=null,this.videoSampleDuration=null,this.isAudioContiguous=!1,this.isVideoContiguous=!1,this.videoTrackConfig=void 0,this.observer=e,this.config=t,this.typeSupported=i,this.ISGenerated=!1,null===va){var s=(navigator.userAgent||"").match(/Chrome\/(\d+)/i);va=s?parseInt(s[1]):0}if(null===ba){var a=navigator.userAgent.match(/Safari\/(\d+)/i);ba=a?parseInt(a[1]):0}}var t=e.prototype;return t.destroy=function(){this.config=this.videoTrackConfig=this._initPTS=this._initDTS=null},t.resetTimeStamp=function(e){G.log("[mp4-remuxer]: initPTS & initDTS reset"),this._initPTS=this._initDTS=e},t.resetNextTimestamp=function(){G.log("[mp4-remuxer]: reset next timestamp"),this.isVideoContiguous=!1,this.isAudioContiguous=!1},t.resetInitSegment=function(){G.log("[mp4-remuxer]: ISGenerated flag reset"),this.ISGenerated=!1,this.videoTrackConfig=void 0},t.getVideoStartPts=function(e){var t=!1,i=e.reduce((function(e,i){var r=i.pts-e;return r<-4294967296?(t=!0,wa(e,i.pts)):r>0?e:i.pts}),e[0].pts);return t&&G.debug("PTS rollover detected"),i},t.remux=function(e,t,i,r,s,a,n,o){var l,d,h,c,u,p,f=s,y=s,m=e.pid>-1,g=t.pid>-1,A=t.samples.length,v=e.samples.length>0,b=n&&A>0||A>1;if((!m||v)&&(!g||b)||this.ISGenerated||n){if(this.ISGenerated){var _,w,E,S,T=this.videoTrackConfig;!T||t.width===T.width&&t.height===T.height&&(null==(_=t.pixelRatio)?void 0:_[0])===(null==(w=T.pixelRatio)?void 0:w[0])&&(null==(E=t.pixelRatio)?void 0:E[1])===(null==(S=T.pixelRatio)?void 0:S[1])||this.resetInitSegment()}else h=this.generateIS(e,t,s,a);var k,C=this.isVideoContiguous,D=-1;if(b&&(D=Ea(t.samples),!C&&this.config.forceKeyFrameOnDiscontinuity))if(p=!0,D>0){G.warn("[mp4-remuxer]: Dropped "+D+" out of "+A+" video samples due to a missing keyframe");var R=this.getVideoStartPts(t.samples);t.samples=t.samples.slice(D),t.dropped+=D,k=y+=(t.samples[0].pts-R)/t.inputTimeScale}else-1===D&&(G.warn("[mp4-remuxer]: No keyframe found out of "+A+" video samples"),p=!1);if(this.ISGenerated){if(v&&b){var x=this.getVideoStartPts(t.samples),L=(wa(e.samples[0].pts,x)-x)/t.inputTimeScale;f+=Math.max(0,L),y+=Math.max(0,-L)}if(v){if(e.samplerate||(G.warn("[mp4-remuxer]: regenerate InitSegment as audio detected"),h=this.generateIS(e,t,s,a)),d=this.remuxAudio(e,f,this.isAudioContiguous,a,g||b||o===Nt.AUDIO?y:void 0),b){var I=d?d.endPTS-d.startPTS:0;t.inputTimeScale||(G.warn("[mp4-remuxer]: regenerate InitSegment as video detected"),h=this.generateIS(e,t,s,a)),l=this.remuxVideo(t,y,C,I)}}else b&&(l=this.remuxVideo(t,y,C,0));l&&(l.firstKeyFrame=D,l.independent=-1!==D,l.firstKeyFramePTS=k)}}return this.ISGenerated&&this._initPTS&&this._initDTS&&(i.samples.length&&(u=Sa(i,s,this._initPTS,this._initDTS)),r.samples.length&&(c=Ta(r,s,this._initPTS))),{audio:d,video:l,initSegment:h,independent:p,text:c,id3:u}},t.generateIS=function(e,t,i,r){var s,a,n,o=e.samples,l=t.samples,d=this.typeSupported,h={},c=this._initPTS,u=!c||r,p="audio/mp4";if(u&&(s=a=1/0),e.config&&o.length){switch(e.timescale=e.samplerate,e.segmentCodec){case"mp3":d.mpeg?(p="audio/mpeg",e.codec=""):d.mp3&&(e.codec="mp3");break;case"ac3":e.codec="ac-3"}h.audio={id:"audio",container:p,codec:e.codec,initSegment:"mp3"===e.segmentCodec&&d.mpeg?new Uint8Array(0):da.initSegment([e]),metadata:{channelCount:e.channelCount}},u&&(n=e.inputTimeScale,c&&n===c.timescale?u=!1:s=a=o[0].pts-Math.round(n*i))}if(t.sps&&t.pps&&l.length){if(t.timescale=t.inputTimeScale,h.video={id:"main",container:"video/mp4",codec:t.codec,initSegment:da.initSegment([t]),metadata:{width:t.width,height:t.height}},u)if(n=t.inputTimeScale,c&&n===c.timescale)u=!1;else{var f=this.getVideoStartPts(l),y=Math.round(n*i);a=Math.min(a,wa(l[0].dts,f)-y),s=Math.min(s,f-y)}this.videoTrackConfig={width:t.width,height:t.height,pixelRatio:t.pixelRatio}}if(Object.keys(h).length)return this.ISGenerated=!0,u?(this._initPTS={baseTime:s,timescale:n},this._initDTS={baseTime:a,timescale:n}):s=n=void 0,{tracks:h,initPTS:s,timescale:n}},t.remuxVideo=function(e,t,i,r){var s,a,n=e.inputTimeScale,o=e.samples,l=[],d=o.length,h=this._initPTS,u=this.nextAvcDts,p=8,f=this.videoSampleDuration,y=Number.POSITIVE_INFINITY,m=Number.NEGATIVE_INFINITY,g=!1;if(!i||null===u){var A=t*n,v=o[0].pts-wa(o[0].dts,o[0].pts);va&&null!==u&&Math.abs(A-v-u)<15e3?i=!0:u=A-v}for(var b=h.baseTime*n/h.timescale,_=0;_0?_-1:_].dts&&(g=!0)}g&&o.sort((function(e,t){var i=e.dts-t.dts,r=e.pts-t.pts;return i||r})),s=o[0].dts;var E=(a=o[o.length-1].dts)-s,S=E?Math.round(E/(d-1)):f||e.inputTimeScale/30;if(i){var T=s-u,R=T>S,x=T<-1;if((R||x)&&(R?G.warn((e.segmentCodec||"").toUpperCase()+": "+pa(T,!0)+" ms ("+T+"dts) hole between fragments detected at "+t.toFixed(3)):G.warn((e.segmentCodec||"").toUpperCase()+": "+pa(-T,!0)+" ms ("+T+"dts) overlapping between fragments detected at "+t.toFixed(3)),!x||u>=o[0].pts||va)){s=u;var L=o[0].pts-T;if(R)o[0].dts=s,o[0].pts=L;else for(var I=!0,P=0;PL&&I);P++){var B=o[P].pts;if(o[P].dts-=T,o[P].pts-=T,P0?te.dts-o[ee-1].dts:S;if(de=ee>0?te.pts-o[ee-1].pts:S,he.stretchShortVideoTrack&&null!==this.nextAudioPts){var ue=Math.floor(he.maxBufferHole*n),pe=(r?y+r*n:this.nextAudioPts)-te.pts;pe>ue?((f=pe-ce)<0?f=ce:Y=!0,G.log("[mp4-remuxer]: It is approximately "+pe/90+" ms to the next segment; using duration "+f/90+" ms for the last video frame.")):f=ce}else f=ce}var fe=Math.round(te.pts-te.dts);Q=Math.min(Q,f),J=Math.max(J,f),X=Math.min(X,de),Z=Math.max(Z,de),l.push(new Ca(te.key,f,re,fe))}if(l.length)if(va){if(va<70){var ye=l[0].flags;ye.dependsOn=2,ye.isNonSync=0}}else if(ba&&Z-X0&&(r&&Math.abs(g-m)<9e3||Math.abs(wa(f[0].pts-A,g)-m)<20*l),f.forEach((function(e){e.pts=wa(e.pts-A,g)})),!i||m<0){if(f=f.filter((function(e){return e.pts>=0})),!f.length)return;m=0===s?0:r&&!p?Math.max(0,g):f[0].pts}if("aac"===e.segmentCodec)for(var v=this.config.maxAudioFramesDrift,b=0,_=m;b=v*l&&T0))return;U+=y;try{P=new Uint8Array(U)}catch(e){return void this.observer.emit(k.ERROR,k.ERROR,{type:C.MUX_ERROR,details:D.REMUX_ALLOC_ERROR,fatal:!1,error:e,bytes:U,reason:"fail allocating audio mdat "+U})}h||(new DataView(P.buffer).setUint32(0,U),P.set(da.types.mdat,4))}P.set(W,y);var H=W.byteLength;y+=H,u.push(new Ca(!0,o,H,0)),M=V}var $=u.length;if($){var j=u[u.length-1];this.nextAudioPts=m=M+n*j.duration;var K=h?new Uint8Array(0):da.moof(e.sequenceNumber++,B/n,c({},e,{samples:u}));e.samples=[];var q=B/a,Y=m/a,Q={data1:K,data2:P,startPTS:q,endPTS:Y,startDTS:q,endDTS:Y,type:"audio",hasAudio:!0,hasVideo:!1,nb:$};return this.isAudioContiguous=!0,Q}},t.remuxEmptyAudio=function(e,t,i,r){var s=e.inputTimeScale,a=s/(e.samplerate?e.samplerate:s),n=this.nextAudioPts,o=this._initDTS,l=9e4*o.baseTime/o.timescale,d=(null!==n?n:r.startDTS*s)+l,h=r.endDTS*s+l,c=a*ma,u=Math.ceil((h-d)/c),p=oa.getSilentFrame(e.parsedCodec||e.manifestCodec||e.codec,e.channelCount);if(G.warn("[mp4-remuxer]: remux empty Audio"),p){for(var f=[],y=0;y4294967296;)e+=i;return e}function Ea(e){for(var t=0;t0?this.lastEndTime=A:(G.warn("Duration parsed from mp4 should be greater than zero"),this.resetNextTimestamp());var v=!!p.audio,b=!!p.video,_="";v&&(_+="audio"),b&&(_+="video");var w={data1:c,startPTS:g,startDTS:g,endPTS:A,endDTS:A,type:_,hasAudio:v,hasVideo:b,nb:1,dropped:0};return h.audio="audio"===w.type?w:void 0,h.video="audio"!==w.type?w:void 0,h.initSegment=u,h.id3=Sa(i,s,l,l),r.samples.length&&(h.text=Ta(r,s,l)),h},e}();function Ra(e,t,i,r){if(null===e)return!0;var s=Math.max(r,1),a=t-e.baseTime/e.timescale;return Math.abs(a-i)>s}function xa(e,t){var i=null==e?void 0:e.codec;if(i&&i.length>4)return i;if(t===$.AUDIO){if("ec-3"===i||"ac-3"===i||"alac"===i)return i;if("fLaC"===i||"Opus"===i)return bt(i,!1);var r="mp4a.40.5";return G.info('Parsed audio codec "'+i+'" or audio object type not handled. Using "'+r+'"'),r}return G.warn('Unhandled video codec "'+i+'"'),"hvc1"===i||"hev1"===i?"hvc1.1.6.L120.90":"av01"===i?"av01.0.04M.08":"avc1.42e01e"}try{ka=self.performance.now.bind(self.performance)}catch(e){G.debug("Unable to use Performance API on this environment"),ka=null==ae?void 0:ae.Date.now}var La=[{demux:Hs,remux:Da},{demux:ea,remux:_a},{demux:Ws,remux:_a},{demux:na,remux:_a}];La.splice(2,0,{demux:js,remux:_a});var Ia=function(){function e(e,t,i,r,s){this.async=!1,this.observer=void 0,this.typeSupported=void 0,this.config=void 0,this.vendor=void 0,this.id=void 0,this.demuxer=void 0,this.remuxer=void 0,this.decrypter=void 0,this.probe=void 0,this.decryptionPromise=null,this.transmuxConfig=void 0,this.currentTransmuxState=void 0,this.observer=e,this.typeSupported=t,this.config=i,this.vendor=r,this.id=s}var t=e.prototype;return t.configure=function(e){this.transmuxConfig=e,this.decrypter&&this.decrypter.reset()},t.push=function(e,t,i,r){var s=this,a=i.transmuxing;a.executeStart=ka();var n=new Uint8Array(e),o=this.currentTransmuxState,l=this.transmuxConfig;r&&(this.currentTransmuxState=r);var d=r||o,h=d.contiguous,c=d.discontinuity,u=d.trackSwitch,p=d.accurateTimeOffset,f=d.timeOffset,y=d.initSegmentChange,m=l.audioCodec,g=l.videoCodec,A=l.defaultInitPts,v=l.duration,b=l.initSegmentData,_=Pa(n,t);if(_&&re(_.method)){var w=this.getDecrypter(),E=se(_.method);if(!w.isSync())return this.decryptionPromise=w.webCryptoDecrypt(n,_.key.buffer,_.iv.buffer,E).then((function(e){var t=s.push(e,null,i);return s.decryptionPromise=null,t})),this.decryptionPromise;var S=w.softwareDecrypt(n,_.key.buffer,_.iv.buffer,E);if(i.part>-1&&(S=w.flush()),!S)return a.executeEnd=ka(),Ba(i);n=new Uint8Array(S)}var T=this.needsProbing(c,u);if(T){var R=this.configureTransmuxer(n);if(R)return G.warn("[transmuxer] "+R.message),this.observer.emit(k.ERROR,k.ERROR,{type:C.MEDIA_ERROR,details:D.FRAG_PARSING_ERROR,fatal:!1,error:R,reason:R.message}),a.executeEnd=ka(),Ba(i)}(c||u||y||T)&&this.resetInitSegment(b,m,g,v,t),(c||y||T)&&this.resetInitialTimestamp(A),h||this.resetContiguity();var x=this.transmux(n,_,f,p,i),L=this.currentTransmuxState;return L.contiguous=!0,L.discontinuity=!1,L.trackSwitch=!1,a.executeEnd=ka(),x},t.flush=function(e){var t=this,i=e.transmuxing;i.executeStart=ka();var r=this.decrypter,s=this.currentTransmuxState,a=this.decryptionPromise;if(a)return a.then((function(){return t.flush(e)}));var n=[],o=s.timeOffset;if(r){var l=r.flush();l&&n.push(this.push(l,null,e))}var d=this.demuxer,h=this.remuxer;if(!d||!h)return i.executeEnd=ka(),[Ba(e)];var c=d.flush(o);return Ma(c)?c.then((function(i){return t.flushRemux(n,i,e),n})):(this.flushRemux(n,c,e),n)},t.flushRemux=function(e,t,i){var r=t.audioTrack,s=t.videoTrack,a=t.id3Track,n=t.textTrack,o=this.currentTransmuxState,l=o.accurateTimeOffset,d=o.timeOffset;G.log("[transmuxer.ts]: Flushed fragment "+i.sn+(i.part>-1?" p: "+i.part:"")+" of level "+i.level);var h=this.remuxer.remux(r,s,a,n,d,l,!0,this.id);e.push({remuxResult:h,chunkMeta:i}),i.transmuxing.executeEnd=ka()},t.resetInitialTimestamp=function(e){var t=this.demuxer,i=this.remuxer;t&&i&&(t.resetTimeStamp(e),i.resetTimeStamp(e))},t.resetContiguity=function(){var e=this.demuxer,t=this.remuxer;e&&t&&(e.resetContiguity(),t.resetNextTimestamp())},t.resetInitSegment=function(e,t,i,r,s){var a=this.demuxer,n=this.remuxer;a&&n&&(a.resetInitSegment(e,t,i,r),n.resetInitSegment(e,t,i,s))},t.destroy=function(){this.demuxer&&(this.demuxer.destroy(),this.demuxer=void 0),this.remuxer&&(this.remuxer.destroy(),this.remuxer=void 0)},t.transmux=function(e,t,i,r,s){return t&&"SAMPLE-AES"===t.method?this.transmuxSampleAes(e,t,i,r,s):this.transmuxUnencrypted(e,i,r,s)},t.transmuxUnencrypted=function(e,t,i,r){var s=this.demuxer.demux(e,t,!1,!this.config.progressive),a=s.audioTrack,n=s.videoTrack,o=s.id3Track,l=s.textTrack;return{remuxResult:this.remuxer.remux(a,n,o,l,t,i,!1,this.id),chunkMeta:r}},t.transmuxSampleAes=function(e,t,i,r,s){var a=this;return this.demuxer.demuxSampleAes(e,t,i).then((function(e){return{remuxResult:a.remuxer.remux(e.audioTrack,e.videoTrack,e.id3Track,e.textTrack,i,r,!1,a.id),chunkMeta:s}}))},t.configureTransmuxer=function(e){for(var t,i=this.config,r=this.observer,s=this.typeSupported,a=this.vendor,n=0,o=La.length;n0&&null!=(null==t?void 0:t.key)&&null!==t.iv&&null!=t.method&&(i=t),i}var Ba=function(e){return{remuxResult:{},chunkMeta:e}};function Ma(e){return"then"in e&&e.then instanceof Function}var Ua=function(e,t,i,r,s){this.audioCodec=void 0,this.videoCodec=void 0,this.initSegmentData=void 0,this.duration=void 0,this.defaultInitPts=void 0,this.audioCodec=e,this.videoCodec=t,this.initSegmentData=i,this.duration=r,this.defaultInitPts=s||null},Fa=function(e,t,i,r,s,a){this.discontinuity=void 0,this.contiguous=void 0,this.accurateTimeOffset=void 0,this.trackSwitch=void 0,this.timeOffset=void 0,this.initSegmentChange=void 0,this.discontinuity=e,this.contiguous=t,this.accurateTimeOffset=i,this.trackSwitch=r,this.timeOffset=s,this.initSegmentChange=a},Oa={exports:{}};!function(e){var t=Object.prototype.hasOwnProperty,i="~";function r(){}function s(e,t,i){this.fn=e,this.context=t,this.once=i||!1}function a(e,t,r,a,n){if("function"!=typeof r)throw new TypeError("The listener must be a function");var o=new s(r,a||e,n),l=i?i+t:t;return e._events[l]?e._events[l].fn?e._events[l]=[e._events[l],o]:e._events[l].push(o):(e._events[l]=o,e._eventsCount++),e}function n(e,t){0==--e._eventsCount?e._events=new r:delete e._events[t]}function o(){this._events=new r,this._eventsCount=0}Object.create&&(r.prototype=Object.create(null),(new r).__proto__||(i=!1)),o.prototype.eventNames=function(){var e,r,s=[];if(0===this._eventsCount)return s;for(r in e=this._events)t.call(e,r)&&s.push(i?r.slice(1):r);return Object.getOwnPropertySymbols?s.concat(Object.getOwnPropertySymbols(e)):s},o.prototype.listeners=function(e){var t=i?i+e:e,r=this._events[t];if(!r)return[];if(r.fn)return[r.fn];for(var s=0,a=r.length,n=new Array(a);s1&&l.id===(null==m?void 0:m.stats.chunkCount),w=!A&&(1===v||0===v&&(1===b||_&&b<=0)),E=self.performance.now();(A||v||0===s.stats.parsing.start)&&(s.stats.parsing.start=E),!a||!b&&w||(a.stats.parsing.start=E);var S=!(m&&(null==(h=s.initSegment)?void 0:h.url)===(null==(c=m.initSegment)?void 0:c.url)),T=new Fa(g,w,o,A,f,S);if(!w||g||S){G.log("[transmuxer-interface, "+s.type+"]: Starting new transmux session for sn: "+l.sn+" p: "+l.part+" level: "+l.level+" id: "+l.id+"\n discontinuity: "+g+"\n trackSwitch: "+A+"\n contiguous: "+w+"\n accurateTimeOffset: "+o+"\n timeOffset: "+f+"\n initSegmentChange: "+S);var k=new Ua(i,r,t,n,d);this.configureTransmuxer(k)}if(this.frag=s,this.part=a,this.workerContext)this.workerContext.worker.postMessage({cmd:"demux",data:e,decryptdata:y,chunkMeta:l,state:T},e instanceof ArrayBuffer?[e]:[]);else if(p){var C=p.push(e,y,l,T);Ma(C)?(p.async=!0,C.then((function(e){u.handleTransmuxComplete(e)})).catch((function(e){u.transmuxerError(e,l,"transmuxer-interface push error")}))):(p.async=!1,this.handleTransmuxComplete(C))}},t.flush=function(e){var t=this;e.transmuxing.start=self.performance.now();var i=this.transmuxer;if(this.workerContext)this.workerContext.worker.postMessage({cmd:"flush",chunkMeta:e});else if(i){var r=i.flush(e);Ma(r)||i.async?(Ma(r)||(r=Promise.resolve(r)),r.then((function(i){t.handleFlushResult(i,e)})).catch((function(i){t.transmuxerError(i,e,"transmuxer-interface flush error")}))):this.handleFlushResult(r,e)}},t.transmuxerError=function(e,t,i){this.hls&&(this.error=e,this.hls.trigger(k.ERROR,{type:C.MEDIA_ERROR,details:D.FRAG_PARSING_ERROR,chunkMeta:t,fatal:!1,error:e,err:e,reason:i}))},t.handleFlushResult=function(e,t){var i=this;e.forEach((function(e){i.handleTransmuxComplete(e)})),this.onFlush(t)},t.onWorkerMessage=function(e){var t=e.data,i=this.hls;switch(t.event){case"init":var r,s=null==(r=this.workerContext)?void 0:r.objectURL;s&&self.URL.revokeObjectURL(s);break;case"transmuxComplete":this.handleTransmuxComplete(t.data);break;case"flush":this.onFlush(t.data);break;case"workerLog":G[t.data.logType]&&G[t.data.logType](t.data.message);break;default:t.data=t.data||{},t.data.frag=this.frag,t.data.id=this.id,i.trigger(t.event,t.data)}},t.configureTransmuxer=function(e){var t=this.transmuxer;this.workerContext?this.workerContext.worker.postMessage({cmd:"configure",config:e}):t&&t.configure(e)},t.handleTransmuxComplete=function(e){e.chunkMeta.transmuxing.end=self.performance.now(),this.onTransmuxComplete(e)},e}();function Ya(e,t){if(e.length!==t.length)return!1;for(var i=0;i0&&-1===e?(this.log("Override startPosition with lastCurrentTime @"+t.toFixed(3)),e=t,this.state=ls.IDLE):(this.loadedmetadata=!1,this.state=ls.WAITING_TRACK),this.nextLoadPosition=this.startPosition=this.lastCurrentTime=e,this.tick()},i.doTick=function(){switch(this.state){case ls.IDLE:this.doTickIdle();break;case ls.WAITING_TRACK:var t,i=this.levels,r=this.trackId,s=null==i||null==(t=i[r])?void 0:t.details;if(s){if(this.waitForCdnTuneIn(s))break;this.state=ls.WAITING_INIT_PTS}break;case ls.FRAG_LOADING_WAITING_RETRY:var a,n=performance.now(),o=this.retryDate;if(!o||n>=o||null!=(a=this.media)&&a.seeking){var l=this.levels,d=this.trackId;this.log("RetryDate reached, switch back to IDLE state"),this.resetStartWhenNotLoaded((null==l?void 0:l[d])||null),this.state=ls.IDLE}break;case ls.WAITING_INIT_PTS:var h=this.waitingData;if(h){var c=h.frag,u=h.part,p=h.cache,f=h.complete;if(void 0!==this.initPTS[c.cc]){this.waitingData=null,this.waitingVideoCC=-1,this.state=ls.FRAG_LOADING;var y={frag:c,part:u,payload:p.flush(),networkDetails:null};this._handleFragmentLoadProgress(y),f&&e.prototype._handleFragmentLoadComplete.call(this,y)}else if(this.videoTrackCC!==this.waitingVideoCC)this.log("Waiting fragment cc ("+c.cc+") cancelled because video is at cc "+this.videoTrackCC),this.clearWaitingFragment();else{var m=this.getLoadPosition(),g=Fr.bufferInfo(this.mediaBuffer,m,this.config.maxBufferHole);sr(g.end,this.config.maxFragLookUpTolerance,c)<0&&(this.log("Waiting fragment cc ("+c.cc+") @ "+c.start+" cancelled because another fragment at "+g.end+" is needed"),this.clearWaitingFragment())}}else this.state=ls.IDLE}this.onTickEnd()},i.clearWaitingFragment=function(){var e=this.waitingData;e&&(this.fragmentTracker.removeFragment(e.frag),this.waitingData=null,this.waitingVideoCC=-1,this.state!==ls.STOPPED&&(this.state=ls.IDLE))},i.resetLoadingState=function(){this.clearWaitingFragment(),e.prototype.resetLoadingState.call(this)},i.onTickEnd=function(){var e=this.media;null!=e&&e.readyState&&(this.lastCurrentTime=e.currentTime)},i.doTickIdle=function(){var e=this.hls,t=this.levels,i=this.media,r=this.trackId,s=e.config;if(this.buffering&&(i||!this.startFragRequested&&s.startFragPrefetch)&&null!=t&&t[r]){var a=t[r],n=a.details;if(!n||n.live&&this.levelLastLoaded!==a||this.waitForCdnTuneIn(n))this.state=ls.WAITING_TRACK;else{var o=this.mediaBuffer?this.mediaBuffer:this.media;this.bufferFlushed&&o&&(this.bufferFlushed=!1,this.afterBufferFlushed(o,$.AUDIO,Nt.AUDIO));var l=this.getFwdBufferInfo(o,Nt.AUDIO);if(null!==l){var d=this.bufferedTrack,h=this.switchingTrack;if(!h&&this._streamEnded(l,n))return e.trigger(k.BUFFER_EOS,{type:"audio"}),void(this.state=ls.ENDED);var c=l.len,u=e.maxBufferLength,p=n.fragments,f=p[0].start,y=this.flushing?this.getLoadPosition():l.end;if(h&&i){var m=this.getLoadPosition();d&&!Qa(h.attrs,d.attrs)&&(y=m),n.PTSKnown&&mf||l.nextStart)&&(this.log("Alt audio track ahead of main track, seek to start of alt audio track"),i.currentTime=f+.05)}if(!(c>=u&&!h&&yv.end+g.duration){var b=this.fragmentTracker.getFragAtPos(g.start,Nt.MAIN);if(null===b)return;if(A||(A=!!b.gap||0===v.len),!A||l.nextStart&&l.nextStart-1)s=a[o];else{var l=Sr(n,this.tracks);s=this.tracks[l]}}var d=this.findTrackId(s);-1===d&&s&&(d=this.findTrackId(null));var h={audioTracks:a};this.log("Updating audio tracks, "+a.length+" track(s) found in group(s): "+(null==i?void 0:i.join(","))),this.hls.trigger(k.AUDIO_TRACKS_UPDATED,h);var c=this.trackId;if(-1!==d&&-1===c)this.setAudioTrack(d);else if(a.length&&-1===c){var u,p=new Error("No audio track selected for current audio group-ID(s): "+(null==(u=this.groupIds)?void 0:u.join(","))+" track count: "+a.length);this.warn(p.message),this.hls.trigger(k.ERROR,{type:C.MEDIA_ERROR,details:D.AUDIO_TRACK_LOAD_ERROR,fatal:!0,error:p})}}else this.shouldReloadPlaylist(s)&&this.setAudioTrack(this.trackId)}},i.onError=function(e,t){!t.fatal&&t.context&&(t.context.type!==Ot.AUDIO_TRACK||t.context.id!==this.trackId||this.groupIds&&-1===this.groupIds.indexOf(t.context.groupId)||(this.requestScheduled=-1,this.checkRetry(t)))},i.setAudioOption=function(e){var t=this.hls;if(t.config.audioPreference=e,e){var i=this.allAudioTracks;if(this.selectDefaultTrack=!1,i.length){var r=this.currentTrack;if(r&&Tr(e,r,Cr))return r;var s=Sr(e,this.tracksInGroup,Cr);if(s>-1){var a=this.tracksInGroup[s];return this.setAudioTrack(s),a}if(r){var n=t.loadLevel;-1===n&&(n=t.firstAutoLevel);var o=Dr(e,t.levels,i,n,Cr);if(-1===o)return null;t.nextLoadLevel=o}if(e.channels||e.audioCodec){var l=Sr(e,i);if(l>-1)return i[l]}}}return null},i.setAudioTrack=function(e){var t=this.tracksInGroup;if(e<0||e>=t.length)this.warn("Invalid audio track id: "+e);else{this.clearTimer(),this.selectDefaultTrack=!1;var i=this.currentTrack,r=t[e],s=r.details&&!r.details.live;if(!(e===this.trackId&&r===i&&s||(this.log("Switching to audio-track "+e+' "'+r.name+'" lang:'+r.lang+" group:"+r.groupId+" channels:"+r.channels),this.trackId=e,this.currentTrack=r,this.hls.trigger(k.AUDIO_TRACK_SWITCHING,a({},r)),s))){var n=this.switchParams(r.url,null==i?void 0:i.details,r.details);this.loadPlaylist(n)}}},i.findTrackId=function(e){for(var t=this.tracksInGroup,i=0;i=s[o].start&&n<=s[o].end){a=s[o];break}var l=i.start+i.duration;a?a.end=l:(a={start:n,end:l},s.push(a)),this.fragmentTracker.fragBuffered(i),this.fragBufferedComplete(i,null)}}},i.onBufferFlushing=function(e,t){var i=t.startOffset,r=t.endOffset;if(0===i&&r!==Number.POSITIVE_INFINITY){var s=r-1;if(s<=0)return;t.endOffsetSubtitles=Math.max(0,s),this.tracksBuffered.forEach((function(e){for(var t=0;t=s.length||n!==r)&&o){this.log("Subtitle track "+n+" loaded ["+a.startSN+","+a.endSN+"]"+(a.lastPartSn?"[part-"+a.lastPartSn+"-"+a.lastPartIndex+"]":"")+",duration:"+a.totalduration),this.mediaBuffer=this.mediaBufferTimeRanges;var l=0;if(a.live||null!=(i=o.details)&&i.live){var d=this.mainDetails;if(a.deltaUpdateFailed||!d)return;var h,c=d.fragments[0];o.details?0===(l=this.alignPlaylists(a,o.details,null==(h=this.levelLastLoaded)?void 0:h.details))&&c&&Vi(a,l=c.start):a.hasProgramDateTime&&d.hasProgramDateTime?(Kr(a,d),l=a.fragments[0].start):c&&Vi(a,l=c.start)}o.details=a,this.levelLastLoaded=o,this.startFragRequested||!this.mainDetails&&a.live||this.setStartPosition(this.mainDetails||a,l),this.tick(),a.live&&!this.fragCurrent&&this.media&&this.state===ls.IDLE&&(rr(null,a.fragments,this.media.currentTime,0)||(this.warn("Subtitle playlist not aligned with playback"),o.details=void 0))}}else this.warn("Subtitle tracks were reset while loading level "+n)},i._handleFragmentLoadComplete=function(e){var t=this,i=e.frag,r=e.payload,s=i.decryptdata,a=this.hls;if(!this.fragContextChanged(i)&&r&&r.byteLength>0&&null!=s&&s.key&&s.iv&&re(s.method)){var n=performance.now();this.decrypter.decrypt(new Uint8Array(r),s.key.buffer,s.iv.buffer,se(s.method)).catch((function(e){throw a.trigger(k.ERROR,{type:C.MEDIA_ERROR,details:D.FRAG_DECRYPT_ERROR,fatal:!1,error:e,reason:e.message,frag:i}),e})).then((function(e){var t=performance.now();a.trigger(k.FRAG_DECRYPTED,{frag:i,payload:e,stats:{tstart:n,tdecrypt:t}})})).catch((function(e){t.warn(e.name+": "+e.message),t.state=ls.IDLE}))}},i.doTick=function(){if(this.media){if(this.state===ls.IDLE){var e=this.currentTrackId,t=this.levels,i=null==t?void 0:t[e];if(!i||!t.length||!i.details)return;var r=this.config,s=this.getLoadPosition(),a=Fr.bufferedInfo(this.tracksBuffered[this.currentTrackId]||[],s,r.maxBufferHole),n=a.end,o=a.len,l=i.details;if(o>this.hls.maxBufferLength+l.levelTargetDuration)return;var d=l.fragments,h=d.length,c=l.edge,u=null,p=this.fragPrevious;if(nc-f?0:f;!(u=rr(p,d,Math.max(d[0].start,n),y))&&p&&p.start>>=0)>r-1)throw new DOMException("Failed to execute '"+t+"' on 'TimeRanges': The index provided ("+i+") is greater than the maximum bound ("+r+")");return e[i][t]};this.buffered={get length(){return e.length},end:function(i){return t("end",i,e.length)},start:function(i){return t("start",i,e.length)}}},an=function(e){function t(t){var i;return(i=e.call(this,t,"subtitle-track-controller")||this).media=null,i.tracks=[],i.groupIds=null,i.tracksInGroup=[],i.trackId=-1,i.currentTrack=null,i.selectDefaultTrack=!0,i.queuedDefaultTrack=-1,i.useTextTrackPolling=!1,i.subtitlePollingInterval=-1,i._subtitleDisplay=!0,i.asyncPollTrackChange=function(){return i.pollTrackChange(0)},i.onTextTracksChanged=function(){if(i.useTextTrackPolling||self.clearInterval(i.subtitlePollingInterval),i.media&&i.hls.config.renderTextTracksNatively){for(var e=null,t=Yt(i.media.textTracks),r=0;r-1&&(this.subtitleTrack=this.queuedDefaultTrack,this.queuedDefaultTrack=-1),this.useTextTrackPolling=!(this.media.textTracks&&"onchange"in this.media.textTracks),this.useTextTrackPolling?this.pollTrackChange(500):this.media.textTracks.addEventListener("change",this.asyncPollTrackChange))},i.pollTrackChange=function(e){self.clearInterval(this.subtitlePollingInterval),this.subtitlePollingInterval=self.setInterval(this.onTextTracksChanged,e)},i.onMediaDetaching=function(){this.media&&(self.clearInterval(this.subtitlePollingInterval),this.useTextTrackPolling||this.media.textTracks.removeEventListener("change",this.asyncPollTrackChange),this.trackId>-1&&(this.queuedDefaultTrack=this.trackId),Yt(this.media.textTracks).forEach((function(e){$t(e)})),this.subtitleTrack=-1,this.media=null)},i.onManifestLoading=function(){this.tracks=[],this.groupIds=null,this.tracksInGroup=[],this.trackId=-1,this.currentTrack=null,this.selectDefaultTrack=!0},i.onManifestParsed=function(e,t){this.tracks=t.subtitleTracks},i.onSubtitleTrackLoaded=function(e,t){var i=t.id,r=t.groupId,s=t.details,a=this.tracksInGroup[i];if(a&&a.groupId===r){var n=a.details;a.details=t.details,this.log("Subtitle track "+i+' "'+a.name+'" lang:'+a.lang+" group:"+r+" loaded ["+s.startSN+"-"+s.endSN+"]"),i===this.trackId&&this.playlistLoaded(i,t,n)}else this.warn("Subtitle track with id:"+i+" and group:"+r+" not found in active group "+(null==a?void 0:a.groupId))},i.onLevelLoading=function(e,t){this.switchLevel(t.level)},i.onLevelSwitching=function(e,t){this.switchLevel(t.level)},i.switchLevel=function(e){var t=this.hls.levels[e];if(t){var i=t.subtitleGroups||null,r=this.groupIds,s=this.currentTrack;if(!i||(null==r?void 0:r.length)!==(null==i?void 0:i.length)||null!=i&&i.some((function(e){return-1===(null==r?void 0:r.indexOf(e))}))){this.groupIds=i,this.trackId=-1,this.currentTrack=null;var a=this.tracks.filter((function(e){return!i||-1!==i.indexOf(e.groupId)}));if(a.length)this.selectDefaultTrack&&!a.some((function(e){return e.default}))&&(this.selectDefaultTrack=!1),a.forEach((function(e,t){e.id=t}));else if(!s&&!this.tracksInGroup.length)return;this.tracksInGroup=a;var n=this.hls.config.subtitlePreference;if(!s&&n){this.selectDefaultTrack=!1;var o=Sr(n,a);if(o>-1)s=a[o];else{var l=Sr(n,this.tracks);s=this.tracks[l]}}var d=this.findTrackId(s);-1===d&&s&&(d=this.findTrackId(null));var h={subtitleTracks:a};this.log("Updating subtitle tracks, "+a.length+' track(s) found in "'+(null==i?void 0:i.join(","))+'" group-id'),this.hls.trigger(k.SUBTITLE_TRACKS_UPDATED,h),-1!==d&&-1===this.trackId&&this.setSubtitleTrack(d)}else this.shouldReloadPlaylist(s)&&this.setSubtitleTrack(this.trackId)}},i.findTrackId=function(e){for(var t=this.tracksInGroup,i=this.selectDefaultTrack,r=0;r-1){var s=this.tracksInGroup[r];return this.setSubtitleTrack(r),s}if(i)return null;var a=Sr(e,t);if(a>-1)return t[a]}}return null},i.loadPlaylist=function(t){e.prototype.loadPlaylist.call(this);var i=this.currentTrack;if(this.shouldLoadPlaylist(i)&&i){var r=i.id,s=i.groupId,a=i.url;if(t)try{a=t.addDirectives(a)}catch(e){this.warn("Could not construct new URL with HLS Delivery Directives: "+e)}this.log("Loading subtitle playlist for id "+r),this.hls.trigger(k.SUBTITLE_TRACK_LOADING,{url:a,id:r,groupId:s,deliveryDirectives:t||null})}},i.toggleTrackModes=function(){var e=this.media;if(e){var t,i=Yt(e.textTracks),r=this.currentTrack;if(r&&((t=i.filter((function(e){return Xa(r,e)}))[0])||this.warn('Unable to find subtitle TextTrack with name "'+r.name+'" and language "'+r.lang+'"')),[].slice.call(i).forEach((function(e){"disabled"!==e.mode&&e!==t&&(e.mode="disabled")})),t){var s=this.subtitleDisplay?"showing":"hidden";t.mode!==s&&(t.mode=s)}}},i.setSubtitleTrack=function(e){var t=this.tracksInGroup;if(this.media)if(e<-1||e>=t.length||!E(e))this.warn("Invalid subtitle track id: "+e);else{this.clearTimer(),this.selectDefaultTrack=!1;var i=this.currentTrack,r=t[e]||null;if(this.trackId=e,this.currentTrack=r,this.toggleTrackModes(),r){var s=!!r.details&&!r.details.live;if(e!==this.trackId||r!==i||!s){this.log("Switching to subtitle-track "+e+(r?' "'+r.name+'" lang:'+r.lang+" group:"+r.groupId:""));var a=r.id,n=r.groupId,o=void 0===n?"":n,l=r.name,d=r.type,h=r.url;this.hls.trigger(k.SUBTITLE_TRACK_SWITCH,{id:a,groupId:o,name:l,type:d,url:h});var c=this.switchParams(r.url,null==i?void 0:i.details,r.details);this.loadPlaylist(c)}}else this.hls.trigger(k.SUBTITLE_TRACK_SWITCH,{id:e})}else this.queuedDefaultTrack=e},d(t,[{key:"subtitleDisplay",get:function(){return this._subtitleDisplay},set:function(e){this._subtitleDisplay=e,this.trackId>-1&&this.toggleTrackModes()}},{key:"allSubtitleTracks",get:function(){return this.tracks}},{key:"subtitleTracks",get:function(){return this.tracksInGroup}},{key:"subtitleTrack",get:function(){return this.trackId},set:function(e){this.selectDefaultTrack=!1,this.setSubtitleTrack(e)}}])}(hr),nn=function(){function e(e){this.buffers=void 0,this.queues={video:[],audio:[],audiovideo:[]},this.buffers=e}var t=e.prototype;return t.append=function(e,t,i){var r=this.queues[t];r.push(e),1!==r.length||i||this.executeNext(t)},t.appendBlocker=function(e){var t=this;return new Promise((function(i){var r={execute:i,onStart:function(){},onComplete:function(){},onError:function(){}};t.append(r,e)}))},t.unblockAudio=function(e){this.queues.audio[0]===e&&this.shiftAndExecuteNext("audio")},t.executeNext=function(e){var t=this.queues[e];if(t.length){var i=t[0];try{i.execute()}catch(t){G.warn('[buffer-operation-queue]: Exception executing "'+e+'" SourceBuffer operation: '+t),i.onError(t);var r=this.buffers[e];null!=r&&r.updating||this.shiftAndExecuteNext(e)}}},t.shiftAndExecuteNext=function(e){this.queues[e].shift(),this.executeNext(e)},t.current=function(e){return this.queues[e][0]},e}(),on=/(avc[1234]|hvc1|hev1|dvh[1e]|vp09|av01)(?:\.[^.,]+)+/,ln=function(e){function t(t,i){var r;return(r=e.call(this,"buffer-controller",t.logger)||this).details=null,r._objectUrl=null,r.operationQueue=void 0,r.listeners=void 0,r.hls=void 0,r.fragmentTracker=void 0,r.bufferCodecEventsExpected=0,r._bufferCodecEventsTotal=0,r.media=null,r.mediaSource=null,r.lastMpegAudioChunk=null,r.blockedAudioAppend=null,r.lastVideoAppendEnd=0,r.appendSource=void 0,r.appendErrors={audio:0,video:0,audiovideo:0},r.tracks={},r.pendingTracks={},r.sourceBuffer=void 0,r._onEndStreaming=function(e){r.hls&&r.hls.pauseBuffering()},r._onStartStreaming=function(e){r.hls&&r.hls.resumeBuffering()},r._onMediaSourceOpen=function(){var e=r,t=e.media,i=e.mediaSource;if(r.log("Media source opened"),t){t.removeEventListener("emptied",r._onMediaEmptied);var s=r.getDurationAndRange();s&&r.updateMediaSource(s),r.hls.trigger(k.MEDIA_ATTACHED,{media:t,mediaSource:i})}i&&i.removeEventListener("sourceopen",r._onMediaSourceOpen),r.checkPendingTracks()},r._onMediaSourceClose=function(){r.log("Media source closed")},r._onMediaSourceEnded=function(){r.log("Media source ended")},r._onMediaEmptied=function(){var e=r,t=e.mediaSrc,i=e._objectUrl;t!==i&&r.error("Media element src was set while attaching MediaSource ("+i+" > "+t+")")},r.hls=t,r.fragmentTracker=i,r.appendSource=t.config.preferManagedMediaSource&&"undefined"!=typeof self&&self.ManagedMediaSource,r._initSourceBuffer(),r.registerListeners(),r}u(t,e);var i=t.prototype;return i.hasSourceTypes=function(){return this.getSourceBufferTypes().length>0||Object.keys(this.pendingTracks).length>0},i.destroy=function(){this.unregisterListeners(),this.details=null,this.lastMpegAudioChunk=null,this.hls=this.fragmentTracker=null,this._onMediaSourceOpen=this._onMediaSourceClose=null,this._onMediaSourceEnded=null,this._onStartStreaming=this._onEndStreaming=null},i.registerListeners=function(){var e=this.hls;e.on(k.MEDIA_ATTACHING,this.onMediaAttaching,this),e.on(k.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(k.MANIFEST_LOADING,this.onManifestLoading,this),e.on(k.MANIFEST_PARSED,this.onManifestParsed,this),e.on(k.BUFFER_RESET,this.onBufferReset,this),e.on(k.BUFFER_APPENDING,this.onBufferAppending,this),e.on(k.BUFFER_CODECS,this.onBufferCodecs,this),e.on(k.BUFFER_EOS,this.onBufferEos,this),e.on(k.BUFFER_FLUSHING,this.onBufferFlushing,this),e.on(k.LEVEL_UPDATED,this.onLevelUpdated,this),e.on(k.FRAG_PARSED,this.onFragParsed,this),e.on(k.FRAG_CHANGED,this.onFragChanged,this)},i.unregisterListeners=function(){var e=this.hls;e.off(k.MEDIA_ATTACHING,this.onMediaAttaching,this),e.off(k.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(k.MANIFEST_LOADING,this.onManifestLoading,this),e.off(k.MANIFEST_PARSED,this.onManifestParsed,this),e.off(k.BUFFER_RESET,this.onBufferReset,this),e.off(k.BUFFER_APPENDING,this.onBufferAppending,this),e.off(k.BUFFER_CODECS,this.onBufferCodecs,this),e.off(k.BUFFER_EOS,this.onBufferEos,this),e.off(k.BUFFER_FLUSHING,this.onBufferFlushing,this),e.off(k.LEVEL_UPDATED,this.onLevelUpdated,this),e.off(k.FRAG_PARSED,this.onFragParsed,this),e.off(k.FRAG_CHANGED,this.onFragChanged,this)},i._initSourceBuffer=function(){this.sourceBuffer={},this.operationQueue=new nn(this.sourceBuffer),this.listeners={audio:[],video:[],audiovideo:[]},this.appendErrors={audio:0,video:0,audiovideo:0},this.lastMpegAudioChunk=null,this.blockedAudioAppend=null,this.lastVideoAppendEnd=0},i.onManifestLoading=function(){this.bufferCodecEventsExpected=this._bufferCodecEventsTotal=0,this.details=null},i.onManifestParsed=function(e,t){var i=2;(t.audio&&!t.video||!t.altAudio)&&(i=1),this.bufferCodecEventsExpected=this._bufferCodecEventsTotal=i,this.log(this.bufferCodecEventsExpected+" bufferCodec event(s) expected")},i.onMediaAttaching=function(e,t){var i=this.media=t.media,r=dt(this.appendSource);if(i&&r){var s,a=this.mediaSource=new r;this.log("created media source: "+(null==(s=a.constructor)?void 0:s.name)),a.addEventListener("sourceopen",this._onMediaSourceOpen),a.addEventListener("sourceended",this._onMediaSourceEnded),a.addEventListener("sourceclose",this._onMediaSourceClose),this.appendSource&&(a.addEventListener("startstreaming",this._onStartStreaming),a.addEventListener("endstreaming",this._onEndStreaming));var n=this._objectUrl=self.URL.createObjectURL(a);if(this.appendSource)try{i.removeAttribute("src");var o=self.ManagedMediaSource;i.disableRemotePlayback=i.disableRemotePlayback||o&&a instanceof o,dn(i),hn(i,n),i.load()}catch(e){i.src=n}else i.src=n;i.addEventListener("emptied",this._onMediaEmptied)}},i.onMediaDetaching=function(){var e=this.media,t=this.mediaSource,i=this._objectUrl;if(t){if(this.log("media source detaching"),"open"===t.readyState)try{t.endOfStream()}catch(e){this.warn("onMediaDetaching: "+e.message+" while calling endOfStream")}this.onBufferReset(),t.removeEventListener("sourceopen",this._onMediaSourceOpen),t.removeEventListener("sourceended",this._onMediaSourceEnded),t.removeEventListener("sourceclose",this._onMediaSourceClose),this.appendSource&&(t.removeEventListener("startstreaming",this._onStartStreaming),t.removeEventListener("endstreaming",this._onEndStreaming)),this.mediaSource=null,this._objectUrl=null}e&&(e.removeEventListener("emptied",this._onMediaEmptied),i&&self.URL.revokeObjectURL(i),this.mediaSrc===i?(e.removeAttribute("src"),this.appendSource&&dn(e),e.load()):this.warn("media|source.src was changed by a third party - skip cleanup"),this.media=null),this.bufferCodecEventsExpected=this._bufferCodecEventsTotal,this.pendingTracks={},this.tracks={},this.hls.trigger(k.MEDIA_DETACHED,void 0)},i.onBufferReset=function(){var e=this;this.getSourceBufferTypes().forEach((function(t){e.resetBuffer(t)})),this._initSourceBuffer(),this.hls.resumeBuffering()},i.resetBuffer=function(e){var t=this.sourceBuffer[e];try{var i;t&&(this.removeBufferListeners(e),this.sourceBuffer[e]=void 0,null!=(i=this.mediaSource)&&i.sourceBuffers.length&&this.mediaSource.removeSourceBuffer(t))}catch(t){this.warn("onBufferReset "+e,t)}},i.onBufferCodecs=function(e,t){var i=this,r=this.getSourceBufferTypes().length,s=Object.keys(t);if(s.forEach((function(e){if(r){var s,a=i.tracks[e];if(a&&"function"==typeof(null==(s=a.buffer)?void 0:s.changeType)){var n,o=t[e],l=o.id,d=o.codec,h=o.levelCodec,c=o.container,u=o.metadata,p=_t(a.codec,a.levelCodec),f=null==p?void 0:p.replace(on,"$1"),y=_t(d,h),m=null==(n=y)?void 0:n.replace(on,"$1");if(y&&f!==m){"audio"===e.slice(0,5)&&(y=bt(y,i.appendSource));var g=c+";codecs="+y;i.appendChangeType(e,g),i.log("switching codec "+p+" to "+y),i.tracks[e]={buffer:a.buffer,codec:d,container:c,levelCodec:h,metadata:u,id:l}}}}else i.pendingTracks[e]=t[e]})),!r){var a=Math.max(this.bufferCodecEventsExpected-1,0);this.bufferCodecEventsExpected!==a&&(this.log(a+" bufferCodec event(s) expected "+s.join(",")),this.bufferCodecEventsExpected=a),this.mediaSource&&"open"===this.mediaSource.readyState&&this.checkPendingTracks()}},i.appendChangeType=function(e,t){var i=this,r=this.operationQueue,s={execute:function(){var s=i.sourceBuffer[e];s&&(i.log("changing "+e+" sourceBuffer type to "+t),s.changeType(t)),r.shiftAndExecuteNext(e)},onStart:function(){},onComplete:function(){},onError:function(t){i.warn("Failed to change "+e+" SourceBuffer type",t)}};r.append(s,e,!!this.pendingTracks[e])},i.blockAudio=function(e){var t,i=this,r=e.start,s=r+.05*e.duration;if(!0!==(null==(t=this.fragmentTracker.getAppendedFrag(r,Nt.MAIN))?void 0:t.gap)){var a={execute:function(){var e;(i.lastVideoAppendEnd>s||i.sourceBuffer.video&&Fr.isBuffered(i.sourceBuffer.video,s)||!0===(null==(e=i.fragmentTracker.getAppendedFrag(s,Nt.MAIN))?void 0:e.gap))&&(i.blockedAudioAppend=null,i.operationQueue.shiftAndExecuteNext("audio"))},onStart:function(){},onComplete:function(){},onError:function(){}};this.blockedAudioAppend={op:a,frag:e},this.operationQueue.append(a,"audio",!0)}},i.unblockAudio=function(){var e=this.blockedAudioAppend;e&&(this.blockedAudioAppend=null,this.operationQueue.unblockAudio(e.op))},i.onBufferAppending=function(e,t){var i=this,r=this.operationQueue,s=this.tracks,a=t.data,n=t.type,o=t.parent,l=t.frag,d=t.part,h=t.chunkMeta,c=h.buffering[n],u=l.sn,p=self.performance.now();c.start=p;var f=l.stats.buffering,y=d?d.stats.buffering:null;0===f.start&&(f.start=p),y&&0===y.start&&(y.start=p);var m=s.audio,g=!1;"audio"===n&&"audio/mpeg"===(null==m?void 0:m.container)&&(g=!this.lastMpegAudioChunk||1===h.id||this.lastMpegAudioChunk.sn!==h.sn,this.lastMpegAudioChunk=h);var A=this.sourceBuffer.video;if(A&&"initSegment"!==u){var v=d||l,b=this.blockedAudioAppend;if("audio"!==n||"main"===o||this.blockedAudioAppend){if("video"===n){var _=v.end;if(b){var w=b.frag.start;(_>w||_=.1&&(i.log("Updating audio SourceBuffer timestampOffset to "+R+" (delta: "+t+") sn: "+u+")"),e.timestampOffset=R)}}i.appendExecutor(a,n)},onStart:function(){},onComplete:function(){var e=self.performance.now();c.executeEnd=c.end=e,0===f.first&&(f.first=e),y&&0===y.first&&(y.first=e);var t=i.sourceBuffer,r={};for(var s in t)r[s]=Fr.getBuffered(t[s]);i.appendErrors[n]=0,"audio"===n||"video"===n?i.appendErrors.audiovideo=0:(i.appendErrors.audio=0,i.appendErrors.video=0),i.hls.trigger(k.BUFFER_APPENDED,{type:n,frag:l,part:d,chunkMeta:h,parent:l.type,timeRanges:r})},onError:function(e){var t={type:C.MEDIA_ERROR,parent:l.type,details:D.BUFFER_APPEND_ERROR,sourceBufferName:n,frag:l,part:d,chunkMeta:h,error:e,err:e,fatal:!1};if(e.code===DOMException.QUOTA_EXCEEDED_ERR)t.details=D.BUFFER_FULL_ERROR;else{var r=++i.appendErrors[n];t.details=D.BUFFER_APPEND_ERROR,i.warn("Failed "+r+"/"+i.hls.config.appendErrorMaxRetry+' times to append segment in "'+n+'" sourceBuffer'),r>=i.hls.config.appendErrorMaxRetry&&(t.fatal=!0)}i.hls.trigger(k.ERROR,t)}};r.append(x,n,!!this.pendingTracks[n])},i.getFlushOp=function(e,t,i){var r=this;return{execute:function(){r.removeExecutor(e,t,i)},onStart:function(){},onComplete:function(){r.hls.trigger(k.BUFFER_FLUSHED,{type:e})},onError:function(t){r.warn("Failed to remove from "+e+" SourceBuffer",t)}}},i.onBufferFlushing=function(e,t){var i=this,r=this.operationQueue,s=t.type,a=t.startOffset,n=t.endOffset;s?r.append(this.getFlushOp(s,a,n),s):this.getSourceBufferTypes().forEach((function(e){r.append(i.getFlushOp(e,a,n),e)}))},i.onFragParsed=function(e,t){var i=this,r=t.frag,s=t.part,a=[],n=s?s.elementaryStreams:r.elementaryStreams;n[$.AUDIOVIDEO]?a.push("audiovideo"):(n[$.AUDIO]&&a.push("audio"),n[$.VIDEO]&&a.push("video"));var o=function(){var e=self.performance.now();r.stats.buffering.end=e,s&&(s.stats.buffering.end=e);var t=s?s.stats:r.stats;i.hls.trigger(k.FRAG_BUFFERED,{frag:r,part:s,stats:t,id:r.type})};0===a.length&&this.warn("Fragments must have at least one ElementaryStreamType set. type: "+r.type+" level: "+r.level+" sn: "+r.sn),this.blockBuffers(o,a)},i.onFragChanged=function(e,t){this.trimBuffers()},i.onBufferEos=function(e,t){var i=this;"video"===t.type&&this.unblockAudio(),this.getSourceBufferTypes().reduce((function(e,r){var s=i.sourceBuffer[r];return!s||t.type&&t.type!==r||(s.ending=!0,s.ended||(s.ended=!0,i.log(r+" sourceBuffer now EOS"))),e&&!(s&&!s.ended)}),!0)&&(this.log("Queueing mediaSource.endOfStream()"),this.blockBuffers((function(){i.getSourceBufferTypes().forEach((function(e){var t=i.sourceBuffer[e];t&&(t.ending=!1)}));var e=i.mediaSource;e&&"open"===e.readyState?(i.log("Calling mediaSource.endOfStream()"),e.endOfStream()):e&&i.log("Could not call mediaSource.endOfStream(). mediaSource.readyState: "+e.readyState)})))},i.onLevelUpdated=function(e,t){var i=this,r=t.details;if(r.fragments.length){this.details=r;var s=this.getDurationAndRange();s&&(this.getSourceBufferTypes().length?this.blockBuffers((function(){return i.updateMediaSource(s)})):this.updateMediaSource(s))}},i.trimBuffers=function(){var e=this.hls,t=this.details,i=this.media;if(i&&null!==t&&this.getSourceBufferTypes().length){var r=e.config,s=i.currentTime,a=t.levelTargetDuration,n=t.live&&null!==r.liveBackBufferLength?r.liveBackBufferLength:r.backBufferLength;if(E(n)&&n>0){var o=Math.max(n,a),l=Math.floor(s/a)*a-o;this.flushBackBuffer(s,a,l)}if(E(r.frontBufferFlushThreshold)&&r.frontBufferFlushThreshold>0){var d=Math.max(r.maxBufferLength,r.frontBufferFlushThreshold),h=Math.max(d,a),c=Math.floor(s/a)*a+h;this.flushFrontBuffer(s,a,c)}}},i.flushBackBuffer=function(e,t,i){var r=this,s=this.details,a=this.sourceBuffer;this.getSourceBufferTypes().forEach((function(n){var o=a[n];if(o){var l=Fr.getBuffered(o);if(l.length>0&&i>l.start(0)){if(r.hls.trigger(k.BACK_BUFFER_REACHED,{bufferEnd:i}),null!=s&&s.live)r.hls.trigger(k.LIVE_BACK_BUFFER_REACHED,{bufferEnd:i});else if(o.ended&&l.end(l.length-1)-e<2*t)return void r.log("Cannot flush "+n+" back buffer while SourceBuffer is in ended state");r.hls.trigger(k.BUFFER_FLUSHING,{startOffset:0,endOffset:i,type:n})}}}))},i.flushFrontBuffer=function(e,t,i){var r=this,s=this.sourceBuffer;this.getSourceBufferTypes().forEach((function(a){var n=s[a];if(n){var o=Fr.getBuffered(n),l=o.length;if(l<2)return;var d=o.start(l-1),h=o.end(l-1);if(i>d||e>=d&&e<=h)return;if(n.ended&&e-h<2*t)return void r.log("Cannot flush "+a+" front buffer while SourceBuffer is in ended state");r.hls.trigger(k.BUFFER_FLUSHING,{startOffset:d,endOffset:1/0,type:a})}}))},i.getDurationAndRange=function(){if(!this.details||!this.media||!this.mediaSource||"open"!==this.mediaSource.readyState)return null;var e=this.details,t=this.hls,i=this.media,r=this.mediaSource,s=e.fragments[0].start+e.totalduration,a=i.duration,n=E(r.duration)?r.duration:0;if(e.live&&t.config.liveDurationInfinity){if(r.duration=1/0,e.fragments.length&&e.live&&r.setLiveSeekableRange){var o=Math.max(0,e.fragments[0].start);return{duration:1/0,start:o,end:Math.max(o,o+e.totalduration)}}return{duration:1/0}}return s>n&&s>a||!E(a)?{duration:s}:null},i.updateMediaSource=function(e){var t=e.duration,i=e.start,r=e.end;this.media&&this.mediaSource&&"open"===this.mediaSource.readyState&&(E(t)&&this.log("Updating Media Source duration to "+t.toFixed(3)),this.mediaSource.duration=t,void 0!==i&&void 0!==r&&(this.log("Media Source duration is set to "+this.mediaSource.duration+". Setting seekable range to "+i+"-"+r+"."),this.mediaSource.setLiveSeekableRange(i,r)))},i.checkPendingTracks=function(){var e=this.bufferCodecEventsExpected,t=this.operationQueue,i=this.pendingTracks,r=Object.keys(i).length;if(r&&(!e||2===r||"audiovideo"in i)){this.createSourceBuffers(i),this.pendingTracks={};var s=this.getSourceBufferTypes();if(s.length)this.hls.trigger(k.BUFFER_CREATED,{tracks:this.tracks}),s.forEach((function(e){t.executeNext(e)}));else{var a=new Error("could not create source buffer for media codec(s)");this.hls.trigger(k.ERROR,{type:C.MEDIA_ERROR,details:D.BUFFER_INCOMPATIBLE_CODECS_ERROR,fatal:!0,error:a,reason:a.message})}}},i.createSourceBuffers=function(e){var t=this,i=this.sourceBuffer,r=this.mediaSource;if(!r)throw Error("createSourceBuffers called when mediaSource was null");var s=function(s){if(!i[s]){var a=e[s];if(!a)throw Error("source buffer exists for track "+s+", however track does not");var n=a.levelCodec||a.codec;n&&"audio"===s.slice(0,5)&&(n=bt(n,t.appendSource));var o=a.container+";codecs="+n;t.log("creating sourceBuffer("+o+")");try{var l=i[s]=r.addSourceBuffer(o),d=s;t.addBufferListener(d,"updatestart",t._onSBUpdateStart),t.addBufferListener(d,"updateend",t._onSBUpdateEnd),t.addBufferListener(d,"error",t._onSBUpdateError),t.appendSource&&t.addBufferListener(d,"bufferedchange",(function(e,i){var r=i.removedRanges;null!=r&&r.length&&t.hls.trigger(k.BUFFER_FLUSHED,{type:s})})),t.tracks[s]={buffer:l,codec:n,container:a.container,levelCodec:a.levelCodec,metadata:a.metadata,id:a.id}}catch(e){t.error("error while trying to add sourceBuffer: "+e.message),t.hls.trigger(k.ERROR,{type:C.MEDIA_ERROR,details:D.BUFFER_ADD_CODEC_ERROR,fatal:!1,error:e,sourceBufferName:s,mimeType:o})}}};for(var a in e)s(a)},i._onSBUpdateStart=function(e){this.operationQueue.current(e).onStart()},i._onSBUpdateEnd=function(e){var t;if("closed"!==(null==(t=this.mediaSource)?void 0:t.readyState)){var i=this.operationQueue;i.current(e).onComplete(),i.shiftAndExecuteNext(e)}else this.resetBuffer(e)},i._onSBUpdateError=function(e,t){var i,r=new Error(e+" SourceBuffer error. MediaSource readyState: "+(null==(i=this.mediaSource)?void 0:i.readyState));this.error(""+r,t),this.hls.trigger(k.ERROR,{type:C.MEDIA_ERROR,details:D.BUFFER_APPENDING_ERROR,sourceBufferName:e,error:r,fatal:!1});var s=this.operationQueue.current(e);s&&s.onError(r)},i.removeExecutor=function(e,t,i){var r=this.media,s=this.mediaSource,a=this.operationQueue,n=this.sourceBuffer[e];if(!r||!s||!n)return this.warn("Attempting to remove from the "+e+" SourceBuffer, but it does not exist"),void a.shiftAndExecuteNext(e);var o=E(r.duration)?r.duration:1/0,l=E(s.duration)?s.duration:1/0,d=Math.max(0,t),h=Math.min(i,o,l);h>d&&(!n.ending||n.ended)?(n.ended=!1,this.log("Removing ["+d+","+h+"] from the "+e+" SourceBuffer"),n.remove(d,h)):a.shiftAndExecuteNext(e)},i.appendExecutor=function(e,t){var i=this.sourceBuffer[t];if(i)i.ending=!1,i.ended=!1,i.appendBuffer(e);else if(!this.pendingTracks[t])throw new Error("Attempting to append to the "+t+" SourceBuffer, but it does not exist")},i.blockBuffers=function(e,t){var i=this;if(void 0===t&&(t=this.getSourceBufferTypes()),!t.length)return this.log("Blocking operation requested, but no SourceBuffers exist"),void Promise.resolve().then(e);var r=this.operationQueue,s=t.map((function(e){return r.appendBlocker(e)}));t.length>1&&!!this.blockedAudioAppend&&this.unblockAudio(),Promise.all(s).then((function(s){e(),t.forEach((function(e,t){var s=i.sourceBuffer[e];null!=s&&s.updating||r.shiftAndExecuteNext(e)}))}))},i.getSourceBufferTypes=function(){return Object.keys(this.sourceBuffer)},i.addBufferListener=function(e,t,i){var r=this.sourceBuffer[e];if(r){var s=i.bind(this,e);this.listeners[e].push({event:t,listener:s}),r.addEventListener(t,s)}},i.removeBufferListeners=function(e){var t=this.sourceBuffer[e];t&&this.listeners[e].forEach((function(e){t.removeEventListener(e.event,e.listener)}))},d(t,[{key:"mediaSrc",get:function(){var e,t=(null==(e=this.media)?void 0:e.firstChild)||this.media;return null==t?void 0:t.src}}])}(I);function dn(e){var t=e.querySelectorAll("source");[].slice.call(t).forEach((function(t){e.removeChild(t)}))}function hn(e,t){var i=self.document.createElement("source");i.type="video/mp4",i.src=t,e.appendChild(i)}var cn={42:225,92:233,94:237,95:243,96:250,123:231,124:247,125:209,126:241,127:9608,128:174,129:176,130:189,131:191,132:8482,133:162,134:163,135:9834,136:224,137:32,138:232,139:226,140:234,141:238,142:244,143:251,144:193,145:201,146:211,147:218,148:220,149:252,150:8216,151:161,152:42,153:8217,154:9473,155:169,156:8480,157:8226,158:8220,159:8221,160:192,161:194,162:199,163:200,164:202,165:203,166:235,167:206,168:207,169:239,170:212,171:217,172:249,173:219,174:171,175:187,176:195,177:227,178:205,179:204,180:236,181:210,182:242,183:213,184:245,185:123,186:125,187:92,188:94,189:95,190:124,191:8764,192:196,193:228,194:214,195:246,196:223,197:165,198:164,199:9475,200:197,201:229,202:216,203:248,204:9487,205:9491,206:9495,207:9499},un=function(e){var t=e;return cn.hasOwnProperty(e)&&(t=cn[e]),String.fromCharCode(t)},pn=15,fn=100,yn={17:1,18:3,21:5,22:7,23:9,16:11,19:12,20:14},mn={17:2,18:4,21:6,22:8,23:10,19:13,20:15},gn={25:1,26:3,29:5,30:7,31:9,24:11,27:12,28:14},An={25:2,26:4,29:6,30:8,31:10,27:13,28:15},vn=["white","green","blue","cyan","red","yellow","magenta","black","transparent"],bn=function(){function e(){this.time=null,this.verboseLevel=0}return e.prototype.log=function(e,t){if(this.verboseLevel>=e){var i="function"==typeof t?t():t;G.log(this.time+" ["+e+"] "+i)}},e}(),_n=function(e){for(var t=[],i=0;ifn&&(this.logger.log(3,"Too large cursor position "+this.pos),this.pos=fn)},t.moveCursor=function(e){var t=this.pos+e;if(e>1)for(var i=this.pos+1;i=144&&this.backSpace();var i=un(e);this.pos>=fn?this.logger.log(0,(function(){return"Cannot insert "+e.toString(16)+" ("+i+") at position "+t.pos+". Skipping it!"})):(this.chars[this.pos].setChar(i,this.currPenState),this.moveCursor(1))},t.clearFromPos=function(e){var t;for(t=e;t0&&(i=e?"["+t.join(" | ")+"]":t.join("\n")),i},t.getTextAndFormat=function(){return this.rows},e}(),kn=function(){function e(e,t,i){this.chNr=void 0,this.outputFilter=void 0,this.mode=void 0,this.verbose=void 0,this.displayedMemory=void 0,this.nonDisplayedMemory=void 0,this.lastOutputScreen=void 0,this.currRollUpRow=void 0,this.writeScreen=void 0,this.cueStartTime=void 0,this.logger=void 0,this.chNr=e,this.outputFilter=t,this.mode=null,this.verbose=0,this.displayedMemory=new Tn(i),this.nonDisplayedMemory=new Tn(i),this.lastOutputScreen=new Tn(i),this.currRollUpRow=this.displayedMemory.rows[pn-1],this.writeScreen=this.displayedMemory,this.mode=null,this.cueStartTime=null,this.logger=i}var t=e.prototype;return t.reset=function(){this.mode=null,this.displayedMemory.reset(),this.nonDisplayedMemory.reset(),this.lastOutputScreen.reset(),this.outputFilter.reset(),this.currRollUpRow=this.displayedMemory.rows[pn-1],this.writeScreen=this.displayedMemory,this.mode=null,this.cueStartTime=null},t.getHandler=function(){return this.outputFilter},t.setHandler=function(e){this.outputFilter=e},t.setPAC=function(e){this.writeScreen.setPAC(e)},t.setBkgData=function(e){this.writeScreen.setBkgData(e)},t.setMode=function(e){e!==this.mode&&(this.mode=e,this.logger.log(2,(function(){return"MODE="+e})),"MODE_POP-ON"===this.mode?this.writeScreen=this.nonDisplayedMemory:(this.writeScreen=this.displayedMemory,this.writeScreen.reset()),"MODE_ROLL-UP"!==this.mode&&(this.displayedMemory.nrRollUpRows=null,this.nonDisplayedMemory.nrRollUpRows=null),this.mode=e)},t.insertChars=function(e){for(var t=this,i=0;i=46,t.italics)t.foreground="white";else{var i=Math.floor(e/2)-16,r=["white","green","blue","cyan","red","yellow","magenta"];t.foreground=r[i]}this.logger.log(2,"MIDROW: "+JSON.stringify(t)),this.writeScreen.setPen(t)},t.outputDataUpdate=function(e){void 0===e&&(e=!1);var t=this.logger.time;null!==t&&this.outputFilter&&(null!==this.cueStartTime||this.displayedMemory.isEmpty()?this.displayedMemory.equals(this.lastOutputScreen)||(this.outputFilter.newCue(this.cueStartTime,t,this.lastOutputScreen),e&&this.outputFilter.dispatchCue&&this.outputFilter.dispatchCue(),this.cueStartTime=this.displayedMemory.isEmpty()?null:t):this.cueStartTime=t,this.lastOutputScreen.copy(this.displayedMemory))},t.cueSplitAtTime=function(e){this.outputFilter&&(this.displayedMemory.isEmpty()||(this.outputFilter.newCue&&this.outputFilter.newCue(this.cueStartTime,e,this.displayedMemory),this.cueStartTime=e))},e}(),Cn=function(){function e(e,t,i){this.channels=void 0,this.currentChannel=0,this.cmdHistory=xn(),this.logger=void 0;var r=this.logger=new bn;this.channels=[null,new kn(e,t,r),new kn(e+1,i,r)]}var t=e.prototype;return t.getHandler=function(e){return this.channels[e].getHandler()},t.setHandler=function(e,t){this.channels[e].setHandler(t)},t.addData=function(e,t){var i,r,s,a=!1;this.logger.time=e;for(var n=0;n ("+_n([r,s])+")"),(i=this.parseCmd(r,s))||(i=this.parseMidrow(r,s)),i||(i=this.parsePAC(r,s)),i||(i=this.parseBackgroundAttributes(r,s)),!i&&(a=this.parseChars(r,s))){var o=this.currentChannel;o&&o>0?this.channels[o].insertChars(a):this.logger.log(2,"No channel found yet. TEXT-MODE?")}i||a||this.logger.log(2,"Couldn't parse cleaned data "+_n([r,s])+" orig: "+_n([t[n],t[n+1]]))}},t.parseCmd=function(e,t){var i=this.cmdHistory;if(!((20===e||28===e||21===e||29===e)&&t>=32&&t<=47||(23===e||31===e)&&t>=33&&t<=35))return!1;if(Rn(e,t,i))return Dn(null,null,i),this.logger.log(3,"Repeated command ("+_n([e,t])+") is dropped"),!0;var r=20===e||21===e||23===e?1:2,s=this.channels[r];return 20===e||21===e||28===e||29===e?32===t?s.ccRCL():33===t?s.ccBS():34===t?s.ccAOF():35===t?s.ccAON():36===t?s.ccDER():37===t?s.ccRU(2):38===t?s.ccRU(3):39===t?s.ccRU(4):40===t?s.ccFON():41===t?s.ccRDC():42===t?s.ccTR():43===t?s.ccRTD():44===t?s.ccEDM():45===t?s.ccCR():46===t?s.ccENM():47===t&&s.ccEOC():s.ccTO(t-32),Dn(e,t,i),this.currentChannel=r,!0},t.parseMidrow=function(e,t){var i=0;if((17===e||25===e)&&t>=32&&t<=47){if((i=17===e?1:2)!==this.currentChannel)return this.logger.log(0,"Mismatch channel in midrow parsing"),!1;var r=this.channels[i];return!!r&&(r.ccMIDROW(t),this.logger.log(3,"MIDROW ("+_n([e,t])+")"),!0)}return!1},t.parsePAC=function(e,t){var i,r=this.cmdHistory;if(!((e>=17&&e<=23||e>=25&&e<=31)&&t>=64&&t<=127||(16===e||24===e)&&t>=64&&t<=95))return!1;if(Rn(e,t,r))return Dn(null,null,r),!0;var s=e<=23?1:2;i=t>=64&&t<=95?1===s?yn[e]:gn[e]:1===s?mn[e]:An[e];var a=this.channels[s];return!!a&&(a.setPAC(this.interpretPAC(i,t)),Dn(e,t,r),this.currentChannel=s,!0)},t.interpretPAC=function(e,t){var i,r={color:null,italics:!1,indent:null,underline:!1,row:e};return i=t>95?t-96:t-64,r.underline=!(1&~i),i<=13?r.color=["white","green","blue","cyan","red","yellow","magenta","white"][Math.floor(i/2)]:i<=15?(r.italics=!0,r.color="white"):r.indent=4*Math.floor((i-16)/2),r},t.parseChars=function(e,t){var i,r,s=null,a=null;if(e>=25?(i=2,a=e-8):(i=1,a=e),a>=17&&a<=19?(r=17===a?t+80:18===a?t+112:t+144,this.logger.log(2,"Special char '"+un(r)+"' in channel "+i),s=[r]):e>=32&&e<=127&&(s=0===t?[e]:[e,t]),s){var n=_n(s);this.logger.log(3,"Char codes = "+n.join(",")),Dn(e,t,this.cmdHistory)}return s},t.parseBackgroundAttributes=function(e,t){var i;if(!((16===e||24===e)&&t>=32&&t<=47||(23===e||31===e)&&t>=45&&t<=47))return!1;var r={};16===e||24===e?(i=Math.floor((t-32)/2),r.background=vn[i],t%2==1&&(r.background=r.background+"_semi")):45===t?r.background="transparent":(r.foreground="black",47===t&&(r.underline=!0));var s=e<=23?1:2;return this.channels[s].setBkgData(r),Dn(e,t,this.cmdHistory),!0},t.reset=function(){for(var e=0;ee)&&(this.startTime=e),this.endTime=t,this.screen=i,this.timelineController.createCaptionsTrack(this.trackName)},t.reset=function(){this.cueRanges=[],this.startTime=null},e}(),In=function(){if(null!=ae&&ae.VTTCue)return self.VTTCue;var e=["","lr","rl"],t=["start","middle","end","left","right"];function i(e,t){if("string"!=typeof t)return!1;if(!Array.isArray(e))return!1;var i=t.toLowerCase();return!!~e.indexOf(i)&&i}function r(t){return i(e,t)}function s(e){return i(t,e)}function a(e){for(var t=arguments.length,i=new Array(t>1?t-1:0),r=1;r100)throw new Error("Position must be between 0 and 100.");A=e,this.hasBeenReset=!0}})),Object.defineProperty(n,"positionAlign",a({},o,{get:function(){return v},set:function(e){var t=s(e);if(!t)throw new SyntaxError("An invalid or illegal string was specified.");v=t,this.hasBeenReset=!0}})),Object.defineProperty(n,"size",a({},o,{get:function(){return b},set:function(e){if(e<0||e>100)throw new Error("Size must be between 0 and 100.");b=e,this.hasBeenReset=!0}})),Object.defineProperty(n,"align",a({},o,{get:function(){return _},set:function(e){var t=s(e);if(!t)throw new SyntaxError("An invalid or illegal string was specified.");_=t,this.hasBeenReset=!0}})),n.displayState=void 0}return n.prototype.getCueAsHTML=function(){return self.WebVTT.convertCueToDOMTree(self,this.text)},n}(),Pn=function(){function e(){}return e.prototype.decode=function(e,t){if(!e)return"";if("string"!=typeof e)throw new Error("Error - expected string data.");return decodeURIComponent(encodeURIComponent(e))},e}();function Bn(e){function t(e,t,i,r){return 3600*(0|e)+60*(0|t)+(0|i)+parseFloat(r||0)}var i=e.match(/^(?:(\d+):)?(\d{2}):(\d{2})(\.\d+)?/);return i?parseFloat(i[2])>59?t(i[2],i[3],0,i[4]):t(i[1],i[2],i[3],i[4]):null}var Mn=function(){function e(){this.values=Object.create(null)}var t=e.prototype;return t.set=function(e,t){this.get(e)||""===t||(this.values[e]=t)},t.get=function(e,t,i){return i?this.has(e)?this.values[e]:t[i]:this.has(e)?this.values[e]:t},t.has=function(e){return e in this.values},t.alt=function(e,t,i){for(var r=0;r=0&&i<=100)return this.set(e,i),!0}return!1},e}();function Un(e,t,i,r){var s=r?e.split(r):[e];for(var a in s)if("string"==typeof s[a]){var n=s[a].split(i);2===n.length&&t(n[0],n[1])}}var Fn=new In(0,0,""),On="middle"===Fn.align?"middle":"center";function Nn(e,t,i){var r=e;function s(){var t=Bn(e);if(null===t)throw new Error("Malformed timestamp: "+r);return e=e.replace(/^[^\sa-zA-Z-]+/,""),t}function a(e,t){var r=new Mn;Un(e,(function(e,t){var s;switch(e){case"region":for(var a=i.length-1;a>=0;a--)if(i[a].id===t){r.set(e,i[a].region);break}break;case"vertical":r.alt(e,t,["rl","lr"]);break;case"line":s=t.split(","),r.integer(e,s[0]),r.percent(e,s[0])&&r.set("snapToLines",!1),r.alt(e,s[0],["auto"]),2===s.length&&r.alt("lineAlign",s[1],["start",On,"end"]);break;case"position":s=t.split(","),r.percent(e,s[0]),2===s.length&&r.alt("positionAlign",s[1],["start",On,"end","line-left","line-right","auto"]);break;case"size":r.percent(e,t);break;case"align":r.alt(e,t,["start",On,"end","left","right"])}}),/:/,/\s/),t.region=r.get("region",null),t.vertical=r.get("vertical","");var s=r.get("line","auto");"auto"===s&&-1===Fn.line&&(s=-1),t.line=s,t.lineAlign=r.get("lineAlign","start"),t.snapToLines=r.get("snapToLines",!0),t.size=r.get("size",100),t.align=r.get("align",On);var a=r.get("position","auto");"auto"===a&&50===Fn.position&&(a="start"===t.align||"left"===t.align?0:"end"===t.align||"right"===t.align?100:50),t.position=a}function n(){e=e.replace(/^\s+/,"")}if(n(),t.startTime=s(),n(),"--\x3e"!==e.slice(0,3))throw new Error("Malformed time stamp (time stamps must be separated by '--\x3e'): "+r);e=e.slice(3),n(),t.endTime=s(),n(),a(e,t)}function Gn(e){return e.replace(//gi,"\n")}var zn=function(){function e(){this.state="INITIAL",this.buffer="",this.decoder=new Pn,this.regionList=[],this.cue=null,this.oncue=void 0,this.onparsingerror=void 0,this.onflush=void 0}var t=e.prototype;return t.parse=function(e){var t=this;function i(){var e=t.buffer,i=0;for(e=Gn(e);i9?parseInt(e.substring(0,e.indexOf(":"))):0;if(!(E(t)&&E(i)&&E(r)&&E(s)))throw Error("Malformed X-TIMESTAMP-MAP: Local:"+e);return t+=1e3*i,t+=6e4*r,t+=36e5*s},$n=function(e){for(var t=5381,i=e.length;i;)t=33*t^e.charCodeAt(--i);return(t>>>0).toString()};function jn(e,t,i){return $n(e.toString())+$n(t.toString())+$n(i)}var Kn=function(e,t,i){var r=e[t],s=e[r.prevCC];if(!s||!s.new&&r.new)return e.ccOffset=e.presentationOffset=r.start,void(r.new=!1);for(;null!=(a=s)&&a.new;){var a;e.ccOffset+=r.start-s.start,r.new=!1,s=e[(r=s).prevCC]}e.presentationOffset=i};function qn(e,t,i,r,s,a,n){var o,l=new zn,d=Ae(new Uint8Array(e)).trim().replace(Wn,"\n").split("\n"),h=[],c=t?fa(t.baseTime,t.timescale):0,u="00:00.000",p=0,f=0,y=!0;l.oncue=function(e){var a=i[r],n=i.ccOffset,l=(p-c)/9e4;if(null!=a&&a.new&&(void 0!==f?n=i.ccOffset=a.start:Kn(i,r,l)),l){if(!t)return void(o=new Error("Missing initPTS for VTT MPEGTS"));n=l-i.presentationOffset}var d=e.endTime-e.startTime,u=wa(9e4*(e.startTime+n-f),9e4*s)/9e4;e.startTime=Math.max(u,0),e.endTime=Math.max(u+d,0);var y=e.text.trim();e.text=decodeURIComponent(encodeURIComponent(y)),e.id||(e.id=jn(e.startTime,e.endTime,y)),e.endTime>0&&h.push(e)},l.onparsingerror=function(e){o=e},l.onflush=function(){o?n(o):a(h)},d.forEach((function(e){if(y){if(Vn(e,"X-TIMESTAMP-MAP=")){y=!1,e.slice(16).split(",").forEach((function(e){Vn(e,"LOCAL:")?u=e.slice(6):Vn(e,"MPEGTS:")&&(p=parseInt(e.slice(7)))}));try{f=Hn(u)/1e3}catch(e){o=e}return}""===e&&(y=!1)}l.parse(e+"\n")})),l.flush()}var Yn="stpp.ttml.im1t",Qn=/^(\d{2,}):(\d{2}):(\d{2}):(\d{2})\.?(\d+)?$/,Xn=/^(\d*(?:\.\d*)?)(h|m|s|ms|f|t)$/,Jn={left:"start",center:"center",right:"end",start:"start",end:"end"};function Zn(e,t,i,r){var s=xe(new Uint8Array(e),["mdat"]);if(0!==s.length){var a=s.map((function(e){return Ae(e)})),n=ua(t.baseTime,1,t.timescale);try{a.forEach((function(e){return i(eo(e,n))}))}catch(e){r(e)}}else r(new Error("Could not parse IMSC1 mdat"))}function eo(e,t){var i=(new DOMParser).parseFromString(e,"text/xml").getElementsByTagName("tt")[0];if(!i)throw new Error("Invalid ttml");var r={frameRate:30,subFrameRate:1,frameRateMultiplier:0,tickRate:0},s=Object.keys(r).reduce((function(e,t){return e[t]=i.getAttribute("ttp:"+t)||r[t],e}),{}),a="preserve"!==i.getAttribute("xml:space"),n=io(to(i,"styling","style")),o=io(to(i,"layout","region")),l=to(i,"body","[begin]");return[].map.call(l,(function(e){var i=ro(e,a);if(!i||!e.hasAttribute("begin"))return null;var r=oo(e.getAttribute("begin"),s),l=oo(e.getAttribute("dur"),s),d=oo(e.getAttribute("end"),s);if(null===r)throw no(e);if(null===d){if(null===l)throw no(e);d=r+l}var h=new In(r-t,d-t,i);h.id=jn(h.startTime,h.endTime,h.text);var u=so(o[e.getAttribute("region")],n[e.getAttribute("style")],n),p=u.textAlign;if(p){var f=Jn[p];f&&(h.lineAlign=f),h.align=p}return c(h,u),h})).filter((function(e){return null!==e}))}function to(e,t,i){var r=e.getElementsByTagName(t)[0];return r?[].slice.call(r.querySelectorAll(i)):[]}function io(e){return e.reduce((function(e,t){var i=t.getAttribute("xml:id");return i&&(e[i]=t),e}),{})}function ro(e,t){return[].slice.call(e.childNodes).reduce((function(e,i,r){var s;return"br"===i.nodeName&&r?e+"\n":null!=(s=i.childNodes)&&s.length?ro(i,t):t?e+i.textContent.trim().replace(/\s+/g," "):e+i.textContent}),"")}function so(e,t,i){var r="http://www.w3.org/ns/ttml#styling",s=null,a=["displayAlign","textAlign","color","backgroundColor","fontSize","fontFamily"],n=null!=e&&e.hasAttribute("style")?e.getAttribute("style"):null;return n&&i.hasOwnProperty(n)&&(s=i[n]),a.reduce((function(i,a){var n=ao(t,r,a)||ao(e,r,a)||ao(s,r,a);return n&&(i[a]=n),i}),{})}function ao(e,t,i){return e&&e.hasAttributeNS(t,i)?e.getAttributeNS(t,i):null}function no(e){return new Error("Could not parse ttml timestamp "+e)}function oo(e,t){if(!e)return null;var i=Bn(e);return null===i&&(Qn.test(e)?i=lo(e,t):Xn.test(e)&&(i=ho(e,t))),i}function lo(e,t){var i=Qn.exec(e),r=(0|i[4])+(0|i[5])/t.subFrameRate;return 3600*(0|i[1])+60*(0|i[2])+(0|i[3])+r/t.frameRate}function ho(e,t){var i=Xn.exec(e),r=Number(i[1]);switch(i[2]){case"h":return 3600*r;case"m":return 60*r;case"ms":return 1e3*r;case"f":return r/t.frameRate;case"t":return r/t.tickRate}return r}var co=function(){function e(e){this.hls=void 0,this.media=null,this.config=void 0,this.enabled=!0,this.Cues=void 0,this.textTracks=[],this.tracks=[],this.initPTS=[],this.unparsedVttFrags=[],this.captionsTracks={},this.nonNativeCaptionsTracks={},this.cea608Parser1=void 0,this.cea608Parser2=void 0,this.lastCc=-1,this.lastSn=-1,this.lastPartIndex=-1,this.prevCC=-1,this.vttCCs=yo(),this.captionsProperties=void 0,this.hls=e,this.config=e.config,this.Cues=e.config.cueHandler,this.captionsProperties={textTrack1:{label:this.config.captionsTextTrack1Label,languageCode:this.config.captionsTextTrack1LanguageCode},textTrack2:{label:this.config.captionsTextTrack2Label,languageCode:this.config.captionsTextTrack2LanguageCode},textTrack3:{label:this.config.captionsTextTrack3Label,languageCode:this.config.captionsTextTrack3LanguageCode},textTrack4:{label:this.config.captionsTextTrack4Label,languageCode:this.config.captionsTextTrack4LanguageCode}},e.on(k.MEDIA_ATTACHING,this.onMediaAttaching,this),e.on(k.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(k.MANIFEST_LOADING,this.onManifestLoading,this),e.on(k.MANIFEST_LOADED,this.onManifestLoaded,this),e.on(k.SUBTITLE_TRACKS_UPDATED,this.onSubtitleTracksUpdated,this),e.on(k.FRAG_LOADING,this.onFragLoading,this),e.on(k.FRAG_LOADED,this.onFragLoaded,this),e.on(k.FRAG_PARSING_USERDATA,this.onFragParsingUserdata,this),e.on(k.FRAG_DECRYPTED,this.onFragDecrypted,this),e.on(k.INIT_PTS_FOUND,this.onInitPtsFound,this),e.on(k.SUBTITLE_TRACKS_CLEARED,this.onSubtitleTracksCleared,this),e.on(k.BUFFER_FLUSHING,this.onBufferFlushing,this)}var t=e.prototype;return t.destroy=function(){var e=this.hls;e.off(k.MEDIA_ATTACHING,this.onMediaAttaching,this),e.off(k.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(k.MANIFEST_LOADING,this.onManifestLoading,this),e.off(k.MANIFEST_LOADED,this.onManifestLoaded,this),e.off(k.SUBTITLE_TRACKS_UPDATED,this.onSubtitleTracksUpdated,this),e.off(k.FRAG_LOADING,this.onFragLoading,this),e.off(k.FRAG_LOADED,this.onFragLoaded,this),e.off(k.FRAG_PARSING_USERDATA,this.onFragParsingUserdata,this),e.off(k.FRAG_DECRYPTED,this.onFragDecrypted,this),e.off(k.INIT_PTS_FOUND,this.onInitPtsFound,this),e.off(k.SUBTITLE_TRACKS_CLEARED,this.onSubtitleTracksCleared,this),e.off(k.BUFFER_FLUSHING,this.onBufferFlushing,this),this.hls=this.config=this.media=null,this.cea608Parser1=this.cea608Parser2=void 0},t.initCea608Parsers=function(){var e=new Ln(this,"textTrack1"),t=new Ln(this,"textTrack2"),i=new Ln(this,"textTrack3"),r=new Ln(this,"textTrack4");this.cea608Parser1=new Cn(1,e,t),this.cea608Parser2=new Cn(3,i,r)},t.addCues=function(e,t,i,r,s){for(var a=!1,n=s.length;n--;){var o=s[n],l=fo(o[0],o[1],t,i);if(l>=0&&(o[0]=Math.min(o[0],t),o[1]=Math.max(o[1],i),a=!0,l/(i-t)>.5))return}if(a||s.push([t,i]),this.config.renderTextTracksNatively){var d=this.captionsTracks[e];this.Cues.newCue(d,t,i,r)}else{var h=this.Cues.newCue(null,t,i,r);this.hls.trigger(k.CUES_PARSED,{type:"captions",cues:h,track:e})}},t.onInitPtsFound=function(e,t){var i=this,r=t.frag,s=t.id,a=t.initPTS,n=t.timescale,o=this.unparsedVttFrags;"main"===s&&(this.initPTS[r.cc]={baseTime:a,timescale:n}),o.length&&(this.unparsedVttFrags=[],o.forEach((function(e){i.onFragLoaded(k.FRAG_LOADED,e)})))},t.getExistingTrack=function(e,t){var i=this.media;if(i)for(var r=0;rr.cc||l.trigger(k.SUBTITLE_FRAG_PROCESSED,{success:!1,frag:r,error:t})}))}else n.push(e)},t._fallbackToIMSC1=function(e,t){var i=this,r=this.tracks[e.level];r.textCodec||Zn(t,this.initPTS[e.cc],(function(){r.textCodec=Yn,i._parseIMSC1(e,t)}),(function(){r.textCodec="wvtt"}))},t._appendCues=function(e,t){var i=this.hls;if(this.config.renderTextTracksNatively){var r=this.textTracks[t];if(!r||"disabled"===r.mode)return;e.forEach((function(e){return Ht(r,e)}))}else{var s=this.tracks[t];if(!s)return;var a=s.default?"default":"subtitles"+t;i.trigger(k.CUES_PARSED,{type:"subtitles",cues:e,track:a})}},t.onFragDecrypted=function(e,t){t.frag.type===Nt.SUBTITLE&&this.onFragLoaded(k.FRAG_LOADED,t)},t.onSubtitleTracksCleared=function(){this.tracks=[],this.captionsTracks={}},t.onFragParsingUserdata=function(e,t){if(this.enabled&&this.config.enableCEA708Captions){var i=t.frag,r=t.samples;if(i.type!==Nt.MAIN||"NONE"!==this.closedCaptionsForLevel(i))for(var s=0;sthis.autoLevelCapping&&this.streamController&&this.streamController.nextLevelSwitch(),this.autoLevelCapping=t.autoLevelCapping}}},t.getMaxLevel=function(t){var i=this,r=this.hls.levels;if(!r.length)return-1;var s=r.filter((function(e,r){return i.isLevelAllowed(e)&&r<=t}));return this.clientRect=null,e.getMaxLevelByMediaSize(s,this.mediaWidth,this.mediaHeight)},t.startCapping=function(){this.timer||(this.autoLevelCapping=Number.POSITIVE_INFINITY,self.clearInterval(this.timer),this.timer=self.setInterval(this.detectPlayerSize.bind(this),1e3),this.detectPlayerSize())},t.stopCapping=function(){this.restrictedLevels=[],this.firstLevel=-1,this.autoLevelCapping=Number.POSITIVE_INFINITY,this.timer&&(self.clearInterval(this.timer),this.timer=void 0)},t.getDimensions=function(){if(this.clientRect)return this.clientRect;var e=this.media,t={width:0,height:0};if(e){var i=e.getBoundingClientRect();t.width=i.width,t.height=i.height,t.width||t.height||(t.width=i.right-i.left||e.width||0,t.height=i.bottom-i.top||e.height||0)}return this.clientRect=t,t},t.isLevelAllowed=function(e){return!this.restrictedLevels.some((function(t){return e.bitrate===t.bitrate&&e.width===t.width&&e.height===t.height}))},e.getMaxLevelByMediaSize=function(e,t,i){if(null==e||!e.length)return-1;for(var r=function(e,t){return!t||e.width!==t.width||e.height!==t.height},s=e.length-1,a=Math.max(t,i),n=0;n=a||o.height>=a)&&r(o,e[n+1])){s=n;break}}return s},d(e,[{key:"mediaWidth",get:function(){return this.getDimensions().width*this.contentScaleFactor}},{key:"mediaHeight",get:function(){return this.getDimensions().height*this.contentScaleFactor}},{key:"contentScaleFactor",get:function(){var e=1;if(!this.hls.config.ignoreDevicePixelRatio)try{e=self.devicePixelRatio}catch(e){}return e}}])}(),go=function(){function e(e){this.hls=void 0,this.isVideoPlaybackQualityAvailable=!1,this.timer=void 0,this.media=null,this.lastTime=void 0,this.lastDroppedFrames=0,this.lastDecodedFrames=0,this.streamController=void 0,this.hls=e,this.registerListeners()}var t=e.prototype;return t.setStreamController=function(e){this.streamController=e},t.registerListeners=function(){this.hls.on(k.MEDIA_ATTACHING,this.onMediaAttaching,this),this.hls.on(k.MEDIA_DETACHING,this.onMediaDetaching,this)},t.unregisterListeners=function(){this.hls.off(k.MEDIA_ATTACHING,this.onMediaAttaching,this),this.hls.off(k.MEDIA_DETACHING,this.onMediaDetaching,this)},t.destroy=function(){this.timer&&clearInterval(this.timer),this.unregisterListeners(),this.isVideoPlaybackQualityAvailable=!1,this.media=null},t.onMediaAttaching=function(e,t){var i=this.hls.config;if(i.capLevelOnFPSDrop){var r=t.media instanceof self.HTMLVideoElement?t.media:null;this.media=r,r&&"function"==typeof r.getVideoPlaybackQuality&&(this.isVideoPlaybackQualityAvailable=!0),self.clearInterval(this.timer),this.timer=self.setInterval(this.checkFPSInterval.bind(this),i.fpsDroppedMonitoringPeriod)}},t.onMediaDetaching=function(){this.media=null},t.checkFPS=function(e,t,i){var r=performance.now();if(t){if(this.lastTime){var s=r-this.lastTime,a=i-this.lastDroppedFrames,n=t-this.lastDecodedFrames,o=1e3*a/s,l=this.hls;if(l.trigger(k.FPS_DROP,{currentDropped:a,currentDecoded:n,totalDroppedFrames:i}),o>0&&a>l.config.fpsDroppedMonitoringThreshold*n){var d=l.currentLevel;l.logger.warn("drop FPS ratio greater than max allowed value for currentLevel: "+d),d>0&&(-1===l.autoLevelCapping||l.autoLevelCapping>=d)&&(d-=1,l.trigger(k.FPS_DROP_LEVEL_CAPPING,{level:d,droppedLevel:l.currentLevel}),l.autoLevelCapping=d,this.streamController.nextLevelSwitch())}}this.lastTime=r,this.lastDroppedFrames=i,this.lastDecodedFrames=t}},t.checkFPSInterval=function(){var e=this.media;if(e)if(this.isVideoPlaybackQualityAvailable){var t=e.getVideoPlaybackQuality();this.checkFPS(e,t.totalVideoFrames,t.droppedVideoFrames)}else this.checkFPS(e,e.webkitDecodedFrameCount,e.webkitDroppedFrameCount)},e}(),Ao=function(e){function t(i){var r;return(r=e.call(this,"eme",i.logger)||this).hls=void 0,r.config=void 0,r.media=null,r.keyFormatPromise=null,r.keySystemAccessPromises={},r._requestLicenseFailureCount=0,r.mediaKeySessions=[],r.keyIdToKeySessionPromise={},r.setMediaKeysQueue=t.CDMCleanupPromise?[t.CDMCleanupPromise]:[],r.onMediaEncrypted=function(e){var t=e.initDataType,i=e.initData;if(r.debug('"'+e.type+'" event: init data type: "'+t+'"'),null!==i){var s,a;if("sinf"===t&&r.config.drmSystems[ne.FAIRPLAY]){var n=Ee(new Uint8Array(i));try{var o=X(JSON.parse(n).sinf),l=Oe(new Uint8Array(o));if(!l)return;s=l.subarray(8,24),a=ne.FAIRPLAY}catch(e){return void r.warn('Failed to parse sinf "encrypted" event message initData')}}else{var d=Ze(i);if(null===d)return;0===d.version&&d.systemId===de.WIDEVINE&&d.data&&(s=d.data.subarray(8,24)),a=he(d.systemId)}if(a&&s){for(var h,c=ve.hexDump(s),u=r,p=u.keyIdToKeySessionPromise,f=u.mediaKeySessions,y=p[c],m=function(){var e=f[g],a=e.decryptdata;if(a.pssh||!a.keyId)return 0;var n=ve.hexDump(a.keyId);return c===n||-1!==a.uri.replace(/-/g,"").indexOf(c)?(y=p[n],delete p[n],a.pssh=new Uint8Array(i),a.keyId=s,y=p[c]=y.then((function(){return r.generateRequestWithPreferredKeySession(e,t,i,"encrypted-event-key-match")})),1):void 0},g=0;g0)for(var a,n=0,o=s.length;n in key message");return J(atob(p))},i.setupLicenseXHR=function(e,t,i,r){var s=this,a=this.config.licenseXhrSetup;return a?Promise.resolve().then((function(){if(!i.decryptdata)throw new Error("Key removed");return a.call(s.hls,e,t,i,r)})).catch((function(n){if(!i.decryptdata)throw n;return e.open("POST",t,!0),a.call(s.hls,e,t,i,r)})).then((function(i){return e.readyState||e.open("POST",t,!0),{xhr:e,licenseChallenge:i||r}})):(e.open("POST",t,!0),Promise.resolve({xhr:e,licenseChallenge:r}))},i.requestLicense=function(e,t){var i=this,r=this.config.keyLoadPolicy.default;return new Promise((function(s,a){var n=i.getLicenseServerUrl(e.keySystem);i.log("Sending license request to URL: "+n);var o=new XMLHttpRequest;o.responseType="arraybuffer",o.onreadystatechange=function(){if(!i.hls||!e.mediaKeysSession)return a(new Error("invalid state"));if(4===o.readyState)if(200===o.status){i._requestLicenseFailureCount=0;var l=o.response;i.log("License received "+(l instanceof ArrayBuffer?l.byteLength:l));var d=i.config.licenseResponseCallback;if(d)try{l=d.call(i.hls,o,n,e)}catch(e){i.error(e)}s(l)}else{var h=r.errorRetry,c=h?h.maxNumRetry:0;if(i._requestLicenseFailureCount++,i._requestLicenseFailureCount>c||o.status>=400&&o.status<500)a(new Eo({type:C.KEY_SYSTEM_ERROR,details:D.KEY_SYSTEM_LICENSE_REQUEST_FAILED,fatal:!0,networkDetails:o,response:{url:n,data:void 0,code:o.status,text:o.statusText}},"License Request XHR failed ("+n+"). Status: "+o.status+" ("+o.statusText+")"));else{var u=c-i._requestLicenseFailureCount+1;i.warn("Retrying license request, "+u+" attempts left"),i.requestLicense(e,t).then(s,a)}}},e.licenseXhr&&e.licenseXhr.readyState!==XMLHttpRequest.DONE&&e.licenseXhr.abort(),e.licenseXhr=o,i.setupLicenseXHR(o,n,e,t).then((function(t){var r=t.xhr,s=t.licenseChallenge;e.keySystem==ne.PLAYREADY&&(s=i.unpackPlayReadyKeyMessage(r,s)),r.send(s)}))}))},i.onMediaAttached=function(e,t){if(this.config.emeEnabled){var i=t.media;this.media=i,i.addEventListener("encrypted",this.onMediaEncrypted),i.addEventListener("waitingforkey",this.onWaitingForKey)}},i.onMediaDetached=function(){var e=this,i=this.media,r=this.mediaKeySessions;i&&(i.removeEventListener("encrypted",this.onMediaEncrypted),i.removeEventListener("waitingforkey",this.onWaitingForKey),this.media=null),this._requestLicenseFailureCount=0,this.setMediaKeysQueue=[],this.mediaKeySessions=[],this.keyIdToKeySessionPromise={},tt.clearKeyUriToKeyIdMap();var s=r.length;t.CDMCleanupPromise=Promise.all(r.map((function(t){return e.removeSession(t)})).concat(null==i?void 0:i.setMediaKeys(null).catch((function(t){e.log("Could not clear media keys: "+t)})))).then((function(){s&&(e.log("finished closing key sessions and clearing media keys"),r.length=0)})).catch((function(t){e.log("Could not close sessions and clear media keys: "+t)}))},i.onManifestLoading=function(){this.keyFormatPromise=null},i.onManifestLoaded=function(e,t){var i=t.sessionKeys;if(i&&this.config.emeEnabled&&!this.keyFormatPromise){var r=i.reduce((function(e,t){return-1===e.indexOf(t.keyFormat)&&e.push(t.keyFormat),e}),[]);this.log("Selecting key-system from session-keys "+r.join(", ")),this.keyFormatPromise=this.getKeyFormatPromise(r)}},i.removeSession=function(e){var t=this,i=e.mediaKeysSession,r=e.licenseXhr;if(i){this.log("Remove licenses and keys and close session "+i.sessionId),e._onmessage&&(i.removeEventListener("message",e._onmessage),e._onmessage=void 0),e._onkeystatuseschange&&(i.removeEventListener("keystatuseschange",e._onkeystatuseschange),e._onkeystatuseschange=void 0),r&&r.readyState!==XMLHttpRequest.DONE&&r.abort(),e.mediaKeysSession=e.decryptdata=e.licenseXhr=void 0;var s=this.mediaKeySessions.indexOf(e);return s>-1&&this.mediaKeySessions.splice(s,1),i.remove().catch((function(e){t.log("Could not remove session: "+e)})).then((function(){return i.close()})).catch((function(e){t.log("Could not close session: "+e)}))}},t}(I);Ao.CDMCleanupPromise=void 0;var vo,bo,_o,wo,Eo=function(e){function t(t,i){var r;return(r=e.call(this,i)||this).data=void 0,t.error||(t.error=new Error(i)),r.data=t,t.err=t.error,r}return u(t,e),t}(m(Error));(function(e){e.MANIFEST="m",e.AUDIO="a",e.VIDEO="v",e.MUXED="av",e.INIT="i",e.CAPTION="c",e.TIMED_TEXT="tt",e.KEY="k",e.OTHER="o"})(vo||(vo={})),function(e){e.DASH="d",e.HLS="h",e.SMOOTH="s",e.OTHER="o"}(bo||(bo={})),function(e){e.OBJECT="CMCD-Object",e.REQUEST="CMCD-Request",e.SESSION="CMCD-Session",e.STATUS="CMCD-Status"}(_o||(_o={}));var So=((wo={})[_o.OBJECT]=["br","d","ot","tb"],wo[_o.REQUEST]=["bl","dl","mtp","nor","nrr","su"],wo[_o.SESSION]=["cid","pr","sf","sid","st","v"],wo[_o.STATUS]=["bs","rtp"],wo),To=function e(t,i){Array.isArray(t)&&(t=t.map((function(t){return t instanceof e?t:new e(t)}))),this.value=t,this.params=i},ko="Dict";function Co(e){return Array.isArray(e)?JSON.stringify(e):e instanceof Map?"Map{}":e instanceof Set?"Set{}":"object"==typeof e?JSON.stringify(e):String(e)}function Do(e,t,i,r){return new Error("failed to "+e+' "'+Co(t)+'" as '+i,{cause:r})}function Ro(e,t,i){return Do("serialize",e,t,i)}var xo=function(e){this.description=e},Lo="Bare Item",Io="Boolean";function Po(e){if("boolean"!=typeof e)throw Ro(e,Io);return e?"?1":"?0"}var Bo="Byte Sequence";function Mo(e){if(!1===ArrayBuffer.isView(e))throw Ro(e,Bo);return":"+ai(e)+":"}var Uo="Integer";function Fo(e){return e<-999999999999999||99999999999999912)throw Ro(e,Go);var i=t.toString();return i.includes(".")?i:i+".0"}var Wo="String",Vo=/[\x00-\x1f\x7f]+/;function Ho(e){if(Vo.test(e))throw Ro(e,Wo);return'"'+e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')+'"'}function $o(e){return e.description||e.toString().slice(7,-1)}var jo="Token";function Ko(e){var t=$o(e);if(!1===/^([a-zA-Z*])([!#$%&'*+\-.^_`|~\w:/]*)$/.test(t))throw Ro(t,jo);return t}function qo(e){switch(typeof e){case"number":if(!E(e))throw Ro(e,Lo);return Number.isInteger(e)?Oo(e):zo(e);case"string":return Ho(e);case"symbol":return Ko(e);case"boolean":return Po(e);case"object":if(e instanceof Date)return No(e);if(e instanceof Uint8Array)return Mo(e);if(e instanceof xo)return Ko(e);default:throw Ro(e,Lo)}}var Yo="Key";function Qo(e){if(!1===/^[a-z*][a-z0-9\-_.*]*$/.test(e))throw Ro(e,Yo);return e}function Xo(e){return null==e?"":Object.entries(e).map((function(e){var t=e[0],i=e[1];return!0===i?";"+Qo(t):";"+Qo(t)+"="+qo(i)})).join("")}function Jo(e){return e instanceof To?""+qo(e.value)+Xo(e.params):qo(e)}function Zo(e){return"("+e.value.map(Jo).join(" ")+")"+Xo(e.params)}function el(e,t){if(void 0===t&&(t={whitespace:!0}),"object"!=typeof e)throw Ro(e,ko);var i=e instanceof Map?e.entries():Object.entries(e),r=(null==t?void 0:t.whitespace)?" ":"";return Array.from(i).map((function(e){var t=e[0],i=e[1];i instanceof To==0&&(i=new To(i));var r=Qo(t);return!0===i.value?r+=Xo(i.params):(r+="=",Array.isArray(i.value)?r+=Zo(i):r+=Jo(i)),r})).join(","+r)}function tl(e,t){return el(e,t)}var il=function(e){return"ot"===e||"sf"===e||"st"===e},rl=function(e){return"number"==typeof e?E(e):null!=e&&""!==e&&!1!==e},sl=function(e){return Math.round(e)},al=function(e){return 100*sl(e/100)},nl={br:sl,d:sl,bl:al,dl:al,mtp:al,nor:function(e,t){return(null==t?void 0:t.baseUrl)&&(e=oi(e,t.baseUrl)),encodeURIComponent(e)},rtp:al,tb:sl};function ol(e,t){var i={};if(null==e||"object"!=typeof e)return i;var r=Object.keys(e).sort(),s=c({},nl,null==t?void 0:t.formatters),a=null==t?void 0:t.filter;return r.forEach((function(r){if(!(null==a?void 0:a(r))){var n=e[r],o=s[r];o&&(n=o(n,t)),"v"===r&&1===n||"pr"==r&&1===n||rl(n)&&(il(r)&&"string"==typeof n&&(n=new xo(n)),i[r]=n)}})),i}function ll(e,t){return void 0===t&&(t={}),e?tl(ol(e,t),c({whitespace:!1},t)):""}function dl(e,t){if(void 0===t&&(t={}),!e)return{};var i=Object.entries(e),r=Object.entries(So).concat(Object.entries((null==t?void 0:t.customHeaderMap)||{})),s=i.reduce((function(e,t){var i,s,a=t[0],n=t[1],o=(null===(i=r.find((function(e){return e[1].includes(a)})))||void 0===i?void 0:i[0])||_o.REQUEST;return null!==(s=e[o])&&void 0!==s||(e[o]={}),e[o][a]=n,e}),{});return Object.entries(s).reduce((function(e,i){var r=i[0],s=i[1];return e[r]=ll(s,t),e}),{})}function hl(e,t,i){return c(e,dl(t,i))}var cl="CMCD";function ul(e,t){if(void 0===t&&(t={}),!e)return"";var i=ll(e,t);return cl+"="+encodeURIComponent(i)}var pl=/CMCD=[^&#]+/;function fl(e,t,i){var r=ul(t,i);if(!r)return e;if(pl.test(e))return e.replace(pl,r);var s=e.includes("?")?"&":"?";return""+e+s+r}var yl=function(){function e(e){var t=this;this.hls=void 0,this.config=void 0,this.media=void 0,this.sid=void 0,this.cid=void 0,this.useHeaders=!1,this.includeKeys=void 0,this.initialized=!1,this.starved=!1,this.buffering=!0,this.audioBuffer=void 0,this.videoBuffer=void 0,this.onWaiting=function(){t.initialized&&(t.starved=!0),t.buffering=!0},this.onPlaying=function(){t.initialized||(t.initialized=!0),t.buffering=!1},this.applyPlaylistData=function(e){try{t.apply(e,{ot:vo.MANIFEST,su:!t.initialized})}catch(e){t.hls.logger.warn("Could not generate manifest CMCD data.",e)}},this.applyFragmentData=function(e){try{var i=e.frag,r=t.hls.levels[i.level],s=t.getObjectType(i),a={d:1e3*i.duration,ot:s};s!==vo.VIDEO&&s!==vo.AUDIO&&s!=vo.MUXED||(a.br=r.bitrate/1e3,a.tb=t.getTopBandwidth(s)/1e3,a.bl=t.getBufferLength(s));var n=t.getNextFrag(i);n&&n.url&&n.url!==i.url&&(a.nor=n.url),t.apply(e,a)}catch(e){t.hls.logger.warn("Could not generate segment CMCD data.",e)}},this.hls=e;var i=this.config=e.config,r=i.cmcd;null!=r&&(i.pLoader=this.createPlaylistLoader(),i.fLoader=this.createFragmentLoader(),this.sid=r.sessionId||li(),this.cid=r.contentId,this.useHeaders=!0===r.useHeaders,this.includeKeys=r.includeKeys,this.registerListeners())}var t=e.prototype;return t.registerListeners=function(){var e=this.hls;e.on(k.MEDIA_ATTACHED,this.onMediaAttached,this),e.on(k.MEDIA_DETACHED,this.onMediaDetached,this),e.on(k.BUFFER_CREATED,this.onBufferCreated,this)},t.unregisterListeners=function(){var e=this.hls;e.off(k.MEDIA_ATTACHED,this.onMediaAttached,this),e.off(k.MEDIA_DETACHED,this.onMediaDetached,this),e.off(k.BUFFER_CREATED,this.onBufferCreated,this)},t.destroy=function(){this.unregisterListeners(),this.onMediaDetached(),this.hls=this.config=this.audioBuffer=this.videoBuffer=null,this.onWaiting=this.onPlaying=this.media=null},t.onMediaAttached=function(e,t){this.media=t.media,this.media.addEventListener("waiting",this.onWaiting),this.media.addEventListener("playing",this.onPlaying)},t.onMediaDetached=function(){this.media&&(this.media.removeEventListener("waiting",this.onWaiting),this.media.removeEventListener("playing",this.onPlaying),this.media=null)},t.onBufferCreated=function(e,t){var i,r;this.audioBuffer=null==(i=t.tracks.audio)?void 0:i.buffer,this.videoBuffer=null==(r=t.tracks.video)?void 0:r.buffer},t.createData=function(){var e;return{v:1,sf:bo.HLS,sid:this.sid,cid:this.cid,pr:null==(e=this.media)?void 0:e.playbackRate,mtp:this.hls.bandwidthEstimate/1e3}},t.apply=function(e,t){void 0===t&&(t={}),c(t,this.createData());var i=t.ot===vo.INIT||t.ot===vo.VIDEO||t.ot===vo.MUXED;this.starved&&i&&(t.bs=!0,t.su=!0,this.starved=!1),null==t.su&&(t.su=this.buffering);var r=this.includeKeys;r&&(t=Object.keys(t).reduce((function(e,i){return r.includes(i)&&(e[i]=t[i]),e}),{}));var s={baseUrl:e.url};this.useHeaders?(e.headers||(e.headers={}),hl(e.headers,t,s)):e.url=fl(e.url,t,s)},t.getNextFrag=function(e){var t,i=null==(t=this.hls.levels[e.level])?void 0:t.details;if(i){var r=e.sn-i.startSN;return i.fragments[r+1]}},t.getObjectType=function(e){var t=e.type;return"subtitle"===t?vo.TIMED_TEXT:"initSegment"===e.sn?vo.INIT:"audio"===t?vo.AUDIO:"main"===t?this.hls.audioTracks.length?vo.VIDEO:vo.MUXED:void 0},t.getTopBandwidth=function(e){var t,i=0,r=this.hls;if(e===vo.AUDIO)t=r.audioTracks;else{var s=r.maxAutoLevel,a=s>-1?s+1:r.levels.length;t=r.levels.slice(0,a)}for(var n,o=v(t);!(n=o()).done;){var l=n.value;l.bitrate>i&&(i=l.bitrate)}return i>0?i:NaN},t.getBufferLength=function(e){var t=this.media,i=e===vo.AUDIO?this.audioBuffer:this.videoBuffer;return i&&t?1e3*Fr.bufferInfo(i,t.currentTime,this.config.maxBufferHole).len:NaN},t.createPlaylistLoader=function(){var e=this.config.pLoader,t=this.applyPlaylistData,i=e||this.config.loader;return function(){function e(e){this.loader=void 0,this.loader=new i(e)}var r=e.prototype;return r.destroy=function(){this.loader.destroy()},r.abort=function(){this.loader.abort()},r.load=function(e,i,r){t(e),this.loader.load(e,i,r)},d(e,[{key:"stats",get:function(){return this.loader.stats}},{key:"context",get:function(){return this.loader.context}}])}()},t.createFragmentLoader=function(){var e=this.config.fLoader,t=this.applyFragmentData,i=e||this.config.loader;return function(){function e(e){this.loader=void 0,this.loader=new i(e)}var r=e.prototype;return r.destroy=function(){this.loader.destroy()},r.abort=function(){this.loader.abort()},r.load=function(e,i,r){t(e),this.loader.load(e,i,r)},d(e,[{key:"stats",get:function(){return this.loader.stats}},{key:"context",get:function(){return this.loader.context}}])}()},e}(),ml=3e5,gl=function(e){function t(t){var i;return(i=e.call(this,"content-steering",t.logger)||this).hls=void 0,i.loader=null,i.uri=null,i.pathwayId=".",i.pathwayPriority=null,i.timeToLoad=300,i.reloadTimer=-1,i.updated=0,i.started=!1,i.enabled=!0,i.levels=null,i.audioTracks=null,i.subtitleTracks=null,i.penalizedPathways={},i.hls=t,i.registerListeners(),i}u(t,e);var i=t.prototype;return i.registerListeners=function(){var e=this.hls;e.on(k.MANIFEST_LOADING,this.onManifestLoading,this),e.on(k.MANIFEST_LOADED,this.onManifestLoaded,this),e.on(k.MANIFEST_PARSED,this.onManifestParsed,this),e.on(k.ERROR,this.onError,this)},i.unregisterListeners=function(){var e=this.hls;e&&(e.off(k.MANIFEST_LOADING,this.onManifestLoading,this),e.off(k.MANIFEST_LOADED,this.onManifestLoaded,this),e.off(k.MANIFEST_PARSED,this.onManifestParsed,this),e.off(k.ERROR,this.onError,this))},i.startLoad=function(){if(this.started=!0,this.clearTimeout(),this.enabled&&this.uri){if(this.updated){var e=1e3*this.timeToLoad-(performance.now()-this.updated);if(e>0)return void this.scheduleRefresh(this.uri,e)}this.loadSteeringManifest(this.uri)}},i.stopLoad=function(){this.started=!1,this.loader&&(this.loader.destroy(),this.loader=null),this.clearTimeout()},i.clearTimeout=function(){-1!==this.reloadTimer&&(self.clearTimeout(this.reloadTimer),this.reloadTimer=-1)},i.destroy=function(){this.unregisterListeners(),this.stopLoad(),this.hls=null,this.levels=this.audioTracks=this.subtitleTracks=null},i.removeLevel=function(e){var t=this.levels;t&&(this.levels=t.filter((function(t){return t!==e})))},i.onManifestLoading=function(){this.stopLoad(),this.enabled=!0,this.timeToLoad=300,this.updated=0,this.uri=null,this.pathwayId=".",this.levels=this.audioTracks=this.subtitleTracks=null},i.onManifestLoaded=function(e,t){var i=t.contentSteering;null!==i&&(this.pathwayId=i.pathwayId,this.uri=i.uri,this.started&&this.startLoad())},i.onManifestParsed=function(e,t){this.audioTracks=t.audioTracks,this.subtitleTracks=t.subtitleTracks},i.onError=function(e,t){var i=t.errorAction;if((null==i?void 0:i.action)===or.SendAlternateToPenaltyBox&&i.flags===lr.MoveAllAlternatesMatchingHost){var r=this.levels,s=this.pathwayPriority,a=this.pathwayId;if(t.context){var n=t.context,o=n.groupId,l=n.pathwayId,d=n.type;o&&r?a=this.getPathwayForGroupId(o,d,a):l&&(a=l)}a in this.penalizedPathways||(this.penalizedPathways[a]=performance.now()),!s&&r&&(s=r.reduce((function(e,t){return-1===e.indexOf(t.pathwayId)&&e.push(t.pathwayId),e}),[])),s&&s.length>1&&(this.updatePathwayPriority(s),i.resolved=this.pathwayId!==a),i.resolved||this.warn("Could not resolve "+t.details+' ("'+t.error.message+'") with content-steering for Pathway: '+a+" levels: "+(r?r.length:r)+" priorities: "+JSON.stringify(s)+" penalized: "+JSON.stringify(this.penalizedPathways))}},i.filterParsedLevels=function(e){this.levels=e;var t=this.getLevelsForPathway(this.pathwayId);if(0===t.length){var i=e[0].pathwayId;this.log("No levels found in Pathway "+this.pathwayId+'. Setting initial Pathway to "'+i+'"'),t=this.getLevelsForPathway(i),this.pathwayId=i}return t.length!==e.length?(this.log("Found "+t.length+"/"+e.length+' levels in Pathway "'+this.pathwayId+'"'),t):e},i.getLevelsForPathway=function(e){return null===this.levels?[]:this.levels.filter((function(t){return e===t.pathwayId}))},i.updatePathwayPriority=function(e){var t;this.pathwayPriority=e;var i=this.penalizedPathways,r=performance.now();Object.keys(i).forEach((function(e){r-i[e]>ml&&delete i[e]}));for(var s=0;s0){this.log('Setting Pathway to "'+a+'"'),this.pathwayId=a,qi(t),this.hls.trigger(k.LEVELS_UPDATED,{levels:t});var l=this.hls.levels[n];o&&l&&this.levels&&(l.attrs["STABLE-VARIANT-ID"]!==o.attrs["STABLE-VARIANT-ID"]&&l.bitrate!==o.bitrate&&this.log("Unstable Pathways change from bitrate "+o.bitrate+" to "+l.bitrate),this.hls.nextLoadLevel=n);break}}}},i.getPathwayForGroupId=function(e,t,i){for(var r=this.getLevelsForPathway(i).concat(this.levels||[]),s=0;s=2&&(0===i.loading.first&&(i.loading.first=Math.max(self.performance.now(),i.loading.start),s.timeout!==s.loadPolicy.maxLoadTimeMs&&(self.clearTimeout(this.requestTimeout),s.timeout=s.loadPolicy.maxLoadTimeMs,this.requestTimeout=self.setTimeout(this.loadtimeout.bind(this),s.loadPolicy.maxLoadTimeMs-(i.loading.first-i.loading.start)))),4===r)){self.clearTimeout(this.requestTimeout),t.onreadystatechange=null,t.onprogress=null;var a=t.status,n="text"!==t.responseType;if(a>=200&&a<300&&(n&&t.response||null!==t.responseText)){i.loading.end=Math.max(self.performance.now(),i.loading.first);var o=n?t.response:t.responseText,l="arraybuffer"===t.responseType?o.byteLength:o.length;if(i.loaded=i.total=l,i.bwEstimate=8e3*i.total/(i.loading.end-i.loading.first),!this.callbacks)return;var d=this.callbacks.onProgress;if(d&&d(i,e,o,t),!this.callbacks)return;var h={url:t.responseURL,data:o,code:a};this.callbacks.onSuccess(h,i,e,t)}else{var c=s.loadPolicy.errorRetry;Zi(c,i.retry,!1,{url:e.url,data:void 0,code:a})?this.retry(c):(G.error(a+" while loading "+e.url),this.callbacks.onError({code:a,text:t.statusText},e,t,i))}}}},t.loadtimeout=function(){var e,t=null==(e=this.config)?void 0:e.loadPolicy.timeoutRetry;if(Zi(t,this.stats.retry,!0))this.retry(t);else{var i;G.warn("timeout while loading "+(null==(i=this.context)?void 0:i.url));var r=this.callbacks;r&&(this.abortInternal(),r.onTimeout(this.stats,this.context,this.loader))}},t.retry=function(e){var t=this.context,i=this.stats;this.retryDelay=Xi(e,i.retry),i.retry++,G.warn((status?"HTTP Status "+status:"Timeout")+" while loading "+(null==t?void 0:t.url)+", retrying "+i.retry+"/"+e.maxNumRetry+" in "+this.retryDelay+"ms"),this.abortInternal(),this.loader=null,self.clearTimeout(this.retryTimeout),this.retryTimeout=self.setTimeout(this.loadInternal.bind(this),this.retryDelay)},t.loadprogress=function(e){var t=this.stats;t.loaded=e.loaded,e.lengthComputable&&(t.total=e.total)},t.getCacheAge=function(){var e=null;if(this.loader&&bl.test(this.loader.getAllResponseHeaders())){var t=this.loader.getResponseHeader("age");e=t?parseFloat(t):null}return e},t.getResponseHeader=function(e){return this.loader&&new RegExp("^"+e+":\\s*[\\d.]+\\s*$","im").test(this.loader.getAllResponseHeaders())?this.loader.getResponseHeader(e):null},e}();function wl(){if(self.fetch&&self.AbortController&&self.ReadableStream&&self.Request)try{return new self.ReadableStream({}),!0}catch(e){}return!1}var El=/(\d+)-(\d+)\/(\d+)/,Sl=function(){function e(e){this.fetchSetup=void 0,this.requestTimeout=void 0,this.request=null,this.response=null,this.controller=void 0,this.context=null,this.config=null,this.callbacks=null,this.stats=void 0,this.loader=null,this.fetchSetup=e.fetchSetup||Dl,this.controller=new self.AbortController,this.stats=new H}var t=e.prototype;return t.destroy=function(){this.loader=this.callbacks=this.context=this.config=this.request=null,this.abortInternal(),this.response=null,this.fetchSetup=this.controller=this.stats=null},t.abortInternal=function(){this.controller&&!this.stats.loading.end&&(this.stats.aborted=!0,this.controller.abort())},t.abort=function(){var e;this.abortInternal(),null!=(e=this.callbacks)&&e.onAbort&&this.callbacks.onAbort(this.stats,this.context,this.response)},t.load=function(e,t,i){var r=this,s=this.stats;if(s.loading.start)throw new Error("Loader can only be used once.");s.loading.start=self.performance.now();var a=Tl(e,this.controller.signal),n=i.onProgress,o="arraybuffer"===e.responseType,l=o?"byteLength":"length",d=t.loadPolicy,h=d.maxTimeToFirstByteMs,c=d.maxLoadTimeMs;this.context=e,this.config=t,this.callbacks=i,this.request=this.fetchSetup(e,a),self.clearTimeout(this.requestTimeout),t.timeout=h&&E(h)?h:c,this.requestTimeout=self.setTimeout((function(){r.abortInternal(),i.onTimeout(s,e,r.response)}),t.timeout),self.fetch(this.request).then((function(a){r.response=r.loader=a;var l=Math.max(self.performance.now(),s.loading.start);if(self.clearTimeout(r.requestTimeout),t.timeout=c,r.requestTimeout=self.setTimeout((function(){r.abortInternal(),i.onTimeout(s,e,r.response)}),c-(l-s.loading.start)),!a.ok){var d=a.status,h=a.statusText;throw new Rl(h||"fetch, bad network response",d,a)}return s.loading.first=l,s.total=Cl(a.headers)||s.total,n&&E(t.highWaterMark)?r.loadProgressively(a,s,e,t.highWaterMark,n):o?a.arrayBuffer():"json"===e.responseType?a.json():a.text()})).then((function(a){var o=r.response;if(!o)throw new Error("loader destroyed");self.clearTimeout(r.requestTimeout),s.loading.end=Math.max(self.performance.now(),s.loading.first);var d=a[l];d&&(s.loaded=s.total=d);var h={url:o.url,data:a,code:o.status};n&&!E(t.highWaterMark)&&n(s,e,a,o),i.onSuccess(h,s,e,o)})).catch((function(t){if(self.clearTimeout(r.requestTimeout),!s.aborted){var a=t&&t.code||0,n=t?t.message:null;i.onError({code:a,text:n},e,t?t.details:null,s)}}))},t.getCacheAge=function(){var e=null;if(this.response){var t=this.response.headers.get("age");e=t?parseFloat(t):null}return e},t.getResponseHeader=function(e){return this.response?this.response.headers.get(e):null},t.loadProgressively=function(e,t,i,r,s){void 0===r&&(r=0);var a=new hs,n=e.body.getReader();return function o(){return n.read().then((function(n){if(n.done)return a.dataLength&&s(t,i,a.flush(),e),Promise.resolve(new ArrayBuffer(0));var l=n.value,d=l.length;return t.loaded+=d,d=r&&s(t,i,a.flush(),e)):s(t,i,l,e),o()})).catch((function(){return Promise.reject()}))}()},e}();function Tl(e,t){var i={method:"GET",mode:"cors",credentials:"same-origin",signal:t,headers:new self.Headers(c({},e.headers))};return e.rangeEnd&&i.headers.set("Range","bytes="+e.rangeStart+"-"+String(e.rangeEnd-1)),i}function kl(e){var t=El.exec(e);if(t)return parseInt(t[2])-parseInt(t[1])+1}function Cl(e){var t=e.get("Content-Range");if(t){var i=kl(t);if(E(i))return i}var r=e.get("Content-Length");if(r)return parseInt(r)}function Dl(e,t){return new self.Request(e.url,t)}var Rl=function(e){function t(t,i,r){var s;return(s=e.call(this,t)||this).code=void 0,s.details=void 0,s.code=i,s.details=r,s}return u(t,e),t}(m(Error)),xl=/\s/,Ll={newCue:function(e,t,i,r){for(var s,a,n,o,l,d=[],h=self.VTTCue||self.TextTrackCue,c=0;c=16?o--:o++;var f=Gn(l.trim()),y=jn(t,i,f);null!=e&&null!=(u=e.cues)&&u.getCueById(y)||((a=new h(t,i,f)).id=y,a.line=c+1,a.align="left",a.position=10+Math.min(80,10*Math.floor(8*o/32)),d.push(a))}return e&&d.length&&(d.sort((function(e,t){return"auto"===e.line||"auto"===t.line?0:e.line>8&&t.line>8?t.line-e.line:e.line-t.line})),d.forEach((function(t){return Ht(e,t)}))),d}},Il=a(a({autoStartLoad:!0,startPosition:-1,defaultAudioCodec:void 0,debug:!1,capLevelOnFPSDrop:!1,capLevelToPlayerSize:!1,ignoreDevicePixelRatio:!1,preferManagedMediaSource:!0,initialLiveManifestSize:1,maxBufferLength:30,backBufferLength:1/0,frontBufferFlushThreshold:1/0,maxBufferSize:6e7,maxBufferHole:.1,highBufferWatchdogPeriod:2,nudgeOffset:.1,nudgeMaxRetry:3,maxFragLookUpTolerance:.25,liveSyncDurationCount:3,liveMaxLatencyDurationCount:1/0,liveSyncDuration:void 0,liveMaxLatencyDuration:void 0,maxLiveSyncPlaybackRate:1,liveDurationInfinity:!1,liveBackBufferLength:null,maxMaxBufferLength:600,enableWorker:!0,workerPath:null,enableSoftwareAES:!0,startLevel:void 0,startFragPrefetch:!1,fpsDroppedMonitoringPeriod:5e3,fpsDroppedMonitoringThreshold:.2,appendErrorMaxRetry:3,loader:_l,fLoader:void 0,pLoader:void 0,xhrSetup:void 0,licenseXhrSetup:void 0,licenseResponseCallback:void 0,abrController:xr,bufferController:ln,capLevelController:mo,errorController:dr,fpsController:go,stretchShortVideoTrack:!1,maxAudioFramesDrift:1,forceKeyFrameOnDiscontinuity:!0,abrEwmaFastLive:3,abrEwmaSlowLive:9,abrEwmaFastVoD:3,abrEwmaSlowVoD:9,abrEwmaDefaultEstimate:5e5,abrEwmaDefaultEstimateMax:5e6,abrBandWidthFactor:.95,abrBandWidthUpFactor:.7,abrMaxWithRealBitrate:!1,maxStarvationDelay:4,maxLoadingDelay:4,minAutoBitrate:0,emeEnabled:!1,widevineLicenseUrl:void 0,drmSystems:{},drmSystemOptions:{},requestMediaKeySystemAccessFunc:fe,testBandwidth:!0,progressive:!1,lowLatencyMode:!0,cmcd:void 0,enableDateRangeMetadataCues:!0,enableEmsgMetadataCues:!0,enableID3MetadataCues:!0,useMediaCapabilities:!0,certLoadPolicy:{default:{maxTimeToFirstByteMs:8e3,maxLoadTimeMs:2e4,timeoutRetry:null,errorRetry:null}},keyLoadPolicy:{default:{maxTimeToFirstByteMs:8e3,maxLoadTimeMs:2e4,timeoutRetry:{maxNumRetry:1,retryDelayMs:1e3,maxRetryDelayMs:2e4,backoff:"linear"},errorRetry:{maxNumRetry:8,retryDelayMs:1e3,maxRetryDelayMs:2e4,backoff:"linear"}}},manifestLoadPolicy:{default:{maxTimeToFirstByteMs:1/0,maxLoadTimeMs:2e4,timeoutRetry:{maxNumRetry:2,retryDelayMs:0,maxRetryDelayMs:0},errorRetry:{maxNumRetry:1,retryDelayMs:1e3,maxRetryDelayMs:8e3}}},playlistLoadPolicy:{default:{maxTimeToFirstByteMs:1e4,maxLoadTimeMs:2e4,timeoutRetry:{maxNumRetry:2,retryDelayMs:0,maxRetryDelayMs:0},errorRetry:{maxNumRetry:2,retryDelayMs:1e3,maxRetryDelayMs:8e3}}},fragLoadPolicy:{default:{maxTimeToFirstByteMs:1e4,maxLoadTimeMs:12e4,timeoutRetry:{maxNumRetry:4,retryDelayMs:0,maxRetryDelayMs:0},errorRetry:{maxNumRetry:6,retryDelayMs:1e3,maxRetryDelayMs:8e3}}},steeringManifestLoadPolicy:{default:{maxTimeToFirstByteMs:1e4,maxLoadTimeMs:2e4,timeoutRetry:{maxNumRetry:2,retryDelayMs:0,maxRetryDelayMs:0},errorRetry:{maxNumRetry:1,retryDelayMs:1e3,maxRetryDelayMs:8e3}}},manifestLoadingTimeOut:1e4,manifestLoadingMaxRetry:1,manifestLoadingRetryDelay:1e3,manifestLoadingMaxRetryTimeout:64e3,levelLoadingTimeOut:1e4,levelLoadingMaxRetry:4,levelLoadingRetryDelay:1e3,levelLoadingMaxRetryTimeout:64e3,fragLoadingTimeOut:2e4,fragLoadingMaxRetry:6,fragLoadingRetryDelay:1e3,fragLoadingMaxRetryTimeout:64e3},Pl()),{},{subtitleStreamController:rn,subtitleTrackController:an,timelineController:co,audioStreamController:Za,audioTrackController:en,emeController:Ao,cmcdController:yl,contentSteeringController:gl});function Pl(){return{cueHandler:Ll,enableWebVTT:!0,enableIMSC1:!0,enableCEA708Captions:!0,captionsTextTrack1Label:"English",captionsTextTrack1LanguageCode:"en",captionsTextTrack2Label:"Spanish",captionsTextTrack2LanguageCode:"es",captionsTextTrack3Label:"Unknown CC",captionsTextTrack3LanguageCode:"",captionsTextTrack4Label:"Unknown CC",captionsTextTrack4LanguageCode:"",renderTextTracksNatively:!0}}function Bl(e,t,i){if((t.liveSyncDurationCount||t.liveMaxLatencyDurationCount)&&(t.liveSyncDuration||t.liveMaxLatencyDuration))throw new Error("Illegal hls.js config: don't mix up liveSyncDurationCount/liveMaxLatencyDurationCount and liveSyncDuration/liveMaxLatencyDuration");if(void 0!==t.liveMaxLatencyDurationCount&&(void 0===t.liveSyncDurationCount||t.liveMaxLatencyDurationCount<=t.liveSyncDurationCount))throw new Error('Illegal hls.js config: "liveMaxLatencyDurationCount" must be greater than "liveSyncDurationCount"');if(void 0!==t.liveMaxLatencyDuration&&(void 0===t.liveSyncDuration||t.liveMaxLatencyDuration<=t.liveSyncDuration))throw new Error('Illegal hls.js config: "liveMaxLatencyDuration" must be greater than "liveSyncDuration"');var r=Ml(e),s=["TimeOut","MaxRetry","RetryDelay","MaxRetryTimeout"];return["manifest","level","frag"].forEach((function(e){var a=("level"===e?"playlist":e)+"LoadPolicy",n=void 0===t[a],o=[];s.forEach((function(i){var s=e+"Loading"+i,l=t[s];if(void 0!==l&&n){o.push(s);var d=r[a].default;switch(t[a]={default:d},i){case"TimeOut":d.maxLoadTimeMs=l,d.maxTimeToFirstByteMs=l;break;case"MaxRetry":d.errorRetry.maxNumRetry=l,d.timeoutRetry.maxNumRetry=l;break;case"RetryDelay":d.errorRetry.retryDelayMs=l,d.timeoutRetry.retryDelayMs=l;break;case"MaxRetryTimeout":d.errorRetry.maxRetryDelayMs=l,d.timeoutRetry.maxRetryDelayMs=l}}})),o.length&&i.warn('hls.js config: "'+o.join('", "')+'" setting(s) are deprecated, use "'+a+'": '+JSON.stringify(t[a]))})),a(a({},r),t)}function Ml(e){return e&&"object"==typeof e?Array.isArray(e)?e.map(Ml):Object.keys(e).reduce((function(t,i){return t[i]=Ml(e[i]),t}),{}):e}function Ul(e,t){var i=e.loader;i!==Sl&&i!==_l?(t.log("[config]: Custom loader detected, cannot enable progressive streaming"),e.progressive=!1):wl()&&(e.loader=Sl,e.progressive=!0,e.enableSoftwareAES=!0,t.log("[config]: Progressive streaming enabled, using FetchLoader"))}var Fl=function(e){function t(t,i){var r;return(r=e.call(this,t,"level-controller")||this)._levels=[],r._firstLevel=-1,r._maxAutoLevel=-1,r._startLevel=void 0,r.currentLevel=null,r.currentLevelIndex=-1,r.manualLevelIndex=-1,r.steering=void 0,r.onParsedComplete=void 0,r.steering=i,r._registerListeners(),r}u(t,e);var i=t.prototype;return i._registerListeners=function(){var e=this.hls;e.on(k.MANIFEST_LOADING,this.onManifestLoading,this),e.on(k.MANIFEST_LOADED,this.onManifestLoaded,this),e.on(k.LEVEL_LOADED,this.onLevelLoaded,this),e.on(k.LEVELS_UPDATED,this.onLevelsUpdated,this),e.on(k.FRAG_BUFFERED,this.onFragBuffered,this),e.on(k.ERROR,this.onError,this)},i._unregisterListeners=function(){var e=this.hls;e.off(k.MANIFEST_LOADING,this.onManifestLoading,this),e.off(k.MANIFEST_LOADED,this.onManifestLoaded,this),e.off(k.LEVEL_LOADED,this.onLevelLoaded,this),e.off(k.LEVELS_UPDATED,this.onLevelsUpdated,this),e.off(k.FRAG_BUFFERED,this.onFragBuffered,this),e.off(k.ERROR,this.onError,this)},i.destroy=function(){this._unregisterListeners(),this.steering=null,this.resetLevels(),e.prototype.destroy.call(this)},i.stopLoad=function(){this._levels.forEach((function(e){e.loadError=0,e.fragmentError=0})),e.prototype.stopLoad.call(this)},i.resetLevels=function(){this._startLevel=void 0,this.manualLevelIndex=-1,this.currentLevelIndex=-1,this.currentLevel=null,this._levels=[],this._maxAutoLevel=-1},i.onManifestLoading=function(e,t){this.resetLevels()},i.onManifestLoaded=function(e,t){var i=this.hls.config.preferManagedMediaSource,r=[],s={},a={},n=!1,o=!1,l=!1;t.levels.forEach((function(e){var t,d=e.attrs,h=e.audioCodec,c=e.videoCodec;h&&(e.audioCodec=h=bt(h,i)||void 0),0===(null==(t=c)?void 0:t.indexOf("avc1"))&&(c=e.videoCodec=wt(c));var u=e.width,p=e.height,f=e.unknownCodecs;if(n||(n=!(!u||!p)),o||(o=!!c),l||(l=!!h),!(null!=f&&f.length||h&&!ut(h,"audio",i)||c&&!ut(c,"video",i))){var y=d.CODECS,m=d["FRAME-RATE"],g=d["HDCP-LEVEL"],A=d["PATHWAY-ID"],v=d.RESOLUTION,b=d["VIDEO-RANGE"],_=(A||".")+"-"+e.bitrate+"-"+v+"-"+m+"-"+y+"-"+b+"-"+g;if(s[_])if(s[_].uri===e.url||e.attrs["PATHWAY-ID"])s[_].addGroupId("audio",d.AUDIO),s[_].addGroupId("text",d.SUBTITLES);else{var w=a[_]+=1;e.attrs["PATHWAY-ID"]=new Array(w+1).join(".");var E=new Bi(e);s[_]=E,r.push(E)}else{var S=new Bi(e);s[_]=S,a[_]=1,r.push(S)}}})),this.filterAndSortMediaOptions(r,t,n,o,l)},i.filterAndSortMediaOptions=function(e,t,i,r,s){var a=this,n=[],o=[],l=e;if((i||r)&&s&&(l=l.filter((function(e){var t=e.videoCodec,i=e.videoRange,r=e.width,s=e.height;return(!!t||!(!r||!s))&&xi(i)}))),0!==l.length){if(t.audioTracks){var d=this.hls.config.preferManagedMediaSource;Ol(n=t.audioTracks.filter((function(e){return!e.audioCodec||ut(e.audioCodec,"audio",d)})))}t.subtitles&&Ol(o=t.subtitles);var h=l.slice(0);l.sort((function(e,t){if(e.attrs["HDCP-LEVEL"]!==t.attrs["HDCP-LEVEL"])return(e.attrs["HDCP-LEVEL"]||"")>(t.attrs["HDCP-LEVEL"]||"")?1:-1;if(i&&e.height!==t.height)return e.height-t.height;if(e.frameRate!==t.frameRate)return e.frameRate-t.frameRate;if(e.videoRange!==t.videoRange)return Ri.indexOf(e.videoRange)-Ri.indexOf(t.videoRange);if(e.videoCodec!==t.videoCodec){var r=yt(e.videoCodec),s=yt(t.videoCodec);if(r!==s)return s-r}if(e.uri===t.uri&&e.codecSet!==t.codecSet){var a=mt(e.codecSet),n=mt(t.codecSet);if(a!==n)return n-a}return e.averageBitrate!==t.averageBitrate?e.averageBitrate-t.averageBitrate:0}));var c=h[0];if(this.steering&&(l=this.steering.filterParsedLevels(l)).length!==h.length)for(var u=0;um&&m===Il.abrEwmaDefaultEstimate&&(this.hls.bandwidthEstimate=g)}break}var A=s&&!r,v={levels:l,audioTracks:n,subtitleTracks:o,sessionData:t.sessionData,sessionKeys:t.sessionKeys,firstLevel:this._firstLevel,stats:t.stats,audio:s,video:r,altAudio:!A&&n.some((function(e){return!!e.url}))};this.hls.trigger(k.MANIFEST_PARSED,v),(this.hls.config.autoStartLoad||this.hls.forceStartLoad)&&this.hls.startLoad(this.hls.config.startPosition)}else Promise.resolve().then((function(){if(a.hls){t.levels.length&&a.warn("One or more CODECS in variant not supported: "+JSON.stringify(t.levels[0].attrs));var e=new Error("no level with compatible codecs found in manifest");a.hls.trigger(k.ERROR,{type:C.MEDIA_ERROR,details:D.MANIFEST_INCOMPATIBLE_CODECS_ERROR,fatal:!0,url:t.url,error:e,reason:e.message})}}))},i.onError=function(e,t){!t.fatal&&t.context&&t.context.type===Ot.LEVEL&&t.context.level===this.level&&this.checkRetry(t)},i.onFragBuffered=function(e,t){var i=t.frag;if(void 0!==i&&i.type===Nt.MAIN){var r=i.elementaryStreams;if(!Object.keys(r).some((function(e){return!!r[e]})))return;var s=this._levels[i.level];null!=s&&s.loadError&&(this.log("Resetting level error count of "+s.loadError+" on frag buffered"),s.loadError=0)}},i.onLevelLoaded=function(e,t){var i,r,s=t.level,a=t.details,n=this._levels[s];if(!n)return this.warn("Invalid level index "+s),void(null!=(r=t.deliveryDirectives)&&r.skip&&(a.deltaUpdateFailed=!0));if(s===this.currentLevelIndex){0===n.fragmentError&&(n.loadError=0);var o=n.details;o===t.details&&o.advanced&&(o=void 0),this.playlistLoaded(s,t,o)}else null!=(i=t.deliveryDirectives)&&i.skip&&(a.deltaUpdateFailed=!0)},i.loadPlaylist=function(t){e.prototype.loadPlaylist.call(this);var i=this.currentLevelIndex,r=this.currentLevel;if(r&&this.shouldLoadPlaylist(r)){var s=r.uri;if(t)try{s=t.addDirectives(s)}catch(e){this.warn("Could not construct new URL with HLS Delivery Directives: "+e)}var a=r.attrs["PATHWAY-ID"];this.log("Loading level index "+i+(void 0!==(null==t?void 0:t.msn)?" at sn "+t.msn+" part "+t.part:"")+" with"+(a?" Pathway "+a:"")+" "+s),this.clearTimer(),this.hls.trigger(k.LEVEL_LOADING,{url:s,level:i,pathwayId:r.attrs["PATHWAY-ID"],id:0,deliveryDirectives:t||null})}},i.removeLevel=function(e){var t,i=this,r=this._levels.filter((function(t,r){return r!==e||(i.steering&&i.steering.removeLevel(t),t===i.currentLevel&&(i.currentLevel=null,i.currentLevelIndex=-1,t.details&&t.details.fragments.forEach((function(e){return e.level=-1}))),!1)}));qi(r),this._levels=r,this.currentLevelIndex>-1&&null!=(t=this.currentLevel)&&t.details&&(this.currentLevelIndex=this.currentLevel.details.fragments[0].level),this.hls.trigger(k.LEVELS_UPDATED,{levels:r})},i.onLevelsUpdated=function(e,t){var i=t.levels;this._levels=i},i.checkMaxAutoUpdated=function(){var e=this.hls,t=e.autoLevelCapping,i=e.maxAutoLevel,r=e.maxHdcpLevel;this._maxAutoLevel!==i&&(this._maxAutoLevel=i,this.hls.trigger(k.MAX_AUTO_LEVEL_UPDATED,{autoLevelCapping:t,levels:this.levels,maxAutoLevel:i,minAutoLevel:this.hls.minAutoLevel,maxHdcpLevel:r}))},d(t,[{key:"levels",get:function(){return 0===this._levels.length?null:this._levels}},{key:"level",get:function(){return this.currentLevelIndex},set:function(e){var t=this._levels;if(0!==t.length){if(e<0||e>=t.length){var i=new Error("invalid level idx"),r=e<0;if(this.hls.trigger(k.ERROR,{type:C.OTHER_ERROR,details:D.LEVEL_SWITCH_ERROR,level:e,fatal:r,error:i,reason:i.message}),r)return;e=Math.min(e,t.length-1)}var s=this.currentLevelIndex,a=this.currentLevel,n=a?a.attrs["PATHWAY-ID"]:void 0,o=t[e],l=o.attrs["PATHWAY-ID"];if(this.currentLevelIndex=e,this.currentLevel=o,s!==e||!o.details||!a||n!==l){this.log("Switching to level "+e+" ("+(o.height?o.height+"p ":"")+(o.videoRange?o.videoRange+" ":"")+(o.codecSet?o.codecSet+" ":"")+"@"+o.bitrate+")"+(l?" with Pathway "+l:"")+" from level "+s+(n?" with Pathway "+n:""));var d={level:e,attrs:o.attrs,details:o.details,bitrate:o.bitrate,averageBitrate:o.averageBitrate,maxBitrate:o.maxBitrate,realBitrate:o.realBitrate,width:o.width,height:o.height,codecSet:o.codecSet,audioCodec:o.audioCodec,videoCodec:o.videoCodec,audioGroups:o.audioGroups,subtitleGroups:o.subtitleGroups,loaded:o.loaded,loadError:o.loadError,fragmentError:o.fragmentError,name:o.name,id:o.id,uri:o.uri,url:o.url,urlId:0,audioGroupIds:o.audioGroupIds,textGroupIds:o.textGroupIds};this.hls.trigger(k.LEVEL_SWITCHING,d);var h=o.details;if(!h||h.live){var c=this.switchParams(o.uri,null==a?void 0:a.details,h);this.loadPlaylist(c)}}}}},{key:"manualLevel",get:function(){return this.manualLevelIndex},set:function(e){this.manualLevelIndex=e,void 0===this._startLevel&&(this._startLevel=e),-1!==e&&(this.level=e)}},{key:"firstLevel",get:function(){return this._firstLevel},set:function(e){this._firstLevel=e}},{key:"startLevel",get:function(){if(void 0===this._startLevel){var e=this.hls.config.startLevel;return void 0!==e?e:this.hls.firstAutoLevel}return this._startLevel},set:function(e){this._startLevel=e}},{key:"nextLoadLevel",get:function(){return-1!==this.manualLevelIndex?this.manualLevelIndex:this.hls.nextAutoLevel},set:function(e){this.level=e,-1===this.manualLevelIndex&&(this.hls.nextAutoLevel=e)}}])}(hr);function Ol(e){var t={};e.forEach((function(e){var i=e.groupId||"";e.id=t[i]=t[i]||0,t[i]++}))}var Nl=function(){function e(e){this.config=void 0,this.keyUriToKeyInfo={},this.emeController=null,this.config=e}var t=e.prototype;return t.abort=function(e){for(var t in this.keyUriToKeyInfo){var i=this.keyUriToKeyInfo[t].loader;if(i){var r;if(e&&e!==(null==(r=i.context)?void 0:r.frag.type))return;i.abort()}}},t.detach=function(){for(var e in this.keyUriToKeyInfo){var t=this.keyUriToKeyInfo[e];(t.mediaKeySessionContext||t.decryptdata.isCommonEncryption)&&delete this.keyUriToKeyInfo[e]}},t.destroy=function(){for(var e in this.detach(),this.keyUriToKeyInfo){var t=this.keyUriToKeyInfo[e].loader;t&&t.destroy()}this.keyUriToKeyInfo={}},t.createKeyLoadError=function(e,t,i,r,s){return void 0===t&&(t=D.KEY_LOAD_ERROR),new Zr({type:C.NETWORK_ERROR,details:t,fatal:!1,frag:e,response:s,error:i,networkDetails:r})},t.loadClear=function(e,t){var i=this;if(this.emeController&&this.config.emeEnabled)for(var r=e.sn,s=e.cc,a=function(){var e=t[n];if(s<=e.cc&&("initSegment"===r||"initSegment"===e.sn||r$l,f=!u||t&&t.start<=o||u-o>$l&&!this.fragmentTracker.getPartialFragment(o);if(p||f)return;this.moved=!1}if(!this.moved&&null!==this.stalled){if(!(c.len>0||u))return;var y=Math.max(u,c.start||0)-o,m=null!=i&&i.live?2*i.targetduration:$l,g=this.fragmentTracker.getPartialFragment(o);if(y>0&&(y<=m||g))return void(a.paused||this._trySkipBufferHole(g))}var A=self.performance.now();if(null!==n){var v=A-n;if(!l&&v>=Hl){if(r===ls.ENDED&&(null==i||!i.live)&&Math.abs(o-((null==i?void 0:i.edge)||0))<1){if(v<1e3||this.ended)return;return this.ended=o,void this.hls.trigger(k.MEDIA_ENDED,{stalled:!0})}if(this._reportStall(c),!this.media)return}var b=Fr.bufferInfo(a,o,s.maxBufferHole);this._tryFixBufferStall(b,v)}else this.stalled=A}else if(this.ended=0,this.moved=!0,l||(this.nudgeRetry=0),null!==n){if(this.stallReported){var _=self.performance.now()-n;this.warn("playback not stuck anymore @"+o+", after "+Math.round(_)+"ms"),this.stallReported=!1}this.stalled=null}}},i._tryFixBufferStall=function(e,t){var i=this.config,r=this.fragmentTracker,s=this.media;if(null!==s){var a=s.currentTime,n=r.getPartialFragment(a);if(n&&(this._trySkipBufferHole(n)||!this.media))return;(e.len>i.maxBufferHole||e.nextStart&&e.nextStart-a1e3*i.highBufferWatchdogPeriod&&(this.warn("Trying to nudge playhead over buffer-hole"),this.stalled=null,this._tryNudgeBuffer())}},i._reportStall=function(e){var t=this.hls,i=this.media;if(!this.stallReported&&i){this.stallReported=!0;var r=new Error("Playback stalling at @"+i.currentTime+" due to low buffer ("+JSON.stringify(e)+")");this.warn(r.message),t.trigger(k.ERROR,{type:C.MEDIA_ERROR,details:D.BUFFER_STALLED_ERROR,fatal:!1,error:r,buffer:e.len})}},i._trySkipBufferHole=function(e){var t=this.config,i=this.hls,r=this.media;if(null===r)return 0;var s=r.currentTime,a=Fr.bufferInfo(r,s,0),n=s0&&a.len<1&&r.readyState<3,d=n-s;if(d>0&&(o||l)){if(d>t.maxBufferHole){var h=this.fragmentTracker,c=!1;if(0===s){var u=h.getAppendedFrag(0,Nt.MAIN);u&&n1?(r=0,this.bitrateTest=!0):r=i.firstAutoLevel),i.nextLoadLevel=r,this.level=i.loadLevel,this.loadedmetadata=!1}t>0&&-1===e&&(this.log("Override startPosition with lastCurrentTime @"+t.toFixed(3)),e=t),this.state=ls.IDLE,this.nextLoadPosition=this.startPosition=this.lastCurrentTime=e,this.tick()}else this._forceStartLoad=!0,this.state=ls.STOPPED},i.stopLoad=function(){this._forceStartLoad=!1,e.prototype.stopLoad.call(this)},i.doTick=function(){switch(this.state){case ls.WAITING_LEVEL:var e=this.levels,t=this.level,i=null==e?void 0:e[t],r=null==i?void 0:i.details;if(r&&(!r.live||this.levelLastLoaded===i)){if(this.waitForCdnTuneIn(r))break;this.state=ls.IDLE;break}if(this.hls.nextLoadLevel!==this.level){this.state=ls.IDLE;break}break;case ls.FRAG_LOADING_WAITING_RETRY:var s,a=self.performance.now(),n=this.retryDate;if(!n||a>=n||null!=(s=this.media)&&s.seeking){var o=this.levels,l=this.level,d=null==o?void 0:o[l];this.resetStartWhenNotLoaded(d||null),this.state=ls.IDLE}}this.state===ls.IDLE&&this.doTickIdle(),this.onTickEnd()},i.onTickEnd=function(){e.prototype.onTickEnd.call(this),this.checkBuffer(),this.checkFragmentChanged()},i.doTickIdle=function(){if(this.buffering){var e=this.hls,t=this.levelLastLoaded,i=this.levels,r=this.media;if(null!==t&&(r||!this.startFragRequested&&e.config.startFragPrefetch)&&(!this.altAudio||!this.audioOnly)){var s=e.nextLoadLevel;if(null!=i&&i[s]){var a=i[s],n=this.getMainFwdBufferInfo();if(null!==n){var o=this.getLevelDetails();if(o&&this._streamEnded(n,o)){var l={};return this.altAudio&&(l.type="video"),this.hls.trigger(k.BUFFER_EOS,l),void(this.state=ls.ENDED)}e.loadLevel!==s&&-1===e.manualLevel&&this.log("Adapting to level "+s+" from level "+this.level),this.level=e.nextLoadLevel=s;var d=a.details;if(!d||this.state===ls.WAITING_LEVEL||d.live&&this.levelLastLoaded!==a)return this.level=s,void(this.state=ls.WAITING_LEVEL);var h=n.len,c=this.getMaxBufferLength(a.maxBitrate);if(!(h>=c)){this.backtrackFragment&&this.backtrackFragment.start>n.end&&(this.backtrackFragment=null);var u=this.backtrackFragment?this.backtrackFragment.start:n.end,p=this.getNextFragment(u,d);if(this.couldBacktrack&&!this.fragPrevious&&p&&"initSegment"!==p.sn&&this.fragmentTracker.getState(p)!==Ir.OK){var f,y=(null!=(f=this.backtrackFragment)?f:p).sn-d.startSN,m=d.fragments[y-1];m&&p.cc===m.cc&&(p=m,this.fragmentTracker.removeFragment(m))}else this.backtrackFragment&&n.len&&(this.backtrackFragment=null);if(p&&this.isLoopLoading(p,u)){if(!p.gap){var g=this.audioOnly&&!this.altAudio?$.AUDIO:$.VIDEO,A=(g===$.VIDEO?this.videoBuffer:this.mediaBuffer)||this.media;A&&this.afterBufferFlushed(A,g,Nt.MAIN)}p=this.getNextFragmentLoopLoading(p,d,n,Nt.MAIN,c)}p&&(!p.initSegment||p.initSegment.data||this.bitrateTest||(p=p.initSegment),this.loadFragment(p,a,u))}}}}}},i.loadFragment=function(t,i,r){var s=this.fragmentTracker.getState(t);this.fragCurrent=t,s===Ir.NOT_LOADED||s===Ir.PARTIAL?"initSegment"===t.sn?this._loadInitSegment(t,i):this.bitrateTest?(this.log("Fragment "+t.sn+" of level "+t.level+" is being downloaded to test bitrate and will not be buffered"),this._loadBitrateTestFrag(t,i)):(this.startFragRequested=!0,e.prototype.loadFragment.call(this,t,i,r)):this.clearTrackerIfNeeded(t)},i.getBufferedFrag=function(e){return this.fragmentTracker.getBufferedFrag(e,Nt.MAIN)},i.followingBufferedFrag=function(e){return e?this.getBufferedFrag(e.end+.5):null},i.immediateLevelSwitch=function(){this.abortCurrentFrag(),this.flushMainBuffer(0,Number.POSITIVE_INFINITY)},i.nextLevelSwitch=function(){var e=this.levels,t=this.media;if(null!=t&&t.readyState){var i,r=this.getAppendedFrag(t.currentTime);r&&r.start>1&&this.flushMainBuffer(0,r.start-1);var s=this.getLevelDetails();if(null!=s&&s.live){var a=this.getMainFwdBufferInfo();if(!a||a.len<2*s.targetduration)return}if(!t.paused&&e){var n=e[this.hls.nextLoadLevel],o=this.fragLastKbps;i=o&&this.fragCurrent?this.fragCurrent.duration*n.maxBitrate/(1e3*o)+1:0}else i=0;var l=this.getBufferedFrag(t.currentTime+i);if(l){var d=this.followingBufferedFrag(l);if(d){this.abortCurrentFrag();var h=d.maxStartPTS?d.maxStartPTS:d.start,c=d.duration,u=Math.max(l.end,h+Math.min(Math.max(c-this.config.maxFragLookUpTolerance,c*(this.couldBacktrack?.5:.125)),c*(this.couldBacktrack?.75:.25)));this.flushMainBuffer(u,Number.POSITIVE_INFINITY)}}}},i.abortCurrentFrag=function(){var e=this.fragCurrent;switch(this.fragCurrent=null,this.backtrackFragment=null,e&&(e.abortRequests(),this.fragmentTracker.removeFragment(e)),this.state){case ls.KEY_LOADING:case ls.FRAG_LOADING:case ls.FRAG_LOADING_WAITING_RETRY:case ls.PARSING:case ls.PARSED:this.state=ls.IDLE}this.nextLoadPosition=this.getLoadPosition()},i.flushMainBuffer=function(t,i){e.prototype.flushMainBuffer.call(this,t,i,this.altAudio?"video":null)},i.onMediaAttached=function(t,i){e.prototype.onMediaAttached.call(this,t,i);var r=i.media;r.addEventListener("playing",this.onMediaPlaying),r.addEventListener("seeked",this.onMediaSeeked),this.gapController=new ql(this.config,r,this.fragmentTracker,this.hls)},i.onMediaDetaching=function(){var t=this.media;t&&(t.removeEventListener("playing",this.onMediaPlaying),t.removeEventListener("seeked",this.onMediaSeeked)),this.videoBuffer=null,this.fragPlaying=null,this.gapController&&(this.gapController.destroy(),this.gapController=null),e.prototype.onMediaDetaching.call(this)},i.onManifestLoading=function(){this.log("Trigger BUFFER_RESET"),this.hls.trigger(k.BUFFER_RESET,void 0),this.fragmentTracker.removeAllFragments(),this.couldBacktrack=!1,this.startPosition=this.lastCurrentTime=this.fragLastKbps=0,this.levels=this.fragPlaying=this.backtrackFragment=this.levelLastLoaded=null,this.altAudio=this.audioOnly=this.startFragRequested=!1},i.onManifestParsed=function(e,t){var i=!1,r=!1;t.levels.forEach((function(e){var t=e.audioCodec;t&&(i=i||-1!==t.indexOf("mp4a.40.2"),r=r||-1!==t.indexOf("mp4a.40.5"))})),this.audioCodecSwitch=i&&r&&!Vl(),this.audioCodecSwitch&&this.log("Both AAC/HE-AAC audio found in levels; declaring level codec as HE-AAC"),this.levels=t.levels,this.startFragRequested=!1},i.onLevelLoading=function(e,t){var i=this.levels;if(i&&this.state===ls.IDLE){var r=i[t.level];(!r.details||r.details.live&&this.levelLastLoaded!==r||this.waitForCdnTuneIn(r.details))&&(this.state=ls.WAITING_LEVEL)}},i.onLevelLoaded=function(e,t){var i,r=this.levels,s=t.level,a=t.details,n=a.totalduration;if(r){this.log("Level "+s+" loaded ["+a.startSN+","+a.endSN+"]"+(a.lastPartSn?"[part-"+a.lastPartSn+"-"+a.lastPartIndex+"]":"")+", cc ["+a.startCC+", "+a.endCC+"] duration:"+n);var o=r[s],l=this.fragCurrent;!l||this.state!==ls.FRAG_LOADING&&this.state!==ls.FRAG_LOADING_WAITING_RETRY||l.level!==t.level&&l.loader&&this.abortCurrentFrag();var d=0;if(a.live||null!=(i=o.details)&&i.live){var h;if(this.checkLiveUpdate(a),a.deltaUpdateFailed)return;d=this.alignPlaylists(a,o.details,null==(h=this.levelLastLoaded)?void 0:h.details)}if(o.details=a,this.levelLastLoaded=o,this.hls.trigger(k.LEVEL_UPDATED,{details:a,level:s}),this.state===ls.WAITING_LEVEL){if(this.waitForCdnTuneIn(a))return;this.state=ls.IDLE}this.startFragRequested?a.live&&this.synchronizeToLiveEdge(a):this.setStartPosition(a,d),this.tick()}else this.warn("Levels were reset while loading level "+s)},i._handleFragmentLoadProgress=function(e){var t,i=e.frag,r=e.part,s=e.payload,a=this.levels;if(a){var n=a[i.level],o=n.details;if(!o)return this.warn("Dropping fragment "+i.sn+" of level "+i.level+" after level details were reset"),void this.fragmentTracker.removeFragment(i);var l=n.videoCodec,d=o.PTSKnown||!o.live,h=null==(t=i.initSegment)?void 0:t.data,c=this._getAudioCodec(n),u=this.transmuxer=this.transmuxer||new qa(this.hls,Nt.MAIN,this._handleTransmuxComplete.bind(this),this._handleTransmuxerFlush.bind(this)),p=r?r.index:-1,f=-1!==p,y=new Or(i.level,i.sn,i.stats.chunkCount,s.byteLength,p,f),m=this.initPTS[i.cc];u.push(s,h,c,l,i,r,o.totalduration,d,y,m)}else this.warn("Levels were reset while fragment load was in progress. Fragment "+i.sn+" of level "+i.level+" will not be buffered")},i.onAudioTrackSwitching=function(e,t){var i=this.altAudio;if(!t.url){if(this.mediaBuffer!==this.media){this.log("Switching on main audio, use media.buffered to schedule main fragment loading"),this.mediaBuffer=this.media;var r=this.fragCurrent;r&&(this.log("Switching to main audio track, cancel main fragment load"),r.abortRequests(),this.fragmentTracker.removeFragment(r)),this.resetTransmuxer(),this.resetLoadingState()}else this.audioOnly&&this.resetTransmuxer();var s=this.hls;i&&(s.trigger(k.BUFFER_FLUSHING,{startOffset:0,endOffset:Number.POSITIVE_INFINITY,type:null}),this.fragmentTracker.removeAllFragments()),s.trigger(k.AUDIO_TRACK_SWITCHED,t)}},i.onAudioTrackSwitched=function(e,t){var i=t.id,r=!!this.hls.audioTracks[i].url;if(r){var s=this.videoBuffer;s&&this.mediaBuffer!==s&&(this.log("Switching on alternate audio, use video.buffered to schedule main fragment loading"),this.mediaBuffer=s)}this.altAudio=r,this.tick()},i.onBufferCreated=function(e,t){var i,r,s=t.tracks,a=!1;for(var n in s){var o=s[n];if("main"===o.id){if(r=n,i=o,"video"===n){var l=s[n];l&&(this.videoBuffer=l.buffer)}}else a=!0}a&&i?(this.log("Alternate track found, use "+r+".buffered to schedule main fragment loading"),this.mediaBuffer=i.buffer):this.mediaBuffer=this.media},i.onFragBuffered=function(e,t){var i=t.frag,r=t.part;if(!i||i.type===Nt.MAIN){if(this.fragContextChanged(i))return this.warn("Fragment "+i.sn+(r?" p: "+r.index:"")+" of level "+i.level+" finished buffering, but was aborted. state: "+this.state),void(this.state===ls.PARSED&&(this.state=ls.IDLE));var s=r?r.stats:i.stats;this.fragLastKbps=Math.round(8*s.total/(s.buffering.end-s.loading.first)),"initSegment"!==i.sn&&(this.fragPrevious=i),this.fragBufferedComplete(i,r)}},i.onError=function(e,t){var i;if(t.fatal)this.state=ls.ERROR;else switch(t.details){case D.FRAG_GAP:case D.FRAG_PARSING_ERROR:case D.FRAG_DECRYPT_ERROR:case D.FRAG_LOAD_ERROR:case D.FRAG_LOAD_TIMEOUT:case D.KEY_LOAD_ERROR:case D.KEY_LOAD_TIMEOUT:this.onFragmentOrKeyLoadError(Nt.MAIN,t);break;case D.LEVEL_LOAD_ERROR:case D.LEVEL_LOAD_TIMEOUT:case D.LEVEL_PARSING_ERROR:t.levelRetry||this.state!==ls.WAITING_LEVEL||(null==(i=t.context)?void 0:i.type)!==Ot.LEVEL||(this.state=ls.IDLE);break;case D.BUFFER_APPEND_ERROR:case D.BUFFER_FULL_ERROR:if(!t.parent||"main"!==t.parent)return;if(t.details===D.BUFFER_APPEND_ERROR)return void this.resetLoadingState();this.reduceLengthAndFlushBuffer(t)&&this.flushMainBuffer(0,Number.POSITIVE_INFINITY);break;case D.INTERNAL_EXCEPTION:this.recoverWorkerError(t)}},i.checkBuffer=function(){var e=this.media,t=this.gapController;if(e&&t&&e.readyState){if(this.loadedmetadata||!Fr.getBuffered(e).length){var i=this.state,r=i!==ls.IDLE?this.fragCurrent:null,s=this.getLevelDetails();t.poll(this.lastCurrentTime,r,s,i)}this.lastCurrentTime=e.currentTime}},i.onFragLoadEmergencyAborted=function(){this.state=ls.IDLE,this.loadedmetadata||(this.startFragRequested=!1,this.nextLoadPosition=this.startPosition),this.tickImmediate()},i.onBufferFlushed=function(e,t){var i=t.type;if(i!==$.AUDIO||this.audioOnly&&!this.altAudio){var r=(i===$.VIDEO?this.videoBuffer:this.mediaBuffer)||this.media;this.afterBufferFlushed(r,i,Nt.MAIN),this.tick()}},i.onLevelsUpdated=function(e,t){this.level>-1&&this.fragCurrent&&(this.level=this.fragCurrent.level),this.levels=t.levels},i.swapAudioCodec=function(){this.audioCodecSwap=!this.audioCodecSwap},i.seekToStartPos=function(){var e=this.media;if(e){var t=e.currentTime,i=this.startPosition;if(i>=0&&t0&&(sv.cc;if(!1!==s.independent){var w=h.startPTS,S=h.endPTS,T=h.startDTS,C=h.endDTS;if(l)l.elementaryStreams[h.type]={startPTS:w,endPTS:S,startDTS:T,endDTS:C};else if(h.firstKeyFrame&&h.independent&&1===a.id&&!_&&(this.couldBacktrack=!0),h.dropped&&h.independent){var D=this.getMainFwdBufferInfo(),R=(D?D.end:this.getLoadPosition())+this.config.maxBufferHole,x=h.firstKeyFramePTS?h.firstKeyFramePTS:w;if(!b&&R$l&&(o.gap=!0);o.setElementaryStreamInfo(h.type,w,S,T,C),this.backtrackFragment&&(this.backtrackFragment=o),this.bufferFragmentData(h,o,l,a,b||_)}else{if(!b&&!_)return void this.backtrack(o);o.gap=!0}}if(y){var L=y.startPTS,I=y.endPTS,P=y.startDTS,B=y.endDTS;l&&(l.elementaryStreams[$.AUDIO]={startPTS:L,endPTS:I,startDTS:P,endDTS:B}),o.setElementaryStreamInfo($.AUDIO,L,I,P,B),this.bufferFragmentData(y,o,l,a)}if(f&&null!=u&&null!=(t=u.samples)&&t.length){var M={id:i,frag:o,details:f,samples:u.samples};r.trigger(k.FRAG_PARSING_METADATA,M)}if(f&&c){var U={id:i,frag:o,details:f,samples:c.samples};r.trigger(k.FRAG_PARSING_USERDATA,U)}}}else this.resetWhenMissingContext(a)},i._bufferInitSegment=function(e,t,i,r){var s=this;if(this.state===ls.PARSING){this.audioOnly=!!t.audio&&!t.video,this.altAudio&&!this.audioOnly&&delete t.audio;var a=t.audio,n=t.video,o=t.audiovideo;if(a){var l=e.audioCodec,d=navigator.userAgent.toLowerCase();this.audioCodecSwitch&&(l&&(l=-1!==l.indexOf("mp4a.40.5")?"mp4a.40.2":"mp4a.40.5"),1!==a.metadata.channelCount&&-1===d.indexOf("firefox")&&(l="mp4a.40.5")),l&&-1!==l.indexOf("mp4a.40.5")&&-1!==d.indexOf("android")&&"audio/mpeg"!==a.container&&(l="mp4a.40.2",this.log("Android: force audio codec to "+l)),e.audioCodec&&e.audioCodec!==l&&this.log('Swapping manifest audio codec "'+e.audioCodec+'" for "'+l+'"'),a.levelCodec=l,a.id="main",this.log("Init audio buffer, container:"+a.container+", codecs[selected/level/parsed]=["+(l||"")+"/"+(e.audioCodec||"")+"/"+a.codec+"]")}n&&(n.levelCodec=e.videoCodec,n.id="main",this.log("Init video buffer, container:"+n.container+", codecs[level/parsed]=["+(e.videoCodec||"")+"/"+n.codec+"]")),o&&this.log("Init audiovideo buffer, container:"+o.container+", codecs[level/parsed]=["+e.codecs+"/"+o.codec+"]"),this.hls.trigger(k.BUFFER_CODECS,t),Object.keys(t).forEach((function(e){var a=t[e].initSegment;null!=a&&a.byteLength&&s.hls.trigger(k.BUFFER_APPENDING,{type:e,data:a,frag:i,part:null,chunkMeta:r,parent:i.type})})),this.tickImmediate()}},i.getMainFwdBufferInfo=function(){return this.getFwdBufferInfo(this.mediaBuffer?this.mediaBuffer:this.media,Nt.MAIN)},i.backtrack=function(e){this.couldBacktrack=!0,this.backtrackFragment=e,this.resetTransmuxer(),this.flushBufferGap(e),this.fragmentTracker.removeFragment(e),this.fragPrevious=null,this.nextLoadPosition=e.start,this.state=ls.IDLE},i.checkFragmentChanged=function(){var e=this.media,t=null;if(e&&e.readyState>1&&!1===e.seeking){var i=e.currentTime;if(Fr.isBuffered(e,i)?t=this.getAppendedFrag(i):Fr.isBuffered(e,i+.1)&&(t=this.getAppendedFrag(i+.1)),t){this.backtrackFragment=null;var r=this.fragPlaying,s=t.level;r&&t.sn===r.sn&&r.level===s||(this.fragPlaying=t,this.hls.trigger(k.FRAG_CHANGED,{frag:t}),r&&r.level===s||this.hls.trigger(k.LEVEL_SWITCHED,{level:s}))}}},d(t,[{key:"maxBufferLength",get:function(){var e=this.levels,t=this.level,i=null==e?void 0:e[t];return i?this.getMaxBufferLength(i.maxBitrate):this.config.maxBufferLength}},{key:"nextLevel",get:function(){var e=this.nextBufferedFrag;return e?e.level:-1}},{key:"currentFrag",get:function(){var e=this.media;return e?this.fragPlaying||this.getAppendedFrag(e.currentTime):null}},{key:"currentProgramDateTime",get:function(){var e=this.media;if(e){var t=e.currentTime,i=this.currentFrag;if(i&&E(t)&&E(i.programDateTime)){var r=i.programDateTime+1e3*(t-i.start);return new Date(r)}}return null}},{key:"currentLevel",get:function(){var e=this.currentFrag;return e?e.level:-1}},{key:"nextBufferedFrag",get:function(){var e=this.currentFrag;return e?this.followingBufferedFrag(e):null}},{key:"forceStartLoad",get:function(){return this._forceStartLoad}}])}(ds),Xl=function(){function e(t){void 0===t&&(t={}),this.config=void 0,this.userConfig=void 0,this.logger=void 0,this.coreComponents=void 0,this.networkControllers=void 0,this._emitter=new Na,this._autoLevelCapping=-1,this._maxHdcpLevel=null,this.abrController=void 0,this.bufferController=void 0,this.capLevelController=void 0,this.latencyController=void 0,this.levelController=void 0,this.streamController=void 0,this.audioTrackController=void 0,this.subtitleTrackController=void 0,this.emeController=void 0,this.cmcdController=void 0,this._media=null,this.url=null,this.triggeringException=void 0;var i=this.logger=N(t.debug||!1,"Hls instance"),r=this.config=Bl(e.DefaultConfig,t,i);this.userConfig=t,r.progressive&&Ul(r,i);var s=r.abrController,a=r.bufferController,n=r.capLevelController,o=r.errorController,l=r.fpsController,d=new o(this),h=this.abrController=new s(this),c=new Pr(this),u=this.bufferController=new a(this,c),p=this.capLevelController=new n(this),f=new l(this),y=new Wt(this),m=new Ti(this),g=r.contentSteeringController,A=g?new g(this):null,v=this.levelController=new Fl(this,A),b=new Nl(this.config),_=this.streamController=new Ql(this,c,b);p.setStreamController(_),f.setStreamController(_);var w=[y,v,_];A&&w.splice(1,0,A),this.networkControllers=w;var E=[h,u,p,f,m,c];this.audioTrackController=this.createController(r.audioTrackController,w);var S=r.audioStreamController;S&&w.push(new S(this,c,b)),this.subtitleTrackController=this.createController(r.subtitleTrackController,w);var T=r.subtitleStreamController;T&&w.push(new T(this,c,b)),this.createController(r.timelineController,E),b.emeController=this.emeController=this.createController(r.emeController,E),this.cmcdController=this.createController(r.cmcdController,E),this.latencyController=this.createController(ki,E),this.coreComponents=E,w.push(d);var C=d.onErrorOut;"function"==typeof C&&this.on(k.ERROR,C,d)}e.isMSESupported=function(){return zl()},e.isSupported=function(){return Wl()},e.getMediaSource=function(){return dt()};var t=e.prototype;return t.createController=function(e,t){if(e){var i=new e(this);return t&&t.push(i),i}return null},t.on=function(e,t,i){void 0===i&&(i=this),this._emitter.on(e,t,i)},t.once=function(e,t,i){void 0===i&&(i=this),this._emitter.once(e,t,i)},t.removeAllListeners=function(e){this._emitter.removeAllListeners(e)},t.off=function(e,t,i,r){void 0===i&&(i=this),this._emitter.off(e,t,i,r)},t.listeners=function(e){return this._emitter.listeners(e)},t.emit=function(e,t,i){return this._emitter.emit(e,t,i)},t.trigger=function(e,t){if(this.config.debug)return this.emit(e,e,t);try{return this.emit(e,e,t)}catch(t){if(this.logger.error("An internal error happened while handling event "+e+'. Error message: "'+t.message+'". Here is a stacktrace:',t),!this.triggeringException){this.triggeringException=!0;var i=e===k.ERROR;this.trigger(k.ERROR,{type:C.OTHER_ERROR,details:D.INTERNAL_EXCEPTION,fatal:i,event:e,error:t}),this.triggeringException=!1}}return!1},t.listenerCount=function(e){return this._emitter.listenerCount(e)},t.destroy=function(){this.logger.log("destroy"),this.trigger(k.DESTROYING,void 0),this.detachMedia(),this.removeAllListeners(),this._autoLevelCapping=-1,this.url=null,this.networkControllers.forEach((function(e){return e.destroy()})),this.networkControllers.length=0,this.coreComponents.forEach((function(e){return e.destroy()})),this.coreComponents.length=0;var e=this.config;e.xhrSetup=e.fetchSetup=void 0,this.userConfig=null},t.attachMedia=function(e){this.logger.log("attachMedia"),this._media=e,this.trigger(k.MEDIA_ATTACHING,{media:e})},t.detachMedia=function(){this.logger.log("detachMedia"),this.trigger(k.MEDIA_DETACHING,void 0),this._media=null},t.loadSource=function(e){this.stopLoad();var t=this.media,i=this.url,r=this.url=w.buildAbsoluteURL(self.location.href,e,{alwaysNormalize:!0});this._autoLevelCapping=-1,this._maxHdcpLevel=null,this.logger.log("loadSource:"+r),t&&i&&(i!==r||this.bufferController.hasSourceTypes())&&(this.detachMedia(),this.attachMedia(t)),this.trigger(k.MANIFEST_LOADING,{url:e})},t.startLoad=function(e){void 0===e&&(e=-1),this.logger.log("startLoad("+e+")"),this.networkControllers.forEach((function(t){t.startLoad(e)}))},t.stopLoad=function(){this.logger.log("stopLoad"),this.networkControllers.forEach((function(e){e.stopLoad()}))},t.resumeBuffering=function(){this.networkControllers.forEach((function(e){e.resumeBuffering&&e.resumeBuffering()}))},t.pauseBuffering=function(){this.networkControllers.forEach((function(e){e.pauseBuffering&&e.pauseBuffering()}))},t.swapAudioCodec=function(){this.logger.log("swapAudioCodec"),this.streamController.swapAudioCodec()},t.recoverMediaError=function(){this.logger.log("recoverMediaError");var e=this._media;this.detachMedia(),e&&this.attachMedia(e)},t.removeLevel=function(e){this.levelController.removeLevel(e)},t.setAudioOption=function(e){var t;return null==(t=this.audioTrackController)?void 0:t.setAudioOption(e)},t.setSubtitleOption=function(e){var t;return null==(t=this.subtitleTrackController)||t.setSubtitleOption(e),null},d(e,[{key:"levels",get:function(){var e=this.levelController.levels;return e||[]}},{key:"currentLevel",get:function(){return this.streamController.currentLevel},set:function(e){this.logger.log("set currentLevel:"+e),this.levelController.manualLevel=e,this.streamController.immediateLevelSwitch()}},{key:"nextLevel",get:function(){return this.streamController.nextLevel},set:function(e){this.logger.log("set nextLevel:"+e),this.levelController.manualLevel=e,this.streamController.nextLevelSwitch()}},{key:"loadLevel",get:function(){return this.levelController.level},set:function(e){this.logger.log("set loadLevel:"+e),this.levelController.manualLevel=e}},{key:"nextLoadLevel",get:function(){return this.levelController.nextLoadLevel},set:function(e){this.levelController.nextLoadLevel=e}},{key:"firstLevel",get:function(){return Math.max(this.levelController.firstLevel,this.minAutoLevel)},set:function(e){this.logger.log("set firstLevel:"+e),this.levelController.firstLevel=e}},{key:"startLevel",get:function(){var e=this.levelController.startLevel;return-1===e&&this.abrController.forcedAutoLevel>-1?this.abrController.forcedAutoLevel:e},set:function(e){this.logger.log("set startLevel:"+e),-1!==e&&(e=Math.max(e,this.minAutoLevel)),this.levelController.startLevel=e}},{key:"capLevelToPlayerSize",get:function(){return this.config.capLevelToPlayerSize},set:function(e){var t=!!e;t!==this.config.capLevelToPlayerSize&&(t?this.capLevelController.startCapping():(this.capLevelController.stopCapping(),this.autoLevelCapping=-1,this.streamController.nextLevelSwitch()),this.config.capLevelToPlayerSize=t)}},{key:"autoLevelCapping",get:function(){return this._autoLevelCapping},set:function(e){this._autoLevelCapping!==e&&(this.logger.log("set autoLevelCapping:"+e),this._autoLevelCapping=e,this.levelController.checkMaxAutoUpdated())}},{key:"bandwidthEstimate",get:function(){var e=this.abrController.bwEstimator;return e?e.getEstimate():NaN},set:function(e){this.abrController.resetEstimator(e)}},{key:"ttfbEstimate",get:function(){var e=this.abrController.bwEstimator;return e?e.getEstimateTTFB():NaN}},{key:"maxHdcpLevel",get:function(){return this._maxHdcpLevel},set:function(e){Di(e)&&this._maxHdcpLevel!==e&&(this._maxHdcpLevel=e,this.levelController.checkMaxAutoUpdated())}},{key:"autoLevelEnabled",get:function(){return-1===this.levelController.manualLevel}},{key:"manualLevel",get:function(){return this.levelController.manualLevel}},{key:"minAutoLevel",get:function(){var e=this.levels,t=this.config.minAutoBitrate;if(!e)return 0;for(var i=e.length,r=0;r=t)return r;return 0}},{key:"maxAutoLevel",get:function(){var e,t=this.levels,i=this.autoLevelCapping,r=this.maxHdcpLevel;if(e=-1===i&&null!=t&&t.length?t.length-1:i,r)for(var s=e;s--;){var a=t[s].attrs["HDCP-LEVEL"];if(a&&a<=r)return s}return e}},{key:"firstAutoLevel",get:function(){return this.abrController.firstAutoLevel}},{key:"nextAutoLevel",get:function(){return this.abrController.nextAutoLevel},set:function(e){this.abrController.nextAutoLevel=e}},{key:"playingDate",get:function(){return this.streamController.currentProgramDateTime}},{key:"mainForwardBufferInfo",get:function(){return this.streamController.getMainFwdBufferInfo()}},{key:"maxBufferLength",get:function(){return this.streamController.maxBufferLength}},{key:"allAudioTracks",get:function(){var e=this.audioTrackController;return e?e.allAudioTracks:[]}},{key:"audioTracks",get:function(){var e=this.audioTrackController;return e?e.audioTracks:[]}},{key:"audioTrack",get:function(){var e=this.audioTrackController;return e?e.audioTrack:-1},set:function(e){var t=this.audioTrackController;t&&(t.audioTrack=e)}},{key:"allSubtitleTracks",get:function(){var e=this.subtitleTrackController;return e?e.allSubtitleTracks:[]}},{key:"subtitleTracks",get:function(){var e=this.subtitleTrackController;return e?e.subtitleTracks:[]}},{key:"subtitleTrack",get:function(){var e=this.subtitleTrackController;return e?e.subtitleTrack:-1},set:function(e){var t=this.subtitleTrackController;t&&(t.subtitleTrack=e)}},{key:"media",get:function(){return this._media}},{key:"subtitleDisplay",get:function(){var e=this.subtitleTrackController;return!!e&&e.subtitleDisplay},set:function(e){var t=this.subtitleTrackController;t&&(t.subtitleDisplay=e)}},{key:"lowLatencyMode",get:function(){return this.config.lowLatencyMode},set:function(e){this.config.lowLatencyMode=e}},{key:"liveSyncPosition",get:function(){return this.latencyController.liveSyncPosition}},{key:"latency",get:function(){return this.latencyController.latency}},{key:"maxLatency",get:function(){return this.latencyController.maxLatency}},{key:"targetLatency",get:function(){return this.latencyController.targetLatency}},{key:"drift",get:function(){return this.latencyController.drift}},{key:"forceStartLoad",get:function(){return this.streamController.forceStartLoad}}],[{key:"version",get:function(){}},{key:"Events",get:function(){return k}},{key:"ErrorTypes",get:function(){return C}},{key:"ErrorDetails",get:function(){return D}},{key:"DefaultConfig",get:function(){return e.defaultConfig?e.defaultConfig:Il},set:function(t){e.defaultConfig=t}}])}();return Xl.defaultConfig=void 0,Xl}()}(!1)})),Bd=(Id=Pd)&&Id.__esModule&&Object.prototype.hasOwnProperty.call(Id,"default")?Id.default:Id;class Md extends t{constructor(e){super(),this.player=e,this.TAG_NAME="HlsDecoder",e._opt,this.canVideoPlay=!1,this.$videoElement=null,this.canvasRenderInterval=null,this.bandwidthEstimateInterval=null,this.fpsInterval=null,this.hlsFps=0,this.hlsPrevFrams=0,this.isInitInfo=!1,this.eventsDestroy=[],this.supportVideoFrameCallbackHandle=null,this.player.isHlsCanVideoPlay()?(this.$videoElement=this.player.video.$videoElement,this.canVideoPlay=!0):Bd.isSupported()?(this.$videoElement=this.player.video.$videoElement,this.hls=new Bd({}),this._initHls(),this._bindEvents()):this.player.debug.error(this.TAG_NAME,"init hls error ,not support "),this.player.debug.log(this.TAG_NAME,"init")}destroy(){return new Promise(((e,t)=>{this.supportVideoFrameCallbackHandle&&this.$videoElement&&(this.$videoElement.cancelVideoFrameCallback(this.supportVideoFrameCallbackHandle),this.supportVideoFrameCallbackHandle=null),this.hls&&(this.hls.destroy(),this.hls=null),this.eventsDestroy.length&&(this.eventsDestroy.forEach((e=>e())),this.eventsDestroy=[]),this.isInitInfo=!1,this._stopCanvasRender(),this._stopBandwidthEstimateInterval(),this._stopFpsInterval(),this.$videoElement=null,this.hlsFps=0,this.player.debug.log(this.TAG_NAME,"destroy"),setTimeout((()=>{e()}),0)}))}checkHlsBufferedDelay(){const e=this.$videoElement;let t=0;const i=e.buffered,r=i.length?i.end(i.length-1):0;return t=r-e.currentTime,t<0&&(this.player.debug.warn(this.TAG_NAME,`checkHlsBufferedDelay ${t} < 0, and buffered is ${r} ,currentTime is ${e.currentTime} , try to seek ${e.currentTime} to ${r}`),e.currentTime=r,t=0),t}getFps(){return this.hlsFps}_startCanvasRender(){Pa()?this.supportVideoFrameCallbackHandle=this.$videoElement.requestVideoFrameCallback(this.videoFrameCallback.bind(this)):(this._stopCanvasRender(),this.canvasRenderInterval=setInterval((()=>{this.player.video.render({$video:this.$videoElement,ts:parseInt(1e3*this.$videoElement.currentTime,10)||0})}),40))}_stopCanvasRender(){this.canvasRenderInterval&&(clearInterval(this.canvasRenderInterval),this.canvasRenderInterval=null)}videoFrameCallback(e,t={}){if(this.player.isDestroyedOrClosed())return void this.player.debug.log(this.TAG_NAME,"videoFrameCallback() player is destroyed");const i=parseInt(1e3*Math.max(t.mediaTime,this.$videoElement.currentTime),10)||0;this.player.video.render({$video:this.$videoElement,ts:i}),this.player.handleRender(),this.player.updateStats({dts:i}),this.supportVideoFrameCallbackHandle=this.$videoElement.requestVideoFrameCallback(this.videoFrameCallback.bind(this))}_startBandwidthEstimateInterval(){this._stopBandwidthEstimateInterval(),this.bandwidthEstimateInterval=setInterval((()=>{let e=0;this.hls.bandwidthEstimate&&(e=this.hls.bandwidthEstimate),this.player.emit(st.kBps,(e/1024/8/10).toFixed(2))}),1e3)}_stopBandwidthEstimateInterval(){this.bandwidthEstimateInterval&&(clearInterval(this.bandwidthEstimateInterval),this.bandwidthEstimateInterval=null)}_startFpsInterval(){this._stopCanvasRender(),this.fpsInterval=setInterval((()=>{if(this.$videoElement)if(ha(this.$videoElement.getVideoPlaybackQuality)){const e=this.$videoElement.getVideoPlaybackQuality();this.hlsFps=e.totalVideoFrames-this.hlsPrevFrams,this.hlsPrevFrams=e.totalVideoFrames}else{const e=this.$videoElement.webkitDecodedFrameCount||0;this.hlsFps=e-this.hlsPrevFrams,this.hlsPrevFrams=e}}),1e3)}_stopFpsInterval(){this.fpsInterval&&(clearInterval(this.fpsInterval),this.fpsInterval=null)}_initHls(){this.player._opt.useCanvasRender&&(this.$videoElement=document.createElement("video"),this.$videoElement.muted=!0,Is()&&(this.$videoElement.style.position="absolute"),this.initVideoEvents()),this.hls.attachMedia(this.$videoElement)}_bindEvents(){const e=this.player,{proxy:t}=this.player.events;this.hls;const i=this.$videoElement,r=Pa(),s=t(i,Ti,(t=>{if(this.hls){const i=parseInt(t.timeStamp,10);this.player._opt.useCanvasRender&&ka(r)&&e.updateStats({ts:i,dts:i})}}));this.eventsDestroy.push(s),this._startBandwidthEstimateInterval(),this._startFpsInterval(),this.hls.on(Bd.Events.ERROR,((t,i)=>{if(i.fatal)switch(i.type){case Bd.ErrorTypes.NETWORK_ERROR:this.player.debug.warn(this.TAG_NAME,"fatal network error encountered, try to recover"),this.hls.startLoad();break;case Bd.ErrorTypes.MEDIA_ERROR:this.player.debug.warn(this.TAG_NAME,"fatal media error encountered, try to recover"),this.hls.recoverMediaError()}else if("mediaError"===i.type){if("Unsupported HEVC stream type found 0x24"!==i.reason)return;e.resetPlayerH265()}})),this.hls.on(Bd.Events.MEDIA_ATTACHING,(()=>{})),this.hls.on(Bd.Events.MEDIA_ATTACHED,(()=>{})),this.hls.on(Bd.Events.MEDIA_DETACHING,(()=>{})),this.hls.on(Bd.Events.MEDIA_DETACHED,(()=>{})),this.hls.on(Bd.Events.BUFFER_RESET,(()=>{})),this.hls.on(Bd.Events.BUFFER_CODECS,(()=>{})),this.hls.on(Bd.Events.BUFFER_CREATED,(()=>{})),this.hls.on(Bd.Events.BUFFER_APPENDING,((e,t)=>{})),this.hls.on(Bd.Events.BUFFER_APPENDED,(()=>{})),this.hls.on(Bd.Events.BUFFER_EOS,(()=>{})),this.hls.on(Bd.Events.BUFFER_FLUSHING,(()=>{})),this.hls.on(Bd.Events.BUFFER_FLUSHED,(()=>{})),this.hls.on(Bd.Events.MANIFEST_LOADING,(()=>{})),this.hls.on(Bd.Events.MANIFEST_LOADED,((e,t)=>{})),this.hls.on(Bd.Events.MANIFEST_PARSED,(t=>{e._times.demuxStart||(e._times.demuxStart=vs())})),this.hls.on(Bd.Events.LEVEL_LOADING,(()=>{})),this.hls.on(Bd.Events.LEVEL_LOADED,((e,t)=>{})),this.hls.on(Bd.Events.FRAG_LOADING,(e=>{})),this.hls.on(Bd.Events.FRAG_LOADED,((t,i)=>{e._times.decodeStart||(e._times.decodeStart=vs())})),this.hls.on(Bd.Events.BUFFER_APPENDING,(()=>{e._times.videoStart||(e._times.videoStart=vs(),e.handlePlayToRenderTimes())})),this.hls.on(Bd.Events.FRAG_DECRYPTED,(()=>{})),this.hls.on(Bd.Events.KEY_LOADING,(()=>{})),this.hls.on(Bd.Events.KEY_LOADING,(()=>{})),this.hls.on(Bd.Events.FPS_DROP,(e=>{})),this.hls.on(Bd.Events.FPS_DROP_LEVEL_CAPPING,(e=>{})),this.hls.on(Bd.Events.FRAG_PARSING_INIT_SEGMENT,((e,t)=>{const i=!!(t&&t.tracks&&t.tracks.audio),r=!!(t&&t.tracks&&t.tracks.video);if(i&&t.tracks.audio){let e=t.tracks.audio;const i=e.metadata&&e.metadata.channelCount?e.metadata.channelCount:0,r=e.codec;this.player.audio&&this.player.audio.updateAudioInfo({encType:r,channels:i,sampleRate:44100})}if(r&&t.tracks.video){let e=t.tracks.video;const i={encTypeCode:-1!==e.codec.indexOf("avc")?gt:At};e.metadata&&(i.width=e.metadata.width,i.height=e.metadata.height),this.player.video&&this.player.video.updateVideoInfo(i)}}))}initVideoPlay(e){this.player._opt.useCanvasRender&&(this.$videoElement=document.createElement("video"),this.initVideoEvents()),this.$videoElement.autoplay=!0,this.$videoElement.muted=!0,this.$videoElement.src=e}_initRenderSize(){this.isInitInfo||(this.player.video.updateVideoInfo({width:this.$videoElement.videoWidth,height:this.$videoElement.videoHeight}),this.player.video.initCanvasViewSize(),this.isInitInfo=!0)}initVideoEvents(){const{proxy:e}=this.player.events,t=e(this.$videoElement,Ei,(()=>{this.player.debug.log(this.TAG_NAME,"video canplay"),this.$videoElement.play().then((()=>{this.player.debug.log(this.TAG_NAME,"video play"),this._startCanvasRender(),this._initRenderSize()})).catch((e=>{this.player.debug.warn(this.TAG_NAME,"video play error ",e)}))})),i=e(this.$videoElement,Si,(()=>{this.player.debug.log(this.TAG_NAME,"video waiting")})),r=e(this.$videoElement,Ti,(e=>{const t=parseInt(e.timeStamp,10);this.player.handleRender(),this.player.updateStats({ts:t}),this.$videoElement.paused&&(this.player.debug.warn(this.TAG_NAME,"video is paused and next try to replay"),this.$videoElement.play().then((()=>{this.player.debug.log(this.TAG_NAME,"video is paused and replay success")})).catch((e=>{this.player.debug.warn(this.TAG_NAME,"video is paused and replay error ",e)})))})),s=e(this.$videoElement,ki,(()=>{this.player.debug.log(this.TAG_NAME,"video playback Rate change",this.$videoElement&&this.$videoElement.playbackRate)}));this.eventsDestroy.push(t,i,r,s)}loadSource(e){return new Promise(((t,i)=>{this.canVideoPlay?(this.initVideoPlay(e),t()):this.hls.on(Bd.Events.MEDIA_ATTACHED,(()=>{this.hls.loadSource(e),t()}))}))}}const Ud=2097152,Fd="fetch",Od="xhr",Nd="arraybuffer",Gd="text",zd="json",Wd="real_time_speed",Vd=Object.prototype.toString;function Hd(e){if("[object Object]"!==Vd.call(e))return!1;const t=Object.getPrototypeOf(e);return null===t||t===Object.prototype}function $d(e){if(!e||null===e[0]||void 0===e[0]||0===e[0]&&(null===e[1]||void 0===e[1]))return;let t="bytes="+e[0]+"-";return e[1]&&(t+=e[1]),t}function jd(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function Kd(e,t){if(!e)return;if(!t)return e;let i;const r=Object.keys(t).map((e=>{if(i=t[e],null!=i)return Array.isArray(i)?e+="[]":i=[i],i.map((t=>{var i;return i=t,"[object Date]"===Vd.call(i)?t=t.toISOString():function(e){return null!==e&&"object"==typeof e}(t)&&(t=JSON.stringify(t)),`${jd(e)}=${jd(t)}`})).join("&")})).filter(Boolean).join("&");if(r){const t=e.indexOf("#");-1!==t&&(e=e.slice(0,t)),e+=(-1===e.indexOf("?")?"?":"&")+r}return e}function qd(e,t,i,r,s,a,n,o,l,d,h){s=null!=s?parseFloat(s):null,r=parseInt(r||"0",10),Number.isNaN(r)&&(r=0);return{data:e,done:t,option:{range:l,vid:d,index:o,contentLength:r,age:s,startTime:a,firstByteTime:n,endTime:Date.now(),priOptions:h},response:i}}function Yd(e,t){return Math.round(8*e*1e3/t/1024)}class Qd extends Error{retryCount=0;isTimeout=!1;loaderType=Fd;startTime=0;endTime=0;options={};constructor(e,t,i,r){super(r),this.url=e,this.request=t,this.response=i}}class Xd extends t{_abortController=null;_timeoutTimer=null;_reader=null;_response=null;_aborted=!1;_index=-1;_range=null;_receivedLength=0;_running=!1;_logger=null;_vid="";_onProcessMinLen=0;_onCancel=null;_priOptions=null;TAG_NAME="FetchLoader";constructor(e){super(),this.player=e}load({url:e,vid:t,timeout:i,responseType:r,onProgress:s,index:a,onTimeout:n,onCancel:o,range:l,transformResponse:d,request:h,params:c,logger:u,method:p,headers:f,body:y,mode:m,credentials:g,cache:A,redirect:v,referrer:b,referrerPolicy:_,onProcessMinLen:w,priOptions:E}){this._aborted=!1,this._onProcessMinLen=w,this._onCancel=o,this._abortController="undefined"!=typeof AbortController&&new AbortController,this._running=!0,this._index=a,this._range=l||[0,0],this._vid=t||e,this._priOptions=E||{};const S={method:p,headers:f,body:y,mode:m,credentials:g,cache:A,redirect:v,referrer:b,referrerPolicy:_,signal:this._abortController?.signal};let T=!1;clearTimeout(this._timeoutTimer),e=Kd(e,c);const k=$d(l);k&&(f=h?h.headers:S.headers=S.headers||(Headers?new Headers:{}),Headers&&f instanceof Headers?f.append("Range",k):f.Range=k),i&&(this._timeoutTimer=setTimeout((()=>{if(T=!0,this.cancel(),n){const t=new Qd(e,S,null,"timeout");t.isTimeout=!0,n(t,{index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions})}}),i));const C=Date.now();return(Ks(a)||Ks(l))&&this.player.debug.log(this.TAG_NAME,"[fetch load start], index,",a,",range,",l),new Promise(((t,i)=>{fetch(h||e,h?void 0:S).then((async n=>{if(clearTimeout(this._timeoutTimer),this._response=n,this._aborted||!this._running)return;if(d&&(n=d(n,e)||n),!n.ok)throw new Qd(e,S,n,"bad network response");const o=Date.now();let h;if(r===Gd)h=await n.text(),this._running=!1;else if(r===zd)h=await n.json(),this._running=!1;else{if(s)return this.resolve=t,this.reject=i,void this._loadChunk(n,s,C,o);{h=await n.arrayBuffer(),h=new Uint8Array(h),this._running=!1;const e=Date.now()-C,t=Yd(h.byteLength,e);this.emit(Wd,{speed:t,len:h.byteLength,time:e,vid:this._vid,index:this._index,range:this._range,priOptions:this._priOptions})}}(Ks(a)||Ks(l))&&this.player.debug.log(this.TAG_NAME,"[fetch load end], index,",a,",range,",l),t(qd(h,!0,n,n.headers.get("Content-Length"),n.headers.get("age"),C,o,a,l,this._vid,this._priOptions))})).catch((t=>{clearTimeout(this._timeoutTimer),this._running=!1,this._aborted&&!T||((t=t instanceof Qd?t:new Qd(e,S,null,t?.message)).startTime=C,t.endTime=Date.now(),t.isTimeout=T,t.options={index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions},i(t))}))}))}async cancel(){if(!this._aborted){if(this._aborted=!0,this._running=!1,this._response){try{this._reader&&await this._reader.cancel()}catch(e){}this._response=this._reader=null}if(this._abortController){try{this._abortController.abort()}catch(e){}this._abortController=null}this._onCancel&&this._onCancel({index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions})}}_loadChunk(e,t,i,r){if(!e.body||!e.body.getReader){this._running=!1;const t=new Qd(e.url,"",e,"onProgress of bad response.body.getReader");return t.options={index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions},void this.reject(t)}this._onProcessMinLen>0&&(this._cache=new Uint8Array(Ud),this._writeIdx=0);const s=this._reader=e.body.getReader();let a,n,o;const l=async()=>{n=Date.now();try{a=await s.read(),o=Date.now()}catch(e){return o=Date.now(),void(this._aborted||(this._running=!1,e.options={index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions},this.reject(e)))}const d=this._range?.length>0?this._range[0]:0,h=d+this._receivedLength;if(this._aborted)return this._running=!1,void t(void 0,!1,{range:[h,h],vid:this._vid,index:this._index,startTime:n,endTime:o,st:i,firstByteTime:r,priOptions:this._priOptions},e);const c=a.value?a.value.byteLength:0;let u;if(this._receivedLength+=c,this.player.debug.log(this.TAG_NAME,"【fetchLoader,onProgress call】,task,",this._range,", start,",h,", end,",d+this._receivedLength,", done,",a.done),this._onProcessMinLen>0){if(this._writeIdx+c>=this._onProcessMinLen||a.done)u=new Uint8Array(this._writeIdx+c),u.set(this._cache.slice(0,this._writeIdx),0),c>0&&u.set(a.value,this._writeIdx),this._writeIdx=0,this.player.debug.log(this.TAG_NAME,"【fetchLoader,onProgress enough】,done,",a.done,",len,",u.byteLength,", writeIdx,",this._writeIdx);else if(c>0&&this._writeIdx+c0){const e=new Uint8Array(this._writeIdx+c+2048);this.player.debug.log(this.TAG_NAME,"【fetchLoader,onProgress extra start】,size,",this._writeIdx+c+2048,", datalen,",c,", writeIdx,",this._writeIdx),e.set(this._cache.slice(0,this._writeIdx),0),c>0&&e.set(a.value,this._writeIdx),this._writeIdx+=c,delete this._cache,this._cache=e,this.player.debug.log(this.TAG_NAME,"【fetchLoader,onProgress extra end】,len,",c,", writeIdx,",this._writeIdx)}}else u=a.value;if((u&&u.byteLength>0||a.done)&&t(u,a.done,{range:[this._range[0]+this._receivedLength-(u?u.byteLength:0),this._range[0]+this._receivedLength],vid:this._vid,index:this._index,startTime:n,endTime:o,st:i,firstByteTime:r,priOptions:this._priOptions},e),a.done){const t=Date.now()-i,s=Yd(this._receivedLength,t);this.emit(Wd,{speed:s,len:this._receivedLength,time:t,vid:this._vid,index:this._index,range:this._range,priOptions:this._priOptions}),this._running=!1,this.player.debug.log(this.TAG_NAME,"[fetchLoader onProgress end],task,",this._range,",done,",a.done),this.resolve(qd(a,!0,e,e.headers.get("Content-Length"),e.headers.get("age"),i,r,this._index,this._range,this._vid,this._priOptions))}else l()};l()}get receiveLen(){return this._receivedLength}get running(){return this._running}set running(e){this._running=e}static isSupported(){return!("undefined"==typeof fetch)}}class Jd{TAG_NAME="Task";constructor(e,t,i){this.promise=function(){let e,t;const i=new Promise(((i,r)=>{e=i,t=r}));return i.used=!1,i.resolve=(...t)=>(i.used=!0,e(...t)),i.reject=(...e)=>(i.used=!0,t(...e)),i}(),this.alive=!!t.onProgress,this._loaderType=e,this.player=i,this._loader=e===Fd&&window.fetch?new Xd(i):new Zd(i),this._config=t,this._retryCount=0,this._retryTimer=null,this._canceled=!1,this._retryCheckFunc=t.retryCheckFunc}exec(){const{retry:e,retryDelay:t,onRetryError:i,transformError:r,...s}=this._config,a=async()=>{try{const e=await this._loader.load(s);this.promise.resolve(e)}catch(n){if(this._loader.running=!1,this.player.debug.log(this.TAG_NAME,"[task request catch err]",n),this._canceled)return;n.loaderType=this._loaderType,n.retryCount=this._retryCount;let o=n;r&&(o=r(o)||o),i&&this._retryCount>0&&i(o,this._retryCount,{index:s.index,vid:s.vid,range:s.range,priOptions:s.priOptions}),this._retryCount++;let l=!0;if(this._retryCheckFunc&&(l=this._retryCheckFunc(n)),l&&this._retryCount<=e)return clearTimeout(this._retryTimer),this.player.debug.log(this.TAG_NAME,"[task request setTimeout],retry",this._retryCount,",retry range,",s.range),void(this._retryTimer=setTimeout(a,t));this.promise.reject(o)}};return a(),this.promise}async cancel(){return clearTimeout(this._retryTimer),this._canceled=!0,this._loader.running=!1,this._loader.cancel()}get running(){return this._loader&&this._loader.running}get loader(){return this._loader}}class Zd extends t{_xhr=null;_aborted=!1;_timeoutTimer=null;_range=null;_receivedLength=0;_url=null;_onProgress=null;_index=-1;_headers=null;_currentChunkSizeKB=384;_timeout=null;_xhr=null;_withCredentials=null;_startTime=-1;_loadCompleteResolve=null;_loadCompleteReject=null;_runing=!1;_logger=!1;_vid="";_responseType;_credentials;_method;_transformResponse;_firstRtt;_onCancel=null;_priOptions=null;TAG_NAME="XhrLoader";constructor(e){super(),this.player=e}load(e){clearTimeout(this._timeoutTimer),this._range=e.range,this._onProgress=e.onProgress,this._index=e.index,this._headers=e.headers,this._withCredentials="include"===e.credentials||"same-origin"===e.credentials,this._body=e.body||null,e.method&&(this._method=e.method),this._timeout=e.timeout||null,this._runing=!0,this._vid=e.vid||e.url,this._responseType=e.responseType,this._firstRtt=-1,this._onTimeout=e.onTimeout,this._onCancel=e.onCancel,this._request=e.request,this._priOptions=e.priOptions||{},this.player.debug.log(this.TAG_NAME,"【xhrLoader task】, range",this._range),this._url=Kd(e.url,e.params);const t=Date.now();return new Promise(((e,t)=>{this._loadCompleteResolve=e,this._loadCompleteReject=t,this._startLoad()})).catch((e=>{if(clearTimeout(this._timeoutTimer),this._runing=!1,!this._aborted)throw(e=e instanceof Qd?e:new Qd(this._url,this._request)).startTime=t,e.endTime=Date.now(),e.options={index:this._index,vid:this._vid,priOptions:this._priOptions},e}))}_startLoad(){let e=null;if(this._responseType===Nd&&this._range&&this._range.length>1)if(this._onProgress){this._firstRtt=-1;const t=1024*this._currentChunkSizeKB,i=this._range[0]+this._receivedLength;let r=this._range[1];t],tast :",this._range,", SubRange, ",e)}else e=this._range,this.player.debug.log(this.TAG_NAME,"[xhr_loader->],tast :",this._range,", allRange, ",e);this._internalOpen(e)}_internalOpen(e){try{this._startTime=Date.now();const t=this._xhr=new XMLHttpRequest;t.open(this._method||"GET",this._url,!0),t.responseType=this._responseType,this._timeout&&(t.timeout=this._timeout),t.withCredentials=this._withCredentials,t.onload=this._onLoad.bind(this),t.onreadystatechange=this._onReadyStatechange.bind(this),t.onerror=e=>{this._running=!1;const t=new Qd(this._url,this._request,e?.currentTarget?.response,"xhr.onerror.status:"+e?.currentTarget?.status+",statusText,"+e?.currentTarget?.statusText);t.options={index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions},this._loadCompleteReject(t)},t.ontimeout=e=>{this.cancel();const t=new Qd(this._url,this._request,{status:408},"timeout");this._onTimeout&&(t.isTimeout=!0,this._onTimeout(t,{index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions})),t.options={index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions},this._loadCompleteReject(t)};const i=this._headers||{},r=$d(e);r&&(i.Range=r),i&&Object.keys(i).forEach((e=>{t.setRequestHeader(e,i[e])})),this.player.debug.log(this.TAG_NAME,"[xhr.send->] tast,",this._range,",load sub range, ",e),t.send(this._body)}catch(t){t.options={index:this._index,range:e,vid:this._vid,priOptions:this._priOptions},this._loadCompleteReject(t)}}_onReadyStatechange(e){2===e.target.readyState&&this._firstRtt<0&&(this._firstRtt=Date.now())}_onLoad(e){const t=e.target.status;if(t<200||t>299){const i=new Qd(this._url,null,{...e.target.response,status:t},"bad response,status:"+t);return i.options={index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions},this._loadCompleteReject(i)}let i,r=null,s=!1;const a=this._range?.length>0?this._range[0]:0;if(this._responseType===Nd){const t=new Uint8Array(e.target.response);if(i=a+this._receivedLength,t&&t.byteLength>0){this._receivedLength+=t.byteLength;const e=Date.now()-this._startTime,r=Yd(this._receivedLength,e);this.emit(Wd,{speed:r,len:this._receivedLength,time:e,vid:this._vid,index:this._index,range:[i,a+this._receivedLength],priOptions:this._priOptions})}r=t,s=!(this._range?.length>1&&this._range[1]&&this._receivedLength], tast :",this._range,", start",i,"end ",a+this._receivedLength,",dataLen,",t?t.byteLength:0,",receivedLength",this._receivedLength,",index,",this._index,", done,",s)}else s=!0,r=e.target.response;let n={ok:t>=200&&t<300,status:t,statusText:this._xhr.statusText,url:this._xhr.responseURL,headers:this._getHeaders(this._xhr),body:this._xhr.response};this._transformResponse&&(n=this._transformResponse(n,this._url)||n),this._onProgress&&this._onProgress(r,s,{index:this._index,vid:this._vid,range:[i,a+this._receivedLength],startTime:this._startTime,endTime:Date.now(),priOptions:this._priOptions},n),s?(this._runing=!1,this._loadCompleteResolve&&this._loadCompleteResolve(qd(this._onProgress?null:r,s,n,n.headers["content-length"],n.headers.age,this._startTime,this._firstRtt,this._index,this._range,this._vid,this._priOptions))):this._startLoad()}cancel(){if(!this._aborted)return this._aborted=!0,this._runing=!1,super.removeAllListeners(),this._onCancel&&this._onCancel({index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions}),this._xhr?this._xhr.abort():void 0}static isSupported(){return"undefined"!=typeof XMLHttpRequest}get receiveLen(){return this._receivedLength}get running(){return this._running}set running(e){this._running=e}_getHeaders(e){const t=e.getAllResponseHeaders().trim().split("\r\n"),i={};for(const e of t){const t=e.split(": ");i[t[0].toLowerCase()]=t.slice(1).join(": ")}return i}}class eh extends t{type=Fd;_queue=[];_alive=[];_currentTask=null;_config;constructor(e,t){super(),this.player=t,this._config=function(e){return{loaderType:Fd,retry:0,retryDelay:0,timeout:0,request:null,onTimeout:void 0,onProgress:void 0,onRetryError:void 0,transformRequest:void 0,transformResponse:void 0,transformError:void 0,responseType:Gd,range:void 0,url:"",params:void 0,method:"GET",headers:{},body:void 0,mode:void 0,credentials:void 0,cache:void 0,redirect:void 0,referrer:void 0,referrerPolicy:void 0,integrity:void 0,onProcessMinLen:0,...e}}(e),this._config.loaderType!==Od&&Xd.isSupported()||(this.type=Od)}destroy(){this._queue=[],this._alive=[],this._currentTask=null}isFetch(){return this.type===Fd}static isFetchSupport(){return Xd.isSupported()}load(e,t={}){"string"!=typeof e&&e?t=e:t.url=e||t.url||this._config.url,(t=Object.assign({},this._config,t)).params&&(t.params=Object.assign({},t.params)),t.headers&&Hd(t.headers)&&(t.headers=Object.assign({},t.headers)),t.body&&Hd(t.body)&&(t.body=Object.assign({},t.body)),t.transformRequest&&(t=t.transformRequest(t)||t);const i=new Jd(this.type,t,this.player);return i.loader.on(Wd,(e=>{this.emit(Wd,e)})),this._queue.push(i),1!==this._queue.length||this._currentTask&&this._currentTask.running||this._processTask(),i.promise}async cancel(){const e=this._queue.map((e=>e.cancel())).concat(this._alive.map((e=>e.cancel())));this._currentTask&&e.push(this._currentTask.cancel()),this._queue=[],this._alive=[],await Promise.all(e),await function(e=0){return new Promise((t=>setTimeout(t,e)))}()}_processTask(){if(this._currentTask=this._queue.shift(),!this._currentTask)return;this._currentTask.alive&&this._alive.push(this._currentTask);const e=this._currentTask.exec().catch((e=>{}));e&&"function"==typeof e.finally&&e.finally((()=>{this._currentTask?.alive&&this._alive?.length>0&&(this._alive=this._alive.filter((e=>e&&e!==this._currentTask))),this._processTask()}))}}const th="network",ih="network_timeout",rh="other",sh="manifest",ah="hls",nh="demux";class oh extends Error{constructor(e,t,i,r,s){super(s||i?.message),this.errorType=e===ih?th:e,this.originError=i,this.ext=r,this.errorMessage=this.message}static create(e,t,i,r,s){return e instanceof oh?e:(e instanceof Error&&(i=e,e=""),e||(e=rh),new oh(e,t,i,r,s))}static network(e){return new oh(e?.isTimeout?ih:th,null,e instanceof Error?e:null,{url:e?.url,response:e?.response,httpCode:e?.response?.status})}}const lh=/^#(EXT[^:]*)(?::(.*))?$/,dh=/([^=]+)=(?:"([^"]*)"|([^",]*))(?:,|$)/g,hh=/^(?:[a-zA-Z0-9+\-.]+:)?\/\//,ch=/^((?:[a-zA-Z0-9+\-.]+:)?\/\/[^/?#]*)?([^?#]*\/)?/;function uh(e){const t=e.match(lh);if(t&&t[1])return[t[1].replace("EXT-X-",""),t[2]]}function ph(e){const t={};let i=dh.exec(e);for(;i;)t[i[1]]=i[2]||i[3],i=dh.exec(e);return t}function fh(e,t){if(!t||!e||hh.test(e))return e;const i=ch.exec(t);return i?"/"===e[0]?i[1]+e:i[1]+i[2]+e:e}const yh={audio:[/^mp4a/,/^vorbis$/,/^opus$/,/^flac$/,/^[ae]c-3$/],video:[/^avc/,/^hev/,/^hvc/,/^vp0?[89]/,/^av1$/],text:[/^vtt$/,/^wvtt/,/^stpp/]};function mh(e,t){const i=yh[e];if(i&&t&&t.length)for(let e=0;e>8*(15-t)&255}}}class Ch{static parse(e="",t){if(!e.includes("#EXTM3U"))throw new Error("Invalid m3u8 file");const i=function(e){return e.split(/[\r\n]/).map((e=>e.trim())).filter(Boolean)}(e);return Ch.isMediaPlaylist(e)?function(e,t){const i=new Sh;i.url=t;let r,s=new Th,a=null,n=null,o=0,l=0,d=0,h=0,c=!1;for(;(r=e[h++])&&!c;){if("#"!==r[0]){s.sn=l,s.cc=d,s.url=fh(r,t),n&&(s.key=n.clone(l)),a&&(s.initSegment=a),i.segments.push(s),s=new Th,l++;continue}const e=uh(r);if(!e)continue;const[h,u]=e;switch(h){case"VERSION":i.version=parseInt(u);break;case"PLAYLIST-TYPE":i.type=u?.toUpperCase();break;case"TARGETDURATION":i.targetDuration=parseFloat(u);break;case"ENDLIST":{const e=i.segments[i.segments.length-1];e&&(e.isLast=!0),i.live=!1,c=!0}break;case"MEDIA-SEQUENCE":l=i.startSN=parseInt(u);break;case"DISCONTINUITY-SEQUENCE":d=i.startCC=parseInt(u);break;case"DISCONTINUITY":d++;break;case"BYTERANGE":s.setByteRange(u,i.segments[i.segments.length-1]);break;case"EXTINF":{const[e,t]=u.split(",");s.start=o,s.duration=parseFloat(e),o+=s.duration,s.title=t}break;case"KEY":{const e=ph(u);if("NONE"===e.METHOD){n=null;break}if("AES-128"!==e.METHOD)throw new Error(`encrypt ${e.METHOD}/${e.KEYFORMAT} is not supported`);if(n=new kh,n.method=e.METHOD,n.url=/^blob:/.test(e.URI)?e.URI:fh(e.URI,t),n.keyFormat=e.KEYFORMAT||"identity",n.keyFormatVersions=e.KEYFORMATVERSIONS,e.IV){let t=e.IV.slice(2);t=(1&t.length?"0":"")+t,n.iv=new Uint8Array(t.length/2);for(let e=0,i=t.length/2;e{e.id=t})),a.length&&(a.forEach(((e,t)=>{e.id=t})),i.streams.forEach((e=>{e.audioGroup&&(e.audioStreams=a.filter((t=>t.group===e.audioGroup)))}))),n.length&&(n.forEach(((e,t)=>{e.id=t})),i.streams.forEach((e=>{e.subtitleGroup&&(e.subtitleStreams=n.filter((t=>t.group===e.subtitleGroup)))}))),i}(i,t)}static isMediaPlaylist(e){return e.includes("#EXTINF:")||e.includes("#EXT-X-TARGETDURATION:")}}class Dh{constructor(e){this.hls=e,this.player=e.player,this.TAG_NAME="HlsManifestLoader",this._timer=null;const{retryCount:t,retryDelay:i,loadTimeout:r,fetchOptions:s}=this.hls.config;this._loader=new eh({...s,responseType:"text",retry:t,retryDelay:i,timeout:r,onRetryError:this._onLoaderRetry},this.player),this._audioLoader=new eh({...s,responseType:"text",retry:t,retryDelay:i,timeout:r,onRetryError:this._onLoaderRetry},this.player),this._subtitleLoader=new eh({...s,responseType:"text",retry:t,retryDelay:i,timeout:r,onRetryError:this._onLoaderRetry},this.player)}async destroy(){await this.stopPoll(),this._audioLoader&&(this._audioLoader.destroy(),this._audioLoader=null),this._subtitleLoader&&(this._subtitleLoader.destroy(),this._subtitleLoader=null),this._loader&&(this._loader.destroy(),this._loader=null)}async load(e,t,i){this.player.debug.log(this.TAG_NAME,"load()",e,t,i);const r=[this._loader.load(e)];let s,a,n,o,l,d;t&&r.push(this._audioLoader.load(t)),i&&r.push(this._subtitleLoader.load(i));try{const[e,i,o]=await Promise.all(r);if(!e)return[];s=e.data,t?(a=i?.data,n=o?.data):n=i?.data}catch(e){throw oh.network(e)}try{if(o=Ch.parse(s,e),!1===o?.live&&o.segments&&!o.segments.length)throw new Error("empty segments list");a&&(l=Ch.parse(a,t)),n&&(d=Ch.parse(n,i))}catch(e){throw new oh(sh,ah,e)}return o&&(o.isMaster?this.hls.emit(cr,{playlist:o}):this.hls.emit(ur,{playlist:o})),[o,l,d]}poll(e,t,i,r,s,a){clearTimeout(this._timer),a=a||3e3;let n=this.hls.config.pollRetryCount;const o=async()=>{clearTimeout(this._timer);try{const s=await this.load(e,t,i);if(!s[0])return;n=this.hls.config.pollRetryCount,r(s[0],s[1],s[2])}catch(e){n--,n<=0&&s(e)}this._timer=setTimeout(o,a)};this._timer=setTimeout(o,a)}stopPoll(){return clearTimeout(this._timer),this.cancel()}cancel(){return Promise.all([this._loader.cancel(),this._audioLoader.cancel()])}_onLoaderRetry=(e,t)=>{this.hls.emit(gr,{error:oh.network(e),retryTime:t})}}class Rh{_chunkSpeeds=[];_speeds=[];addRecord(e,t){e&&t&&(this._speeds.push(8e3*e/t),this._speeds=this._speeds.slice(-3))}addChunkRecord(e,t){e&&t&&(this._chunkSpeeds.push(8e3*e/t),this._chunkSpeeds=this._chunkSpeeds.slice(-100))}getAvgSpeed(){return this._chunkSpeeds.length||this._speeds.length?this._speeds.length?this._speeds.reduce(((e,t)=>e+t))/this._speeds.length:this._chunkSpeeds.reduce(((e,t)=>e+t))/this._chunkSpeeds.length:0}getLatestSpeed(){return this._chunkSpeeds.length||this._speeds.length?this._speeds.length?this._speeds[this._speeds.length-1]:this._chunkSpeeds[this._chunkSpeeds.length-1]:0}reset(){this._chunkSpeeds=[],this._speeds=[]}}class xh{constructor(e){this.hls=e,this.player=e.player,this._bandwidthService=new Rh;const{retryCount:t,retryDelay:i,loadTimeout:r,fetchOptions:s}=this.hls.config;this._segmentLoader=new eh({...s,responseType:"arraybuffer",retry:t,retryDelay:i,timeout:r,onRetryError:this._onLoaderRetry},this.player),this._audioSegmentLoader=new eh({...s,responseType:"arraybuffer",retry:t,retryDelay:i,timeout:r,onRetryError:this._onLoaderRetry},this.player),this._keyLoader=new eh({...s,responseType:"arraybuffer",retry:t,retryDelay:i,timeout:r,onRetryError:this._onLoaderRetry},this.player)}destroy(){this.reset(),this._keyLoader&&(this._keyLoader.destroy(),this._keyLoader=null),this._audioSegmentLoader&&(this._audioSegmentLoader.destroy(),this._audioSegmentLoader=null),this._segmentLoader&&(this._segmentLoader.destroy(),this._segmentLoader=null)}speedInfo(){return{speed:this._bandwidthService.getLatestSpeed(),avgSpeed:this._bandwidthService.getAvgSpeed()}}resetBandwidth(){this._bandwidthService.reset()}load(e,t,i,r=i){const s=[];return e&&(s[0]=this.loadVideoSegment(e,i)),t&&(s[1]=this.loadAudioSegment(t,r)),Promise.all(s)}loadVideoSegment(e,t){return this._loadSegment(this._segmentLoader,e,t)}loadAudioSegment(e,t){return this._loadSegment(this._audioSegmentLoader,e,t)}async _loadSegment(e,t,i){let r,s,a,n,o;const l=[];if(this.hls.emit(Ar,{url:t.url}),l[0]=e.load(t.url),i&&t.initSegment){const i=t.initSegment.url;r=this._mapCache[i],r||(this.hls.emit(Ar,{url:i}),l[1]=e.load(i).then((e=>{if(e){Object.keys(this._mapCache)>30&&(this._mapCache={}),r=this._mapCache[i]=e.data,this._emitOnLoaded(e,i)}})));const s=t.initSegment.key?.url;s&&(o=t.initSegment.key.iv,n=this._keyCache[s],n||(this.hls.emit(Ar,{url:s}),l[2]=this._keyLoader.load(s).then((e=>{e&&(n=this._keyCache[s]=e.data,this._emitOnLoaded(e,s))}))))}const d=t.key?.url;d&&(a=t.key.iv,s=this._keyCache[d],s||(this.hls.emit(Ar,{url:d}),l[3]=this._keyLoader.load(d).then((e=>{e&&(s=this._keyCache[d]=e.data,this._emitOnLoaded(e,d))}))));const[h]=await Promise.all(l);if(!h)return;const c=h.data;return this._emitOnLoaded(h,t.url),{data:c,map:r,key:s,mapKey:n,keyIv:a,mapKeyIv:o}}reset(){this.error=null,this._mapCache={},this._keyCache={},this._bandwidthService.reset()}async cancel(){await Promise.all([this._keyLoader.cancel(),this._segmentLoader.cancel(),this._audioSegmentLoader.cancel()])}_emitOnLoaded=(e,t)=>{const{data:i,response:r,option:s}=e,{firstByteTime:a,startTime:n,endTime:o,contentLength:l}=s||{},d=o-n;this._bandwidthService.addRecord(l||i.byteLength,d),this.hls.emit(vr,{time:d,byteLength:l,url:t}),this.hls.emit(br,{url:t,elapsed:d||0}),this.hls.emit(mr,{url:t,responseUrl:r.url,elapsed:a-n}),this.hls.emit(_r,{headers:r.headers})};_onLoaderRetry=(e,t)=>{this.hls.emit(gr,{error:oh.network(e),retryTime:t})}}class Lh{constructor(e,t,i){this.live=void 0,this.id=0,this.bitrate=0,this.width=0,this.height=0,this.name="",this.url="",this.audioCodec="",this.videoCodec="",this.textCodec="",this.startCC=0,this.endCC=0,this.startSN=0,this.endSN=-1,this.totalDuration=0,this.targetDuration=0,this.snDiff=null,this.segments=[],this.audioStreams=[],this.subtitleStreams=[],this.closedCaptions=[],this.currentAudioStream=null,this.currentSubtitleStream=null,this.TAG_NAME="HlsStream",this.update(e,t,i)}get lastSegment(){return this.segments.length?this.segments[this.segments.length-1]:null}get segmentDuration(){return this.targetDuration||this.segments[0]?.duration||0}get liveEdge(){return this.endTime}get endTime(){return this.lastSegment?.end||0}get currentSubtitleEndSn(){return this.currentSubtitleStream?.endSN||0}clearOldSegment(e,t){return this._clearSegments(e,t)}getAudioSegment(e){if(!e||!this.currentAudioStream)return;const t=e.sn-this.snDiff;return this.currentAudioStream.segments.find((e=>e.sn===t))}update(e,t){this.url=e.url,Array.isArray(e.segments)?(null!==this.live&&void 0!==this.live||(this.live=e.live),this._updateSegments(e,this),this.startCC=e.startCC,this.endCC=e.endCC,this.startSN=e.startSN,this.endSN=e.endSN||-1,this.totalDuration=e.totalDuration,this.targetDuration=e.targetDuration,this.live=e.live,t&&this.currentAudioStream&&Array.isArray(t.segments)&&(this._updateSegments(t,this.currentAudioStream),(null===this.snDiff||void 0===this.snDiff)&&e.segments.length&&t.segments.length&&(this.snDiff=e.segments[0].sn-t.segments[0].sn))):(this.id=e.id,this.bitrate=e.bitrate,this.width=e.width,this.height=e.height,this.name=e.name,this.audioCodec=e.audioCodec,this.videoCodec=e.videoCodec,this.textCodec=e.textCodec,this.audioStreams=e.audioStreams,this.subtitleStreams=e.subtitleStreams,!this.currentAudioStream&&this.audioStreams.length&&(this.currentAudioStream=this.audioStreams.find((e=>e.default))||this.audioStreams[0]),!this.currentSubtitleStream&&this.subtitleStreams.length&&(this.currentSubtitleStream=this.subtitleStreams.find((e=>e.default))||this.subtitleStreams[0]))}updateSubtitle(e){if(!(e&&this.currentSubtitleStream&&Array.isArray(e.segments)))return;const t=this._updateSegments(e,this.currentSubtitleStream),i=this.currentSubtitleStream.segments;return i.length>100&&(this.currentSubtitleStream.segments=i.slice(100)),t?t.map((e=>({sn:e.sn,url:e.url,duration:e.duration,start:e.start,end:e.end,lang:this.currentSubtitleStream.lang}))):void 0}switchSubtitle(e){const t=this.subtitleStreams.find((t=>t.lang===e)),i=this.currentSubtitleStream;t&&(this.currentSubtitleStream=t,i.segments=[])}_clearSegments(e,t){let i=0;const r=this.segments;for(let t=0,s=r.length;t=e){i=t;break}return i>t&&(i=t),i&&(this.segments=this.segments.slice(i),this.currentAudioStream&&(this.currentAudioStream.segments=this.currentAudioStream.segments.slice(i))),t-i}_updateSegments(e,t){const i=t.segments;if(this.live){const r=i[i.length-1],s=r?.sn||-1;if(se.sn===s)),n=a<0?e.segments:e.segments.slice(a+1);if(i.length&&n.length){let e=r.end;n.forEach((t=>{t.start=e,e=t.end}));const t=r?.cc||-1;t>n[0].cc&&n.forEach((e=>e.cc+=t))}return t.endSN=e.endSN,t.segments=i.concat(n),n}}else t.segments=e.segments}}class Ih{constructor(e){this.hls=e,this.player=e.player,this.streams=[],this.currentStream=null,this.dvrWindow=0,this._segmentPointer=-1,this.TAG_NAME="HlsPlaylist"}destroy(){this.reset()}get lastSegment(){return this.currentStream?.lastSegment}get currentSegment(){return this.currentSegments?.[this._segmentPointer]}get nextSegment(){return this.currentSegments?.[this._segmentPointer+1]}get currentSegments(){return this.currentStream?.segments}get currentSubtitleEndSn(){return this.currentStream?.currentSubtitleEndSn}get liveEdge(){return this.currentStream?.liveEdge}get totalDuration(){return this.currentStream?.totalDuration||0}get seekRange(){const e=this.currentSegments;if(e&&e.length)return[e[0].start,e[e.length-1].end]}get isEmpty(){return!this.currentSegments?.length}get isLive(){return this.currentStream?.live}get hasSubtitle(){return!!this.currentStream?.currentSubtitleStream}getAudioSegment(e){return this.currentStream?.getAudioSegment(e)}moveSegmentPointer(e){null==e&&(e=this._segmentPointer+1),this._segmentPointer=bs(e,-1,this.currentSegments?.length),this.player.debug.log(this.TAG_NAME,`moveSegmentPointer() and param pos is ${e} and clamp result is ${this._segmentPointer}`)}reset(){this.streams=[],this.currentStream=null,this.dvrWindow=0,this._segmentPointer=-1}getSegmentByIndex(e){return this.currentSegments?.[e]}setNextSegmentByIndex(e=0){this._segmentPointer=e-1,this.player.debug.log(this.TAG_NAME,"setNextSegmentByIndex()",e,this._segmentPointer)}findSegmentIndexByTime(e){const t=this.currentSegments;if(t){for(let i,r=0,s=t.length;r=i.start&&ee.url)).forEach(((e,t)=>{this.streams[t]?this.streams[t].update(e):this.streams[t]=new Lh(e)})),this.currentStream=this.streams[0];else if(Array.isArray(e.segments)){const r=this.currentStream;if(r){r.update(e,t,i);const s=r.updateSubtitle(i);s&&this.hls.emit(hr,{list:s})}else this.reset(),this.currentStream=this.streams[0]=new Lh(e,t,i)}this.currentStream&&this.hls.isLive&&!this.dvrWindow&&(this.dvrWindow=this.currentSegments.reduce(((e,t)=>e+=t.duration),0))}switchSubtitle(e){this.currentStream?.switchSubtitle(e)}clearOldSegment(e=50){const t=this.currentStream;if(!this.dvrWindow||!t)return;const i=t.endTime-this.dvrWindow;if(i<=0)return void this.player.debug.log(this.TAG_NAME,`clearOldSegment() stream.endTime:${t.endTime}, this.dvrWindow:${this.dvrWindow} startTime <= 0`);const r=t.segments;if(r.length<=e)return void this.player.debug.log(this.TAG_NAME,`clearOldSegment() segments.length:${r.length} <= maxPlaylistSize:${e}`);const s=this._segmentPointer;this._segmentPointer=t.clearOldSegment(i,s),this.player.debug.log(this.TAG_NAME,"clearOldSegment() update _segmentPointer:",s,this._segmentPointer),this.player.debug.log(this.TAG_NAME,"currentSegments",this.currentSegments)}checkSegmentTrackChange(e,t){const i=this.findSegmentIndexByTime(e),r=this.getSegmentByIndex(i);if(!r)return;if(!r.hasAudio&&!r.hasVideo)return;if(2!==t&&r.hasAudio&&r.hasVideo)return r;if(r.end-e>.3)return;const s=this.getSegmentByIndex(i+1);return s&&(s.hasAudio||s.hasVideo)&&(s.hasAudio!==r.hasAudio||s.hasVideo!==r.hasVideo)?s:void 0}}class Ph{constructor(e,t){this.hls=e,this.player=t;const i=window.crypto||window.msCrypto;this.subtle=i&&(i.subtle||i.webkitSubtle),this.externalDecryptor=null}decrypt(e,t){if(!e&&!t)return;const i=[];return e&&(i[0]=this._decryptSegment(e)),t&&(i[1]=this._decryptSegment(t)),Promise.all(i)}async _decryptSegment(e){let t=e.data;return e.key&&(t=await this._decryptData(e.data,e.key,e.keyIv)),e.map?Zl(e.map,t):t}async _decryptData(e,t,i){if(this.externalDecryptor)return await this.externalDecryptor.decrypt(e,t,i);{if(!this.subtle)throw new Error("crypto is not defined");const r=await this.subtle.importKey("raw",t,{name:"AES-CBC"},!1,["encrypt","decrypt"]);return new Uint8Array(await this.subtle.decrypt({name:"AES-CBC",iv:i},r,e))}}}function Bh(e,t=0){return(e[t]<<8)+(e[t+1]||0)}function Mh(e,t=0){return(e[t]<<24>>>0)+(e[t+1]<<16)+(e[t+2]<<8)+(e[t+3]||0)}function Uh(e,t=0){const i=Math.pow(2,32);return Mh(e,t)*i+Mh(e,t+4)}const Fh="aac",Oh="g7110a",Nh="g7110m",Gh="avc",zh="hevc";class Wh{static FREQ=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350];static getFrameDuration(e,t=9e4){return 1024*t/e}static getRateIndexByRate(e){return Wh.FREQ.indexOf(e)}}function Vh(e,t,i,r,s,a){const n=[],o=s?.entries,l=t.entries,d=r.entries,h=i.entrySizes,c=a?.entries;let u,p,f;c&&(u={},c.forEach((e=>{u[e-1]=!0}))),o&&(p=[],o.forEach((({count:e,offset:t})=>{for(let i=0;i{for(let r=0;r=w&&(v++,w=l[v+1]?l[v+1].firstChunk-1:1/0),_+=l[v].samplesPerChunk)})),n}function Hh(e,t){return e.dataReferenceIndex=Bh(t,6),e.width=Bh(t,24),e.height=Bh(t,26),e.horizresolution=Mh(t,28),e.vertresolution=Mh(t,32),e.frameCount=Bh(t,40),e.depth=Bh(t,74),78}function $h(e,t){return e.dataReferenceIndex=Bh(t,6),e.channelCount=Bh(t,16),e.sampleSize=Bh(t,18),e.sampleRate=Mh(t,24)/65536,28}function jh(e,t,i){if(!e)return;if(e.size!==e.data.length)throw new Error(`box ${e.type} size !== data.length`);const r={start:e.start,size:e.size,headerSize:e.headerSize,type:e.type};return t&&(r.version=e.data[e.headerSize],r.flags=function(e,t=0){return(e[t]<<16)+(e[t+1]<<8)+(e[t+2]||0)}(e.data,e.headerSize+1),r.headerSize+=4),i(r,e.data.subarray(r.headerSize),r.start+r.headerSize),r}const Kh=function(...e){const t=[];return e.forEach((e=>{t.push(function(e,t,i){const r=String(i),s=0|t;let a=Math.ceil(s/r.length);const n=[],o=String(e);for(;a--;)n.push(r);return n.join("").substring(0,s-o.length)+o}(Number(e).toString(16),2,0))})),t[0]};class qh{static probe(e){return!!qh.findBox(e,["ftyp"])}static findBox(e,t,i=0){const r=[];if(!e)return r;let s=0,a="",n=0;for(;e.length>7;){if(s=Mh(e),a=String.fromCharCode.apply(null,e.subarray(4,8)),n=8,1===s?(s=Uh(e,8),n+=8):s||(s=e.length),!t[0]||a===t[0]){const o=e.subarray(0,s);if(!(t.length<2))return qh.findBox(o.subarray(n),t.slice(1),i+n);r.push({start:i,size:s,headerSize:n,type:a,data:o})}i+=s,e=e.subarray(s)}return r}static tfhd(e){return jh(e,!0,((e,t)=>{e.trackId=Mh(t);let i=4;const r=1&e.flags,s=2&e.flags,a=8&e.flags,n=16&e.flags,o=32&e.flags;r&&(i+=4,e.baseDataOffset=Mh(t,i),i+=4),s&&(e.sampleDescriptionIndex=Mh(t,i),i+=4),a&&(e.defaultSampleDuration=Mh(t,i),i+=4),n&&(e.defaultSampleSize=Mh(t,i),i+=4),o&&(e.defaultSampleFlags=Mh(t,i))}))}static sidx(e){return jh(e,!0,((e,t)=>{let i=0;e.reference_ID=Mh(t,i),i+=4,e.timescale=Mh(t,i),i+=4,0===e.version?(e.earliest_presentation_time=Mh(t,i),i+=4,e.first_offset=Mh(t,i),i+=4):(e.earliest_presentation_time=Uh(t,i),i+=8,e.first_offset=Uh(t,i),i+=8),i+=2,e.references=[];const r=Bh(t,i);i+=2;for(let s=0;s>31&1,r.referenced_size=2147483647&s,r.subsegment_duration=Mh(t,i),i+=4,s=Mh(t,i),i+=4,r.starts_with_SAP=s>>31&1,r.SAP_type=s>>28&7,r.SAP_delta_time=268435455&s}}))}static moov(e){return jh(e,!1,((e,t,i)=>{e.mvhd=qh.mvhd(qh.findBox(t,["mvhd"],i)[0]),e.trak=qh.findBox(t,["trak"],i).map((e=>qh.trak(e))),e.pssh=qh.pssh(qh.findBox(t,["pssh"],i)[0])}))}static mvhd(e){return jh(e,!0,((e,t)=>{let i=0;1===e.version?(e.timescale=Mh(t,16),e.duration=Uh(t,20),i+=28):(e.timescale=Mh(t,8),e.duration=Mh(t,12),i+=16),e.nextTrackId=Mh(t,i+76)}))}static trak(e){return jh(e,!1,((e,t,i)=>{e.tkhd=qh.tkhd(qh.findBox(t,["tkhd"],i)[0]),e.mdia=qh.mdia(qh.findBox(t,["mdia"],i)[0])}))}static tkhd(e){return jh(e,!0,((e,t)=>{let i=0;1===e.version?(e.trackId=Mh(t,16),e.duration=Uh(t,24),i+=32):(e.trackId=Mh(t,8),e.duration=Mh(t,16),i+=20),e.width=Mh(t,i+52),e.height=Mh(t,i+56)}))}static mdia(e){return jh(e,!1,((e,t,i)=>{e.mdhd=qh.mdhd(qh.findBox(t,["mdhd"],i)[0]),e.hdlr=qh.hdlr(qh.findBox(t,["hdlr"],i)[0]),e.minf=qh.minf(qh.findBox(t,["minf"],i)[0])}))}static mdhd(e){return jh(e,!0,((e,t)=>{let i=0;1===e.version?(e.timescale=Mh(t,16),e.duration=Uh(t,20),i+=28):(e.timescale=Mh(t,8),e.duration=Mh(t,12),i+=16);const r=Bh(t,i);e.language=String.fromCharCode(96+(r>>10&31),96+(r>>5&31),96+(31&r))}))}static hdlr(e){return jh(e,!0,((e,t)=>{0===e.version&&(e.handlerType=String.fromCharCode.apply(null,t.subarray(4,8)))}))}static minf(e){return jh(e,!1,((e,t,i)=>{e.vmhd=qh.vmhd(qh.findBox(t,["vmhd"],i)[0]),e.smhd=qh.smhd(qh.findBox(t,["smhd"],i)[0]),e.stbl=qh.stbl(qh.findBox(t,["stbl"],i)[0])}))}static vmhd(e){return jh(e,!0,((e,t)=>{e.graphicsmode=Bh(t),e.opcolor=[Bh(t,2),Bh(t,4),Bh(t,6)]}))}static smhd(e){return jh(e,!0,((e,t)=>{e.balance=Bh(t)}))}static stbl(e){return jh(e,!1,((e,t,i)=>{e.stsd=qh.stsd(qh.findBox(t,["stsd"],i)[0]),e.stts=qh.stts(qh.findBox(t,["stts"],i)[0]),e.ctts=qh.ctts(qh.findBox(t,["ctts"],i)[0]),e.stsc=qh.stsc(qh.findBox(t,["stsc"],i)[0]),e.stsz=qh.stsz(qh.findBox(t,["stsz"],i)[0]),e.stco=qh.stco(qh.findBox(t,["stco"],i)[0]),e.stco||(e.co64=qh.co64(qh.findBox(t,["co64"],i)[0]),e.stco=e.co64);const r=e.stsd.entries[0]?.sinf?.schi?.tenc.default_IV_size;e.stss=qh.stss(qh.findBox(t,["stss"],i)[0]),e.senc=qh.senc(qh.findBox(t,["senc"],i)[0],r)}))}static senc(e,t=8){return jh(e,!0,((e,i)=>{let r=0;const s=Mh(i,r);r+=4,e.samples=[];for(let a=0;a{const i=[],r=[];let s=0;for(let e=0;e<16;e++)r.push(Kh(t[s+e]));if(s+=16,e.version>0){const e=Mh(t,s);s+=4;for(let r=0;r<(""+e).length;r++)for(let e=0;e<16;e++){const e=t[s];s+=1,i.push(Kh(e))}}const a=Mh(t,s);e.data_size=a,s+=4,e.kid=i,e.system_id=r,e.buffer=t}))}static stsd(e){return jh(e,!0,((e,t,i)=>{e.entryCount=Mh(t),e.entries=qh.findBox(t.subarray(4),[],i+4).map((e=>{switch(e.type){case"avc1":case"avc2":case"avc3":case"avc4":return qh.avc1(e);case"hvc1":case"hev1":return qh.hvc1(e);case"mp4a":return qh.mp4a(e);case"alaw":case"ulaw":return qh.alaw(e);case"enca":return jh(e,!1,((e,t,i)=>{e.channelCount=Bh(t,16),e.samplesize=Bh(t,18),e.sampleRate=Mh(t,24)/65536,t=t.subarray(28),e.sinf=qh.sinf(qh.findBox(t,["sinf"],i)[0]),e.esds=qh.esds(qh.findBox(t,["esds"],i)[0])}));case"encv":return jh(e,!1,((e,t,i)=>{e.width=Bh(t,24),e.height=Bh(t,26),e.horizresolution=Mh(t,28),e.vertresolution=Mh(t,32),t=t.subarray(78),e.sinf=qh.sinf(qh.findBox(t,["sinf"],i)[0]),e.avcC=qh.avcC(qh.findBox(t,["avcC"],i)[0]),e.hvcC=qh.hvcC(qh.findBox(t,["hvcC"],i)[0]),e.pasp=qh.pasp(qh.findBox(t,["pasp"],i)[0])}))}})).filter(Boolean)}))}static tenc(e){return jh(e,!1,((e,t)=>{let i=6;e.default_IsEncrypted=t[i],i+=1,e.default_IV_size=t[i],i+=1,e.default_KID=[];for(let r=0;r<16;r++)e.default_KID.push(Kh(t[i])),i+=1}))}static schi(e){return jh(e,!1,((e,t,i)=>{e.tenc=qh.tenc(qh.findBox(t,["tenc"],i)[0])}))}static sinf(e){return jh(e,!1,((e,t,i)=>{e.schi=qh.schi(qh.findBox(t,["schi"],i)[0]),e.frma=qh.frma(qh.findBox(t,["frma"],i)[0])}))}static frma(e){return jh(e,!1,((e,t)=>{e.data_format="";for(let i=0;i<4;i++)e.data_format+=String.fromCharCode(t[i])}))}static avc1(e){return jh(e,!1,((e,t,i)=>{const r=Hh(e,t),s=t.subarray(r);i+=r,e.avcC=qh.avcC(qh.findBox(s,["avcC"],i)[0]),e.pasp=qh.pasp(qh.findBox(s,["pasp"],i)[0])}))}static avcC(e){return jh(e,!1,((e,t)=>{e.configurationVersion=t[0],e.AVCProfileIndication=t[1],e.profileCompatibility=t[2],e.AVCLevelIndication=t[3],e.codec=function(e){let t,i="avc1.";for(let r=0;r<3;r++)t=e[r].toString(16),t.length<2&&(t=`0${t}`),i+=t;return i}([t[1],t[2],t[3]]),e.lengthSizeMinusOne=3&t[4],e.spsLength=31&t[5],e.sps=[];let i=6;for(let r=0;r{const r=Hh(e,t),s=t.subarray(r);i+=r,e.hvcC=qh.hvcC(qh.findBox(s,["hvcC"],i)[0]),e.pasp=qh.pasp(qh.findBox(s,["pasp"],i)[0])}))}static hvcC(e){return jh(e,!1,((t,i)=>{t.data=e.data,t.codec="hev1.1.6.L93.B0",t.configurationVersion=i[0];const r=i[1];t.generalProfileSpace=r>>6,t.generalTierFlag=(32&r)>>5,t.generalProfileIdc=31&r,t.generalProfileCompatibility=Mh(i,2),t.generalConstraintIndicatorFlags=i.subarray(6,12),t.generalLevelIdc=i[12],t.avgFrameRate=Bh(i,19),t.numOfArrays=i[22],t.vps=[],t.sps=[],t.pps=[];let s=23,a=0,n=0,o=0;for(let e=0;e{e.hSpacing=Mh(t),e.vSpacing=Mh(t,4)}))}static mp4a(e){return jh(e,!1,((e,t,i)=>{const r=$h(e,t);e.esds=qh.esds(qh.findBox(t.subarray(r),["esds"],i+r)[0])}))}static esds(e){return jh(e,!0,((e,t)=>{e.codec="mp4a.";let i=0,r=0,s=0,a=0;for(;t.length;){for(i=0,a=t[i],r=t[i+1],i+=2;128&r;)s=(127&r)<<7,r=t[i],i+=1;if(s+=127&r,3===a)t=t.subarray(i+3);else{if(4!==a){if(5===a){const r=e.config=t.subarray(i,i+s);let a=(248&r[0])>>3;return 31===a&&r.length>=2&&(a=32+((7&r[0])<<3)+((224&r[1])>>5)),e.objectType=a,e.codec+=a.toString(16),void("."===e.codec[e.codec.length-1]&&(e.codec=e.codec.substring(0,e.codec.length-1)))}return void("."===e.codec[e.codec.length-1]&&(e.codec=e.codec.substring(0,e.codec.length-1)))}e.codec+=(t[i].toString(16)+".").padStart(3,"0"),t=t.subarray(i+13)}}}))}static alaw(e){return jh(e,!1,((e,t)=>{$h(e,t)}))}static stts(e){return jh(e,!0,((e,t)=>{const i=Mh(t),r=[];let s=4;for(let e=0;e{const i=Mh(t),r=[];let s=4;if(1===e.version)for(let e=0;e{const i=Mh(t),r=[];let s=4;for(let e=0;e{const i=Mh(t),r=Mh(t,4),s=[];if(!i){let e=8;for(let i=0;i{const i=Mh(t),r=[];let s=4;for(let e=0;e{const i=Mh(t),r=[];let s=4;for(let e=0;e{const i=Mh(t),r=[];let s=4;for(let e=0;e{e.mfhd=qh.mfhd(qh.findBox(t,["mfhd"],i)[0]),e.traf=qh.findBox(t,["traf"],i).map((e=>qh.traf(e)))}))}static mfhd(e){return jh(e,!0,((e,t)=>{e.sequenceNumber=Mh(t)}))}static traf(e){return jh(e,!1,((e,t,i)=>{e.tfhd=qh.tfhd(qh.findBox(t,["tfhd"],i)[0]),e.tfdt=qh.tfdt(qh.findBox(t,["tfdt"],i)[0]),e.trun=qh.trun(qh.findBox(t,["trun"],i)[0])}))}static trun(e){return jh(e,!0,((e,t)=>{const{version:i,flags:r}=e,s=t.length,a=e.sampleCount=Mh(t);let n=4;if(s>n&&1&r&&(e.dataOffset=-(1+~Mh(t,n)),n+=4),s>n&&4&r&&(e.firstSampleFlags=Mh(t,n),n+=4),e.samples=[],s>n){let s;for(let o=0;o{1===e.version?e.baseMediaDecodeTime=Uh(t):e.baseMediaDecodeTime=Mh(t)}))}static probe(e){return!!qh.findBox(e,["ftyp"])}static parseSampleFlags(e){return{isLeading:(12&e[0])>>>2,dependsOn:3&e[0],isDependedOn:(192&e[1])>>>6,hasRedundancy:(48&e[1])>>>4,paddingValue:(14&e[1])>>>1,isNonSyncSample:1&e[1],degradationPriority:e[2]<<8|e[3]}}static moovToTrack(e,t,i){const r=e.trak;if(!r||!r.length)return;const s=r.find((e=>"vide"===e.mdia?.hdlr?.handlerType)),a=r.find((e=>"soun"===e.mdia?.hdlr?.handlerType));if(s&&t){const i=t,r=s.tkhd?.trackId;null!=r&&(i.id=s.tkhd.trackId),i.tkhdDuration=s.tkhd.duration,i.mvhdDurtion=e.mvhd.duration,i.mvhdTimecale=e.mvhd.timescale,i.timescale=i.formatTimescale=s.mdia.mdhd.timescale,i.duration=s.mdia.mdhd.duration||i.mvhdDurtion/i.mvhdTimecale*i.timescale;const a=s.mdia.minf.stbl.stsd.entries[0];if(i.width=a.width,i.height=a.height,a.pasp&&(i.sarRatio=[a.pasp.hSpacing,a.pasp.vSpacing]),a.hvcC)i.codecType=zh,i.codec=a.hvcC.codec,i.vps=a.hvcC.vps,i.sps=a.hvcC.sps,i.pps=a.hvcC.pps,i.hvcC=a.hvcC.data;else{if(!a.avcC)throw new Error("unknown video stsd entry");i.codecType=Gh,i.codec=a.avcC.codec,i.sps=a.avcC.sps,i.pps=a.avcC.pps}i.present=!0,i.ext={},i.ext.stss=s.mdia?.minf?.stbl?.stss,i.ext.ctts=s.mdia?.minf?.stbl?.ctts,a&&"encv"===a.type&&(i.isVideoEncryption=!0,a.default_KID=a.sinf?.schi?.tenc.default_KID,a.default_IsEncrypted=a.sinf?.schi?.tenc.default_IsEncrypted,a.default_IV_size=a.sinf?.schi?.tenc.default_IV_size,i.videoSenc=s.mdia.minf.stbl.senc&&s.mdia.minf.stbl.senc.samples,a.data_format=a.sinf?.frma?.data_format,i.useEME=e.useEME,i.kidValue=e.kidValue,i.pssh=e.pssh,i.encv=a)}if(a&&i){const t=i,r=a.tkhd?.trackId;null!=r&&(t.id=a.tkhd.trackId),t.tkhdDuration=a.tkhd.duration,t.mvhdDurtion=e.mvhd.duration,t.mvhdTimecale=e.mvhd.timescale,t.timescale=t.formatTimescale=a.mdia.mdhd.timescale,t.duration=a.mdia.mdhd.duration||t.mvhdDurtion/t.mvhdTimecale*t.timescale;const s=a.mdia.minf.stbl.stsd.entries[0];switch(t.sampleSize=s.sampleSize,t.sampleRate=s.sampleRate,t.channelCount=s.channelCount,t.present=!0,s.type){case"alaw":t.codecType=t.codec=Oh,t.sampleRate=8e3;break;case"ulaw":t.codecType=t.codec=Nh,t.sampleRate=8e3;break;default:t.codecType=Fh,t.sampleDuration=Wh.getFrameDuration(t.sampleRate,t.timescale),t.sampleRateIndex=Wh.getRateIndexByRate(t.sampleRate),t.objectType=s.esds?.objectType||2,s.esds&&(t.config=Array.from(s.esds.config)),t.codec=s.esds?.codec||"mp4a.40.2"}t.sampleDuration=Wh.getFrameDuration(t.sampleRate,t.timescale),t.objectType=s.esds?.objectType||2,s.esds&&(s.esds.config?t.config=Array.from(s.esds.config):console.warn("esds config is null")),t.codec=s.esds?.codec||"mp4a.40.2",t.sampleRateIndex=Wh.getRateIndexByRate(t.sampleRate),t.ext={},t.ext.stss=a.mdia?.minf?.stbl?.stss,t.ext.ctts=a.mdia?.minf?.stbl?.ctts,t.present=!0,s&&"enca"===s.type&&(t.isAudioEncryption=!0,s.data_format=s.sinf?.frma?.data_format,s.default_KID=s.sinf?.schi?.tenc.default_KID,s.default_IsEncrypted=s.sinf?.schi?.tenc.default_IsEncrypted,s.default_IV_size=s.sinf?.schi?.tenc.default_IV_size,t.audioSenc=a.mdia.minf.stbl.senc&&a.mdia.minf.stbl.senc.samples,t.useEME=e.useEME,t.kidValue=e.kidValue,t.enca=s)}if(i&&(i.isVideoEncryption=!!t&&t.isVideoEncryption),t&&(t.isAudioEncryption=!!i&&i.isAudioEncryption),t?.encv||i?.enca){const e=t?.encv?.default_KID,r=i?.enca?.default_KID,s=e||r?(e||r).join(""):null;t&&(t.kid=s),i&&(i.kid=s)}return t&&(t.flags=3841),i&&(i.flags=1793),{videoTrack:t,audioTrack:i}}static evaluateDefaultDuration(e,t,i){const r=t?.samples?.length;if(!r)return 1024;return 1024*r/t.timescale*e.timescale/i}static moofToSamples(e,t,i){const r={};return e.mfhd&&(t&&(t.sequenceNumber=e.mfhd.sequenceNumber),i&&(i.sequenceNumber=e.mfhd.sequenceNumber)),e.traf.forEach((({tfhd:e,tfdt:s,trun:a})=>{if(!e||!a)return;s&&(t&&t.id===e.trackId&&(t.baseMediaDecodeTime=s.baseMediaDecodeTime),i&&i.id===e.trackId&&(i.baseMediaDecodeTime=s.baseMediaDecodeTime));const n=e.defaultSampleSize||0,o=e.defaultSampleDuration||qh.evaluateDefaultDuration(t,i,a.samples.length||a.sampleCount);let l=a.dataOffset||0,d=0,h=-1;if(!a.samples.length&&a.sampleCount){r[e.trackId]=[];for(let t=0;t((e={offset:l,dts:d,pts:d+(e.cts||0),duration:e.duration||o,size:e.size||n,gopId:h,keyframe:0===t||null!==e.flags&&void 0!==e.flags&&(65536&e.flags)>>>0!=65536}).keyframe&&(h++,e.gopId=h),d+=e.duration,l+=e.size,e)))})),r}static moovToSamples(e){const t=e.trak;if(!t||!t.length)return;const i=t.find((e=>"vide"===e.mdia?.hdlr?.handlerType)),r=t.find((e=>"soun"===e.mdia?.hdlr?.handlerType));if(!i&&!r)return;let s,a;if(i){const e=i.mdia?.minf?.stbl;if(!e)return;const{stts:t,stsc:r,stsz:a,stco:n,stss:o,ctts:l}=e;if(!(t&&r&&a&&n&&o))return;s=Vh(t,r,a,n,l,o)}if(r){const e=r.mdia?.minf?.stbl;if(!e)return;const t=r.mdia.mdhd?.timescale,{stts:i,stsc:s,stsz:n,stco:o}=e;if(!(t&&i&&s&&n&&o))return;a=Vh(i,s,n,o)}return{videoSamples:s,audioSamples:a}}}class Yh extends Ul{constructor(e){super(e),this.player=e,this.TAG_NAME="HlsFmp4Loader",this.tempSampleListInfo={},this.isInitVideo=!1,this.isInitAudio=!1,this.videoTrack={id:1,samples:[],sps:[],pps:[],vps:[],codec:""},this.audioTrack={id:2,samples:[],sampleRate:0,channelCount:0,codec:"",codecType:""},this.workerClearTimeout=null,this.workerUrl=null,this.loopWorker=null,this._hasCalcFps=!1,this.player.isUseMSE()||this._initLoopWorker(),e.debug.log(this.TAG_NAME,"init")}destroy(){super.destroy(),this.workerUrl&&(URL.revokeObjectURL(this.workerUrl),this.workerUrl=null),this.workerClearTimeout&&(clearTimeout(this.workerClearTimeout),this.workerClearTimeout=null),this.loopWorker&&(this.loopWorker.postMessage({cmd:"destroy"}),this.loopWorker.terminate(),this.loopWorker=null),this._hasCalcFps=!1,this.videoTrack=null,this.audioTrack=null,this.isInitVideo=!1,this.isInitAudio=!1,this.player.debug.log(this.TAG_NAME,"destroy")}demux(e,t){let i=this.audioTrack,r=this.videoTrack;if(this.checkInitAudio(),this.checkInitVideo(),i.samples=[],r.samples=[],t){if(this.player.updateStats({abps:t.byteLength}),ka(this.isInitAudio)){const e=qh.findBox(t,["moov"])[0];if(!e)return void this.player.debug.error(this.TAG_NAME,"cannot found moov box");qh.moovToTrack(qh.moov(e),null,i),this.checkInitAudio()&&(this.player.debug.log(this.TAG_NAME,"audioData audio init success"),this._sendAccADTSHeader(i))}const e=qh.findBox(t,["moof"])[0];if(e){const r=qh.moofToSamples(qh.moof(e),null,i)[i.id],s=i.baseMediaDecodeTime;if(r){const a=e.start;r.map((e=>{e.offset+=a;const r=t.subarray(e.offset,e.offset+e.size),n=e.dts+s,o=new Uint8Array(r.length+2);o.set([175,1],0),o.set(r,2),i.samples.push({type:Oe,pts:n,dts:n,payload:o,duration:e.duration,size:o.byteLength})}))}}}if(e){if(this.player.updateStats({vbps:e.byteLength}),ka(this.isInitVideo)&&ka(this.isInitAudio)){const t=qh.findBox(e,["moov"])[0];if(!t)throw new Error("cannot found moov box");if(qh.moovToTrack(qh.moov(t),r,i),ka(this.isInitAudio)&&this.checkInitAudio()&&(this.player.debug.log(this.TAG_NAME,"videoData audio init success",i),this._sendAccADTSHeader(i)),this.checkInitVideo()){this.player.debug.log(this.TAG_NAME,"video init success");let e=null;r.codecType===Ci?r.sps.length&&r.vps.length&&r.pps.length&&(e=Zn({sps:r.sps[0],pps:r.pps[0],vps:r.vps[0]})):r.sps.length&&r.pps.length&&(e=Nn({sps:r.sps[0],pps:r.pps[0]})),e&&(this.player.debug.log(this.TAG_NAME,"seqHeader"),this._doDecodeByHls(e,Ne,0,!0,0))}}const t=qh.findBox(e,["moof"])[0];if(t){const s=qh.moofToSamples(qh.moof(t),r,i),a=r.baseMediaDecodeTime,n=i.baseMediaDecodeTime,o=t.start;Object.keys(s).forEach((t=>{r.id==t?s[t].map((t=>{t.offset+=o;const i={type:Ne,pts:(t.pts||t.dts)+a,dts:t.dts+a,units:[],payload:null,isIFrame:!1};i.duration=t.duration,i.gopId=t.gopId,t.keyframe&&(i.isIFrame=!0);const s=e.subarray(t.offset,t.offset+t.size);i.payload=s,r.samples.push(i)})):i.id==t&&s[t].map((t=>{t.offset+=o;const r=e.subarray(t.offset,t.offset+t.size),s=t.dts+n,a=new Uint8Array(r.length+2);a.set([175,1],0),a.set(r,2),i.samples.push({type:Oe,pts:s,dts:s,payload:a,duration:t.duration,size:a.byteLength})}))}))}}const s=r.samples.concat(i.samples);s.sort(((e,t)=>e.dts-t.dts)),s.forEach((e=>{const t=new Uint8Array(e.payload);delete e.payload,this.player.isUseMSE()?e.type===Ne?this._doDecodeVideo({...e,payload:t}):e.type===Oe&&this._doDecodeAudio({...e,payload:t}):this.loopWorker.postMessage({...e,payload:t,cmd:"sample"},[t.buffer])})),ka(this._hasCalcFps)&&(this._hasCalcFps=!0,this._calcDecodeFps(s))}checkInitAudio(){return this.isInitAudio=!!(this.audioTrack.sampleRate&&this.audioTrack.channelCount&&this.audioTrack.codec&&"aac"===this.audioTrack.codecType),this.isInitAudio}checkInitVideo(){return this.isInitVideo=!!(this.videoTrack.pps.length&&this.videoTrack.sps.length&&this.videoTrack.codec),this.isInitVideo}_sendAccADTSHeader(e){const t=ts({profile:e.objectType,sampleRate:e.sampleRateIndex,channel:e.channelCount});this._doDecodeByHls(t,Oe,0,!0,0)}_calcDecodeFps(e){const t=Aa(e.map((e=>({ts:e.dts||e.pts,type:e.type}))),Ne);t&&(this._basefps=t,this._postMessageToLoopWorker("updateBaseFps",{baseFps:this._basefps}),this.player.debug.log(this.TAG_NAME,`_calcDecodeFps() video fps is ${t}, update base fps is ${this._basefps}`))}_initLoopWorker(){this.player.debug.log(this.TAG_NAME,"_initLoopWorker()");const e=Ia(function(){const e=1,t=2;let i=new class{constructor(){this.baseFps=0,this.fpsInterval=null,this.preLoopTimestamp=null,this.startBpsTime=null,this.allSampleList=[]}destroy(){this._clearInterval(),this.baseFps=0,this.allSampleList=[],this.preLoopTimestamp=null,this.startBpsTime=null}updateBaseFps(e){this.baseFps=e,this._clearInterval(),this._startInterval()}pushSample(e){delete e.cmd,this.allSampleList.push(e)}_startInterval(){const e=Math.ceil(1e3/this.baseFps);this.fpsInterval=setInterval((()=>{let t=(new Date).getTime();this.preLoopTimestamp||(this.preLoopTimestamp=t),this.startBpsTime||(this.startBpsTime=t);const i=t-this.preLoopTimestamp;if(i>2*e&&console.warn(`EasyPro:[HlsFmp4Loader LoopWorker] loop interval is ${i}ms, more than ${e} * 2ms`),this._loop(),this.preLoopTimestamp=(new Date).getTime(),this.startBpsTime){t-this.startBpsTime>=1e3&&(this._calcSampleList(),this.startBpsTime=t)}}),e)}_clearInterval(){this.fpsInterval&&(clearInterval(this.fpsInterval),this.fpsInterval=null)}_calcSampleList(){const i={buferredDuration:0,allListLength:this.allSampleList.length,audioListLength:0,videoListLength:0};this.allSampleList.forEach((r=>{r.type===t?(i.videoListLength++,r.duration&&(i.buferredDuration+=r.duration)):r.type===e&&i.audioListLength++})),postMessage({cmd:"sampleListInfo",...i})}_loop(){let i=null;if(this.allSampleList.length)if(i=this.allSampleList.shift(),i.type===t){postMessage({cmd:"decodeVideo",...i},[i.payload.buffer]);let t=this.allSampleList[0];for(;t&&t.type===e;)i=this.allSampleList.shift(),postMessage({cmd:"decodeAudio",...i},[i.payload.buffer]),t=this.allSampleList[0]}else i.type===e&&(postMessage({cmd:"decodeAudio",...i},[i.payload.buffer]),this.allSampleList.length&&this.allSampleList[0].type===t&&(i=this.allSampleList.shift(),postMessage({cmd:"decodeVideo",...i},[i.payload.buffer])))}};self.onmessage=e=>{const t=e.data;switch(t.cmd){case"updateBaseFps":i.updateBaseFps(t.baseFps);break;case"sample":i.pushSample(t);break;case"destroy":i.destroy(),i=null}}}.toString()),t=new Blob([e],{type:"text/javascript"}),i=URL.createObjectURL(t);let r=new Worker(i);this.workerUrl=i,this.workerClearTimeout=setTimeout((()=>{window.URL.revokeObjectURL(this.workerUrl),this.workerUrl=null,this.workerClearTimeout=null}),re),r.onmessage=e=>{const t=e.data;switch(t.cmd){case"decodeVideo":this._doDecodeVideo(t);break;case"decodeAudio":this._doDecodeAudio(t);break;case"sampleListInfo":this.tempSampleListInfo=t}},this.loopWorker=r}_postMessageToLoopWorker(e,t){this.player.isUseMSE()||(this.loopWorker?this.loopWorker.postMessage({cmd:e,...t}):this.player.debug.warn(this.TAG_NAME,"loop worker is not init, can not post message"))}_doDecodeAudio(e){const t=new Uint8Array(e.payload);this._doDecodeByHls(t,Oe,e.dts,!1,0)}_doDecodeVideo(e){const t=new Uint8Array(e.payload);let i=null;i=e.isHevc?eo(t,e.isIFrame):Gn(t,e.isIFrame),this.player.updateStats({dts:e.dts});const r=e.pts-e.dts;this._doDecodeByHls(i,Ne,e.dts,e.isIFrame,r)}getBuferredDuration(){return this.tempSampleListInfo.buferredDuration||0}getSampleListLength(){return this.tempSampleListInfo.allListLength||0}getSampleAudioListLength(){return this.tempSampleListInfo.audioListLength||0}getSampleVideoListLength(){return this.tempSampleListInfo.videoListLength||0}}class Qh{constructor(e,t){this.hls=e,this.player=this.hls.player,this.isMP4=t,this._initSegmentId="",this.TAG_NAME="HlsTransmuxer",this._demuxer=t?new Yh(this.hls.player):new ed(this.hls.player),this.player.debug.log(this.TAG_NAME,`init and isMP4 is ${t}`)}destroy(){this._demuxer&&(this._demuxer.destroy(),this._demuxer=null)}transmux(e,t,i,r,s,a){this.player.debug.log(this.TAG_NAME,`transmux videoChunk:${e&&e.byteLength}, audioChunk:${t&&t.byteLength}, discontinuity:${i}, contiguous:${r}, startTime:${s}, needInit:${a}`);const n=this._demuxer;try{this.isMP4?n.demux(e,t):n.demuxAndFix(Zl(e,t),i,r,s)}catch(e){throw new oh(nh,ah,e)}}}class Xh{constructor(e){this.hls=e,this.player=e.player,this._decryptor=new Ph(this.hls,this.player),this._transmuxer=null,this._mse=null,this._softVideo=null,this._sourceCreated=!1,this._needInitSegment=!0,this._directAppend=!1,this.TAG_NAME="HlsBufferService"}async destroy(){this._softVideo=null,this._transmuxer&&(this._transmuxer.destroy(),this._transmuxer=null)}get baseDts(){return this._transmuxer?._demuxer?._baseDts}get nbSb(){return 0}async updateDuration(e){this.player.debug.log(this.TAG_NAME,"updateDuration()",e)}getBuferredDuration(){return this._transmuxer?._demuxer?.getBuferredDuration()}getBufferedSegments(){return this._transmuxer?._demuxer?.getSampleListLength()}getBufferedAudioSegments(){return this._transmuxer?._demuxer?.getSampleAudioListLength()}getBufferedVideoSegments(){return this._transmuxer?._demuxer?.getSampleVideoListLength()}createSource(e,t,i,r){if(this._sourceCreated)return;const s=e||t;s&&(ed.probe(s)?this._transmuxer||(this._transmuxer=new Qh(this.hls,!1)):qh.probe(s)?this._transmuxer||(this._transmuxer=new Qh(this.hls,!0)):this.player.debug.error(this.TAG_NAME,"createSource error: chunk is not ts"))}async appendBuffer(e,t,i,r,s,a,n){if(i?.length||r?.length)return this._needInitSegment,this._transmuxer.transmux(i,r,s,a,n,this._needInitSegment||s),!0}async clearAllBuffer(){this.player.debug.log(this.TAG_NAME,"clearAllBuffer")}decryptBuffer(e,t){return this._decryptor.decrypt(e,t)}async reset(e=!1){this._transmuxer=null,this._needInitSegment=!0,this._directAppend=!1}async endOfStream(){this._softVideo&&this._softVideo.endOfStream()}async setLiveSeekableRange(e,t){}seamlessSwitch(){this._needInitSegment=!0}}class Jh{constructor(e){this.emitter=e,this._seiSet=new Set,e.on(wr,(e=>{e&&this._seiSet.add(e)}))}throw(e){if(null==e||!this._seiSet.size)return;const t=e-.2,i=e+.2,r=[];this._seiSet.forEach((e=>{e.time>=t&&e.time<=i&&r.push(e)})),r.forEach((e=>{this._seiSet.delete(e),this.emitter.emit(Er,e)}))}reset(){this._seiSet.clear()}}class Zh{constructor(e){this._timescale=e,this.encodeType="",this.audioCodec="",this.videoCodec="",this.domain="",this.fps=0,this.bitrate=0,this.width=0,this.height=0,this.samplerate=0,this.channelCount=0,this.gop=0,this._bitsAccumulateSize=0,this._bitsAccumulateDuration=0}getStats(){return{encodeType:this.encodeType,audioCodec:this.audioCodec,videoCodec:this.videoCodec,domain:this.domain,fps:this.fps,bitrate:this.bitrate,width:this.width,height:this.height,samplerate:this.samplerate,channelCount:this.channelCount,gop:this.gop}}setEncodeType(e){this.encodeType=e}setFpsFromScriptData({data:e}){const t=e?.onMetaData?.framerate;t&&t>0&&t<100&&(this.fps=t)}setVideoMeta(e){if(this.width=e.width,this.height=e.height,this.videoCodec=e.codec,this.encodeType=e.codecType,e.fpsNum&&e.fpsDen){const t=e.fpsNum/e.fpsDen;t>0&&t<100&&(this.fps=t)}}setAudioMeta(e){this.audioCodec=e.codec,this.samplerate=e.sampleRate,this.channelCount=e.channelCount}setDomain(e){this.domain=e.split("/").slice(2,3)[0]}updateBitrate(e){if((!this.fps||this.fps>=100)&&e.length){const t=e.reduce(((e,t)=>e+t.duration),0)/e.length;this.fps=Math.round(this._timescale/t)}e.forEach((e=>{1===e.gopId&&this.gop++,this._bitsAccumulateDuration+=e.duration/(this._timescale/1e3),this._bitsAccumulateSize+=e.units.reduce(((e,t)=>e+t.length),0),this._bitsAccumulateDuration>=1e3&&(this.bitrate=8*this._bitsAccumulateSize,this._bitsAccumulateDuration=0,this._bitsAccumulateSize=0)}))}}class ec{_core=null;_samples=[];constructor(e,t=1e3){this._core=e,this._timescale=t,this._stats=new Zh(t),this._bindEvents()}getStats(){const{currentTime:e=0,decodeFps:t=0}=this._core?.media||{};return{...this._stats.getStats(),downloadSpeed:this._core?.speedInfo?.().speed||0,avgSpeed:this._core?.speedInfo?.().avgSpeed||0,currentTime:e,bufferEnd:this._core?.bufferInfo()?.remaining||0,decodeFps:t}}_bindEvents(){this._core.on(pr,(e=>this._stats.updateBitrate(e.samples))),this._core.on(fr,(e=>{this._stats.setFpsFromScriptData(e)})),this._core.on(yr,(e=>{"video"===e.type?this._stats.setVideoMeta(e.track):this._stats.setAudioMeta(e.track)})),this._core.on(mr,(e=>{this._stats.setDomain(e.responseUrl)}))}reset(){this._samples=[],this._stats=new Zh(this._timescale)}}class tc extends t{constructor(e,t={}){super(),this.player=e,this.config=null,this._manifestLoader=null,this._segmentLoader=null,this._playlist=null,this._bufferService=null,this._seiService=null,this._stats=null,this._prevSegSn=null,this._prevSegCc=null,this._tickTimer=null,this._tickInterval=500,this._segmentProcessing=!1,this._reloadOnPlay=!1,this._switchUrlOpts=null,this._disconnectTimer=null,this.TAG_NAME="Hls256",this.canVideoPlay=!1,this.$videoElement=null,this.config=t=function(e){return{isLive:!0,maxPlaylistSize:50,retryCount:3,retryDelay:1e3,pollRetryCount:2,loadTimeout:1e4,preloadTime:30,softDecode:!1,bufferBehind:10,maxJumpDistance:3,startTime:0,targetLatency:10,maxLatency:20,allowedStreamTrackChange:!0,...e}}(t),this._manifestLoader=new Dh(this),this._segmentLoader=new xh(this),this._playlist=new Ih(this),this._bufferService=new Xh(this),this._seiService=new Jh(this),this._stats=new ec(this,9e4),this.player.debug.log(this.TAG_NAME,"init")}async destroy(){this.player.debug.log(this.TAG_NAME,"destroy()"),this._playlist.reset(),this._segmentLoader.reset(),this._seiService.reset(),await Promise.all([this._clear(),this._bufferService.destroy()]),this._manifestLoader&&(await this._manifestLoader.destroy(),this._manifestLoader=null),this._segmentLoader&&(this._segmentLoader.destroy(),this._segmentLoader=null),this._playlist&&(this._playlist.destroy(),this._playlist=null),this.player.debug.log(this.TAG_NAME,"destroy end")}_startTick(){this._stopTick(),this._tickTimer=setTimeout((()=>{this._tick()}),this._tickInterval)}_stopTick(){this._tickTimer&&clearTimeout(this._tickTimer),this._tickTimer=null}_tick(){this.player.isDestroyedOrClosed()?this.player.debug.log(this.TAG_NAME,"_tick() player is destroyed"):(this._startTick(),this._loadSegment())}get isLive(){return this._playlist.isLive}get streams(){return this._playlist.streams}get currentStream(){return this._playlist.currentStream}get hasSubtitle(){return this._playlist.hasSubtitle}get baseDts(){return this._bufferService?.baseDts}speedInfo(){return this._segmentLoader.speedInfo()}resetBandwidth(){this._segmentLoader.resetBandwidth()}getStats(){return this._stats.getStats()}async loadSource(e){return await this._reset(),await this._loadData(e),this._startTick(),!0}async _loadData(e){try{e&&(e=e.trim())}catch(e){}if(!e)throw this._emitError(new oh(rh,rh,null,null,"m3u8 url is missing"));const t=await this._loadM3U8(e),{currentStream:i}=this._playlist;if(this._urlSwitching){0===i.bitrate&&this._switchUrlOpts?.bitrate&&(i.bitrate=this._switchUrlOpts?.bitrate);const e=this._getSeamlessSwitchPoint();this.config.startTime=e;const t=this._playlist.findSegmentIndexByTime(e),r=this._playlist.getSegmentByIndex(t+1);if(r){const e=r.start;this.player.debug.warn(this.TAG_NAME,`clear buffer from ${e}`)}}t&&(this.isLive?(this.player.debug.log(this.TAG_NAME,"is live"),this._bufferService.setLiveSeekableRange(0,4294967295),this.config.targetLatency{e?(this._playlist.upsertPlaylist(e,s,a),this.isLive&&this._pollM3U8(t,i,r)):this.player.debug.warn(this.TAG_NAME,"_refreshM3U8() mediaPlaylist is empty")})).catch((e=>{throw this._emitError(oh.create(e))}))}_pollM3U8(e,t,i){let r=this._playlist.isEmpty;this._manifestLoader.poll(e,t,i,((e,t,i)=>{this._playlist.upsertPlaylist(e,t,i),this._playlist.clearOldSegment(),e&&r&&!this._playlist.isEmpty&&this._loadSegment(),r&&(r=this._playlist.isEmpty)}),(e=>{this._emitError(oh.create(e))}),1e3*(this._playlist.lastSegment?.duration||0))}_loadSegment=async()=>{if(this._segmentProcessing)return void this.player.debug.warn("_loadSegment()","_segmentProcessing is ture and return");if(!this._playlist)return void this.player.debug.warn("_loadSegment()","this._playlist is null and return");const e=this._playlist.currentSegment,t=this._playlist.nextSegment;if(this.player.debug.log(this.TAG_NAME,"_loadSegment()","curSeg",e&&e.url,"nextSeg",t&&t.url),t)return this._loadSegmentDirect();this.player.debug.log(this.TAG_NAME,"nextSeg is null and return")};async _loadSegmentDirect(){const e=this._playlist.nextSegment;if(!e)return void this.player.debug.log(this.TAG_NAME,"_loadSegmentDirect() !seg");let t=!1,i=null;try{this._segmentProcessing=!0,t=await this._reqAndBufferSegment(e,this._playlist.getAudioSegment(e))}catch(e){i=e}finally{this._segmentProcessing=!1}return i?this._emitError(oh.create(i)):(t?(this._urlSwitching&&(this._urlSwitching=!1,this.emit(Tr,{url:this.config.url})),this._playlist.moveSegmentPointer(),this.player.debug.log(this.TAG_NAME,"_loadSegmentDirect()","seg.isLast",e.isLast),e.isLast?(this.player.debug.log(this.TAG_NAME,"_loadSegmentDirect()","seg.isLast"),this._end()):(this.player.debug.log(this.TAG_NAME,"_loadSegmentDirect()","and next _loadSegment()"),this._loadSegment())):this.player.debug.log(this.TAG_NAME,"_loadSegmentDirect() not appended"),t)}async _reqAndBufferSegment(e,t){this.player.debug.log(this.TAG_NAME,"video seg",e&&e.url,"audio seg",t&&t.url);const i=e?e.cc:t.cc,r=this._prevSegCc!==i;let s=[];try{s=await this._segmentLoader.load(e,t,r)}catch(e){throw e.fatal=!1,this._segmentLoader.error=e,e}if(!s[0])return;const a=await this._bufferService.decryptBuffer(...s);if(!a)return void this.player.debug.log(this.TAG_NAME,"decryptBuffer return null");const n=e?e.sn:t.sn,o=e?e.start:t.start,l=this._playlist.currentStream;return this._bufferService.createSource(a[0],a[1],l?.videoCodec,l?.audioCodec),await this._bufferService.appendBuffer(e,t,a[0],a[1],r,this._prevSegSn===n-1,o),this._prevSegCc=i,this._prevSegSn=n,!0}async _clear(){this.player.debug.log(this.TAG_NAME,"_clear()"),clearTimeout(this._disconnectTimer),this._stopTick(),await Promise.all([this._segmentLoader.cancel(),this._manifestLoader.stopPoll()]),this._segmentProcessing=!1}async _reset(e=!1){return this.player.debug.log(this.TAG_NAME,"_reset()"),this._reloadOnPlay=!1,this._prevSegSn=null,this._prevSegCc=null,this._switchUrlOpts=null,this._playlist.reset(),this._segmentLoader.reset(),this._seiService.reset(),this._stats.reset(),await this._clear(),this._bufferService.reset(e)}_end(){this.player.debug.log(this.TAG_NAME,"_end()"),this._clear()}_emitError(e,t=!1){return!1===e.originError?.fatal?console.warn(e):(console.table(e),console.error(e),console.error(this.media?.error),this._stopTick(),this._urlSwitching&&(this._urlSwitching=!1,this.emit(Sr,e)),t&&this._end(),this._seiService.reset(),this.emit(Dr,e)),e}_getSeamlessSwitchPoint(){const{media:e}=this;let t=e.currentTime;if(!e.paused){const i=this._playlist.findSegmentIndexByTime(e.currentTime),r=this._playlist.getSegmentByIndex(i),s=this._stats?.getStats().downloadSpeed;if(s&&r){t+=r.duration*this._playlist.currentStream.bitrate/s+1}else t+=5}return t}getDemuxBuferredDuration(){return this._bufferService.getBuferredDuration()||0}getDemuxBufferedListLength(){return this._bufferService.getBufferedSegments()||0}getDemuxAudioBufferedListLength(){return this._bufferService.getBufferedAudioSegments()||0}getDemuxVideoBufferedListLength(){return this._bufferService.getBufferedVideoSegments()||0}}class ic extends t{TAG_NAME="Hls256Decoder";constructor(e){super(),this.player=e,this.$videoElement=this.player.video.$videoElement,this.hls=null,this.eventsDestroy=[],this.bandwidthEstimateInterval=null,this.hls=new tc(e),this._bindEvents()}async destroy(){return this._stopBandwidthEstimateInterval(),this.hls&&(await this.hls.destroy(),this.hls=null),this.eventsDestroy.length&&(this.eventsDestroy.forEach((e=>e())),this.eventsDestroy=[]),this.$videoElement=null,this.player.debug.log(this.TAG_NAME,"destroy"),!0}_bindEvents(){this.hls.on(Dr,(e=>{this.player.emitError(lt.hlsError,e)})),this._startBandwidthEstimateInterval()}_startBandwidthEstimateInterval(){this._stopBandwidthEstimateInterval(),this.bandwidthEstimateInterval=setInterval((()=>{const e=this.hls.speedInfo();this.player.emit(st.kBps,(e.avgSpeed/1024/8).toFixed(2)),this.hls.resetBandwidth()}),1e3)}_stopBandwidthEstimateInterval(){this.bandwidthEstimateInterval&&(clearInterval(this.bandwidthEstimateInterval),this.bandwidthEstimateInterval=null)}async loadSource(e){return this.url=e,await this.hls.loadSource(e),!0}checkHlsBufferedDelay(){let e=0;return this.hls&&(e=this.hls.getDemuxBuferredDuration()),e}getDemuxBufferedListLength(){let e=0;return this.hls&&(e=this.hls.getDemuxBufferedListLength()),e}getDemuxAudioBufferedListLength(){let e=0;return this.hls&&(e=this.hls.getDemuxAudioBufferedListLength()),e}getDemuxVideoBufferedListLength(){let e=0;return this.hls&&(e=this.hls.getDemuxVideoBufferedListLength()),e}}class rc extends t{constructor(e){super(),this.player=e,this.wsConnect=null,this.rtcContent=null,this.intervalTime=null,this.localStream=null,e.debug.log("wsRtcDecoder","init"),this.$videoElement=this.player.video.$videoElement,this.player.video.$videoElement.muted=!this.player._opt.isNotMute,this.candidateList=[],this.iceGatheringState=!1,this.interval=null}destroy(){this.intervalTime&&clearInterval(this.intervalTime),this.interval&&clearInterval(this.interval),this.rtcContent&&(this.rtcContent.close(),this.rtcContent=null,this.localStream=null,this.intervalTime=null,this.iceGatheringState=!1,this.candidateList=[]),this.wsConnect&&(this.wsConnect.close(),this.wsConnect=null),this.player.debug.log("wsRtcDecoder","destroy")}loadSource(e){return new Promise(((t,i)=>{this.wsConnect=new WebSocket(e),this.wsConnect.onopen=()=>{this.intervalTime=setInterval((()=>{this.wsConnect.send(JSON.stringify({type:"ping"}))}),4500),this.player.emit(st.rtcConnetMessage,"连接中..."),this.createMedia(),t()},this.wsConnect.onmessage=e=>{const t=JSON.parse(e.data);switch(t.type){case"sdp":this.rtcContent.setRemoteDescription(new RTCSessionDescription({sdp:t.sdp,type:"answer"})),this.player.emit(st.rtcConnetMessage,"接收视频信息...");break;case"candidate":case"pong":case"ErrSDP":case"ErrCandidate":case"Err":break;case"ErrKeepAlive":console.log("🚀 ~ CustomRTC ~ ErrKeepAlive: 服务端保活失败"),this.destroy()}},this.wsConnect.onclose=()=>{this.player.emit(st.rtcConnetMessage,"网络连接中断!"),this.destroy(),i()}}))}async createMedia(){this.localStream=await navigator.mediaDevices.getUserMedia({video:!1,audio:{echoCancellation:!0,noiseSuppression:!0,autoGainControl:!0}}),this.createPeer()}createPeer(){if(this.rtcContent=new RTCPeerConnection({bundlePolicy:"balanced",iceTransportPolicy:"relay",iceCandidatePoolSize:10,iceServers:this.player._opt.iceServers}),this.localStream){const e=this.localStream.getAudioTracks()[0];e.enabled=!1,this.rtcContent.addTrack(e,this.localStream)}this.rtcContent.addTransceiver("audio",{direction:"sendrecv"}),this.rtcContent.addTransceiver("video",{direction:"recvonly"}),this.rtcContent.onicecandidate=e=>{"complete"===this.rtcContent?.iceGatheringState?this.iceGatheringState=!0:e.candidate&&this.candidateList.push(JSON.stringify(e.candidate))},this.createOffer(),this.rtcContent.oniceconnectionstatechange=e=>{"checking"===this.rtcContent?.iceConnectionState&&this.player.emit(st.rtcConnetMessage,"正在检查视频源信息..."),"connected"===this.rtcContent?.iceConnectionState?this.player.emit(st.rtcConnetMessage,"[成功]建立视频连接"):"disconnected"===this.rtcContent?.iceConnectionState?this.player.emit(st.rtcConnetMessage,"[失败]视频连接已断开"):"failed"===this.rtcContent?.iceConnectionState&&this.player.emit(st.rtcConnetMessage,"[失败]视频连接失败")},this.rtcContent.ontrack=e=>{this.$videoElement.srcObject=e.streams[0]}}createOffer(){this.rtcContent.createOffer().then((e=>{this.rtcContent.setLocalDescription(e).then((e=>{this.player.emit(st.rtcConnetMessage,"获取客户端信息...");let t=0;this.interval=setInterval((()=>{if(t+=1,t>100||this.iceGatheringState){clearInterval(this.interval);const e=this.rtcContent?.localDescription;this.wsConnect?.send(JSON.stringify({channel_id:this.player._opt.channelId,connect_type:1,sdp:e?.sdp,type:"sdp"}))}}),10)}))}))}startVoice(){if(this.localStream){const e=this.localStream?.getAudioTracks()[0];e.enabled=!0}}pauseVoice(){if(this.localStream){const e=this.localStream?.getAudioTracks()[0];e.enabled=!1}}removeVoice(){this.localStream&&this.localStream.getTracks().forEach((e=>{e.stop()}))}}class sc extends t{constructor(e){super(),this.player=e,this.TAG_NAME="CommonWebrtc",this.rtcPeerConnection=null,this.videoStream=null,this.isDisconnected=!1,this.isH264=this.player.isWebrtcH264(),this.eventsDestroy=[],this.supportVideoFrameCallbackHandle=null,this.isInitInfo=!1,this.$videoElement=this.player.video.$videoElement,this.bandwidthEstimateInterval=null,this.rtcPeerTrackVideoReceiver=null,this.rtcPeerTrackAudioReceiver=null,this.prevWebrtcVideoStats={},this.prevWebrtcAudioStats={},this.currentWebrtcStats={},this.player._opt.webrtcUseCanvasRender&&this.isH264&&(this.$videoElement=document.createElement("video"),Is()&&(this.$videoElement.style.position="absolute"),this._initVideoEvents()),this.$videoElement.muted=!0,this._initRtcPeerConnection()}destroy(){this.isDisconnected=!1,this.isInitInfo=!1,this.prevWebrtcVideoStats={},this.currentWebrtcStats={},this.rtcPeerTrackVideoReceiver=null,this.rtcPeerTrackAudioReceiver=null,this._stopBandwidthEstimateInterval(),this.supportVideoFrameCallbackHandle&&this.$videoElement&&(this.$videoElement.cancelVideoFrameCallback(this.supportVideoFrameCallbackHandle),this.supportVideoFrameCallbackHandle=null),this.eventsDestroy.length&&(this.eventsDestroy.forEach((e=>e())),this.eventsDestroy=[]),this.isH264&&(this.videoStream&&(this.videoStream.getTracks().forEach((e=>e.stop())),this.videoStream=null),this.$videoElement.srcObject=null),this.rtcPeerConnection&&(this.rtcPeerConnection.onicecandidate=ys,this.rtcPeerConnection.ontrack=ys,this.rtcPeerConnection.onconnectionstatechange=ys,this.rtcPeerConnection.ondatachannel=ys,this.rtcPeerConnection.close(),this.rtcPeerConnection=null)}_initVideoEvents(){const{proxy:e}=this.player.events,t=e(this.$videoElement,Ei,(()=>{this.player.debug.log(this.TAG_NAME,"video canplay"),this.$videoElement.play().then((()=>{this.player.debug.log(this.TAG_NAME,"video play"),this._startCanvasRender(),this._initRenderSize()})).catch((e=>{this.player.debug.warn(this.TAG_NAME,"video play error ",e)}))})),i=e(this.$videoElement,Si,(()=>{this.player.debug.log("HlsDecoder","video waiting")})),r=e(this.$videoElement,Ti,(e=>{const t=parseInt(e.timeStamp,10);this.player.handleRender(),this.player.updateStats({ts:t}),this.$videoElement.paused&&(this.player.debug.warn("HlsDecoder","video is paused and next try to replay"),this.$videoElement.play().then((()=>{this.player.debug.log("HlsDecoder","video is paused and replay success")})).catch((e=>{this.player.debug.warn("HlsDecoder","video is paused and replay error ",e)})))})),s=e(this.$videoElement,ki,(()=>{this.player.debug.log("HlsDecoder","video playback Rate change",this.$videoElement&&this.$videoElement.playbackRate)}));this.eventsDestroy.push(t,i,r,s)}_initRtcPeerConnection(){const e=new RTCPeerConnection,t=this.player;e.addTransceiver("video",{direction:"recvonly"}),e.addTransceiver("audio",{direction:"recvonly"}),e.onsignalingstatechange=e=>{this.player.debug.log(this.TAG_NAME,"onsignalingstatechange",e)},e.oniceconnectionstatechange=i=>{this.player.debug.log(this.TAG_NAME,"oniceconnectionstatechange",e.iceConnectionState);const r=e.iceConnectionState;switch(this.player.emit(st.webrtcOnIceConnectionStateChange,r),this.isDisconnected="disconnected"===r,e.iceConnectionState){case"new":case"checking":case"closed":case"connected":case"completed":break;case"failed":t.emit(st.webrtcFailed);break;case"disconnected":t.emit(st.webrtcDisconnect);break;case"closed":t.emit(st.webrtcClosed)}},e.onicecandidate=e=>{this.player.debug.log(this.TAG_NAME,"onicecandidate",e),e.candidate&&this.player.debug.log(this.TAG_NAME,"Remote ICE candidate: ",e.candidate.candidate)},e.ontrack=t=>{if(this.player.debug.log(this.TAG_NAME,"ontrack",t),"video"===t.track.kind){this.player.debug.log(this.TAG_NAME,"ontrack video"),this.rtcPeerTrackVideoReceiver=e.getReceivers().find((function(e){return e.track===t.track})),this.rtcPeerTrackVideoReceiver&&this._startBandwidthEstimateInterval();let i=t.streams[0];this.$videoElement.autoplay=!0,this.$videoElement.srcObject=i,this.videoStream=i}else"audio"===t.track.kind&&(this.player.debug.log(this.TAG_NAME,"ontrack audio"),this.rtcPeerTrackAudioReceiver=e.getReceivers().find((function(e){return e.track===t.track})),this.rtcPeerTrackAudioReceiver&&this._startBandwidthEstimateInterval())},e.onicecandidateerror=e=>{this.player.debug.log(this.TAG_NAME,"onicecandidateerror",e),this.player.emitError(lt.webrtcIceCandidateError,e)},e.onconnectionstatechange=i=>{switch(this.player.debug.log(this.TAG_NAME,"onconnectionstatechange",i),this.player.emit(st.webrtcOnConnectionStateChange,e.connectionState),e.connectionState){case"new":case"connecting":case"connected":case"disconnected":break;case"failed":this.isDisconnected&&t.emit(st.webrtcFailed)}},this.rtcPeerConnection=e}_startBandwidthEstimateInterval(){this.player.debug.log(this.TAG_NAME,"_startBandwidthEstimateInterval"),this._stopBandwidthEstimateInterval(),this.bandwidthEstimateInterval=setInterval((()=>{this.rtcPeerTrackVideoReceiver&&this.rtcPeerTrackVideoReceiver.getStats().then((e=>{let t={},i=0;e.forEach((e=>{if(e)switch(e.type){case Gr:("succeeded"===e.state||e.bytesReceived)&&(this.currentWebrtcStats.timestamp=e.timestamp,this.currentWebrtcStats.rtt=e.currentRoundTripTime||-1,this.currentWebrtcStats.bytesReceived=e.bytesReceived||0,this.currentWebrtcStats.bytesSent=e.bytesSent||0);break;case Vr:this.currentWebrtcStats.remoteCandidate=e||{};break;case Wr:this.currentWebrtcStats.localCandidate=e||{};break;case zr:this.currentWebrtcStats.lastTimeStamp=e.timestamp;const r=((e.timestamp||0)-(this.prevWebrtcVideoStats.timestamp||0))/1e3,s=Number(e.bytesReceived||0)-Number(this.prevWebrtcVideoStats.bytesReceived||0),a=Math.floor(s/r);i+=a,t.vbps=a,this.prevWebrtcVideoStats=e;break;case Hr:e.frameWidth&&e.frameHeight&&(this.currentWebrtcStats.frameWidth=e.frameWidth||0,this.currentWebrtcStats.frameHeight=e.frameHeight||0)}})),this.rtcPeerTrackAudioReceiver?this.rtcPeerTrackAudioReceiver.getStats().then((e=>{e.forEach((e=>{if(e&&e.type===zr){this.currentWebrtcStats.lastTimeStamp=e.timestamp;const r=((e.timestamp||0)-(this.prevWebrtcAudioStats.timestamp||0))/1e3,s=Number(e.bytesReceived||0)-Number(this.prevWebrtcAudioStats.bytesReceived||0),a=Math.floor(s/r);i+=a,t.abps=a,this.prevWebrtcAudioStats=e}})),this.player.updateStats(t),this.player.emit(st.kBps,(i/1024).toFixed(2))})):(this.player.updateStats(t),this.player.emit(st.kBps,(i/1024).toFixed(2)))}))}),1e3)}_stopBandwidthEstimateInterval(){this.player.debug.log(this.TAG_NAME,"_stopBandwidthEstimateInterval"),this.bandwidthEstimateInterval&&(clearInterval(this.bandwidthEstimateInterval),this.bandwidthEstimateInterval=null)}_startCanvasRender(){Pa()?this.supportVideoFrameCallbackHandle=this.$videoElement.requestVideoFrameCallback(this.videoFrameCallback.bind(this)):(this._stopCanvasRender(),this.canvasRenderInterval=setInterval((()=>{this.player.video.render({$video:this.$videoElement,ts:0})}),40))}_stopCanvasRender(){this.canvasRenderInterval&&(clearInterval(this.canvasRenderInterval),this.canvasRenderInterval=null)}videoFrameCallback(e,t={}){this.player.isDestroyedOrClosed()?this.player.debug.log(this.TAG_NAME,"videoFrameCallback() player is destroyed"):(this.player.video.render({$video:this.$videoElement,ts:t.mediaTime||0}),this.player.updateStats({dts:t.mediaTime||0}),this.supportVideoFrameCallbackHandle=this.$videoElement.requestVideoFrameCallback(this.videoFrameCallback.bind(this)))}_initRenderSize(){this.isInitInfo||(this.player.video.updateVideoInfo({width:this.$videoElement.videoWidth,height:this.$videoElement.videoHeight}),this.player.video.initCanvasViewSize(),this.isInitInfo=!0)}getVideoCurrentTime(){let e=0;return this.$videoElement&&(e=this.$videoElement.currentTime),e}}class ac extends sc{constructor(e){super(e),this.rtcPeerConnectionDataChannel=null,this.player.isWebrtcH265()&&(this.streamRate=Ss((t=>{e.emit(st.kBps,(t/1024).toFixed(2))}))),this.TAG_NAME="WebrtcForM7SDecoder",this.player.debug.log(this.TAG_NAME,"init")}destroy(){super.destroy(),this.stopStreamRateInterval(),this.rtcPeerConnectionDataChannel&&(this.rtcPeerConnectionDataChannel.onopen=ys,this.rtcPeerConnectionDataChannel.onclose=ys,this.rtcPeerConnectionDataChannel.onmessage=ys,this.rtcPeerConnectionDataChannel.close(),this.rtcPeerConnectionDataChannel=null,this.rtcPeerConnection&&(this.rtcPeerConnection.close(),this.rtcPeerConnection.getSenders.forEach((e=>{e.track.stop()})),this.rtcPeerConnection.onicecandidate=null,this.rtcPeerConnection.ontrack=null,this.rtcPeerConnection.ondatachannel=null,this.rtcPeerConnection=null)),this.player.debug.log(this.TAG_NAME,"destroy")}_initRtcPeerConnection(){const e=new RTCPeerConnection,t=this.player;e.addTransceiver("video",{direction:"recvonly"}),e.addTransceiver("audio",{direction:"recvonly"}),e.onsignalingstatechange=e=>{this.player.debug.log(this.TAG_NAME,"onsignalingstatechange",e)},e.oniceconnectionstatechange=i=>{this.player.debug.log(this.TAG_NAME,"oniceconnectionstatechange",e.iceConnectionState);const r=e.iceConnectionState;switch(this.player.emit(st.webrtcOnIceConnectionStateChange,r),this.isDisconnected="disconnected"===r,e.iceConnectionState){case"new":case"checking":case"closed":case"connected":case"completed":break;case"failed":t.emit(st.webrtcFailed);break;case"disconnected":t.emit(st.webrtcDisconnect);break;case"closed":t.emit(st.webrtcClosed)}},e.onicecandidate=e=>{this.player.debug.log(this.TAG_NAME,"onicecandidate",e),e.candidate&&this.player.debug.log(this.TAG_NAME,"Remote ICE candidate: ",e.candidate.candidate)},e.ontrack=i=>{this.player.debug.log(this.TAG_NAME,"ontrack",i);const r=t.video.$videoElement;if(t.isWebrtcH264())if("video"===i.track.kind){this.player.debug.log(this.TAG_NAME,"ontrack video"),this.rtcPeerTrackVideoReceiver=e.getReceivers().find((function(e){return e.track===i.track})),this.rtcPeerTrackVideoReceiver&&this._startBandwidthEstimateInterval();let t=i.streams[0];r.autoplay=!0,r.srcObject=t,this.videoStream=t}else"audio"===i.track.kind&&(this.player.debug.log(this.TAG_NAME,"ontrack audio"),this.rtcPeerTrackAudioReceiver=e.getReceivers().find((function(e){return e.track===i.track})),this.rtcPeerTrackAudioReceiver&&this._startBandwidthEstimateInterval())},e.onicecandidateerror=e=>{this.player.debug.log(this.TAG_NAME,"onicecandidateerror",e),this.player.emitError(lt.webrtcIceCandidateError,e)},e.onconnectionstatechange=i=>{switch(t.debug.log(this.TAG_NAME,`sdp connect status ${e.connectionState}`),e.connectionState){case"new":case"connecting":case"connected":case"disconnected":break;case"failed":this.isDisconnected&&t.emit(st.webrtcFailed)}},e.ondatachannel=e=>{const t=e.channel;this.player.debug.log(this.TAG_NAME,"ondatachannel"),t.onopen=()=>{this.player.debug.log(this.TAG_NAME,"ondatachannel and onopen")},t.onmessage=e=>{const t=e.data;if(this.player.isWebrtcH264())return this.player.debug.warn(this.TAG_NAME,"ondatachannel is H265 but decode is h264 so emit webrtcStreamH265 "),void this.player.emit(st.webrtcStreamH265);this.player.isDestroyedOrClosed()?this.player.debug.warn(this.TAG_NAME,"ondatachannel and player is destroyed"):(this.streamRate&&this.streamRate(t.byteLength),this.player.demux&&this.player.demux.dispatch(t))},t.onclose=()=>{this.player.debug.warn(this.TAG_NAME,"ondatachannel and onclose")},this.rtcPeerConnectionDataChannel=t};e.createDataChannel("signal").onmessage=e=>{this.player.debug.log(this.TAG_NAME,"signalChannel,onmessage",e);JSON.parse(e.data).type},this.rtcPeerConnection=e}startStreamRateInterval(){this.stopStreamRateInterval(),this.streamRateInterval=setInterval((()=>{this.streamRate&&this.streamRate(0)}),1e3)}stopStreamRateInterval(){this.streamRateInterval&&(clearInterval(this.streamRateInterval),this.streamRateInterval=null)}loadSource(e,t={}){return new Promise(((t,i)=>{const r=this.rtcPeerConnection;r.createOffer().then((s=>{r.setLocalDescription(s),this.player.debug.log(this.TAG_NAME,"getWebRtcRemoteSdp loadSource"),function(e,t){return fetch(e,{method:"POST",cache:"no-cache",redirect:"follow",referrerPolicy:"no-referrer",headers:{"Content-Type":"application/sdp"},body:t})}(e,s.sdp).then((e=>{e.text().then((e=>{this.player.debug.log(this.TAG_NAME,"getWebRtcRemoteSdp response"),e?r.setRemoteDescription(new RTCSessionDescription({type:"answer",sdp:e})).then((()=>{this.player.isWebrtcH265()&&this.startStreamRateInterval(),t()})).catch((e=>{i(e)})):i("sdp is null")})).catch((e=>{this.player.debug.error(this.TAG_NAME,"loadSource response.text() error",e),i(e)}))})).catch((e=>{this.player.debug.error(this.TAG_NAME,"loadSource getWebRtcRemoteSdp response error",e),i(e)}))})).catch((e=>{this.player.debug.error(this.TAG_NAME,"loadSource rtcPeerConnection.createOffer() error",e),i(e)}))}))}}class nc extends sc{constructor(e){super(e),this.TAG_NAME="WebrtcForZLMDecoder",this.player.debug.log(this.TAG_NAME,"init")}destroy(){super.destroy(),this.player.debug.log(this.TAG_NAME,"destroy")}loadSource(e){return new Promise(((t,i)=>{const r=this.rtcPeerConnection;r.createOffer().then((s=>{r.setLocalDescription(s),this.player.debug.log(this.TAG_NAME,"getWebRtcRemoteSdp loadSource"),function(e,t){return Io({url:e,type:"POST",data:t,contentType:"text/plain;charset=utf-8",processData:!1,dataType:"json"})}(e,s.sdp).then((e=>{this.player.debug.log(this.TAG_NAME,`getWebRtcRemoteSdp response and code is ${e.code}`);const s=e;if(s&&0!==s.code)return i(s.msg);s&&s.sdp?r.setRemoteDescription(new RTCSessionDescription({type:"answer",sdp:s.sdp})).then((()=>{t()})).catch((e=>{i(e)})):i("sdp is null")})).catch((e=>{this.player.debug.error(this.TAG_NAME,"loadSource getWebRtcRemoteSdp response error",e),i(e)}))})).catch((e=>{this.player.debug.error(this.TAG_NAME,"loadSource rtcPeerConnection.createOffer() error",e),i(e)}))}))}}class oc extends t{constructor(e,t){if(super(),this.player=e,this.player.$container.classList.add("easyplayer-container-playback"),this._showPrecision=null,this._startTime=null,this._playStartTime=null,this._playingTimestamp=null,this._fps=parseInt(t.fps,10)||e._opt.playbackFps,this._isUseFpsRender=!!Ta(t.isUseFpsRender),this._rate=1,this._audioTimestamp=0,this._videoTimestamp=0,this.controlType=t.controlType||Z.normal,t.controlType&&-1===[Z.normal,Z.simple].indexOf(t.controlType)&&(this.player.debug.warn("Playback","constructor()","controlType is not in [normal,simple]",t.controlType),this.controlType=Z.normal),this._currentLocalTimestamp=0,this._localOneFrameTimestamp=t.localOneFrameTimestamp||40,this._localCalculateTimeInterval=null,this._isUseLocalCalculateTime=!!Ta(t.isUseLocalCalculateTime),this._isPlaybackPauseClearCache=!ka(t.isPlaybackPauseClearCache),this._isCacheBeforeDecodeForFpsRender=!!Ta(t.isCacheBeforeDecodeForFpsRender),this._startfpsTime=null,this._startFpsTimestamp=null,this._checkStatsInterval=null,this._playbackTs=0,this._renderFps=0,this._isUseLocalCalculateTime?this._startLocalCalculateTime():this._listen(),this.playbackList=[],this._playbackListStartTimestamp=null,this._totalDuration=0,t.controlType===Z.normal)this.initPlaybackList(t.playList,t.showPrecision,t.startTime);else if(t.controlType===Z.simple){t.duration&&(this._totalDuration=1e3*t.duration);let e=t.startTime||0;e>this.totalDuration&&(e=this.totalDuration),this.setStartTime(e)}this.player.on(st.playbackPause,(e=>{e?this.pause():this.resume()}));const i={fps:this._fps,isUseFpsRender:this._isUseFpsRender,localOneFrameTimestamp:this._localOneFrameTimestamp,isUseLocalCalculateTime:this._isUseLocalCalculateTime,uiUsePlaybackPause:t.uiUsePlaybackPause,showControl:t.showControl};e.debug.log("Playback","init",JSON.stringify(i))}destroy(){this._startTime=null,this._showPrecision=null,this._playStartTime=null,this._playingTimestamp=null,this._totalDuration=0,this._audioTimestamp=0,this._videoTimestamp=0,this._fps=null,this._isUseFpsRender=!1,this._rate=1,this.playbackList=[],this._playbackListStartTimestamp=null,this._localCalculateTimeInterval=null,this._currentLocalTimestamp=0,this._startfpsTime=null,this._startFpsTimestamp=null,this._renderFps=0,this._playbackTs=0,this._stopLocalCalculateTime(),this.clearStatsInterval(),this.player.$container&&this.player.$container.classList.remove("easyplayer-container-playback"),this.off(),this.player.debug.log("Playback","destroy")}_listen(){this.player.on(st.stats,(e=>{const t=e.ts;this._playStartTime||(this._playStartTime=t-1e3);let i=t-this._playStartTime;this.setPlayingTimestamp(i)}))}pause(){this.clearStatsInterval()}resume(){this.startCheckStatsInterval()}updateStats(e={}){this._startFpsTimestamp||(this._startFpsTimestamp=vs()),Ks(e.ts)&&(this.player.updateStats({fps:!0,ts:e.ts}),this._playbackTs=e.ts,this._startfpsTime||(this._startfpsTime=e.ts),this._renderFps+=1);const t=vs(),i=t-this._startFpsTimestamp;if(i<1e3)return;let r=null;this._startfpsTime&&(r=this._playbackTs-this._startfpsTime),this.player.emit(st.playbackStats,{fps:this._renderFps,rate:this.rate,start:this._startfpsTime,end:this._playbackTs,timestamp:i,dataTimestamp:r,audioBufferSize:this.player.audio?this.player.audio.bufferSize:0,videoBufferSize:this.player.video?this.player.video.bufferSize:0,ts:this._playbackTs}),this._renderFps=0,this._startfpsTime=this._playbackTs,this._startFpsTimestamp=t}updateLocalOneFrameTimestamp(e){this._localOneFrameTimestamp=e}_startLocalCalculateTime(){this._stopLocalCalculateTime(),this._localCalculateTimeInterval=setInterval((()=>{const e=this._currentLocalTimestamp;this._playStartTime||(this._playStartTime=e-1e3);let t=e-this._playStartTime;this.setPlayingTimestamp(t)}),1e3)}startCheckStatsInterval(){this.clearStatsInterval(),this._checkStatsInterval=setInterval((()=>{this.updateStats()}),1e3)}_stopLocalCalculateTime(){this._localCalculateTimeInterval&&(clearInterval(this._localCalculateTimeInterval),this._localCalculateTimeInterval=null)}clearStatsInterval(){this._checkStatsInterval&&(clearInterval(this._checkStatsInterval),this._checkStatsInterval=null)}increaseLocalTimestamp(){this._isUseLocalCalculateTime&&(this._currentLocalTimestamp+=this._localOneFrameTimestamp)}initPlaybackList(e,t,i){this.playbackList=e||[];let r=0;if(this.playbackList.forEach(((e,t)=>{10===ia(e.start)&&(e.startTimestamp=1e3*e.start,e.startTime=Ps(e.startTimestamp)),10===ia(e.end)&&(e.endTimestamp=1e3*e.end,e.endTime=Ps(e.endTimestamp)),e.duration=e.end-e.start,r+=e.duration})),this._totalDuration=r,this.player.debug.log("Playback",this.playbackList),this.playbackList.length>0){const e=this.playbackList[0].startTimestamp;this._playbackListStartTimestamp=e;let t=e;i&&(10===ia(i)&&(i*=1e3),this._isTimeInPlaybackList(i)&&(t=i)),this.setStartTime(t)}const s=t||ii;this.setShowPrecision(s)}get totalDuration(){return(this._totalDuration||0)/1e3}get startTime(){return this._startTime||0}setStartTime(e){this._startTime=e,this._playingTimestamp=e,this._playStartTime=null}setRate(e){this._rate=e,this.player.emit(st.playbackRateChange,e)}get fps(){return this._fps}get rate(){return this._rate}get isUseFpsRender(){return this._isUseFpsRender}get isUseLocalCalculateTime(){return this._isUseLocalCalculateTime}get showPrecision(){return this._showPrecision}get is60Min(){return this.showPrecision===ii}get is30Min(){return this.showPrecision===ri}get is10Min(){return this.showPrecision===si}get is5Min(){return this.showPrecision===ai}get is1Min(){return this.showPrecision===ai}get isPlaybackPauseClearCache(){return this._isPlaybackPauseClearCache}get isCacheBeforeDecodeForFpsRender(){return this._isCacheBeforeDecodeForFpsRender}setShowPrecision(e){oi.includes(e)||(this.player.debug.warn("Playback","setShowPrecision()","type is not in PLAYBACK_CONTROL_TIME_PRECISION_ARRAY",e),e=ii),this._showPrecision&&this._showPrecision===e||(this._showPrecision=e,this.player.emit(st.playbackPrecision,this._showPrecision,this.playbackList),this.player.emit(st.playbackShowPrecisionChange,this._showPrecision))}setPlayingTimestamp(e){let t;if(this.controlType===Z.normal){t=this.startTime+e,this._playingTimestamp=t,this.player.emit(st.playbackTime,t);const i=new Date(t);this.player.emit(st.playbackTimestamp,{ts:t,hour:i.getHours(),min:i.getMinutes(),second:i.getSeconds()})}else this.controlType===Z.simple&&(t=this.startTime+Math.round(e/1e3),t>this.totalDuration&&(this.player.debug.log("Playback","setPlayingTimestamp()",`timestamp ${t} > this.totalDuration ${this.totalDuration}`),t=this.totalDuration),console.log(t),this._playingTimestamp=t,this.player.emit(st.playbackTime,t),this.player.emit(st.playbackTimestamp,{ts:t}))}get playingTimestamp(){return this._playingTimestamp}narrowPrecision(){const e=oi.indexOf(this.showPrecision)-1;if(e>=0){const t=oi[e];this.setShowPrecision(t)}}expandPrecision(){const e=oi.indexOf(this.showPrecision)+1;if(e<=oi.length-1){const t=oi[e];this.setShowPrecision(t)}}seek(e){if(this.player.debug.log("Playback","seek()",e),this.controlType===Z.normal){if("true"===e.hasRecord){let t=e.time;"min"===e.type&&(t=60*e.time);let i=function(e){let t={};e>-1&&(t={hour:Math.floor(e/60/60)%60,min:Math.floor(e/60)%60,second:e%60});return t}(t);if(this._playbackListStartTimestamp){const e=new Date(this._playbackListStartTimestamp).setHours(i.hour,i.min,i.second,0);i.timestamp=e;const t=this._findMoreInfoByTimestamp(e);i&&t.more&&(i.more=t.more)}this.player.emit(st.playbackSeek,i)}}else if(this.controlType===Z.simple){let t=e.time;this.player.emit(st.playbackSeek,{ts:t})}}currentTimeScroll(){this.player.emit(st.playbackTimeScroll)}_findMoreInfoByTimestamp(e){let t=null;return this.playbackList.forEach(((i,r)=>{i.startTimestamp<=e&&i.endTimestamp>=e&&(t=i)})),t}_isTimeInPlaybackList(e){let t=!1;return this.playbackList.forEach(((i,r)=>{i.startTimestamp<=e&&i.endTimestamp>=e&&(t=!0)})),t}getControlType(){return this.controlType}isControlTypeNormal(){return this.controlType===Z.normal}isControlTypeSimple(){return this.controlType===Z.simple}}class lc extends t{constructor(e){super(),this.player=e,this.TAG_NAME="zoom",this.bindEvents=[],this.isDragging=!1,this.currentZoom=1,this.prevVideoElementStyleTransform=null,this.prevVideoElementStyleScale=null,this.maxScale=5,this.tempPosition={x:0,y:0},this.videoPosition={left:0,top:0};const{events:{proxy:t},debug:i}=this.player;this.player.on(st.zooming,(e=>{if(e){this.player.$container.classList.add("easyplayer-zoom-control"),this._bindEvents();const e=this.player.video.$videoElement.style.transform;let t=this.player.video.$videoElement.style.left,i=this.player.video.$videoElement.style.top;t=parseFloat(t),i=parseFloat(i),t&&(this.videoPosition.left=t),i&&(this.videoPosition.top=i),this.prevVideoElementStyleTransform=e;let r=e.match(/scale\([0-9., ]*\)/g);if(r&&r[0]){let e=r[0].replace("scale(","").replace(")","");this.prevVideoElementStyleScale=e.split(",")}}else{this.player.$container.classList.remove("easyplayer-zoom-control"),this._unbindEvents(),this._resetVideoPosition(),this.player.$container.style.cursor="auto";let e=this.prevVideoElementStyleTransform;this.player.video.$videoElement.style.transform=e,this.prevVideoElementStyleTransform=null,this.prevVideoElementStyleScale=null,ks()&&this.player._opt.useWebFullScreen&&this.player.resize()}}));const r=t(window,ks()?"touchend":"mouseup",(e=>{this.handleMouseUp(e)}));this.bindEvents.push(r),e.debug.log("zoom","init")}destroy(){this.bindEvents=[],this.isDragging=!1,this.currentZoom=1,this.prevVideoElementStyleTransform=null,this.prevVideoElementStyleScale=null,this.tempPosition={x:0,y:0},this.videoPosition={left:0,top:0},this.off(),this.player.debug.log("zoom","destroy")}_bindEvents(){const{events:{proxy:e},debug:t}=this.player,i=e(this.player.$container,ks()?"touchmove":"mousemove",(e=>{this.handleMouseMove(e)}));this.bindEvents.push(i);const r=e(this.player.$container,ks()?"touchstart":"mousedown",(e=>{this.handleMouseDown(e)}));this.bindEvents.push(r);const s=e(window,ks()?"touchend":"mouseup",(e=>{this.handleMouseUp(e)}));this.bindEvents.push(s)}_unbindEvents(){this.bindEvents.forEach((e=>{e&&e()}))}handleMouseMove(e){if(e.stopPropagation(),this.isDragging&&this.player.zooming){e.preventDefault();const{posX:t,posY:i}=ca(e),r=this.tempPosition.x-t,s=this.tempPosition.y-i;this.videoPosition.left=this.videoPosition.left-r,this.videoPosition.top=this.videoPosition.top-s,this.tempPosition.x=t,this.tempPosition.y=i,this.updateVideoPosition()}}handleMouseDown(e){e.stopPropagation();const t=la(e);if(this.player.zooming&&(t.matches("video")||t.matches("canvas"))){e.preventDefault();const{posX:t,posY:i}=ca(e);this.player.$container.style.cursor="grabbing",this.tempPosition.x=t,this.tempPosition.y=i,this.isDragging=!0,this.player.debug.log("zoom","handleMouseDown is dragging true")}}handleMouseUp(e){e.stopPropagation(),this.isDragging&&this.player.zooming&&(e.preventDefault(),this.tempPosition={x:0,y:0},this.isDragging=!1,this.player.$container.style.cursor="grab",this.player.debug.log("zoom","handleMouseUp is dragging false"))}updateVideoPosition(){const e=this.player.video.$videoElement;e.style.left=this.videoPosition.left+"px",e.style.top=this.videoPosition.top+"px"}_resetVideoPosition(){this.player.resize(),this.tempPosition={x:0,y:0},this.videoPosition={left:0,top:0},this.currentZoom=1,this.isDragging=!1}narrowPrecision(){this.currentZoom<=1||(this.currentZoom-=1,this.updateVideoElementScale())}expandPrecision(){this.currentZoom>=this.maxScale||(this.currentZoom+=1,this.updateVideoElementScale())}updatePrevVideoElementStyleScale(e){this.prevVideoElementStyleScale=e}updateVideoElementScale(){const e=this.player.video.$videoElement;let t=e.style.transform,i=1,r=1;if(this.prevVideoElementStyleScale){const e=this.prevVideoElementStyleScale[0];void 0!==e&&(i=e,r=e);const t=this.prevVideoElementStyleScale[1];void 0!==t&&(r=t)}r=Ms(r),i=Ms(i);const s=.5*i*(this.currentZoom-1)+i,a=.5*r*(this.currentZoom-1)+r;let n;n=-1===t.indexOf("scale(")?t+` scale(${s},${a})`:t.replace(/scale\([0-9., ]*\)/,`scale(${s},${a})`),this.player.debug.log("zoom",`updateVideoElementScale end is ${s}, ${a} style is ${n}`),e.style.transform=n}}class dc extends t{constructor(e){super(),this.player=e,this.faceDetector=null,this.objectDetector=null,this.imageDetector=null,this.occlusionDetector=null,this.initFaceDetector(),this.initObjectDetector(),this.initImageDetector(),this.initOcclusionDetector();let t="init";this.faceDetector&&(t+=" and use faceDetector"),this.objectDetector&&(t+=" and use objectDetector"),this.imageDetector&&(t+=" and use imageDetector"),this.occlusionDetector&&(t+=" and use occlusionDetector"),this.player.debug.log("AiLoader",t)}destroy(){this.off(),this.faceDetector&&(this.faceDetector.destroy(),this.faceDetector=null),this.objectDetector&&(this.objectDetector.destroy(),this.objectDetector=null),this.imageDetector&&(this.imageDetector.destroy(),this.imageDetector=null),this.occlusionDetector&&(this.occlusionDetector.destroy(),this.occlusionDetector=null),this.player.debug.log("AiLoader","destroy")}initFaceDetector(){if(this.player._opt.useFaceDetector&&window.EasyPlayerProFaceDetector){const e=new EasyPlayerProFaceDetector({detectWidth:this.player._opt.aiFaceDetectWidth,showRect:!1,debug:this.player._opt.debug,debugLevel:this.player._opt.debugLevel,debugUuid:this.player._opt.debugUuid});e.load().then((()=>{this.player.debug.log("AiLoader","init face detector success"),this.faceDetector=e,this.faceDetector.on("easyplayer-pro-face-detector-info",(e=>{if(this.player.emit(st.aiFaceDetectorInfo,e),this.player._opt.aiFaceDetectShowRect){const t=this.player._opt.aiFaceDetectRectConfig||{},i=(e.list||[]).map((e=>(e.type="rect",e.color=t.borderColor||"#0000FF",e.lineWidth=t.borderWidth||2,e)));this.player.video&&this.player.video.addAiContentToCanvas(i)}}))}))}}initObjectDetector(){if(this.player._opt.useObjectDetector&&window.EasyPlayerProObjectDetector){const e=new EasyPlayerProObjectDetector({detectWidth:this.player._opt.aiObjectDetectWidth,showRect:!1,debug:this.player._opt.debug,debugLevel:this.player._opt.debugLevel,debugUuid:this.player._opt.debugUuid});e.load().then((()=>{this.player.debug.log("AiLoader","init object detector success"),this.objectDetector=e,this.objectDetector.on("easyplayer-pro-object-detector-info",(e=>{if(this.player.emit(st.aiObjectDetectorInfo,e),this.player._opt.aiObjectDetectShowRect){const t=[],i=this.player._opt.aiObjectDetectRectConfig||{};(e.list||[]).forEach((e=>{const r={type:"rect",color:i.borderColor||"#0000FF",lineWidth:i.borderWidth||2,x:e.rect.x,y:e.rect.y,width:e.rect.width,height:e.rect.height},s={type:"text",color:i.color||"#000",fontSize:i.fontSize||14,text:e.zh,x:e.rect.x,y:e.rect.y-25};t.push(r,s)})),this.player.video&&this.player.video.addAiContentToCanvas(t)}}))}))}}initImageDetector(){if(this.player._opt.useImageDetector&&window.EasyPlayerProImageDetector){const e=new EasyPlayerProImageDetector({debug:this.player._opt.debug,debugLevel:this.player._opt.debugLevel,debugUuid:this.player._opt.debugUuid});e.load().then((()=>{this.player.debug.log("AiLoader","init image detector success"),this.imageDetector=e}))}}initOcclusionDetector(){if(this.player._opt.useOcclusionDetector&&window.EasyPlayerProOcclusionDetector){const e=new EasyPlayerProOcclusionDetector({debug:this.player._opt.debug,debugLevel:this.player._opt.debugLevel,debugUuid:this.player._opt.debugUuid});e.load().then((()=>{this.player.debug.log("AiLoader","init occlusion detector success"),this.occlusionDetector=e}))}}updateFaceDetectorConfig(e={}){this.faceDetector&&this.faceDetector.updateConfig(e)}updateObjectDetectorConfig(e={}){this.objectDetector&&this.objectDetector.updateConfig(e)}updateImageDetectorConfig(e={}){this.imageDetector&&this.imageDetector.updateConfig(e)}updateOcclusionDetectorConfig(e={}){this.occlusionDetector&&this.occlusionDetector.updateConfig(e)}}class hc extends t{constructor(e){super(),this.player=e,this.LOG_NAME="Contextmenu",this.menuList=[],this.$contextmenus=e.control.$contextmenus,ks()?this.player.debug.warn(this.LOG_NAME,"not support mobile"):this.init(),e.debug.log(this.LOG_NAME,"init")}destroy(){this.menuList=[],this.player.debug.log(this.LOG_NAME,"destroy")}get isShow(){return e=this.player.$container,t="easyplayer-contextmenus-show",e.classList.contains(t);var e,t}show(){var e,t;e=this.player.$container,t="easyplayer-contextmenus-show",e.classList.add(t)}hide(){var e,t;e=this.player.$container,t="easyplayer-contextmenus-show",e.classList.remove(t)}init(){const{events:{proxy:e},debug:t}=this.player;this.player._opt.contextmenuBtns.length>0&&this.player._opt.contextmenuBtns.forEach((e=>{this.addMenuItem(e)})),e(this.player.$container,"contextmenu",(e=>{e.preventDefault(),this.show();const t=e.clientX,i=e.clientY,{height:r,width:s,left:a,top:n}=this.player.$container.getBoundingClientRect(),{height:o,width:l}=this.$contextmenus.getBoundingClientRect();let d=t-a,h=i-n;t+l>a+s&&(d=s-l),i+o>n+r&&(h=r-o),_s(this.$contextmenus,{left:`${d}px`,top:`${h}px`})})),e(this.player.$container,"click",(e=>{Ed(e,this.$contextmenus)||this.hide()})),this.player.on(st.blur,(()=>{this.hide()}))}_validateMenuItem(e){let t=!0;return e.content||(this.player.debug.warn(this.LOG_NAME,"content is required"),t=!1),t}addMenuItem(e={}){const t=_a(sr);if(e=Object.assign({},t,e),!this._validateMenuItem(e))return;const{events:{proxy:i},debug:r}=this.player,s=Us(),a=`\n
\n ${e.content}\n
\n `,n=Array.from(this.$contextmenus.children)[e.index];n?n.insertAdjacentHTML("beforebegin",a):_d(this.$contextmenus,a);const o=this.$contextmenus.querySelector(`.easyplayer-contextmenu-${s}`);e.click&&i(o,"click",(t=>{t.preventDefault(),e.click.call(this.player,this,t),this.hide()})),this.menuList.push({uuid:s,$menuItem:o})}}class cc extends sc{constructor(e){super(e),this.TAG_NAME="WebrtcForSRSDecoder",this.player.debug.log(this.TAG_NAME,"init")}destroy(){super.destroy(),this.player.debug.log(this.TAG_NAME,"destroy")}loadSource(e){return new Promise(((t,i)=>{const r=this.rtcPeerConnection;r.createOffer().then((s=>{r.setLocalDescription(s),this.player.debug.log(this.TAG_NAME,"getWebRtcRemoteSdp loadSource"),function(e,t){return fetch(e,{method:"POST",cache:"no-cache",redirect:"follow",referrerPolicy:"no-referrer",headers:{"Content-Type":"application/sdp"},body:t})}(e,s.sdp).then((e=>{this.player.debug.log(this.TAG_NAME,`getWebRtcRemoteSdp response and code is ${e.code}`);const s=e;if(s&&0!==s.code)return i(s.msg);s?r.setRemoteDescription(new RTCSessionDescription({type:"answer",sdp:s})).then((()=>{t()})).catch((e=>{i(e)})):i("sdp is null")})).catch((e=>{this.player.debug.error(this.TAG_NAME,"loadSource getWebRtcRemoteSdp response error",e),i(e)}))})).catch((e=>{this.player.debug.error(this.TAG_NAME,"loadSource rtcPeerConnection.createOffer() error",e),i(e)}))}))}}class uc extends sc{constructor(e){super(e),this.TAG_NAME="WebrtcForOthersDecoder",this.player.debug.log(this.TAG_NAME,"init")}destroy(){super.destroy(),this.player.debug.log(this.TAG_NAME,"destroy")}loadSource(e){return new Promise(((t,i)=>{const r=this.rtcPeerConnection;r.createOffer().then((s=>{r.setLocalDescription(s),this.player.debug.log(this.TAG_NAME,"getWebRtcRemoteSdp loadSource"),function(e,t){return fetch(e,{method:"POST",cache:"no-cache",redirect:"follow",referrerPolicy:"no-referrer",headers:{"Content-Type":"application/sdp"},body:t})}(e,s.sdp).then((e=>{this.player.debug.log(this.TAG_NAME,`getWebRtcRemoteSdp response and code is ${e.code}`),e.text().then((e=>{this.player.debug.log(this.TAG_NAME,"getWebRtcRemoteSdp response");try{let t=JSON.parse(e);this.player.debug.log(this.TAG_NAME,"this is json sdp response"),0!=t.code&&(this.player.debug.log(this.TAG_NAME,`response json code ${t.code}`),i(new Error(`response sdp json code: ${t.code}`))),e=t.sdp}catch(e){this.player.debug.log(this.TAG_NAME,"this is raw sdp response")}e?r.setRemoteDescription(new RTCSessionDescription({type:"answer",sdp:e})).then((()=>{t()})).catch((e=>{i(e)})):i("sdp is null")})).catch((e=>{this.player.debug.error(this.TAG_NAME,"loadSource response.text() error",e),i(e)}))})).catch((e=>{this.player.debug.error(this.TAG_NAME,"loadSource getWebRtcRemoteSdp response error",e),i(e)}))})).catch((e=>{this.player.debug.error(this.TAG_NAME,"loadSource rtcPeerConnection.createOffer() error",e),i(e)}))}))}}class pc extends t{constructor(e){if(super(),this.TAG_NAME="AliyunRtc",this.player=e,!window.AliRTS)throw new Error("AliyunRtc is not defined");this.aliyunRtc=window.AliRTS.createClient(),this.aliyunRtcRemoteStream=null,this.$videoElement=this.player.video.$videoElement,this.listenEvents(),this.player.debug.log(this.TAG_NAME,"init")}destroy(){this.aliyunRtc&&(this.aliyunRtcRemoteStream&&(this.aliyunRtcRemoteStream=null),this.aliyunRtc.unsubscribe(),this.aliyunRtc=null),this.off(),this.player.debug.log(this.TAG_NAME,"destroy")}listenEvents(){this.aliyunRtc.on("onError",(e=>{this.player.debug.log(this.TAG_NAME,`onError and code is ${e.errorCode} and message: ${e.message}`),10400!==e.errorCode&&(this.player.debug.error(this.TAG_NAME,`onError and code is ${e.errorCode} and message: ${e.message}`),this.player.emitError(lt.aliyunRtcError,e))})),this.aliyunRtc.on("reconnect",(e=>{this.player.debug.log(this.TAG_NAME,"reconnect",e)}));const e="canplay",t="waiting",i="playing",r="media";this.aliyunRtc.on("onPlayEvent",(s=>{if(s.event===e)this.player.debug.log(this.TAG_NAME,"onPlayEvent and canplay");else if(s.event===t)this.player.debug.log(this.TAG_NAME,"onPlayEvent and playing - > waiting");else if(s.event===i)this.player.debug.log(this.TAG_NAME,"onPlayEvent and waiting -> playing");else if(s.event===r){const e=s.data;let t={},i=0;if(e.audio){const r=Math.floor(e.audio.bytesReceivedPerSecond);i+=r,t.abps=r}if(e.video){const r=Math.floor(e.video.bytesReceivedPerSecond);i+=r,t.vbps=r}this.player.updateStats(t),this.player.emit(st.kBps,(i/1024).toFixed(2))}}))}loadSource(e){return new Promise(((t,i)=>{this.aliyunRtc.isSupport({isReceiveVideo:!0}).then((()=>{this.aliyunRtc.subscribe(e,{}).then((e=>{this.aliyunRtcRemoteStream=e,e.play(this.$videoElement),t()})).catch((e=>{this.player.debug.error(this.TAG_NAME,"loadSource and subscribe is not success: ",e.message),i(e.message)}))})).catch((e=>{this.player.debug.error(this.TAG_NAME,"loadSource and is not support: ",e.message),i(e.message)}))}))}getVideoCurrentTime(){let e=0;return this.$videoElement&&(e=this.$videoElement.currentTime),e}}class fc{constructor(e){this.player=e,this.TAG_NAME="PressureObserverCpu",this.observer=null,this.latestCpuInfo=null,this.currentLevel=-1,this._init(),this.player.debug.log(this.TAG_NAME,"init")}destroy(){this.observer&&(this.observer.disconnect(),this.observer=null),this.latestCpuInfo=null,this.currentLevel=-1,this.player.debug.log(this.TAG_NAME,"destroy")}getCurrentCpuState(){return this.currentLevel}_init(){ka(Ba())?this.player.debug.log(this.TAG_NAME,"not support PressureObserver"):(this.observer=new PressureObserver((e=>{const t=(e||[]).find((e=>"cpu"===e.source));if(t){switch(this.latestCpuInfo=t,t.state){case"nominal":this.currentLevel=0;break;case"fair":this.currentLevel=1;break;case"serious":this.currentLevel=2;break;case"critical":this.currentLevel=3;break;default:this.currentLevel=-1}this.player.emit(st.pressureObserverCpu,this.currentLevel)}})),this.observer&&this.observer.observe("cpu"))}}class yc extends $a{constructor(e,t={}){super(e),this.TAG_NAME="DynamicWatermark",this.isPauseAnimation=!1,this.isStopAnimation=!1,this.rafID=null,this.speed=t.speed||.2,this.isDynamic=!0,this.shadowRootDynamicDom=null,this.isGhost=!0===t.isGhost,this.ghostConfig={on:t.on||5,off:t.off||5},this.waterMarkWillRemove=!1,this.waterMarkWillAdd=!1,this.player.once(st.start,(()=>{const e=ka(false)?decodeURIComponent("EasyPlayerPro%20%E4%BD%93%E9%AA%8C"):t.content;let i=this.player.getVideoInfo();i||(i={width:200,height:200}),this.update({text:{content:e,fontSize:t.fontSize||18,color:t.color||"white"},left:i.width*Math.random(),top:i.height*Math.random(),opacity:t.opacity||.15}),this.startAnimation()})),this.player.debug.log(this.TAG_NAME,"int")}destroy(){super.destroy(),this.rafID&&(cancelAnimationFrame(this.rafID),this.rafID=null)}startAnimation(){if(!this.rafID){let e=1,t=1,i=Math.random(),r={width:0,height:0};const s=()=>{try{if(ka(this.isPauseAnimation)&&this.shadowRootDynamicDom&&this.shadowRootInnerDom){const a=this.shadowRootInnerDom,n=this.shadowRootDynamicDom,o=a.getBoundingClientRect(),l=n.getBoundingClientRect();if(l.width&&l.height&&(r.width=l.width,r.height=l.height),!this.shadowRootInnerDom.contains(this.shadowRootDynamicDom))return this.isGhost?ka(this.waterMarkWillAdd)&&(this.waterMarkWillAdd=!0,setTimeout((()=>{this._addDom(o,r),this.waterMarkWillAdd=!1}),1e3*this.ghostConfig.off)):this._addDom(o,r),void(0!==this.speed&&requestAnimationFrame(s));const d=Math.min(1,0===this.speed?0:this.speed?this.speed:.2);let h=l.left-o.left,c=l.top-o.top;h+=d*t*i,c+=d*e*(1-i),h+r.width>o.width?(t=-1,i=Math.random()):h<0&&(t=1,i=Math.random()),c+r.height>o.height?(e=-1,i=Math.random()):c<0&&(e=1,i=Math.random()),h=Math.min(o.width-r.width,h),c=Math.min(o.height-r.height,c);const u=h/o.width*100,p=c/o.height*100;this.shadowRootDynamicDom.style.left=`${u}%`,this.shadowRootDynamicDom.style.top=`${p}%`,ka(this.waterMarkWillRemove)&&this.isGhost&&(this.waterMarkWillRemove=!0,setTimeout((()=>{this._removeDom(),this.waterMarkWillRemove=!1}),1e3*this.ghostConfig.on))}}catch(e){}if(this.isStopAnimation)return this.isStopAnimation=!1,cancelAnimationFrame(this.rafID),void(this.rafID=null);0!==this.speed&&requestAnimationFrame(s)};this.rafID=requestAnimationFrame(s)}}_addDom(e,t){if(this.shadowRootInnerDom&&this.shadowRootDynamicDom){this.shadowRootInnerDom.appendChild(this.shadowRootDynamicDom);let i=e.width*Math.random(),r=e.height*Math.random();i=Math.min(e.width-2*t.width,i),r=Math.min(e.height-2*t.height,r),this.shadowRootDynamicDom.style.left=`${i}px`,this.shadowRootDynamicDom.style.top=`${r}px`}}resumeAnimation(){this.isPauseAnimation=!1}pauseAnimation(){this.isPauseAnimation=!0}stopAnimation(){this.isStopAnimation=!0}}class mc extends t{constructor(e,t={}){super(),this._opt={},this.TAG_NAME="Player",this.$container=e;const i=Ea();if(this._opt=Object.assign({},i,t),this.debug=new Xr(this),this.debug.log(this.TAG_NAME,"init"),this._opt.forceNoOffscreen=!0,this._canPlayAppleMpegurl=!1,(Is()||Ls())&&(this._canPlayAppleMpegurl=ua(),this.debug.log(this.TAG_NAME,"isIOS or isSafari and canPlayAppleMpegurl",this._canPlayAppleMpegurl)),ks()&&(this._opt.controlAutoHide=!1),xa()&&(this.debug.log(this.TAG_NAME,"isIphone and set _opt.videoRenderSupportScale false"),this._opt.videoRenderSupportScale=!1,na()&&Ta(this._opt.isHls)&&ka(this._opt.supportHls265)&&(this.debug.log(this.TAG_NAME,"isIphone and is in wechat and is hls so set supportHls265 true"),this._opt.supportHls265=!0)),ka(this._opt.playFailedAndReplay)&&(this.debug.log(this.TAG_NAME,"_opt.playFailedAndReplay is false and set others replay params false"),this._opt.webglAlignmentErrorReplay=!1,this._opt.webglContextLostErrorReplay=!1,this._opt.autoWasm=!1,this._opt.mseDecodeErrorReplay=!1,this._opt.mediaSourceTsIsMaxDiffReplay=!1,this._opt.wcsDecodeErrorReplay=!1,this._opt.wasmDecodeErrorReplay=!1,this._opt.simdDecodeErrorReplay=!1,this._opt.videoElementPlayingFailedReplay=!1,this._opt.networkDelayTimeoutReplay=!1,this._opt.widthOrHeightChangeReplay=!1,this._opt.simdH264DecodeVideoWidthIsTooLargeReplay=!1,this._opt.mediaSourceUseCanvasRenderPlayFailedReplay=!1,this._opt.heartTimeoutReplay=!1,this._opt.loadingTimeoutReplay=!1,this._opt.websocket1006ErrorReplay=!1),this._opt.forceNoOffscreen||("undefined"==typeof OffscreenCanvas?(this._opt.forceNoOffscreen=!0,this._opt.useOffscreen=!1):this._opt.useOffscreen=!0),this._opt.isMpeg4&&(this.debug.log(this.TAG_NAME,"isMpeg4 is true, so set _opt.useWasm true and others params false"),this._opt.useWCS=!1,this._opt.useMSE=!1,this._opt.isNakedFlow=!1,this._opt.useSIMD=!1,this._opt.isFmp4=!1,this._opt.useWasm=!0),this.isPlayback()&&(this._opt.mseDecoderUseWorker=!1),this._opt.mseDecoderUseWorker&&(this._opt.mseDecoderUseWorker=!!(self.Worker&&self.MediaSource&&"canConstructInDedicatedWorker"in self.MediaSource&&!0===self.MediaSource.canConstructInDedicatedWorker),ka(this._opt.mseDecoderUseWorker)&&this.debug.log(this.TAG_NAME,"mseDecoderUseWorker is true but not support so set _opt.mseDecoderUseWorker = false")),(this.isOldHls()||this.isWebrtcH264()||this.isAliyunRtc())&&(this.debug.log(this.TAG_NAME,"isOldHls or isWebrtcH264 or isAliyunRtc is true, so set some params false and _opt.recordType is webm"),this._opt.useWCS=!1,this._opt.useMSE=!1,this._opt.isNakedFlow=!1,this._opt.useSIMD=!1,this._opt.isFmp4=!1,this._opt.useWasm=!1,this._opt.recordType=w),this._opt.isNakedFlow&&(this.debug.log(this.TAG_NAME,"isNakedFlow is true, so set _opt.mseDecodeAudio false"),this._opt.mseDecodeAudio=!1),!this.isOldHls()&&!this.isWebrtcH264()){if(this._opt.useWCS){const e="VideoEncoder"in window,t=zs();this._opt.useWCS=e,this._opt.useWCS&&this._opt.isH265&&(this._opt.useWCS=t),this._opt.useWCS||this.debug.warn(this.TAG_NAME,`\n useWCS is true,\n and supportWCS is ${e}, supportHevcWCS is ${t} , _opt.isH265 is ${this._opt.isH265}\n so set useWCS false`),this._opt.useWCS&&(this._opt.useOffscreen?this._opt.wcsUseVideoRender=!1:this._opt.wcsUseVideoRender&&(this._opt.wcsUseVideoRender=Ws()&&Vs(),this._opt.wcsUseVideoRender||this.debug.warn(this.TAG_NAME,"wcsUseVideoRender is true, but not support so set wcsUseVideoRender false")))}if(this._opt.useMSE){const e=function(){let e=!1;return"MediaSource"in self&&self.MediaSource.isTypeSupported(Kt)&&(e=!0),e}(),t=Gs();this._opt.useMSE=e,this._opt.useMSE&&this._opt.isH265&&(this._opt.useMSE=t),this._opt.useMSE||this.debug.warn(this.TAG_NAME,`\n useMSE is true,\n and supportMSE is ${e}, supportHevcMSE is ${t} , _opt.isH265 is ${this._opt.isH265}\n so set useMSE false`)}}if(ka(this._opt.useMSE)&&(this._opt.mseDecodeAudio=!1),this._opt.useMSE?(this._opt.useWCS&&this.debug.warn(this.TAG_NAME,"useMSE is true and useWCS is true then useWCS set true->false"),this._opt.forceNoOffscreen||this.debug.warn(this.TAG_NAME,"useMSE is true and forceNoOffscreen is false then forceNoOffscreen set false->true"),this._opt.useWCS=!1,this._opt.forceNoOffscreen=!0):this._opt.useWCS,this._opt.isWebrtc&&this._opt.demuxUseWorker&&(this.debug.warn(this.TAG_NAME,"isWebrtc is true and demuxUseWorker is true then demuxUseWorker set true->false"),this._opt.demuxUseWorker=!1),this._opt.isHls&&this._opt.demuxUseWorker&&(this.debug.warn(this.TAG_NAME,"isHls is true and demuxUseWorker is true then demuxUseWorker set true->false"),this._opt.demuxUseWorker=!1),this._opt.isAliyunRtc&&this._opt.demuxUseWorker&&(this.debug.warn(this.TAG_NAME,"isAliyunRtc is true and demuxUseWorker is true then demuxUseWorker set true->false"),this._opt.demuxUseWorker=!1),this.isStreamWebTransport()&&this._opt.demuxUseWorker&&(this.debug.warn(this.TAG_NAME,"is stream use webTransport is true and demuxUseWorker is true then demuxUseWorker set true->false"),this._opt.demuxUseWorker=!1),ka(this._opt.demuxUseWorker)&&(this._opt.mseDecoderUseWorker=!1),this.isPlayback()&&(this._opt.mseDecoderUseWorker=!1),this._opt.useMThreading&&(this._opt.useMThreading="undefined"!=typeof SharedArrayBuffer,this._opt.useMThreading||this.debug.warn(this.TAG_NAME,"useMThreading is true, but not support so set useMThreading false")),this._opt.useSIMD||-1!==this._opt.decoder.indexOf("-simd")){const e=WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,5,1,96,0,1,123,3,2,1,0,10,10,1,8,0,65,0,253,15,253,98,11])),t=xa();this._opt.useSIMD=e&&ka(t),this._opt.useSIMD||this.debug.warn(this.TAG_NAME,`useSIMD is true, but not support(isSupportSimd is ${e} ,isIphone is ${t}) so set useSIMD false`)}var r;if(this._opt.useSIMD?-1===this._opt.decoder.indexOf("-simd")?this._opt.useMThreading?this._opt.decoder=this._opt.decoder.replace("decoder-pro.js","decoder-pro-simd-mt.js"):this._opt.decoder=this._opt.decoder.replace("decoder-pro.js","decoder-pro-simd.js"):this._opt.useMThreading&&(this._opt.decoder=this._opt.decoder.replace("decoder-pro-simd.js","decoder-pro-simd-mt.js")):-1!==this._opt.decoder.indexOf("-simd")?this._opt.useMThreading?this._opt.decoder=this._opt.decoder.replace("decoder-pro-simd.js","decoder-pro-mt.js"):this._opt.decoder=this._opt.decoder.replace("decoder-pro-simd.js","decoder-pro.js"):this._opt.useMThreading&&(this._opt.decoder=this._opt.decoder.replace("decoder-pro.js","decoder-pro-mt.js")),-1!==this._opt.decoder.indexOf("-simd")?this._opt.useMThreading?(this._opt.decoderAudio=this._opt.decoder.replace("decoder-pro-simd-mt.js","decoder-pro-audio.js"),this._opt.decoderHard=this._opt.decoder.replace("decoder-pro-simd-mt.js","decoder-pro-hard.js"),this._opt.decoderHardNotWasm=this._opt.decoder.replace("decoder-pro-simd-mt.js","decoder-pro-hard-not-wasm.js")):(this._opt.decoderAudio=this._opt.decoder.replace("decoder-pro-simd.js","decoder-pro-audio.js"),this._opt.decoderHard=this._opt.decoder.replace("decoder-pro-simd.js","decoder-pro-hard.js"),this._opt.decoderHardNotWasm=this._opt.decoder.replace("decoder-pro-simd.js","decoder-pro-hard-not-wasm.js")):this._opt.useMThreading?(this._opt.decoderAudio=this._opt.decoder.replace("decoder-pro-mt.js","decoder-pro-audio.js"),this._opt.decoderHard=this._opt.decoder.replace("decoder-pro-mt.js","decoder-pro-hard.js"),this._opt.decoderHardNotWasm=this._opt.decoder.replace("decoder-pro-mt.js","decoder-pro-hard-not-wasm.js")):(this._opt.decoderAudio=this._opt.decoder.replace("decoder-pro.js","decoder-pro-audio.js"),this._opt.decoderHard=this._opt.decoder.replace("decoder-pro.js","decoder-pro-hard.js"),this._opt.decoderHardNotWasm=this._opt.decoder.replace("decoder-pro.js","decoder-pro-hard-not-wasm.js")),ka(this._opt.hasAudio)&&(this._opt.operateBtns.audio=!1),ka(this._opt.hasVideo)&&(this._opt.operateBtns.fullscreen=!1,this._opt.operateBtns.screenshot=!1,this._opt.operateBtns.record=!1,this._opt.operateBtns.ptz=!1,this._opt.operateBtns.quality=!1,this._opt.operateBtns.zoom=!1),this._opt.qualityConfig&&0===this._opt.qualityConfig.length&&this._opt.operateBtns.quality&&(this._opt.operateBtns.quality=!1,this.debug.warn(this.TAG_NAME,"_opt.qualityConfig is empty, so set operateBtns.quality false")),Ta(this._opt.useWebGPU)&&(this._opt.useWebGPU=function(){let e=!1;return"gpu"in navigator&&(e=!0),e}(),ka(this._opt.useWebGPU)&&this.debug.warn(this.TAG_NAME,"useWebGPU is true, but not support so set useWebGPU false")),this._opt.hasControl=this._hasControl(),this._loading=!1,this._playing=!1,this._playbackPause=!1,this._hasLoaded=!1,this._zooming=!1,this._destroyed=!1,this._closed=!1,this._checkHeartTimeout=null,this._checkLoadingTimeout=null,this._checkStatsInterval=null,this._checkVisibleHiddenTimeout=null,this._startBpsTime=null,this._isPlayingBeforePageHidden=!1,this._stats={buf:0,netBuf:0,fps:0,maxFps:0,dfps:0,abps:0,vbps:0,ts:0,mseTs:0,currentPts:0,pTs:0,dts:0,mseVideoBufferDelayTime:0,isDropping:!1},this._allStatsData={},this._faceDetectActive=!1,this._objectDetectActive=!1,this._occlusionDetectActive=!1,this._imageDetectActive=!1,this._times={playInitStart:"",playStart:"",streamStart:"",streamResponse:"",demuxStart:"",decodeStart:"",videoStart:"",playTimestamp:"",streamTimestamp:"",streamResponseTimestamp:"",demuxTimestamp:"",decodeTimestamp:"",videoTimestamp:"",allTimestamp:""},this._videoTimestamp=0,this._audioTimestamp=0,this._latestAudioTimestamp=0,this._videoIframeIntervalTs=0,this._streamQuality=this._opt.defaultStreamQuality||"",!this._streamQuality&&this._opt.qualityConfig.length>0&&(this._streamQuality=this._opt.qualityConfig[0]||""),this._visibility=!0,this._lastestVisibilityChangeTimestamp=null,this._tempWorkerStats=null,this._historyFpsList=[],this._historyVideoDiffList=[],this._tempStreamList=[],this._tempInnerPlayBgobj=null,this._flvMetaData=null,this._flvMetaDataFps=null,this._mseWorkerData={},ka(this._opt.useMSE)&&ka(this._opt.useWCS)&&!this.isWebrtcH264()&&!this.isOldHls()&&(this._opt.useWasm=!0),(this.isOldHls()||this.isWebrtcH264())&&(this._opt.hasVideo=!0,this._opt.hasAudio=!0),this._opt.hasVideo||(this._opt.useMSE=!1,this._opt.useWCS=!1),this._opt.useWasm&&(this._opt.useOffscreen?this._opt.wasmUseVideoRender=!1:this._opt.wasmUseVideoRender&&(this._opt.wasmUseVideoRender=Bs()&&Ws()&&Vs(),this._opt.wasmUseVideoRender||this.debug.warn(this.TAG_NAME,"use wasm video render, but not support so set wasmUseVideoRender false")),this._opt.useSIMD?this.debug.log(this.TAG_NAME,"use simd wasm"):this.debug.log(this.TAG_NAME,"use wasm")),this._opt.useWasm&&(this._opt.useFaceDetector&&window.EasyPlayerProFaceDetector||this._opt.useObjectDetector&&window.EasyPlayerProObjectDetector||this._opt.useOcclusionDetector&&window.EasyPlayerProOcclusionDetector||this._opt.useImageDetector&&window.EasyPlayerProImageDetector)?(this.ai=new dc(this),this._opt.useFaceDetector&&window.EasyPlayerProFaceDetector||(this._opt.operateBtns.aiFace=!1),this._opt.useObjectDetector&&window.EasyPlayerProObjectDetector||(this._opt.operateBtns.aiObject=!1),this._opt.useOcclusionDetector&&window.EasyPlayerProOcclusionDetector||(this._opt.operateBtns.aiOcclusion=!1),this._opt.useImageDetector&&this._opt.aiImageDetectActive&&window.EasyPlayerProImageDetector&&(this.imageDetectActive=!0)):(this._opt.operateBtns.aiObject=!1,this._opt.operateBtns.aiFace=!1,this._opt.operateBtns.aiOcclusion=!1),this._opt.useFaceDetector&&(this._opt.useWasm&&window.EasyPlayerProFaceDetector||this.debug.warn(this.TAG_NAME,`use face detector, useWasm is ${this._opt.useWasm} and window.EasyPlayerProFaceDetector is null`)),this._opt.useObjectDetector&&(this._opt.useWasm&&window.EasyPlayerProObjectDetector||this.debug.warn(this.TAG_NAME,`use object detector, useWasm is ${this._opt.useWasm} and window.EasyPlayerProObjectDetector is null`)),this._opt.useOcclusionDetector&&(this._opt.useWasm&&window.EasyPlayerProOcclusionDetector||this.debug.warn(this.TAG_NAME,`use occlusion detector, useWasm is ${this._opt.useWasm} and window.EasyPlayerProOcclusionDetector is null`)),this._opt.useImageDetector&&(this._opt.useWasm&&window.EasyPlayerProImageDetector||this.debug.warn(this.TAG_NAME,`use image detector, useWasm is ${this._opt.useWasm} and window.EasyPlayerProImageDetector is null`)),this._opt.useVideoRender&&(this._opt.useWasm&&!this._opt.useOffscreen?(this._opt.wasmUseVideoRender=Bs()&&Ws()&&Vs(),this._opt.wasmUseVideoRender||this.debug.warn(this.TAG_NAME,"use wasm video render, but not support so set wasmUseVideoRender false")):this._opt.useWCS&&!this._opt.useOffscreen&&(this._opt.wcsUseVideoRender=Ws()&&Vs(),this._opt.wcsUseVideoRender||this.debug.warn(this.TAG_NAME,"use wcs video render, but not support so set wcsUseVideoRender false"))),this._opt.useCanvasRender&&(this._opt.useMSE&&ka(this._opt.mseDecoderUseWorker)&&(this._opt.mseUseCanvasRender=!0),this._opt.useWasm&&(this._opt.wasmUseVideoRender=!1),this._opt.useWCS&&(this._opt.wcsUseVideoRender=!1),this.isOldHls()&&!Is()&&(this._opt.hlsUseCanvasRender=!0),this.isWebrtcH264()&&(this._opt.webrtcUseCanvasRender=!0)),this._opt.useVideoRender=!1,this._opt.useCanvasRender=!1,this._opt.useWasm?this._opt.wasmUseVideoRender?this._opt.useVideoRender=!0:this._opt.useCanvasRender=!0:this._opt.useWCS?this._opt.wcsUseVideoRender?this._opt.useVideoRender=!0:this._opt.useCanvasRender=!0:this._opt.useMSE?this._opt.mseUseCanvasRender?this._opt.useCanvasRender=!0:this._opt.useVideoRender=!0:this.isOldHls()?this._opt.hlsUseCanvasRender?this._opt.useCanvasRender=!0:this._opt.useVideoRender=!0:this.isWebrtcH264()&&(this._opt.webrtcUseCanvasRender?this._opt.useCanvasRender=!0:this._opt.useVideoRender=!0),r=this,Object.defineProperty(r,"rect",{get:()=>{let e={};return r.$container&&(e=r.$container.getBoundingClientRect(),e.width=Math.max(e.width,r.$container.clientWidth),e.height=Math.max(e.height,r.$container.clientHeight)),e}}),["bottom","height","left","right","top","width"].forEach((e=>{Object.defineProperty(r,e,{get:()=>r.rect[e]||0})})),this.events=new Ma(this),this._opt.hasVideo&&(this.video=new an(this),this.recorder=new po(this)),this.isWsRtc()?(this.wsRtcDecoder=new rc(this),this.loaded=!0):this.isOldHls()?(this.hlsDecoder=new Md(this),this.loaded=!0):this.isWebrtcH264()?(this._opt.isWebrtcForZLM?this.webrtc=new nc(this):this._opt.isWebrtcForSRS?this.webrtc=new cc(this):this._opt.isWebrtcForOthers?this.webrtc=new uc(this):this.webrtc=new ac(this),this.loaded=!0):this.isAliyunRtc()?(this.aliyunRtcDecoder=new pc(this),this.loaded=!0):(this.isUseHls265()&&(this.hlsDecoder=new ic(this)),this.isWebrtcH265()&&(this.webrtc=new ac(this)),ka(pa(this._opt))?this.decoderWorker=new vo(this):this.loaded=!0),this._opt.hasAudio&&(this.audio=new Sn(this)),this.stream=null,this.demux=null,this._lastVolume=null,this._isInZoom=!1,this._playingStartTimestamp=null,this.isMSEVideoDecoderInitializationFailedNotSupportHevc=!1,this._opt.useWCS&&(this.webcodecsDecoder=new hd(this),!this._opt.hasAudio&&ka(this._opt.demuxUseWorker)&&(this.loaded=!0)),this._opt.useMSE&&ka(this._opt.mseDecoderUseWorker)&&(this.mseDecoder=new Rd(this),!this._opt.hasAudio&&ka(this._opt.demuxUseWorker)&&(this.loaded=!0)),this.control=new Cd(this),this._opt.contextmenuBtns.length>0&&ka(this._opt.disableContextmenu)&&Cs()?this.contextmenu=new hc(this):Ta(this._opt.disableContextmenu)&&this._opt.contextmenuBtns.length>0&&Cs()&&this.debug.warn(this.TAG_NAME,"disableContextmenu is true, but contextmenuBtns is not empty, so Contextmenu can not be created,please check"),this.isPlayback()&&(this.playback=new oc(this,this._opt.playbackConfig)),this._opt.operateBtns.zoom&&(this.zoom=new lc(this)),/(iphone|ipad|ipod|ios|android)/i.test(window.navigator.userAgent.toLowerCase())&&ka(this._opt.supportLockScreenPlayAudio&&Ls())&&(this.keepScreenOn=new Ld(this)),(e=>{try{const t=t=>{la(t)===e.$container&&(e.emit(at.fullscreen,e.fullscreen),e.fullscreen?e._opt.useMSE&&e.resize():e.resize())};es.on("change",t),e.events.destroys.push((()=>{es.off("change",t)}))}catch(e){}if(e.on(st.decoderWorkerInit,(()=>{e.debug.log("player","listen decoderWorkerInit and set loaded true"),e.loaded=!0})),e.on(st.play,(()=>{e.loading=!1})),e.on(st.screenshot,(t=>{e.emit(st.screenshots,t)})),e.on(st.fullscreen,(t=>{if(t)try{es.request(e.$container).then((()=>{})).catch((t=>{e.debug.error("player","fullscreen request error",t),ks()&&e._opt.useWebFullScreen&&(e.webFullscreen=!0)}))}catch(t){ks()&&e._opt.useWebFullScreen&&(e.webFullscreen=!0)}else try{es.exit().then((()=>{e.webFullscreen&&(e.webFullscreen=!1)})).catch((t=>{e.debug.error("player","fullscreen exit error",t),e.webFullscreen&&(e.webFullscreen=!1)}))}catch(t){e.webFullscreen&&(e.webFullscreen=!1)}})),ks()&&e.on(st.webFullscreen,(t=>{t?e.$container.classList.add("easyplayer-fullscreen-web"):e.$container.classList.remove("easyplayer-fullscreen-web"),e.emit(at.fullscreen,e.fullscreen)})),e.on(st.resize,(()=>{e.video&&e.video.resize()})),e._opt.debug){const t=[st.timeUpdate,st.currentPts,st.videoSEI],i=[st.stats,st.playbackStats,st.playbackTimestamp,st.flvMetaData,st.playToRenderTimes,st.audioInfo,st.videoInfo];Object.keys(st).forEach((r=>{e.on(st[r],((s,...a)=>{t.includes(r)||(i.includes(r)&&(s=JSON.stringify(s)),e.debug.log("player events",st[r],s,...a))}))})),Object.keys(lt).forEach((t=>{e.on(lt[t],((...i)=>{e.debug.warn("player event error",lt[t],...i)}))}))}})(this),(e=>{const{_opt:t,debug:i,events:{proxy:r}}=e;if(t.supportDblclickFullscreen&&r(e.$container,"dblclick",(t=>{const i=la(t).nodeName.toLowerCase();"canvas"!==i&&"video"!==i||(e.fullscreen=!e.fullscreen)})),r(document,"visibilitychange",(()=>{e.visibility="visible"===document.visibilityState,i.log("visibilitychange",document.visibilityState),t.hiddenAutoPause&&(i.log("visibilitychange","hiddenAutoPause is true ",document.visibilityState,e._isPlayingBeforePageHidden),"visible"===document.visibilityState?e._isPlayingBeforePageHidden&&e.play():(e._isPlayingBeforePageHidden=e.playing,e.playing&&e.pause()))})),Cs()&&r(document,["click","contextmenu"],(t=>{Ed(t,e.$container)?(Ta(e._opt.disableContextmenu)&&"contextmenu"===t.type&&t.preventDefault(),e.isInput="INPUT"===t.target.tagName,e.isFocus=!0,e.emit(st.focus)):(e.isInput=!1,e.isFocus=!1,e.emit(st.blur))})),t.autoResize){const t=Fs((()=>{e.resize()}),500);r(window,["resize","orientationchange"],(()=>{t()})),screen&&screen.orientation&&screen.orientation.onchange&&r(screen.orientation,"change",(()=>{t()}))}})(this),this.singleWatermark=new $a(this),this._opt.ghostWatermarkConfig.content){const e=Object.assign({},this._opt.ghostWatermarkConfig,{isGhost:!0});this.ghostWatermark=new yc(this,e)}this._opt.dynamicWatermarkConfig.content&&(this.dynamicWatermark=new yc(this,this._opt.dynamicWatermarkConfig)),this._opt.watermarkConfig&&this.updateWatermark(this._opt.watermarkConfig),Ba()&&(this.pressureObserverCpu=new fc(this)),this._opt.useWCS&&this.debug.log(this.TAG_NAME,"use WCS"),this._opt.useMSE&&(this._opt.mseDecoderUseWorker?this.debug.log(this.TAG_NAME,"use worker MSE"):this.debug.log(this.TAG_NAME,"use MSE")),this._opt.useOffscreen&&this.debug.log(this.TAG_NAME,"use offscreen"),this._opt.isHls&&(this._opt.supportHls265?this.debug.log(this.TAG_NAME,"use hls 265"):this.debug.log(this.TAG_NAME,"use hls")),this._opt.isWebrtc&&(this._opt.isWebrtcH265?this.debug.log(this.TAG_NAME,"use webrtc h265"):this._opt.isWebrtcForZLM?this.debug.log(this.TAG_NAME,"use webrtc for ZLM"):this._opt.isWebrtcForSRS?this.debug.log(this.TAG_NAME,"use webrtc for SRS"):this._opt.isWebrtcForOthers?this.debug.log(this.TAG_NAME,"use webrtc for Others"):this.debug.log(this.TAG_NAME,"use webrtc for M7S")),this.isAliyunRtc()&&this.debug.log(this.TAG_NAME,"use aliyun rtc"),this._opt.isFmp4&&this.debug.log(this.TAG_NAME,"use fmp4"),this._opt.isMpeg4&&this.debug.log(this.TAG_NAME,"use mpeg4"),this.isPlayback()&&this.debug.log(this.TAG_NAME,"use playback"),this._opt.hasVideo&&(0===this.width&&this.debug.warn(this.TAG_NAME,"container width is 0, please check the container width"),0===this.height&&this.debug.warn(this.TAG_NAME,"container height is 0, please check the container height")),this.debug.log("Player options",JSON.stringify(this._opt))}async destroy(){this._destroyed=!0,this.emit("destroy"),this.off(),this.events&&(this.events.destroy(),this.events=null),this.clearCheckLoadingTimeout(),this.clearStatsInterval(),this.clearVisibilityHiddenTimeout(),this.decoderWorker&&(await this.decoderWorker.destroy(),this.decoderWorker=null),await this._destroy()}async _destroy(){this._loading=!1,this._playing=!1,this._playbackPause=!1,this._hasLoaded=!1,this._lastVolume=null,this._zooming=!1,this._faceDetectActive=!1,this._objectDetectActive=!1,this._occlusionDetectActive=!1,this._imageDetectActive=!1,this._times={playInitStart:"",playStart:"",streamStart:"",streamResponse:"",demuxStart:"",decodeStart:"",videoStart:"",playTimestamp:"",streamTimestamp:"",streamResponseTimestamp:"",demuxTimestamp:"",decodeTimestamp:"",videoTimestamp:"",allTimestamp:""},this.singleWatermark&&(this.singleWatermark.destroy(),this.singleWatermark=null),this.ghostWatermark&&(this.ghostWatermark.destroy(),this.ghostWatermark=null),this.dynamicWatermark&&(this.dynamicWatermark.destroy(),this.dynamicWatermark=null),this.pressureObserverCpu&&(this.pressureObserverCpu.destroy(),this.pressureObserverCpu=null),this.stream&&(this.stream.destroy(),this.stream=null),this.hlsDecoder&&(await this.hlsDecoder.destroy(),this.hlsDecoder=null),this.wsRtcDecoder&&(await this.wsRtcDecoder.destroy(),this.wsRtcDecoder=null),this.mseDecoder&&(this.mseDecoder.destroy(),this.mseDecoder=null),this.webrtc&&(this.webrtc.destroy(),this.webrtc=null),this.aliyunRtcDecoder&&(this.aliyunRtcDecoder.destroy(),this.aliyunRtcDecoder=null),this.video&&(this.video.destroy(),this.video=null),this.audio&&(this.audio.destroy(),this.audio=null),this.recorder&&(this.recorder.destroy(),this.recorder=null),this.control&&(this.control.destroy(),this.control=null),this.webcodecsDecoder&&(this.webcodecsDecoder.destroy(),this.webcodecsDecoder=null),this.demux&&(this.demux.destroy(),this.demux=null),this.playback&&(this.playback.destroy(),this.playback=null),this.zoom&&(this.zoom.destroy(),this.zoom=null),this.ai&&(this.ai.destroy(),this.ai=null),this.keepScreenOn&&(this.releaseWakeLock(),this.keepScreenOn.destroy(),this.keepScreenOn=null),this.resetStats(),this._audioTimestamp=0,this._latestAudioTimestamp=0,this._videoTimestamp=0,this._streamQuality="",this._visibility=!0,this._isInZoom=!1,this._playingStartTimestamp=null,this._lastestVisibilityChangeTimestamp=null,this._videoIframeIntervalTs=null,this._tempWorkerStats=null,this._tempStreamList=[],this._tempInnerPlayBgobj={},this._flvMetaData=null,this._flvMetaDataFps=null,this._mseWorkerData={},this.isMSEVideoDecoderInitializationFailedNotSupportHevc=!1,this.debug.log("play","destroy end"),this._opt=Ea(),this.$container=null}set fullscreen(e){ks()&&this._opt.useWebFullScreen?this.webFullscreen=e:this.emit(st.fullscreen,e)}get fullscreen(){return es.isFullscreen||this.webFullscreen}set webFullscreen(e){this.emit(st.webFullscreen,e),setTimeout((()=>{this.updateOption({rotate:e?270:0}),this.resize()}),10)}get webFullscreen(){return this.$container.classList.contains("easyplayer-fullscreen-web")}set loaded(e){this._hasLoaded=e}get loaded(){return this._hasLoaded||this.isOldHls()||this.isWebrtcH264()||this._opt.useMSE&&ka(this._opt.hasAudio)&&ka(this._opt.demuxUseWorker)||this._opt.useWCS&&!this._opt.hasAudio&&ka(this._opt.demuxUseWorker)}set playing(e){this.isClosed()&&e?this.debug.log(this.TAG_NAME,"player is closed, so can not play"):(e&&Ta(this.loading)&&(this.loading=!1),this.playing!==e&&(this._playing=e,this.emit(st.playing,e),this.emit(st.volumechange,this.volume),e?this.emit(st.play):this.emit(st.pause)))}get playing(){return this._playing}get volume(){return this.audio&&this.audio.volume||0}set volume(e){this.emit(st.mute,e>0),this.video&&this.video.$videoElement&&(this.video.$videoElement.muted=!(e>0),this.video.$videoElement.volume=e>1?1:e),e!==this.volume&&(this.audio?(this.audio.setVolume(e),this._lastVolume=this.volume,this.isMute=0===this.volume):this.debug.warn(this.TAG_NAME,"set volume error, audio is null"))}get lastVolume(){return this._lastVolume}set loading(e){this.loading!==e&&(this._loading=e,this.emit(st.loading,this._loading))}get loading(){return this._loading}set zooming(e){this.zooming!==e&&(this.zoom||(this.zoom=new lc(this)),this._zooming=e,this.emit(st.zooming,this.zooming))}get zooming(){return this._zooming}set recording(e){e?this.playing&&!this.recording&&(this.recorder&&this.recorder.startRecord(),this.isDemuxInWorker()&&this.decoderWorker&&this.decoderWorker.updateWorkConfig({key:"isRecording",value:!0})):this.recording&&(this.isDemuxInWorker()&&this.decoderWorker&&this.decoderWorker.updateWorkConfig({key:"isRecording",value:!1}),this.recorder&&this.recorder.stopRecordAndSave().then((()=>{})).catch((e=>{})))}get recording(){return!!this.recorder&&this.recorder.isRecording}set audioTimestamp(e){null!==e&&(this._audioTimestamp=e)}get audioTimestamp(){return this._audioTimestamp}set latestAudioTimestamp(e){null!==e&&(this._latestAudioTimestamp=e)}get latestAudioTimestamp(){return this._latestAudioTimestamp}get videoTimestamp(){return this._stats.currentPts||this._stats.ts}set streamQuality(e){this.streamQuality!==e&&(this._streamQuality=e,this.emit(st.streamQualityChange,e))}get streamQuality(){return this._streamQuality}get isDebug(){return Ta(this._opt.debug)}get scaleType(){const e=this._opt,t=e.isResize,i=e.isFullResize;let r=Bt;return ka(i)&&ka(t)?r=Bt:ka(i)&&Ta(t)?r=Mt:Ta(i)&&Ta(t)&&(r=Ut),r}set visibility(e){this._visibility!==e&&(this._visibility=e,this.emit(st.visibilityChange,e),this._lastestVisibilityChangeTimestamp=vs(),e?this.clearVisibilityHiddenTimeout():this.startVisibilityHiddenTimeout())}get visibility(){return this._visibility}set playbackPause(e){this._playbackPause!==e&&(this._playbackPause=e,this.emit(st.playbackPause,e),this.emit(st.playbackPauseOrResume,e))}get playbackPause(){return this.isPlayback()&&this._playbackPause}set videoIframeIntervalTs(e){this._videoIframeIntervalTs=e}get videoIframeIntervalTs(){return this._videoIframeIntervalTs}set faceDetectActive(e){this._faceDetectActive!==e&&(this._faceDetectActive=e,this.emit(st.faceDetectActive,e))}get faceDetectActive(){return this._faceDetectActive}set objectDetectActive(e){this._objectDetectActive!==e&&(this._objectDetectActive=e,this.emit(st.objectDetectActive,e))}get objectDetectActive(){return this._objectDetectActive}set occlusionDetectActive(e){this._occlusionDetectActive!==e&&(this._occlusionDetectActive=e,this.emit(st.occlusionDetectActive,e))}get occlusionDetectActive(){return this._occlusionDetectActive}set imageDetectActive(e){this._imageDetectActive!==e&&(this._imageDetectActive=e)}get imageDetectActive(){return this._imageDetectActive}get isUseWorkerDemuxAndDecode(){return this.stream&&this.stream.getStreamType()===y}isDestroyed(){return this._destroyed}isClosed(){return this._closed}isDestroyedOrClosed(){return this.isDestroyed()||this.isClosed()}isPlaying(){let e=!1;return this._opt.playType===A?e=this.playing:this._opt.playType===b&&(e=ka(this.playbackPause)&&this.playing),e}updateOption(e,t=!1){this._opt=Object.assign({},this._opt,e),Ta(t)&&this.decoderWorker&&Object.keys(e).forEach((t=>{this.decoderWorker.updateWorkConfig({key:t,value:e[t]})}))}init(){return new Promise(((e,t)=>{this.video||this._opt.hasVideo&&(this.video=new an(this)),this.audio||this._opt.hasAudio&&(this.audio=new Sn(this)),this.stream||(this.stream=new Pn(this)),this.isWsRtc()?(this.wsRtcDecoder||(this.wsRtcDecoder=new rc(this),this.loaded=!0),e()):this.isOldHls()?(this.hlsDecoder||(this.hlsDecoder=new Md(this),this.loaded=!0),e()):this.isWebrtcH264()?(this.webrtc||(this._opt.isWebrtcForZLM?this.webrtc=new nc(this):this._opt.isWebrtcForSRS?this.webrtc=new cc(this):this._opt.isWebrtcForOthers?this.webrtc=new uc(this):this.webrtc=new ac(this),this.loaded=!0),e()):this.isAliyunRtc()?(this.aliyunRtcDecoder||(this.aliyunRtcDecoder=new pc(this),this.loaded=!0),e()):(this.demux||this._opt.hasVideo&&!this.isUseWorkerDemuxAndDecode&&(this.demux=new id(this)),this._opt.useWCS&&(this.webcodecsDecoder||(this.webcodecsDecoder=new hd(this))),this._opt.useMSE&&ka(this._opt.mseDecoderUseWorker)&&(this.mseDecoder||(this.mseDecoder=new Rd(this))),this.isUseHls265()&&(this.hlsDecoder||(this.hlsDecoder=new ic(this))),this.isWebrtcH265()&&(this.webrtc||(this.webrtc=new ac(this))),this.decoderWorker?this.loaded?e():this.once(st.decoderWorkerInit,(()=>{this.isDestroyedOrClosed()?(this.debug.error(this.TAG_NAME,"init() failed and player is destroyed"),t("init() failed and player is destroyed")):(this.loaded=!0,e())})):pa(this._opt)?e():(this.decoderWorker=new vo(this),this.once(st.decoderWorkerInit,(()=>{this.isDestroyedOrClosed()?(this.debug.error(this.TAG_NAME,"init() failed and player is destroyed"),t("init() failed and player is destroyed")):(this.loaded=!0,e())}))))}))}play(e,t={}){return new Promise(((i,r)=>{if(!e&&!this._opt.url)return r("url is empty");this._closed=!1,this.loading=!0,this.playing=!1,this._times.playInitStart=vs(),e||(e=this._opt.url),this._opt.url=e,this.control&&this._opt.loadingBackground&&this.control.initLoadingBackground(),this.init().then((()=>{this.debug.log(this.TAG_NAME,"play() init and next fetch stream"),this._times.playStart=vs(),this._opt.isNotMute&&this.mute(!1),this.enableWakeLock(),this.checkLoadingTimeout(),this.stream?(this.stream.once(lt.fetchError,(e=>{this.emitError(lt.fetchError,e)})),this.stream.once(lt.websocketError,(e=>{this.emitError(lt.websocketError,e)})),this.stream.once(st.streamEnd,(e=>{this.emit(st.streamEnd,e)})),this.stream.once(lt.hlsError,(e=>{this.emitError(lt.hlsError,e)})),this.stream.once(lt.webrtcError,(e=>{this.emitError(lt.webrtcError,e)})),this.stream.once(st.streamSuccess,(()=>{i(),this._times.streamResponse=vs(),this.video&&this.video.play(),this.checkStatsInterval(),this.isPlayback()&&this.playback&&this.playback.startCheckStatsInterval()})),this.stream.fetchStream(e,t)):(this.debug.warn(this.TAG_NAME,`play() this.stream is null and is isDestroyedOrClosed is ${this.isDestroyedOrClosed()}`),r("this.stream is null"))})).catch((e=>{r(e)}))}))}playForControl(){return new Promise(((e,t)=>{this.debug.log(this.TAG_NAME,`playForControl() and pauseAndNextPlayUseLastFrameShow is ${this._opt.pauseAndNextPlayUseLastFrameShow}`),this._opt.pauseAndNextPlayUseLastFrameShow&&this._tempInnerPlayBgobj&&this._tempInnerPlayBgobj.loadingBackground&&this.updateOption({loadingBackground:this._tempInnerPlayBgobj.loadingBackground,loadingBackgroundWidth:this._tempInnerPlayBgobj.loadingBackgroundWidth,loadingBackgroundHeight:this._tempInnerPlayBgobj.loadingBackgroundHeight}),this.play().then((t=>{e(t)})).catch((e=>{t(e)}))}))}close(){return new Promise(((e,t)=>{this._close().then((()=>{this.video&&this.video.clearView(),e()})).catch((e=>{t(e)}))}))}resumeAudioAfterPause(){this.lastVolume&&(this.volume=this.lastVolume)}_close(){return new Promise(((e,t)=>{this._closed=!0,this.video&&(this.video.resetInit(),this.video.pause(!0)),this.loading=!1,this.recording=!1,this.zooming=!1,this.playing=!1,this.clearCheckLoadingTimeout(),this.clearStatsInterval(),this.isPlayback()&&this.playback&&this.playback.clearStatsInterval(),this.releaseWakeLock(),this.resetStats(),this._audioTimestamp=0,this._videoTimestamp=0,this._times={playInitStart:"",playStart:"",streamStart:"",streamResponse:"",demuxStart:"",decodeStart:"",videoStart:"",playTimestamp:"",streamTimestamp:"",streamResponseTimestamp:"",demuxTimestamp:"",decodeTimestamp:"",videoTimestamp:"",allTimestamp:""};const i=()=>{this.stream&&(this.stream.destroy(),this.stream=null),this.demux&&(this.demux.destroy(),this.demux=null),this.webcodecsDecoder&&(this.webcodecsDecoder.destroy(),this.webcodecsDecoder=null),this.mseDecoder&&(this.mseDecoder.destroy(),this.mseDecoder=null),this.hlsDecoder&&(this.hlsDecoder.destroy(),this.hlsDecoder=null),this.webrtc&&(this.webrtc.destroy(),this.webrtc=null),this.aliyunRtcDecoder&&(this.aliyunRtcDecoder.destroy(),this.aliyunRtcDecoder=null),this.audio&&(this.audio.destroy(),this.audio=null)};this.decoderWorker?this.decoderWorker.destroy().then((()=>{this.decoderWorker=null,i(),setTimeout((()=>{e()}),0)})).catch((e=>{this.debug&&this.debug.error(this.TAG_NAME,"close() decoderWorker.destroy() error",e),t()})):(i(),setTimeout((()=>{e()}),0))}))}pause(e=!1){return new Promise(((t,i)=>{e?this.close().then((()=>{t()})).catch((e=>{i(e)})):this._close().then((()=>{t()})).catch((e=>{i(e)}))}))}pauseForControl(){return new Promise(((e,t)=>{if(this.debug.log(this.TAG_NAME,"_pauseInner()"),this._opt.pauseAndNextPlayUseLastFrameShow&&this.video){const e=this.video.screenshot("","png",.92,"base64");if(e){const t=this.getVideoInfo();t?(this.debug.log(this.TAG_NAME,`pauseForControl() and loadingBackground width is ${t.width} and height is ${t.height}`),this._tempInnerPlayBgobj={loadingBackground:e,loadingBackgroundWidth:t.width,loadingBackgroundHeight:t.height}):this.debug.warn(this.TAG_NAME,"pauseForControl() and videoInfo is null")}else this.debug.warn(this.TAG_NAME,"pauseForControl() and loadingBackground is null")}this.pause().then((t=>{e(t)})).catch((e=>{t(e)}))}))}isAudioMute(){let e=!0;return this.audio&&(e=this.audio.isMute),e}isAudioNotMute(){return!this.isAudioMute()}mute(e){this.audio&&this.audio.mute(e)}resize(){this.video&&this.video.resize()}startRecord(e,t){this.recording||(this.recorder.setFileName(e,t),this.recording=!0)}stopRecordAndSave(e,t){return new Promise(((i,r)=>{this.recorder||r("recorder is null"),this.recording?(this._opt.useWasm&&this.decoderWorker&&this.decoderWorker.updateWorkConfig({key:"isRecording",value:!1}),this.recorder.stopRecordAndSave(e,t).then((e=>{i(e)})).catch((e=>{r(e)}))):r("recorder is not recording")}))}_hasControl(){let e=!1,t=!1;return Object.keys(this._opt.operateBtns).forEach((e=>{this._opt.operateBtns[e]&&-1===(""+e).indexOf("Fn")&&(t=!0)})),(this._opt.showBandwidth||t)&&(e=!0),this._opt.extendOperateBtns&&this._opt.extendOperateBtns.length>0&&(e=!0),this.isPlayback()&&this._opt.playbackConfig.showControl&&(e=!0),e}useWasmDecode(){return ka(this._opt.useMSE)&&ka(this._opt.useWCS)}canVideoTrackWritter(){const e=this._opt;return!this.isOldHls()&&!this.isWebrtcH264()&&ka(e.useMSE)&&!this.isAliyunRtc()&&(e.useWCS&&ka(e.useOffscreen)&&e.wcsUseVideoRender||this.useWasmDecode())}checkHeartTimeout$2(){if(ka(this.playbackPause)&&this.playing){if(this.isDestroyedOrClosed())return void(this.debug&&this.debug.warn(this.TAG_NAME,"checkHeartTimeout$2 but player is destroyed"));if(ka(this.isHistoryFpsListAllZero()))return void(this.debug&&this.debug.warn(this.TAG_NAME,"checkHeartTimeout$2 but fps is not all zero"));if(0!==this._stats.fps)return void(this.debug&&this.debug.warn(this.TAG_NAME,`checkHeartTimeout$2 but fps is ${this._stats.fps}`));if(ka(this.visibility)&&0!==this._stats.vbps)return void(this.debug&&this.debug.warn(this.TAG_NAME,`checkHeartTimeout$2 but page is not visibility and vbps is ${this._stats.vbps}`));const e=this._historyFpsList.join(",");this.debug.warn(this.TAG_NAME,`checkHeartTimeout$2 and\n pause and emit delayTimeout event and\n current vbps is ${this._stats.vbps} and\n current fps is ${this._stats.fps} and\n history FpsList is ${e} and\n current visibility is ${this.visibility} and`),this.emit(st.timeout,st.delayTimeout),this.emit(st.delayTimeout)}else this.debug.log(this.TAG_NAME,`checkHeartTimeout$2 playbackPause is ${this.playbackPause}, playing is ${this.playing}`)}checkStatsInterval(){this._checkStatsInterval=setInterval((()=>{this.updateStats()}),1e3)}checkLoadingTimeout(){this._checkLoadingTimeout=setTimeout((()=>{this.playing?this.debug.warn(this.TAG_NAME,`checkLoadingTimeout but loading is ${this.loading} and playing is ${this.playing}`):this.isDestroyedOrClosed()?this.debug&&this.debug.warn(this.TAG_NAME,"checkLoadingTimeout but player is destroyed"):(this.debug.warn(this.TAG_NAME,"checkLoadingTimeout and pause and emit loadingTimeout event"),this.emit(st.timeout,st.loadingTimeout),this.emit(st.loadingTimeout))}),1e3*this._opt.loadingTimeout)}clearCheckLoadingTimeout(){this._checkLoadingTimeout&&(this.debug.log(this.TAG_NAME,"clearCheckLoadingTimeout"),clearTimeout(this._checkLoadingTimeout),this._checkLoadingTimeout=null)}clearStatsInterval(){this._checkStatsInterval&&(clearInterval(this._checkStatsInterval),this._checkStatsInterval=null)}handleRender(){this.isDestroyedOrClosed()?this.debug&&this.debug.warn(this.TAG_NAME,"handleRender but player is destroyed"):(this.loading&&(this.clearCheckLoadingTimeout(),this.loading=!1,this.emit(st.start)),this.playing||(this.playing=!0))}updateStats(e={}){if(this._startBpsTime||(this._startBpsTime=vs()),Ks(e.ts)){const t=parseInt(e.ts,10);this._stats.ts=t,null===this._playingStartTimestamp&&t>0&&(this._playingStartTimestamp=t)}Ks(e.dts)&&(this._stats.dts=parseInt(e.dts,10)),Ks(e.mseTs)&&(this._stats.mseTs=e.mseTs),Ks(e.buf)&&(this._stats.buf=e.buf),Ks(e.netBuf)&&(this._stats.netBuf=e.netBuf),Ks(e.currentPts)&&(this._stats.currentPts=e.currentPts),e.fps&&(this._stats.fps+=1),e.dfps&&(this._stats.dfps+=1),e.abps&&(this._stats.abps+=e.abps),e.vbps&&(this._stats.vbps+=e.vbps),e.workerStats&&(this._tempWorkerStats=e.workerStats),e.isDropping&&(this._stats.isDropping=e.isDropping),e.mseVideoBufferDelayTime&&(this._stats.mseVideoBufferDelayTime=parseInt(1e3*e.mseVideoBufferDelayTime,10));const t=vs();if(t-this._startBpsTime<1e3)return;null!==this._playingStartTimestamp&&this._stats.fps>0&&(this._stats.pTs+=1);let i=0,r=0,s=0,a=0,n=0;this._opt.useMSE&&(this.mseDecoder?(i=this.mseDecoder.checkSourceBufferDelay(),i=parseInt(1e3*i,10),r=this.mseDecoder.checkSourceBufferStore(),r=r.toFixed(2),s=this.mseDecoder.getDecodeDiffTimes(),a=this.mseDecoder.getDecodePlaybackRate(),n=this.mseDecoder.getPendingSegmentsLength()):this.isMseDecoderUseWorker()&&(i=this.video.checkSourceBufferDelay(),i=parseInt(1e3*i,10),r=this.video.checkSourceBufferStore(),r=r.toFixed(2),a=this.video.getDecodePlaybackRate())),this._opt.useWCS&&this.webcodecsDecoder&&(s=this.webcodecsDecoder.getDecodeDiffTimes()),this.isOldHls()&&this.hlsDecoder&&(i=this.hlsDecoder.checkHlsBufferedDelay(),i=parseInt(1e3*i,10)),this.isWsRtc()&&this.wsRtcDecoder;let o=0,l=0,d=0;this.isUseHls265()&&this.hlsDecoder&&(i=this.hlsDecoder.checkHlsBufferedDelay(),i=i.toFixed(2),o=this.hlsDecoder.getDemuxBufferedListLength(),d=this.hlsDecoder.getDemuxVideoBufferedListLength(),l=this.hlsDecoder.getDemuxAudioBufferedListLength());let h=0,c=0,u=0,p=!1,f=0;this._opt.useWasm||this._opt.demuxUseWorker?this._tempWorkerStats&&(c=this._tempWorkerStats.demuxBufferDelay,u=this._tempWorkerStats.audioDemuxBufferDelay,h=this._tempWorkerStats.flvBufferByteLength,this._stats.netBuf=this._tempWorkerStats.netBuf,f=this._tempWorkerStats.pushLatestDelay,p=this._tempWorkerStats.isStreamTsMoreThanLocal,this._stats.buf=this._tempWorkerStats.latestDelay):this.demux&&(h=this.demux.getInputByteLength(),f=this.demux.getPushLatestDelay(),p=this.demux.getIsStreamTsMoreThanLocal(),this.demux.bufferList&&(c=this.demux.bufferList.length));let y=0,m=0;this.audio&&this.audio.bufferList&&(y=this.audio.bufferList.length,m=parseInt(y*this.audio.oneBufferDuration,10));let g=0,A=0;if(this.isPlayback()&&this.video){this._opt.playbackConfig.isUseFpsRender&&(g=this.video.bufferList&&this.video.bufferList.length||0);let e=this.video.getStreamFps();const t=e>0?1e3/e:0;A=parseInt(t*g+t*c,10)}let v=0;this.videoTimestamp>0&&(v=this._stats.dts-this.videoTimestamp);const b=v+this._stats.netBuf;this.isOldHls()&&(this._stats.fps=this.hlsDecoder.getFps()),this._stats.fps>this._stats.maxFps&&(this._stats.maxFps=this._stats.fps);let _=this.getVideoCurrentTime();const w=this._stats.videoCurrentTime;let E=-1;w&&_&&(E=(_-w).toFixed(2),_=_.toFixed(2));let S=0;this.audioTimestamp>0&&(S=this.audioTimestamp-this.getRenderCurrentPts()),this._allStatsData=Object.assign(this._stats,{audioBuffer:y,audioBufferDelayTs:m,audioTs:this.audioTimestamp,latestAudioTs:this.latestAudioTimestamp,playbackVideoBuffer:g,playbackVideoWaitingBuffer:0,playbackAudioWaitingBuffer:0,playbackCacheDataDuration:A,demuxBuffer:c,pushLatestDelay:f,audioDemuxBuffer:u,flvBuffer:h,mseDelay:i,mseStore:r,mseDecodeDiffTimes:s,mseDecodePlaybackRate:a,msePendingBuffer:n,wcsDecodeDiffTimes:s,hlsDelay:i,hlsDemuxLength:o,hlsDemuxAudioLength:l,hlsDemuxVideoLength:d,delayTs:v,totalDelayTs:b,isStreamTsMoreThanLocal:p,videoCurrentTime:_,videoCurrentTimeDiff:E,audioSyncVideo:S});let T=null,k=null,C="";if(this.isPlayer()&&this._opt.hasVideo&&this.playing){T=function(e,t){let i=3;const r=t||25;return e<.33*r?i=0:e<.5*r?i=1:e<.83*r&&(i=2),i}(this._stats.fps,this._flvMetaDataFps),this._allStatsData.performance=T;const e=this.checkVideoSmooth(this._allStatsData);C=e.reason,k=e.result,this._allStatsData.videoSmooth=k}this.emit(st.stats,this._allStatsData),this._allStatsData.flvBuffer>1048576&&this.emit(lt.flvDemuxBufferSizeTooLarge,this._allStatsData.flvBuffer),this._opt.hasVideo?(this.updateHistoryFpsList(this._stats.fps,this._stats.videoCurrentTimeDiff),Ks(T)&&this.emit(st.performance,T),Ks(k)&&this.emit(st.videoSmooth,k,C)):this._opt.hasAudio&&this.updateHistoryFpsList(this._stats.abps,0),this._stats.fps=0,this._stats.dfps=0,this._stats.abps=0,this._stats.vbps=0,this._stats.isDropping=!1,this._startBpsTime=t}resetStats(){this._startBpsTime=null,this._playingStartTimestamp=null,this._historyFpsList=[],this._historyVideoDiffList=[],this._stats={buf:0,netBuf:0,fps:0,maxFps:0,dfps:0,abps:0,vbps:0,ts:0,mseTs:0,currentPts:0,pTs:0,dts:0,mseVideoBufferDelayTime:0,isDropping:!1},this._allStatsData={}}checkVideoSmooth(e){let t=!0,i="";if(this._opt.videoBuffer,this._opt.videoBufferDelay,this.isWebrtcH264()||this.isOldHls())return{result:t,reason:i};if(0===e.vbps&&ka(this._opt.isHls)&&(i="vbpsIsZero",this.debug.log(this.TAG_NAME,`checkVideoSmooth false because ${i}`),t=!1),t&&e.isDropping&&(i="isDroppingIsTrue",this.debug.log(this.TAG_NAME,`checkVideoSmooth false because ${i}`),t=!1),t&&this.visibility&&this._historyFpsList.length>=this._opt.heartTimeout){const r=function(e){const t=Math.max(...e),i=Math.min(...e);return e.filter((e=>e!==t&&e!==i))}(this._historyFpsList),s=r.reduce(((e,t)=>e+t),0)/r.length,a=.83*s;e.fps=1.5||e.videoCurrentTimeDiff<=.5)&&-1!==e.videoCurrentTimeDiff&&(i="videoCurrentTimeDiffIsNotNormal",this.debug.log(this.TAG_NAME,`checkVideoSmooth false because videoCurrentTimeDiff is ${e.videoCurrentTimeDiff}`),t=!1),{result:t,reason:i}}enableWakeLock(){this._opt.keepScreenOn&&this.keepScreenOn&&this.keepScreenOn.enable()}releaseWakeLock(){this._opt.keepScreenOn&&this.keepScreenOn&&this.keepScreenOn.disable()}clearBufferDelay(){this._opt.useWasm?this.decoderWorker&&this.decoderWorker.clearWorkBuffer(!0):this.demux&&this.demux.clearBuffer(!0)}doDestroy(){this.emit(st.beforeDestroy)}startVoice(){this.wsRtcDecoder&&this.wsRtcDecoder.startVoice()}pauseVoice(){this.wsRtcDecoder&&this.wsRtcDecoder.pauseVoice()}removeVoice(){this.wsRtcDecoder&&this.wsRtcDecoder.removeVoice()}handlePlayToRenderTimes(){if(this.isDestroyedOrClosed())return void this.debug.log(this.TAG_NAME,"handlePlayToRenderTimes but player is closed or destroyed");const e=this.getPlayToRenderTimes();this.emit(st.playToRenderTimes,e)}getPlayToRenderTimes(){const e=this._times;return e.playTimestamp=e.playStart-e.playInitStart,e.streamTimestamp=e.streamStart-e.playStart,e.streamResponseTimestamp=e.streamResponse-e.streamStart>0?e.streamResponse-e.streamStart:0,e.demuxTimestamp=e.demuxStart-e.streamResponse>0?e.demuxStart-e.streamResponse:0,e.decodeTimestamp=e.decodeStart-e.demuxStart>0?e.decodeStart-e.demuxStart:0,e.videoTimestamp=e.videoStart-e.decodeStart,e.allTimestamp=e.videoStart-e.playInitStart,e}getOption(){return this._opt}getPlayType(){return this._opt.playType}isPlayer(){return this._opt.playType===A}isPlayback(){return this._opt.playType===b}isDemuxSetCodecInit(){let e=!0,t=this._opt;return t.useWCS&&!t.useOffscreen?e=!!this.webcodecsDecoder&&this.webcodecsDecoder.hasInit:t.useMSE&&(e=!!this.mseDecoder&&this.mseDecoder.hasInit),e}isDemuxDecodeFirstIIframeInit(){let e=!0,t=this._opt;return t.useWCS&&!t.useOffscreen?e=!!this.webcodecsDecoder&&this.webcodecsDecoder.isDecodeFirstIIframe:t.useMSE&&(e=!!this.mseDecoder&&this.mseDecoder.isDecodeFirstIIframe),e}isAudioPlaybackRateSpeed(){let e=!1;return this.audio&&(e=this.audio.isPlaybackRateSpeed()),e}getPlayingTimestamp(){return this._stats.pTs}getRecordingType(){let e=null;return this.recorder&&(e=this.recorder.getType()),e}getRecordingByteLength(){let e=0;return this.recording&&(e=this.recorder.getToTalByteLength()),e}getRecordingDuration(){let e=0;return this.recording&&(e=this.recorder.getTotalDuration()),e}getDecodeType(){let e="";const t=this.getOption();return this.isWebrtcH264()?V:this.isAliyunRtc()?j:this.isOldHls()?H:this.isWsRtc()?$:(t.useMSE&&(e+=F+" ",t.mseDecoderUseWorker&&(e+="worker")),t.useWCS&&(e+=O+" "),t.useWasm&&(e+=G+" ",t.useSIMD&&(e+=z+" "),t.useMThreading&&(e+=W+" ")),t.useOffscreen&&(e+=N+" "),e)}getDemuxType(){let e="";return e=this.getOption().demuxType,e}getRenderType(){let e="";return this.video&&(e=this.video.getType()),e}getCanvasRenderType(){let e="";return this.video&&(e=this.video.getCanvasType()),e}getAudioEngineType(){let e="";return this.audio&&(e=this.audio.getEngineType()),e}getStreamType(){let e="";return this.stream&&(e=this.stream.getStreamType()),e}getAllStatsData(){return this._allStatsData}togglePerformancePanel(e){this.updateOption({showPerformance:e}),this.emit(st.togglePerformancePanel,e)}setScaleMode(e){let t={isFullResize:!1,isResize:!1,aspectRatio:"default"};switch(e=Number(e)){case Bt:t.isFullResize=!1,t.isResize=!1;break;case Mt:t.isFullResize=!1,t.isResize=!0;break;case Ut:t.isFullResize=!0,t.isResize=!0}this.updateOption(t),this.resize(),this.emit(st.viewResizeChange,e)}startVisibilityHiddenTimeout(){this.clearVisibilityHiddenTimeout(),this._opt.pageVisibilityHiddenTimeout>0&&(this.visibilityHiddenTimeout=setTimeout((()=>{this.emit(st.visibilityHiddenTimeout)}),1e3*this._opt.pageVisibilityHiddenTimeout))}clearVisibilityHiddenTimeout(){this._checkVisibleHiddenTimeout&&(clearTimeout(this._checkVisibleHiddenTimeout),this._checkVisibleHiddenTimeout=null)}faceDetect(e){this.faceDetectActive=e}objectDetect(e){this.objectDetectActive=e}occlusionDetect(e){this.occlusionDetectActive=e}downloadNakedFlowFile(){this.demux&&this.demux.downloadNakedFlowFile&&this.demux.downloadNakedFlowFile()}downloadFmp4File(){this.demux&&this.demux.downloadFmp4File&&this.demux.downloadFmp4File()}downloadMpeg4File(){const e=new Blob([this._tempStreamList]);try{const t=document.createElement("a");t.href=window.URL.createObjectURL(e),t.download=Date.now()+".mpeg4",t.click(),window.URL.revokeObjectURL(t.href)}catch(e){console.error("downloadMpeg4File",e)}}hasCacheOnGopBuffer(){const e=this.videoIframeIntervalTs,t=this._allStatsData.demuxBuffer,i=this._allStatsData.maxFps;let r=!1;if(e&&t&&i){r=1e3/i*t>e}return r}addContentToCanvas(e=[]){this.video&&this.video.addContentToCanvas(e)}sendWebsocketMessage(e){const t=this.getStreamType();t===u||t===y+" "+u?this.stream.sendMessage(e):this.debug.warn(this.TAG_NAME,`sendWebsocketMessage: stream type is not websocket, current stream type is ${this.getStreamType()}`)}checkIsInRender(){const e=this._stats;return e.vbps>0&&e.fps>0}setControlHtml(e){this.control&&this.control.$controlHtml&&(this.control.$controlHtml.innerHTML=e)}clearControlHtml(){this.control&&this.control.$controlHtml&&(this.control.$controlHtml.innerHTML="")}updateWatermark(e){this.singleWatermark&&this.singleWatermark.update(e)}removeWatermark(){this.singleWatermark&&this.singleWatermark.remove()}getVideoInfo(){let e=null;return this.video&&(e=this.video.getVideoInfo()),e}getAudioInfo(){let e=null;return this.audio&&(e=this.audio.getAudioInfo()),e}getVideoPlaybackQuality(){let e=null;return this.video&&(e=this.video.getPlaybackQuality()),e}emitError(e,t=""){this.emit(st.error,e,t),this.emit(e,t)}updateHistoryFpsList(e,t){this.playbackPause||(this._historyFpsList.length>this._opt.heartTimeout&&(this._historyFpsList.shift(),this._historyVideoDiffList.shift()),this._historyFpsList.push(e),this._historyVideoDiffList.push(t),this.isHistoryFpsListAllZero()&&this.checkHeartTimeout$2())}isHistoryFpsListAllZero(){let e=!0;if(this._historyFpsList.length0){e=!1;break}if(e)for(let t=0;t0){e=!1;break}return e}isUseHls265(){return Ta(this._opt.isHls)&&Ta(this._opt.supportHls265)}isHls(){return Ta(this._opt.isHls)}isOldHls(){return Ta(this._opt.isHls)&&ka(this._opt.supportHls265)}isWsRtc(){return Ta(this._opt.isWsRtc)}isWebrtcNotH265(){return Ta(this._opt.isWebrtc)&&ka(this._opt.isWebrtcH265)}isWebrtcH264(){return Ta(this._opt.isWebrtc)&&ka(this._opt.isWebrtcH265)}isWebrtcH265(){return Ta(this._opt.isWebrtc)&&Ta(this._opt.isWebrtcH265)}isAliyunRtc(){return Ta(this._opt.isAliyunRtc)}isUseHls265UseMse(){return this.isUseHls265()&&this.isUseMSE()}isStreamWebTransport(){return this.getStreamType()===f}isPlaybackCacheBeforeDecodeForFpsRender(){return this.isPlayback()&&Ta(this._opt.playbackConfig.isCacheBeforeDecodeForFpsRender)&&Ta(this._opt.useWCS)}isPlaybackUseWCS(){return this.isPlayback()&&Ta(this._opt.useWCS)}isPlaybackUseMSE(){return this.isPlayback()&&Ta(this._opt.useMSE)}isPlayUseMSE(){return this.isPlayer()&&Ta(this._opt.useMSE)}isInWebFullscreen(){return this._opt.useWebFullScreen&&ks()&&this.fullscreen}getPlaybackRate(){let e=1;return Ta(this.isPlayback())&&this.playback&&(e=this.playback.rate),e}isPlaybackOnlyDecodeIFrame(){return Ta(this.isPlayback())&&this.getPlaybackRate()>=this._opt.playbackForwardMaxRateDecodeIFrame}pushTempStream(e){const t=new Uint8Array(e);this._tempStreamList.push(t)}updateLoadingText(e){this.loading&&this.control&&this.control.updateLoadingText(e)}getVideoCurrentTime(){let e=0;return this.video&&(this._opt.useMSE?this.mseDecoder?e=this.mseDecoder.getVideoCurrentTime():this.isMseDecoderUseWorker()&&(e=this.video.getVideoCurrentTime()):this.isWebrtcH264()&&this.webrtc?e=this.webrtc.getVideoCurrentTime():this.isAliyunRtc()&&this.aliyunRtcDecoder&&(e=this.aliyunRtcDecoder.getVideoCurrentTime())),e}addMemoryLog(e,...t){this.emit(st.memoryLog,` [${e}] `,...t)}downloadMemoryLog(){this.emit(st.downloadMemoryLog)}isInMulti(){return-1!==this._opt.multiIndex}isWebrtcForM7S(){return ka(this._opt.isWebrtcForZLM)&&ka(this._opt.isWebrtcForSRS)&&ka(this._opt.isWebrtcForOthers)}updateMetaData(e){if(this.debug.log(this.TAG_NAME,"updateMetaData",JSON.stringify(e)),this._flvMetaData=e,this._flvMetaData){const e=this._flvMetaData;if(Ns(e.framerate)){const t=Math.floor(1e3*e.framerate);if(t>0){const e=t/1e3;this._flvMetaDataFps=e}}js(e.hasAudio)&&ka(e.hasAudio)&&(this.debug.log("updateMetaData","hasAudio",e.hasAudio,"and update _opt.hasAudio"),this._opt.hasAudio=e.hasAudio),js(e.hasVideo)&&ka(e.hasVideo)&&(this.debug.log("updateMetaData","hasVideo",e.hasVideo,"and update _opt.hasVideo"),this._opt.hasVideo=e.hasVideo)}this.emit(st.flvMetaData,e)}getMetaData(){return this._flvMetaData}getExtendBtnList(){return this.control.getExtendBtnList().map((e=>({name:e.name,$container:e.$iconContainer,$btn:e.$iconWrap,$activeBtn:e.$activeIconWrap})))}getCpuLevel(){let e=null;return this.pressureObserverCpu&&(e=this.pressureObserverCpu.getCurrentCpuState()),e}isRecordTypeFlv(){return this.recorder&&this._opt.recordType===E}isRecordTypeMp4(){return this.recorder&&this._opt.recordType===_}isRecordTypeWebm(){return this.recorder&&this._opt.recordType===w}isDemuxInWorker(){return this._opt.useWasm||this._opt.demuxUseWorker}isUseMSE(){return Ta(this._opt.useMSE)}isUseWCS(){return Ta(this._opt.useWCS)}isUseWASM(){return Ta(this._opt.useWasm)}isMseDecoderUseWorker(){return this.isUseMSE()&&Ta(this._opt.mseDecoderUseWorker)}getAudioSyncVideoDiff(){return this.audioTimestamp-this.getRenderCurrentPts()}getMseVideoBufferDelayTime(){let e=0;return this._opt.useMSE&&this.mseDecoder&&(this.mseDecoder?e=this.mseDecoder.getVideoBufferDelayTime():this.isMseDecoderUseWorker()&&(e=this.video.getVideoBufferDelayTime()),e=parseInt(1e3*e,10)),e}updateCurrentPts(e){this.updateStats({currentPts:e}),this.emit(st.currentPts,e)}getRenderCurrentPts(){let e=0;return e=this._stats.currentPts?this._stats.currentPts:this.videoTimestamp-this.getMseVideoBufferDelayTime(),e}openSyncAudioAndVideo(){return this._opt.syncAudioAndVideo&&this._opt.hasVideo}showTipsMessageByCode(e){if(this.control){const t=this._opt.showMessageConfig[e]||"未知异常";this.control.showTipsMessage(t,e)}}showTipsMessageByContent(e){this.control&&e&&this.control.showTipsMessage(e)}hideTipsMessage(){this.control&&this.control.hideTipsMessage()}decoderCheckFirstIFrame(){Ta(this._opt.checkFirstIFrame)&&(this.mseDecoder?this.mseDecoder.isDecodeFirstIIframe=!1:this.webcodecsDecoder&&(this.webcodecsDecoder.isDecodeFirstIIframe=!1))}isHlsCanVideoPlay(){return this._canPlayAppleMpegurl&&this.isOldHls()}}class gc{constructor(e){const{fromSampleRate:t,toSampleRate:i,channels:r,inputBufferSize:s}=e;if(!t||!i||!r)throw new Error("Invalid settings specified for the resampler.");this.resampler=null,this.fromSampleRate=t,this.toSampleRate=i,this.channels=r||0,this.inputBufferSize=s,this.initialize()}initialize(){this.fromSampleRate==this.toSampleRate?(this.resampler=e=>e,this.ratioWeight=1):(this.fromSampleRate{let t,i,r,s,a,n,o,l,d,h=e.length,c=this.channels;if(h%c!=0)throw new Error("Buffer was of incorrect sample length.");if(h<=0)return[];for(t=this.outputBufferSize,i=this.ratioWeight,r=this.lastWeight,s=0,a=0,n=0,o=0,l=this.outputBuffer;r<1;r+=i)for(a=r%1,s=1-a,this.lastWeight=r%1,d=0;d0?d:0)]*s+e[n+(c+d)]*a;r+=i,n=Math.floor(r)*c}for(d=0;d{let t,i,r,s,a,n,o,l,d,h,c,u=e.length,p=this.channels;if(u%p!=0)throw new Error("Buffer was of incorrect sample length.");if(u<=0)return[];for(t=this.outputBufferSize,i=[],r=this.ratioWeight,s=0,n=0,o=0,l=!this.tailExists,this.tailExists=!1,d=this.outputBuffer,h=0,c=0,a=0;a0&&n=o)){for(a=0;a0?a:0)]*s;c+=s,s=0;break}for(a=0;a{t[i]=function(e){let t,i,r;return e>=0?t=213:(t=85,(e=-e-1)<0&&(e=32767)),i=wc(e,_c,8),i>=8?127^t:(r=i<>4&Ac:e>>i+3&Ac,r^t)}(e)})),t}function Sc(e){const t=[];return Array.prototype.slice.call(e).forEach(((e,i)=>{t[i]=function(e){let t=0;e<0?(e=bc-e,t=127):(e+=bc,t=255);let i=wc(e,_c,8);return i>=8?127^t:(i<<4|e>>i+3&15)^t}(e)})),t}class Tc extends t{constructor(e,t={}){super(),this._opt={},e&&(this.player=e),this.tag="talk";const i=_a(Zi);this._opt=Object.assign({},i,t),this._opt.sampleRate=parseInt(this._opt.sampleRate,10),this._opt.sampleBitsWidth=parseInt(this._opt.sampleBitsWidth,10),this.audioContext=null,this.gainNode=null,this.recorder=null,this.workletRecorder=null,this.biquadFilter=null,this.userMediaStream=null,this.clearWorkletUrlTimeout=null,this.bufferSize=512,this._opt.audioBufferLength=this.calcAudioBufferLength(),this.audioBufferList=[],this.socket=null,this.socketStatus=dt,this.mediaStreamSource=null,this.heartInterval=null,this.checkGetUserMediaTimeout=null,this.wsUrl=null,this.startTimestamp=0,this.sequenceId=0,this.tempTimestamp=null,this.tempG711BufferList=[],this.tempRtpBufferList=[],this.events=new Ma(this),this._initTalk(),this.player||(this.debug=new Xr(this)),this._opt.encType!==gi&&this._opt.encType!==Ai||8e3===this._opt.sampleRate&&16===this._opt.sampleBitsWidth||this.warn(this.tag,`\n encType is ${this._opt.encType} and sampleBitsWidth is ${this._opt.sampleBitsWidth}, set sampleBitsWidth to ${this._opt.sampleBitsWidth}。\n ${this._opt.encType} only support sampleRate 8000 and sampleBitsWidth 16`),this.log(this.tag,"init",JSON.stringify(this._opt))}destroy(){this.clearWorkletUrlTimeout&&(clearTimeout(this.clearWorkletUrlTimeout),this.clearWorkletUrlTimeout=null),this.userMediaStream&&(this.userMediaStream.getTracks&&this.userMediaStream.getTracks().forEach((e=>{e.stop()})),this.userMediaStream=null),this.mediaStreamSource&&(this.mediaStreamSource.disconnect(),this.mediaStreamSource=null),this.recorder&&(this.recorder.disconnect(),this.recorder.onaudioprocess=null,this.recorder=null),this.biquadFilter&&(this.biquadFilter.disconnect(),this.biquadFilter=null),this.gainNode&&(this.gainNode.disconnect(),this.gainNode=null),this.workletRecorder&&(this.workletRecorder.disconnect(),this.workletRecorder=null),this.socket&&(this.socketStatus===ht&&this._sendClose(),this.socket.close(),this.socket=null),this._stopHeartInterval(),this._stopCheckGetUserMediaTimeout(),this.audioContext=null,this.gainNode=null,this.recorder=null,this.audioBufferList=[],this.sequenceId=0,this.wsUrl=null,this.tempTimestamp=null,this.tempRtpBufferList=[],this.tempG711BufferList=[],this.startTimestamp=0,this.log("talk","destroy")}addRtpToBuffer(e){const t=e.length+this.tempRtpBufferList.length,i=new Uint8Array(t);i.set(this.tempRtpBufferList,0),i.set(e,this.tempRtpBufferList.length),this.tempRtpBufferList=i}addG711ToBuffer(e){const t=e.length+this.tempG711BufferList.length,i=new Uint8Array(t);i.set(this.tempG711BufferList,0),i.set(e,this.tempG711BufferList.length),this.tempG711BufferList=i}downloadRtpFile(){const e=new Blob([this.tempRtpBufferList]);try{const t=document.createElement("a");t.href=window.URL.createObjectURL(e),t.download=Date.now()+".rtp",t.click(),window.URL.revokeObjectURL(t.href)}catch(e){console.error("downloadRtpFile",e)}}downloadG711File(){const e=new Blob([this.tempG711BufferList]);try{const t=document.createElement("a");t.href=window.URL.createObjectURL(e),t.download=Date.now()+"."+this._opt.encType,t.click(),window.URL.revokeObjectURL(t.href)}catch(e){console.error("downloadRtpFile",e)}}calcAudioBufferLength(){const{sampleRate:e,sampleBitsWidth:t}=this._opt;return 8*e*.02/8}get socketStatusOpen(){return this.socketStatus===ht}log(...e){this._log("log",...e)}warn(...e){this._log("warn",...e)}error(...e){this._log("error",...e)}_log(e,...t){this.player?this.player.debug[e](...t):this.debug?this.debug[e](...t):console[e](...t)}_getSequenceId(){return++this.sequenceId}_createWebSocket(){return new Promise(((e,t)=>{const i=this.events.proxy;this.socket=new WebSocket(this.wsUrl),this.socket.binaryType="arraybuffer",this.emit(st.talkStreamStart),i(this.socket,Ki,(()=>{this.socketStatus=ht,this.log(this.tag,"websocket open -> do talk"),this.emit(st.talkStreamOpen),e(),this._doTalk()})),i(this.socket,Qi,(e=>{this.log(this.tag,"websocket message",e.data),this.emit(st.talkStreamMessage,e)})),i(this.socket,qi,(e=>{this.socketStatus=ct,this.warn(this.tag,"websocket close -> reject",e),this.emit(st.talkStreamClose),t(e)})),i(this.socket,Yi,(e=>{this.socketStatus=ut,this.error(this.tag,"websocket error -> reject",e),this.emit(st.talkStreamError,e),t(e)}))}))}_sendClose(){}_initTalk(){this._initMethods(),this._opt.engine===Xi?this._initWorklet():this._opt.engine===Ji&&this._initScriptProcessor(),this.log(this.tag,"audioContext samplerate",this.audioContext.sampleRate)}_initMethods(){this.audioContext=new(window.AudioContext||window.webkitAudioContext)({sampleRate:48e3}),this.gainNode=this.audioContext.createGain(),this.gainNode.gain.value=1,this.biquadFilter=this.audioContext.createBiquadFilter(),this.biquadFilter.type="lowpass",this.biquadFilter.frequency.value=3e3,this.resampler=new gc({fromSampleRate:this.audioContext.sampleRate,toSampleRate:this._opt.sampleRate,channels:this._opt.numberChannels,inputBufferSize:this.bufferSize})}_initScriptProcessor(){const e=this.audioContext.createScriptProcessor||this.audioContext.createJavaScriptNode;this.recorder=e.apply(this.audioContext,[this.bufferSize,this._opt.numberChannels,this._opt.numberChannels]),this.recorder.onaudioprocess=e=>this._onaudioprocess(e)}_initWorklet(){const e=fa((function(){class e extends AudioWorkletProcessor{constructor(e){super(),this._cursor=0,this._bufferSize=e.processorOptions.bufferSize,this._buffer=new Float32Array(this._bufferSize)}process(e,t,i){if(!e.length||!e[0].length)return!0;for(let t=0;t>> workletUrl >>>",e),this.audioContext.audioWorklet&&this.audioContext.audioWorklet.addModule(e).then((()=>{const e=new AudioWorkletNode(this.audioContext,"talk-processor",{processorOptions:{bufferSize:this.bufferSize}});e.connect(this.gainNode),e.port.onmessage=e=>{"data"===e.data.eventType&&this._encodeAudioData(e.data.buffer)},this.workletRecorder=e})),this.clearWorkletUrlTimeout=setTimeout((()=>{URL.revokeObjectURL(e),this.clearWorkletUrlTimeout=null}),re)}_onaudioprocess(e){const t=e.inputBuffer.getChannelData(0);this._encodeAudioData(new Float32Array(t))}_encodeAudioData(e){if(0===e[0]&&0===e[1])return void this.log(this.tag,"empty audio data");const t=this.resampler.resample(e);let i=t;if(16===this._opt.sampleBitsWidth?i=function(e){let t=e.length,i=new Int16Array(t);for(;t--;){let r=Math.max(-1,Math.min(1,e[t]));i[t]=r<0?32768*r:32767*r}return i}(t):8===this._opt.sampleBitsWidth&&(i=function(e){let t=e.length,i=new Int8Array(t);for(;t--;){let r=Math.max(-1,Math.min(1,e[t]));const s=r<0?32768*r:32767*r;i[t]=parseInt(255/(65535/(32768+s)),10)}return i}(t)),null!==i.buffer){let e=null;this._opt.encType===gi?e=Ec(i):this._opt.encType===Ai?e=Sc(i):this._opt.encType===vi&&(e=i);const t=new Uint8Array(e);for(let e=0;e>8,t[o++]=255&e}t[o++]=128,t[o++]=128+i,t[o++]=r/256,t[o++]=r%256,t[o++]=s/65536/256,t[o++]=s/65536%256,t[o++]=s%65536/256,t[o++]=s%65536%256,t[o++]=a/65536/256,t[o++]=a/65536%256,t[o++]=a%65536/256,t[o++]=a%65536%256;let l=t.concat([...e]),d=new Uint8Array(l.length);for(let e=0;e{this.log(this.tag,"getUserMedia success"),this.userMediaStream=e,this.mediaStreamSource=this.audioContext.createMediaStreamSource(e),this.mediaStreamSource.connect(this.biquadFilter),this.recorder?(this.biquadFilter.connect(this.recorder),this.recorder.connect(this.gainNode)):this.workletRecorder&&(this.biquadFilter.connect(this.workletRecorder),this.workletRecorder.connect(this.gainNode)),this.gainNode.connect(this.audioContext.destination),this.emit(st.talkGetUserMediaSuccess),null===e.oninactive&&(e.oninactive=e=>{this._handleStreamInactive(e)})})).catch((e=>{this.error(this.tag,"getUserMedia error",e.toString()),this.emit(st.talkGetUserMediaFail,e.toString())})).finally((()=>{this.log(this.tag,"getUserMedia finally"),this._stopCheckGetUserMediaTimeout()}))}_getUserMedia2(){this.log(this.tag,"getUserMedia"),navigator.mediaDevices?navigator.mediaDevices.getUserMedia({audio:!0}).then((e=>{this.log(this.tag,"getUserMedia2 success")})):navigator.getUserMedia({audio:!0},this.log(this.tag,"getUserMedia2 success"),this.log(this.tag,"getUserMedia2 fail"))}async _getUserMedia3(){this.log(this.tag,"getUserMedia3");try{const e=await navigator.mediaDevices.getUserMedia({audio:{latency:!0,noiseSuppression:!0,autoGainControl:!0,echoCancellation:!0,sampleRate:48e3,channelCount:1},video:!1});console.log("getUserMedia() got stream:",e),this.log(this.tag,"getUserMedia3 success")}catch(e){this.log(this.tag,"getUserMedia3 fail")}}_handleStreamInactive(e){this.userMediaStream&&(this.warn(this.tag,"stream oninactive",e),this.emit(st.talkStreamInactive))}_startCheckGetUserMediaTimeout(){this._stopCheckGetUserMediaTimeout(),this.checkGetUserMediaTimeout=setTimeout((()=>{this.log(this.tag,"check getUserMedia timeout"),this.emit(st.talkGetUserMediaTimeout)}),this._opt.getUserMediaTimeout)}_stopCheckGetUserMediaTimeout(){this.checkGetUserMediaTimeout&&(this.log(this.tag,"stop checkGetUserMediaTimeout"),clearTimeout(this.checkGetUserMediaTimeout),this.checkGetUserMediaTimeout=null)}_startHeartInterval(){this.heartInterval=setInterval((()=>{this.log(this.tag,"heart interval");let e=[35,36,0,0,0,0,0,0];e=new Uint8Array(e),this.socket.send(e.buffer)}),15e3)}_stopHeartInterval(){this.heartInterval&&(this.log(this.tag,"stop heart interval"),clearInterval(this.heartInterval),this.heartInterval=null)}startTalk(e){return new Promise(((t,i)=>{if(!function(){let e=!1;const t=window.navigator;return t&&(e=!(!t.mediaDevices||!t.mediaDevices.getUserMedia),e||(e=!!(t.getUserMedia||t.webkitGetUserMedia||t.mozGetUserMedia||t.msGetUserMedia))),e}())return i("not support getUserMedia");if(this.wsUrl=e,this._opt.testMicrophone)this._doTalk();else{if(!this.wsUrl)return i("wsUrl is null");this._createWebSocket().catch((e=>{i(e)}))}this.once(st.talkGetUserMediaFail,(()=>{i("getUserMedia fail")})),this.once(st.talkGetUserMediaSuccess,(()=>{t()}))}))}setVolume(e){e=parseFloat(e).toFixed(2),isNaN(e)||(e=bs(e,0,1),this.gainNode.gain.value=e)}getOption(){return this._opt}get volume(){return this.gainNode?parseFloat(100*this.gainNode.gain.value).toFixed(0):null}}class kc{constructor(e){this.player=e,this.globalSetting=null;const t=Us();this.defaultSettings={watermark_id:`EasyPlayerPro_${t}`,watermark_prefix:`EasyPlayerPro_mask_${t}`,watermark_txt:"EasyPlayerPro 测试水印",watermark_x:0,watermark_y:0,watermark_rows:0,watermark_cols:0,watermark_x_space:0,watermark_y_space:0,watermark_font:"微软雅黑",watermark_color:"black",watermark_fontsize:"18px",watermark_alpha:.15,watermark_width:150,watermark_height:100,watermark_angle:15,watermark_parent_width:0,watermark_parent_height:0,watermark_parent_node:null},this.player.debug.log("Watermark","int")}destroy(){this._removeMark(),this.globalSetting=null,this.defaultSettings={watermark_id:"",watermark_prefix:"",watermark_txt:"EasyPlayerPro 测试水印",watermark_x:0,watermark_y:0,watermark_rows:0,watermark_cols:0,watermark_x_space:0,watermark_y_space:0,watermark_font:"微软雅黑",watermark_color:"black",watermark_fontsize:"18px",watermark_alpha:.15,watermark_width:150,watermark_height:100,watermark_angle:-15,watermark_parent_width:0,watermark_parent_height:0,watermark_parent_node:null},this.player.debug.log("Watermark","destroy")}remove(){this._removeMark()}load(e){this.globalSetting=e,this._loadMark(e)}resize(){this.player.debug.log("Watermark","resize()"),this.globalSetting&&this._loadMark(this.globalSetting)}_loadMark(){let e=this.defaultSettings;if(1===arguments.length&&"object"==typeof arguments[0]){var t=arguments[0]||{};for(let i in t)t[i]&&e[i]&&t[i]===e[i]||(t[i]||0===t[i])&&(e[i]=t[i])}var i=document.getElementById(e.watermark_id);i&&i.parentNode&&i.parentNode.removeChild(i);var r="string"==typeof e.watermark_parent_node?document.getElementById(e.watermark_parent_node):e.watermark_parent_node,s=r||document.body;const a=s.getBoundingClientRect();var n=Math.max(s.scrollWidth,s.clientWidth,a.width),o=Math.max(s.scrollHeight,s.clientHeight,a.height),l=arguments[0]||{},d=s;(l.watermark_parent_width||l.watermark_parent_height)&&d&&(e.watermark_x=e.watermark_x+0,e.watermark_y=e.watermark_y+0);var h=document.getElementById(e.watermark_id),c=null;if(h)h.shadowRoot&&(c=h.shadowRoot);else{(h=document.createElement("div")).id=e.watermark_id,h.setAttribute("style","pointer-events: none !important; display: block !important"),c="function"==typeof h.attachShadow?h.attachShadow({mode:"open"}):h;var u=s.children,p=Math.floor(Math.random()*(u.length-1))+1;u[p]?s.insertBefore(h,u[p]):s.appendChild(h)}e.watermark_cols=parseInt((n-e.watermark_x)/(e.watermark_width+e.watermark_x_space));var f,y=parseInt((n-e.watermark_x-e.watermark_width*e.watermark_cols)/e.watermark_cols);e.watermark_x_space=y?e.watermark_x_space:y,e.watermark_rows=parseInt((o-e.watermark_y)/(e.watermark_height+e.watermark_y_space));var m,g,A,v=parseInt((o-e.watermark_y-e.watermark_height*e.watermark_rows)/e.watermark_rows);e.watermark_y_space=v?e.watermark_y_space:v,r?(f=e.watermark_x+e.watermark_width*e.watermark_cols+e.watermark_x_space*(e.watermark_cols-1),m=e.watermark_y+e.watermark_height*e.watermark_rows+e.watermark_y_space*(e.watermark_rows-1)):(f=0+e.watermark_x+e.watermark_width*e.watermark_cols+e.watermark_x_space*(e.watermark_cols-1),m=0+e.watermark_y+e.watermark_height*e.watermark_rows+e.watermark_y_space*(e.watermark_rows-1));for(var b=0;b\n \n \n ${y.watermark_txt}\n \n \n ${y.watermark_txt}\n \n \n \n \n `,_=window.btoa(unescape(encodeURIComponent(b)));var w=document.createElement("div");w.style.position="absolute",w.style.left="0px",w.style.top="0px",w.style.overflow="hidden",w.style.zIndex="9999999",w.style.width=n+"px",w.style.height=o+"px",w.style.display="block",w.style["-ms-user-select"]="none",w.style.backgroundImage=`url(data:image/svg+xml;base64,${_})`,c.appendChild(w)}_removeMark(){const e=this.defaultSettings;var t=document.getElementById(e.watermark_id);if(t){var i=t.parentNode;i&&i.removeChild(t)}}_calcTextSize(){const{watermark_txt:e,watermark_font:t,watermark_fontsize:i}=this.globalSetting,r=document.createElement("span");r.innerHTML=e,r.setAttribute("style",`font-family: ${t}; font-size: ${i}px; visibility: hidden; display: inline-block`),document.querySelector("body").appendChild(r);const s={width:r.offsetWidth,height:r.offsetHeight};return r.remove(),s}}const Dc="right",Rc="left",xc="up",Lc="down",Ic="leftUp",Pc="leftDown",Bc="rightUp",Mc="rightDown",Uc="zoomExpand",Fc="zoomNarrow",Oc="apertureFar",Nc="apertureNear",Gc="focusFar",zc="focusNear",Wc="setPos",Vc="calPos",Hc="delPos",$c="wiperOpen",jc="wiperClose",Kc={stop:0,fiStop:0,right:1,left:2,up:8,down:4,leftUp:10,leftDown:6,rightUp:9,rightDown:5,zoomExpand:16,zoomNarrow:32,apertureFar:72,apertureNear:68,focusFar:66,focusNear:65,setPos:129,calPos:130,delPos:131,wiperOpen:140,wiperClose:141},qc=[25,50,75,100,125,150,175,200,225,250],Yc=[1,2,3,4,5,6,7,8,9,16],Qc=[16,48,80,112,144,160,176,192,208,224];function Xc(e){const{type:t,speed:i=5,index:r=0}=e,s=function(e){e=e||5;const t=e-1,i=qc[t]||qc[4];return i}(i);let a,n,o,l;switch(a=Kc[t],t){case xc:case Lc:case Oc:case Nc:o=s;break;case Dc:case Rc:case Gc:case zc:n=s;break;case Ic:case Pc:case Bc:case Mc:n=s,o=s;break;case Uc:case Fc:l=function(e){e=e||5;const t=e-1,i=Qc[t]||Qc[4];return i}(i);break;case Vc:case Hc:case Wc:o=function(e){return Yc[e-1]}(r);break;case jc:case $c:n=1}return function(e,t,i,r){let s=[];s[0]=165,s[1]=15,s[2]=1,s[3]=0,s[4]=0,s[5]=0,s[6]=0,e&&(s[3]=e);t&&(s[4]=t);i&&(s[5]=i);r&&(s[6]=r);return s[7]=(s[0]+s[1]+s[2]+s[3]+s[4]+s[5]+s[6])%256,function(e){let t="";for(let i=0;it)){for(const s in e)Object.prototype.hasOwnProperty.call(e,s)&&(i===t?r[s]=Zc(e[s]):"object"==typeof e[s]?r[s]=eu(e[s],t,i+1):r[s]=e[s]);return r}}function tu(){return(new Date).toLocaleString()}class iu{constructor(e,t={}){this.player=e,this.logMaxSize=t?.logMaxSize||204800,this.logSize=0,this.logTextArray=[]}destroy(){this.clear()}clear(){this.logSize=0,this.logTextArray=[]}logCache(...e){let t="";try{const i=e.map((e=>eu(e)));t="[EasyPro] "+tu()+JSON.stringify(i)}catch(e){return}if(this.logSize+=t.length,this.logTextArray.push(t),this.logSize>this.logMaxSize){const e=this.logTextArray.shift();this.logSize-=e.length}}download(){const e=this.logTextArray.join("\n");this.clear();const t=new Blob([e],{type:"text/plain"});Ja(t,"EasyPro-"+tu()+".log")}}class ru extends t{constructor(e={}){super(),this._opt={},this.$container=null,Object.keys(e).forEach((t=>{if(void 0===e[t])throw new Error(`EasyPro option "${t}" can not be undefined`)})),(Ls()||Is())&&(e.useMSE=!1,e.useWCS=!1),this.originalOptions=e;const t=wa();let i=Object.assign({},t,e);i.url="",i.isMulti&&(i.debugUuid="xxxx".replace(/[xy]/g,(function(e){var t=16*Math.random()|0;return("x"==e?t:3&t|8).toString(16)}))),this.debug=new Xr(this),this.debug.log("EasyPro","init");let r=e.container;if("string"==typeof e.container&&(r=document.querySelector(e.container)),!r)throw this.debug.error("EasyPro","EasyPro need container option and now container is",e.container),new Error("EasyPro need container option");if(i.decoder&&ka(-1!==i.decoder.indexOf("decoder-pro.js")||-1!==i.decoder.indexOf("decoder-pro-simd.js")))throw this.debug.error("EasyPro",`EasyPro decoder ${i.decoder} must be decoder-pro.js or decoder-pro-simd.js`),new Error(`EasyPro decoder ${i.decoder} must be decoder-pro.js or decoder-pro-simd.js`);if("CANVAS"===r.nodeName||"VIDEO"===r.nodeName)throw this.debug.error("EasyPro",`EasyPro container type can not be ${r.nodeName} type`),new Error(`EasyPro container type can not be ${r.nodeName} type`);if(i.videoBuffer>=i.heartTimeout)throw this.debug.error("EasyPro",`EasyPro videoBuffer ${i.videoBuffer}s must be less than heartTimeout ${i.heartTimeout}s`),new Error(`EasyPro videoBuffer ${i.videoBuffer}s must be less than heartTimeout ${i.heartTimeout}s`);if(this._checkHasCreated(r))throw this.debug.error("EasyPro","EasyPro container has been created and can not be created again",r),new Error("EasyPro container has been created and can not be created again",r);if(r.classList.add("easyplayer-container"),Ca(r,ie,Us()),ka(i.isLive)){const e=document.createElement("video");return e.muted=!0,e.setAttribute("controlsList","nodownload"),e.disablePictureInPicture="disablePictureInPicture",e.style.position="absolute",e.style.top=0,e.style.left=0,e.style.height="100%",e.style.width="100%",r.appendChild(e),this.$videoElement=e,this.$container=r,void(this._opt=i)}if(delete i.container,Ks(i.videoBuffer)&&(i.videoBuffer=1e3*Number(i.videoBuffer)),Ks(i.videoBufferDelay)&&(i.videoBufferDelay=1e3*Number(i.videoBufferDelay)),Ks(i.networkDelay)&&(i.networkDelay=1e3*Number(i.networkDelay)),Ks(i.aiFaceDetectInterval)&&(i.aiFaceDetectInterval=1e3*Number(i.aiFaceDetectInterval)),Ks(i.aiObjectDetectInterval)&&(i.aiObjectDetectInterval=1e3*Number(i.aiObjectDetectInterval)),Ks(i.timeout)&&($s(i.loadingTimeout)&&(i.loadingTimeout=i.timeout),$s(i.heartTimeout)&&(i.heartTimeout=i.timeout)),Ks(i.autoWasm)&&($s(i.decoderErrorAutoWasm)&&(i.decoderErrorAutoWasm=i.autoWasm),$s(i.hardDecodingNotSupportAutoWasm)&&(i.hardDecodingNotSupportAutoWasm=i.autoWasm)),Ks(i.aiFaceDetectLevel)&&$s(i.aiFaceDetectWidth)){const e=Rr[i.aiFaceDetectLevel];e&&(i.aiFaceDetectWidth=e)}if(Ks(i.aiObjectDetectLevel)&&$s(i.aiObjectDetectWidth)){const e=xr[i.aiObjectDetectLevel];e&&(i.aiObjectDetectWidth=e)}Ta(i.isCrypto)&&(i.isM7sCrypto=!0),this._opt=i,this._destroyed=!1,this.$container=r,this._tempPlayBgObj={},this._loadingTimeoutReplayTimes=0,this._heartTimeoutReplayTimes=0,this.events=new Ma(this),this._opt.isUseNewFullscreenWatermark?this.watermark=new Cc(this):this.watermark=new kc(this),this.memoryLogger=new iu(this),this._initPlayer(r,i),this._initWatermark(),this.debug.log("EasyPro",`init success and version is ${Ts}`),console.log(`EasyPro Version is ${Ts}`)}destroy(){return new Promise(((e,t)=>{this.debug.log("EasyPro","destroy()"),this._destroyed=!0,this.off(),this.$videoElement&&(this.$videoElement.pause(),this.$videoElement.currentTime=0,this.$videoElement.srcObject&&(this.$videoElement.srcObject=null,this.$videoElement.removeAttribute("srcObject")),this.$videoElement.src&&(this.$videoElement.src="",this.$videoElement.removeAttribute("src")),this.$container&&this.$container.removeChild(this.$videoElement),this.$videoElement=null),this.player?this.player.destroy().then((()=>{this.player=null,this._destroy(),setTimeout((()=>{e()}),0)})).catch((()=>{t()})):(this._destroy(),setTimeout((()=>{e()}),0))}))}_destroy(){var e,t;this.events&&(this.events.destroy(),this.events=null),this.talk&&(this.talk.destroy(),this.talk=null),this.watermark&&(this.watermark.destroy(),this.watermark=null),this.memoryLogger&&(this.memoryLogger.destroy(),this.memoryLogger=null),this.$container&&(this.$container.classList.remove("easyplayer-container"),this.$container.classList.remove("easyplayer-fullscreen-web"),e=this.$container,t=ie,e&&(e.dataset?delete e.dataset[t]:e.removeAttribute("data-"+t)),this.$container=null),this.debug&&this.debug.log("EasyPro","destroy end"),this._resetOpt(),this._tempPlayBgObj=null,this._loadingTimeoutReplayTimes=0,this._heartTimeoutReplayTimes=0}_resetOpt(){this._opt=wa()}_getOriginalOpt(){const e=wa();return Object.assign({},e,this.originalOptions)}_initPlayer(e,t){this.player=new mc(e,t),this._bindEvents()}_initTalk(e={}){this.talk&&(this.talk.destroy(),this.talk=null),this.player&&(e.debug=this.player._opt.debug),this.talk=new Tc(this.player,e),this.debug.log("EasyPro","_initTalk",this.talk.getOption()),this._bindTalkEvents()}_resetPlayer(e={}){return new Promise(((t,i)=>{const r=()=>{this._opt.url="",this._opt.playOptions={},this._opt=Object.assign(this._opt,e),this._initPlayer(this.$container,this._opt)};this.player?this.player.destroy().then((()=>{this.player=null,r(),setTimeout((()=>{t()}),0)})):(r(),setTimeout((()=>{t()}),0))}))}_bindEvents(){Object.keys(at).forEach((e=>{this.player.on(at[e],((...t)=>{this.emit(e,...t)}))})),this._opt.playFailedAndPausedShowMessage&&this.on(st.playFailedAndPaused,(e=>{this.player&&this.player.showTipsMessageByCode(e)})),this.player.once(st.beforeDestroy,(()=>{this.emit(st.close),this.destroy().then((()=>{})).catch((e=>{}))})),this.player.on(st.resize,(()=>{this.watermark&&this.watermark.resize()})),this.player.on(st.screenshots,(()=>{this.emit(st.screenshots,!0)})),this.player.on(st.fullscreen,(()=>{this.watermark&&this.watermark.resize()})),this.player.on(st.videoInfo,(()=>{this.player&&(this.player.singleWatermark&&this.player.singleWatermark.resize(),this.player.ghostWatermark&&this.player.ghostWatermark.resize(),this.player.dynamicWatermark&&this.player.dynamicWatermark.resize())})),this.player.on(st.memoryLog,((...e)=>{this.memoryLogger.logCache(...e)})),this.player.on(st.downloadMemoryLog,(()=>{this.downloadMemoryLog()}))}_bindTalkEvents(){Object.keys(nt).forEach((e=>{this.player.on(nt[e],(t=>{this.emit(e,t)}))}))}_initWatermark(){if(sa(this._opt.fullscreenWatermarkConfig)){const e=Ys(this.$container,this._opt.fullscreenWatermarkConfig);if(!e.watermark_txt)return void this.debug.warn("EasyPro","fullscreenWatermarkConfig text is empty");this.watermark.load(e)}}_checkHasCreated(e){if(!e)return!1;return!!Da(e,ie)}isDestroyed(){return this._destroyed}getOption(){return this.player?this.player.getOption():{}}setDebug(e){this.debug.log("EasyPro",`setDebug() ${e}`),this._opt.debug=!!e,this.player?this.player.updateOption({debug:!!e},!0):this.debug.warn("EasyPro","player is not init")}getIsDebug(){let e=!1;return this.player&&(e=this.player._opt.debug),e}mute(){this.debug.log("EasyPro","mute()"),this.player&&this.player.mute(!0)}cancelMute(){this.debug.log("EasyPro","cancelMute()"),this.player&&this.player.mute(!1)}setVolume(e){this.debug.log("EasyPro",`setVolume() ${e}`),this.player&&(this.player.volume=e)}getVolume(){let e=null;return this.player&&(e=this.player.volume,e=parseFloat(e).toFixed(2)),e}audioResume(){this.debug.log("EasyPro","audioResume()"),this.player&&this.player.audio?this.player.audio.audioEnabled(!0):this.debug.warn("EasyPro","audioResume error")}setTimeout(e){this.debug.log("EasyPro",`setTimeout() ${e}`),e=Number(e),isNaN(e)?this.debug.warn("EasyPro",`setTimeout error: ${e} is not a number`):(this._opt.timeout=e,this._opt.loadingTimeout=e,this._opt.heartTimeout=e,this.player&&this.player.updateOption({timeout:e,loadingTimeout:e,heartTimeout:e}))}setScaleMode(e){this.debug.log("EasyPro",`setScaleMode() ${e}`),this.player?this.player.setScaleMode(e):this.debug.warn("EasyPro","setScaleMode() player is null")}pause(e=!1){return new Promise(((t,i)=>{this.debug.log("EasyPro",`pause() ${e}`),(this._opt.pauseAndNextPlayUseLastFrameShow||this._opt.replayUseLastFrameShow)&&(this._tempPlayBgObj=this._getVideoLastIframeInfo()),this._pause(e).then((e=>{t(e)})).catch((e=>{i(e)}))}))}_pause(e=!1){return new Promise(((t,i)=>{if(this.debug.log("EasyPro",`_pause() ${e}`),this.isDestroyed())return i("EasyPro is destroyed");this.player?this.player.pause(e).then((e=>{t(e)})).catch((e=>{i(e)})):i("player is null")}))}close(){return new Promise(((e,t)=>{this.debug.log("EasyPro","close()"),this._opt.url="",this._loadingTimeoutReplayTimes=0,this._heartTimeoutReplayTimes=0,this.player?this.player.close().then((()=>{e()})).catch((e=>{t(e)})):t("player is null")}))}clearView(){this.debug.log("EasyPro","clearView()"),this.player&&this.player.video?this.getRenderType()===K?this.player.video.clearView():this.debug.warn("EasyPro","clearView","render type is video, not support clearView, please use canvas render type"):this.debug.warn("EasyPro","clearView","player is null")}play(e="",t={}){return new Promise(((i,r)=>{if(this.debug.log("EasyPro",`play() ${e}`,JSON.stringify(t)),!e&&!this._opt.url)return this.emit(st.error,lt.playError),void r("url is null and this._opt.url is null");if(e&&-1===(e=(e=(""+e).trim()).replace("webrtcs:","webrtc:")).indexOf("http:")&&-1===e.indexOf("https:")&&-1===e.indexOf("webrtc:")&&-1===e.indexOf("ws:")&&-1===e.indexOf("wss:")&&-1===e.indexOf("wt:")&&-1===e.indexOf("artc:"))return r(`url ${e} must be "http:" or "https:" or "webrtc:" or "ws:" or "wss:" or "wt:" or "artc:" protocol`);if(ka(this._opt.isLive))return this.$videoElement.controls="controls",this.$videoElement.muted=!1,this.$videoElement.src=e,this.$videoElement.play(),void i(this.$videoElement);if(this._opt.isM7sCrypto){let s=t.cryptoKey||this._opt.playOptions.cryptoKey,a=t.cryptoIV||this._opt.playOptions.cryptoIV;if(this._opt.m7sCryptoKey&&(!s||!a)){const e=this._opt.m7sCryptoKey.split(".");s=va(e[0]),a=va(e[1])}if(!s||!a){const s=e||this._opt.url;return void this._cryptoPlay(s).then((({cryptoIV:s,cryptoKey:a})=>{this._opt.playOptions.cryptoKey=a,this._opt.playOptions.cryptoIV=s,t.cryptoIV=s,t.cryptoKey=a,this._playBefore(e,t).then((()=>{i()})).catch((e=>{r(e)}))})).catch((e=>{r(e)}))}this._opt.playOptions.cryptoKey=s,this._opt.playOptions.cryptoIV=a,t.cryptoIV=a,t.cryptoKey=s}else if(this._opt.isXorCrypto){let e=t.cryptoKey||this._opt.playOptions.cryptoKey,i=t.cryptoIV||this._opt.playOptions.cryptoIV;if(this._opt.xorCryptoKey&&(!e||!i)){const t=this._opt.xorCryptoKey.split(".");e=va(t[0]),i=va(t[1])}e&&i&&(this._opt.playOptions.cryptoKey=e,this._opt.playOptions.cryptoIV=i,t.cryptoIV=i,t.cryptoKey=e)}this._playBefore(e,t).then((()=>{i()})).catch((e=>{r(e)}))}))}_playBefore(e,t){return new Promise(((i,r)=>{if(this.player)if(e)if(this._opt.url)if(e===this._opt.url)if(this.player.playing)this.debug.log("EasyPro","_playBefore","playing and resolve()"),i();else{this.debug.log("EasyPro","_playBefore","this._opt.url === url and pause -> play and destroy play");let e=this._getOriginalOpt();(this._opt.pauseAndNextPlayUseLastFrameShow||this._opt.replayUseLastFrameShow)&&this._tempPlayBgObj&&this._tempPlayBgObj.loadingBackground&&(e=Object.assign(e,this._tempPlayBgObj));const t=this.isMute(),s=this._opt.url,a={...this._opt.playOptions,isNotMute:!t};this._resetPlayer(e).then((()=>{this._play(s,a).then((()=>{this.player.resumeAudioAfterPause(),i()})).catch((e=>{this.debug.error("EasyPro","_playBefore this.player.play error",e),this.emit(st.crashLog,this.getCrashLog("this.player.play 1",e)),r(e)}))})).catch((e=>{this.debug.error("EasyPro","_resetPlayer error",e)}))}else{this.debug.log("EasyPro","_playBefore",`\n this._url.url is ${this._opt.url}\n and new url is ${e}\n and destroy and play new url`);const s=this._getOriginalOpt();this._resetPlayer(s).then((()=>{this._play(e,t).then((()=>{i()})).catch((e=>{this.debug.error("EasyPro","_playBefore _play error",e),this.emit(st.crashLog,this.getCrashLog("this.player.play 2",e)),r(e)}))})).catch((e=>{this.debug.error("EasyPro","_resetPlayer error",e)}))}else this._play(e,t).then((()=>{i()})).catch((e=>{this.debug.error("EasyPro","_playBefore _play error",e),this.emit(st.crashLog,this.getCrashLog("this.player.play 3",e)),r(e)}));else{let e=this._getOriginalOpt();(this._opt.pauseAndNextPlayUseLastFrameShow||this._opt.replayUseLastFrameShow)&&this._tempPlayBgObj&&this._tempPlayBgObj.loadingBackground&&(e=Object.assign(e,this._tempPlayBgObj));const t=this._opt.url,s=this._opt.playOptions;this._resetPlayer(e).then((()=>{this._play(t,s).then((()=>{this.player.resumeAudioAfterPause(),i()})).catch((e=>{this.debug.error("EasyPro","_playBefore _play error",e),this.emit(st.crashLog,this.getCrashLog("this.player.play 4",e)),r(e)}))})).catch((e=>{this.debug.error("EasyPro","_resetPlayer error",e)}))}else e?this._play(e,t).then((()=>{i()})).catch((e=>{this.debug.error("EasyPro","_playBefore _play error",e),this.emit(st.crashLog,this.getCrashLog("this.player.play 5",e)),r(e)})):this._play(this._opt.url,this._opt.playOptions).then((()=>{i()})).catch((e=>{this.debug.error("EasyPro","_playBefore _play error",e),this.emit(st.crashLog,this.getCrashLog("this.player.play 6",e)),r(e)}))}))}_cryptoPlay(e){return new Promise(((t,i)=>{const r=function(e){const t=(e||document.location.toString()).split("//"),i=t[1].indexOf("/");let r=t[1].substring(i);return-1!=r.indexOf("?")&&(r=r.split("?")[0]),r}(e);let s=this._opt.cryptoKeyUrl,a="";const n=ba(e);if(s){if(a=s,this._opt.isM7sCrypto&&-1===a.indexOf(`${te}?stream=`)){const e=ba(s);a=e.origin+te+`?stream=${r}`}}else s=n.origin+te,a=s+`?stream=${r}`;var o;this.player.debug.log("EasyPro",`_cryptoPlay() cryptoKeyUrl: ${a} and opt.cryptoKeyUrl: ${this._opt.cryptoKeyUrl}`),(o=a,new Promise(((e,t)=>{Io.get(o).then((t=>{e(t)})).catch((e=>{t(e)}))}))).then((e=>{if(e){const r=e.split("."),s=va(r[0]),a=va(r[1]);a&&s?t({cryptoIV:a,cryptoKey:s}):i("get cryptoIV or cryptoKey error")}else i(`cryptoKeyUrl: getM7SCryptoStreamKey ${a} res is null`)})).catch((e=>{i(e)}))}))}playback(e,t={}){return new Promise(((i,r)=>{if(this.debug.log("EasyPro",`playback() ${e}, options: ${JSON.stringify(t)}`),ka(this._opt.isLive))return r("this._opt.isLive is false, can not playback");const s=Ea(),a=Object.assign({},s.playbackConfig,this._opt.playbackConfig,t);a.isUseFpsRender||a.isCacheBeforeDecodeForFpsRender&&(a.isCacheBeforeDecodeForFpsRender=!1,this.debug.warn("EasyPro","playbackConfig.isUseFpsRender is false, isCacheBeforeDecodeForFpsRender can not be ture, isCacheBeforeDecodeForFpsRender is set to false")),0===a.rateConfig.length&&a.showRateBtn&&(a.showRateBtn=!1,this.debug.warn("EasyPro","playbackConfig.rateConfig.length is 0, showRateBtn can not be ture, showRateBtn is set to false")),a.controlType,Z.simple,this._resetPlayer({videoBuffer:0,playbackConfig:a,playType:b,openWebglAlignment:!0,useMSE:a.useMSE,useWCS:a.useWCS,useSIMD:!0}).then((()=>{this.play(e,t).then((()=>{i()})).catch((e=>{r(e)}))})).catch((e=>{r(e)}))}))}playbackPause(e=!1){return this.debug.log("EasyPro",`playbackPause() ${e}`),this._opt.playType===A?Promise.reject("playType is player, can not call playbackPause method"):new Promise(((t,i)=>{if(!this.player)return i("player is null");Ta(e)?this._pause().then((()=>{t()})).catch((e=>{i(e)})):(this.player.playbackPause=!0,t())}))}playbackResume(){return this.debug.log("EasyPro","playbackResume()"),this._opt.playType===A?Promise.reject("playType is player, can not call playbackResume method"):new Promise(((e,t)=>{if(!this.player)return t("player is null");this.player.playbackPause=!1,e()}))}forward(e){return this.debug.log("EasyPro",`forward() ${e}`),ka(this._opt.isLive)||this._opt.playType===A?Promise.reject("forward() method only just for playback type"):Ns(Number(e))?new Promise(((t,i)=>{this.player?(e=bs(Number(e),.1,32),this.player.decoderWorker&&this.player.decoderWorker.updateWorkConfig({key:"playbackRate",value:e}),this.player.playback.setRate(e),this.player.video&&this.player.video.setRate(e),this.player.audio&&this.player.audio.setRate(e),(this.player.isPlaybackUseWCS()||this.player.isPlaybackUseMSE())&&(this.player.demux.dropBuffer$2(),this.player.isPlaybackCacheBeforeDecodeForFpsRender()&&this.player.demux.initPlaybackCacheLoop()),t()):i("player is not playing")})):Promise.reject(`forward() params "rate": ${e} must be number type`)}playbackForward(e){return this.forward(e)}normal(){return this.forward(1)}playbackNormal(){return this.normal()}updatePlaybackForwardMaxRateDecodeIFrame(e){this.debug.log("EasyPro",`updatePlaybackForwardMaxRateDecodeIFrame() ${e}`),e=Number(e),e=bs(e=parseInt(e,10),1,8),this._opt.playbackForwardMaxRateDecodeIFrame=e,this.player?this.player.updateOption({playbackForwardMaxRateDecodeIFrame:e},!0):this.debug.warn("EasyPro","updatePlaybackForwardMaxRateDecodeIFrame() player is null")}setPlaybackStartTime(e){this.debug.log("EasyPro",`setPlaybackStartTime() ${e}`);const t=ia(e);if(this.player)if(this.player.isPlayback()){if(t<10&&0!==e&&this.player.playback.isControlTypeNormal())this.debug.warn("EasyPro",`setPlaybackStartTime() control type is normal and timestamp: ${e} is not valid`);else if(this.player.playback.isControlTypeSimple()&&e>this.player.playback.totalDuration)this.debug.warn("EasyPro",`setPlaybackStartTime() control type is simple and timestamp: ${e} is more than ${this.player.playback.totalDuration}`);else if(this.player.playing){this.player.playback.isControlTypeNormal()&&10===t&&(e*=1e3),document.getElementsByTagName("video")[0].currentTime=e}}else this.debug.warn("EasyPro","setPlaybackStartTime() playType is not playback");else this.debug.warn("EasyPro","setPlaybackStartTime() player is null")}setPlaybackShowPrecision(e){this.debug.log("EasyPro",`setPlaybackShowPrecision() ${e}`),this.player?this.player.isPlayback()?this.player.playback.isControlTypeNormal()?this.player.playback.setShowPrecision(e):this.debug.warn("EasyPro","control type is not normal , not support!"):this.debug.warn("EasyPro","playType is not playback"):this.debug.warn("EasyPro","player is null")}playbackCurrentTimeScroll(){this.debug.log("EasyPro","playbackCurrentTimeScroll()"),this.player?this.player.isPlayback()?this.player.playback.isControlTypeNormal()?this.player.playback.currentTimeScroll():this.debug.warn("EasyPro","control type is not normal , not support!"):this.debug.warn("EasyPro","playType is not playback"):this.debug.warn("EasyPro","player is null")}playbackClearCacheBuffer(){this.debug.log("EasyPro","playbackClearCacheBuffer()"),this.player?this.player.isPlayback()?(this.player.video&&this.player.video.clear(),this.player.audio&&this.player.audio.clear(),this.clearBufferDelay()):this.debug.warn("EasyPro","playType is not playback"):this.debug.warn("EasyPro","player is null")}getPlaybackCurrentRate(){if(this.player){if(this.player.isPlayback())return this.player.getPlaybackRate();this.debug.warn("EasyPro","playType is not playback")}else this.debug.warn("EasyPro","player is null")}updatePlaybackLocalOneFrameTimestamp(e){this.debug.log("EasyPro",`updatePlaybackLocalOneFrameTimestamp() ${e}`),this.player?this.player.isPlayback()?this.player.playback.updateLocalOneFrameTimestamp(e):this.debug.warn("EasyPro","playType is not playback"):this.debug.warn("EasyPro","player is null")}setStreamQuality(e){if(this.debug.log("EasyPro",`setStreamQuality() ${e}`),!this.player)return void this.debug.warn("EasyPro","player is null");if(!this.player._opt.operateBtns.quality)return void this.debug.warn("EasyPro","player._opt.operateBtns.quality is false");(this.player._opt.qualityConfig||[]).includes(e)?this.player.streamQuality=e:this.debug.warn("EasyPro",`quality: ${e} is not in qualityList`)}_play(t="",h={}){return new Promise(((c,u)=>{if(!this.player)return u("player is null");let p=!1;this._opt.url&&this._opt.url!==t&&(p=!0),this._opt.url=t,this._opt.playOptions=h;const f=t.split("?")[0],y=f.startsWith("http://")||f.startsWith("https://"),m=f.startsWith("webrtc://"),g=f.startsWith("artc://"),A=f.startsWith("wt://"),v=f.startsWith("ws://")||f.startsWith("wss://"),b=y||v,_=v&&f.includes("/api/devices/"),w=y&&f.endsWith(".m3u8"),E=b&&f.endsWith(".flv"),S=b&&(f.endsWith(".fmp4")||f.endsWith(".mp4")),U=b&&f.endsWith(".mpeg4"),F=b&&(f.endsWith(".h264")||f.endsWith(".h265")),O=b&&f.endsWith(".ts");let N=this._opt.isWebrtcForZLM||!1,z=this._opt.isWebrtcForSRS||!1,W=this._opt.isWebrtcForOthers||!1;m&&(-1!==t.indexOf("/index/api/webrtc")?(N=!0,z=!1,W=!1):-1!==t.indexOf("/rtc/v1/play/")&&(z=!0,N=!1,W=!1));let V=null,H=null;if(E&&ka(this._opt.isFlv)&&this._resetDemuxType("isFlv"),S&&ka(this._opt.isFmp4)&&this._resetDemuxType("isFmp4"),U&&ka(this._opt.isMpeg4)&&this._resetDemuxType("isMpeg4"),F&&ka(this._opt.isNakedFlow)&&this._resetDemuxType("isNakedFlow"),O&&ka(this._opt.isTs)&&this._resetDemuxType("isTs"),_&&this._resetDemuxType("isWsRtc"),V=y?w?s:r:A?n:_?l:m?a:g?o:i,this._opt.isNakedFlow?H=x:this._opt.isFmp4?H=L:this._opt.isMpeg4?H=I:this._opt.isFlv?H=T:this._opt.isTs?H=B:_?H=M:w?H=C:m?H=D:g?H=P:A?H=R:v&&(H=k),!V||!H)return this._opt.playFailedAndPausedShowMessage&&this.showErrorMessageTips("url is not support"),u(`play protocol is ${d[V]}, demuxType is ${H}`);this.debug.log("EasyPro",`play protocol is ${d[V]}, demuxType is ${H}`);const $=()=>{this.player.once(lt.webglAlignmentError,(e=>{if(this.isDestroyed())this.debug.log("EasyPro","webglAlignmentError but player is destroyed");else if(this.emit(st.crashLog,this.getCrashLog(lt.webglAlignmentError,e)),this.player&&this.player._opt.webglAlignmentErrorReplay){this.debug.log("EasyPro","webglAlignmentError");const t=this._opt.url,i=this.isMute(),r={...this._opt.playOptions,isNotMute:!i};this._resetPlayer({openWebglAlignment:!0,isNotMute:!i}).then((()=>{this.play(t,r).then((()=>{this.debug.log("EasyPro","webglAlignmentError and play success")})).catch((t=>{this.emit(st.playFailedAndPaused,lt.webglAlignmentError,{},e),this.debug.error("EasyPro","webglAlignmentError and play error",t)}))})).catch((e=>{this.debug.error("EasyPro","webglAlignmentError and _resetPlayer error",e)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this._pause(t).then((()=>{this.emit(st.playFailedAndPaused,lt.webglAlignmentError,{},e),this.debug.log("EasyPro","webglAlignmentError and webglAlignmentErrorReplay is false")})).catch((t=>{this.emit(st.playFailedAndPaused,lt.webglAlignmentError,{},e),this.debug.error("EasyPro","webglAlignmentError and pause error",t)}))}})),this.player.once(lt.webglContextLostError,(e=>{if(this.isDestroyed())return void this.debug.log("EasyPro","webglContextLostError but player is destroyed");this.emit(st.crashLog,this.getCrashLog(lt.webglContextLostError,e));const t=this._getVideoLastIframeInfo();if(this.player&&this.player._opt.webglContextLostErrorReplay){this.debug.log("EasyPro","webglContextLostError");const i=this._opt.url,r=this.isMute(),s={...this._opt.playOptions,isNotMute:!r};let a={};this.player._opt.replayUseLastFrameShow&&(a=Object.assign({},a,t,{loadingIcon:this.player._opt.replayShowLoadingIcon,isNotMute:!r})),this._resetPlayer(a).then((()=>{this.play(i,s).then((()=>{this.debug.log("EasyPro","webglContextLostError and play success")})).catch((i=>{this.emit(st.playFailedAndPaused,lt.webglContextLostError,t,e),this.debug.error("EasyPro","webglContextLostError and play error",i)}))})).catch((i=>{this.emit(st.playFailedAndPaused,lt.webglContextLostError,t,e),this.debug.error("EasyPro","webglContextLostError and _resetPlayer error",i)}))}else{const i=!1===this._opt.playFailedUseLastFrameShow;this._pause(i).then((()=>{this.emit(st.playFailedAndPaused,lt.webglContextLostError,t,e),this.debug.log("EasyPro","webglContextLostError and webglContextLostErrorReplay is false")})).catch((i=>{this.emit(st.playFailedAndPaused,lt.webglContextLostError,t,e),this.debug.error("EasyPro","webglAlignmentError and pause error",i)}))}})),this.player.once(lt.mediaSourceH265NotSupport,(e=>{if(this.isDestroyed())this.debug.log("EasyPro","mediaSourceH265NotSupport but player is destroyed");else if(this.emit(st.crashLog,this.getCrashLog(lt.mediaSourceH265NotSupport,e)),this.player&&this.player._opt.hardDecodingNotSupportAutoWasm){this.debug.log("EasyPro","mediaSourceH265NotSupport auto wasm [mse-> wasm] reset player and play");const t=this._opt.url,i=this.isMute(),r={...this._opt.playOptions,isNotMute:!i};this._resetPlayer({useMSE:!1,useWCS:!1,isNotMute:!i}).then((()=>{this.play(t,r).then((()=>{this.debug.log("EasyPro","mediaSourceH265NotSupport auto wasm [mse-> wasm] reset player and play success")})).catch((t=>{this.emit(st.playFailedAndPaused,lt.mediaSourceH265NotSupport,e),this.debug.error("EasyPro","mediaSourceH265NotSupport auto wasm [mse-> wasm] reset player and play error",t)}))})).catch((t=>{this.emit(st.playFailedAndPaused,lt.mediaSourceH265NotSupport,{},e),this.debug.error("EasyPro","mediaSourceH265NotSupport auto wasm [mse-> wasm] _resetPlayer error",t)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this._pause(t).then((()=>{this.emit(st.playFailedAndPaused,lt.mediaSourceH265NotSupport,{},e),this.debug.log("EasyPro","mediaSourceH265NotSupport and autoWasm is false")})).catch((t=>{this.emit(st.playFailedAndPaused,lt.mediaSourceH265NotSupport,{},e),this.debug.error("EasyPro","mediaSourceH265NotSupport and pause error",t)}))}})),this.player.once(lt.mediaSourceFull,(e=>{if(this.isDestroyed())return void this.debug.log("EasyPro","mediaSourceFull but player is destroyed");this.emit(st.crashLog,this.getCrashLog(lt.mediaSourceFull,e));const t=this._getVideoLastIframeInfo();if(this.player&&this.player._opt.mseDecodeErrorReplay){const i=this._opt.url,r=this.isMute(),s={...this._opt.playOptions,isNotMute:!r};let a={};this.player._opt.decoderErrorAutoWasm&&(a={useMSE:!1,useWCS:!1}),this.debug.log("EasyPro",`mediaSourceFull and auto wasm [mse-> ${this.player._opt.decoderErrorAutoWasm?"wasm":"mse"}] reset player and play`),this.player._opt.replayUseLastFrameShow&&(a=Object.assign({},a,t,{loadingIcon:this.player._opt.replayShowLoadingIcon,isNotMute:!r})),this._resetPlayer(a).then((()=>{this.play(i,s).then((()=>{this.debug.log("EasyPro","mediaSourceFull and reset player and play success")})).catch((i=>{this.emit(st.playFailedAndPaused,lt.mediaSourceFull,t,e),this.debug.error("EasyPro","mediaSourceFull and reset player and play error",i)}))})).catch((i=>{this.emit(st.playFailedAndPaused,lt.mediaSourceFull,t,e),this.debug.error("EasyPro","mediaSourceFull and _resetPlayer error",i)}))}else{const i=!1===this._opt.playFailedUseLastFrameShow;this._pause(i).then((()=>{this.emit(st.playFailedAndPaused,lt.mediaSourceFull,t,e),this.debug.log("EasyPro","mediaSourceFull and autoWasm is false")})).catch((i=>{this.emit(st.playFailedAndPaused,lt.mediaSourceFull,t,e),this.debug.error("EasyPro","mediaSourceFull and pause error",i)}))}})),this.player.once(lt.mediaSourceAppendBufferError,(e=>{if(this.isDestroyed())return void this.debug.log("EasyPro","mediaSourceAppendBufferError but player is destroyed");this.emit(st.crashLog,this.getCrashLog(lt.mediaSourceAppendBufferError,e));const t=this._getVideoLastIframeInfo();if(this.player&&this.player._opt.mseDecodeErrorReplay){const i=this._opt.url,r=this.isMute(),s={...this._opt.playOptions,isNotMute:!r};let a={};this.player._opt.decoderErrorAutoWasm&&(a={useMSE:!1,useWCS:!1}),this.debug.log("EasyPro",`mediaSourceAppendBufferError and auto wasm [mse-> ${this.player._opt.decoderErrorAutoWasm?"wasm":"mse"}] reset player and play`),this.player._opt.replayUseLastFrameShow&&(a=Object.assign({},a,t,{loadingIcon:this.player._opt.replayShowLoadingIcon,isNotMute:!r})),this._resetPlayer(a).then((()=>{this.play(i,s).then((()=>{this.debug.log("EasyPro","mediaSourceAppendBufferError and reset player and play success")})).catch((i=>{this.emit(st.playFailedAndPaused,lt.mediaSourceAppendBufferError,t,e),this.debug.error("EasyPro","mediaSourceAppendBufferError and reset player and play error",i)}))})).catch((i=>{this.emit(st.playFailedAndPaused,lt.mediaSourceAppendBufferError,t,e),this.debug.error("EasyPro","mediaSourceAppendBufferError and _resetPlayer error",i)}))}else{const i=!1===this._opt.playFailedUseLastFrameShow;this._pause(i).then((()=>{this.emit(st.playFailedAndPaused,lt.mediaSourceAppendBufferError,t,e),this.debug.log("EasyPro","mediaSourceAppendBufferError and autoWasm is false")})).catch((i=>{this.emit(st.playFailedAndPaused,lt.mediaSourceAppendBufferError,t,e),this.debug.error("EasyPro","mediaSourceAppendBufferError and pause error",i)}))}})),this.player.once(lt.mseSourceBufferError,(e=>{if(this.isDestroyed())return void this.debug.log("EasyPro","mseSourceBufferError but player is destroyed");this.emit(st.crashLog,this.getCrashLog(lt.mseSourceBufferError,e));const t=this._getVideoLastIframeInfo();if(this.player&&this.player._opt.mseDecodeErrorReplay){const i=this._opt.url,r=this.isMute(),s={...this._opt.playOptions,isNotMute:!r};let a={};this.player._opt.decoderErrorAutoWasm&&(a={useMSE:!1,useWCS:!1}),this.player.isMSEVideoDecoderInitializationFailedNotSupportHevc&&(this.debug.log("EasyPro","mseSourceBufferError and isMSEVideoDecoderInitializationFailedNotSupportHevc is true so auto wasm"),a={useMSE:!1,useWCS:!1}),this.debug.log("EasyPro",`mseSourceBufferError auto wasm [mse-> ${this.player._opt.decoderErrorAutoWasm?"wasm":"mse"}] reset player and play`),this.player._opt.replayUseLastFrameShow&&(a=Object.assign({},a,t,{loadingIcon:this.player._opt.replayShowLoadingIcon,isNotMute:!r})),this._resetPlayer(a).then((()=>{this.play(i,s).then((()=>{this.debug.log("EasyPro","mseSourceBufferError reset player and play success")})).catch((i=>{this.emit(st.playFailedAndPaused,lt.mseSourceBufferError,t,e),this.debug.error("EasyPro","mseSourceBufferError reset player and play error",i)}))})).catch((i=>{this.emit(st.playFailedAndPaused,lt.mseSourceBufferError,t,e),this.debug.error("EasyPro","mseSourceBufferError _resetPlayer and play error",i)}))}else{const i=!1===this._opt.playFailedUseLastFrameShow;this._pause(i).then((()=>{this.emit(st.playFailedAndPaused,lt.mseSourceBufferError,t,e),this.debug.log("EasyPro","mseSourceBufferError and autoWasm is false")})).catch((i=>{this.emit(st.playFailedAndPaused,lt.mseSourceBufferError,t,e),this.debug.error("EasyPro","mseSourceBufferError and pause error:",i)}))}})),this.player.once(lt.mediaSourceBufferedIsZeroError,(e=>{if(this.isDestroyed())return void this.debug.log("EasyPro","mediaSourceBufferedIsZeroError but player is destroyed");this.emit(st.crashLog,this.getCrashLog(lt.mediaSourceBufferedIsZeroError,e));const t=this._getVideoLastIframeInfo();if(this.player&&this.player._opt.mseDecodeErrorReplay){const i=this._opt.url,r=this.isMute(),s={...this._opt.playOptions,isNotMute:!r};let a={};this.player._opt.decoderErrorAutoWasm&&(a={useMSE:!1,useWCS:!1}),this.debug.log("EasyPro",`mediaSourceBufferedIsZeroError auto wasm [mse-> ${this.player._opt.decoderErrorAutoWasm?"wasm":"mse"}] reset player and play`),this.player._opt.replayUseLastFrameShow&&(a=Object.assign({},a,t,{loadingIcon:this.player._opt.replayShowLoadingIcon,isNotMute:!r})),this._resetPlayer(a).then((()=>{this.play(i,s).then((()=>{this.debug.log("EasyPro","mediaSourceBufferedIsZeroError reset player and play success")})).catch((i=>{this.emit(st.playFailedAndPaused,lt.mediaSourceBufferedIsZeroError,t,e),this.debug.error("EasyPro","mediaSourceBufferedIsZeroError reset player and play error",i)}))})).catch((i=>{this.emit(st.playFailedAndPaused,lt.mediaSourceBufferedIsZeroError,t,e),this.debug.error("EasyPro","mediaSourceBufferedIsZeroError _resetPlayer and play error",i)}))}else{const i=!1===this._opt.playFailedUseLastFrameShow;this._pause(i).then((()=>{this.emit(st.playFailedAndPaused,lt.mediaSourceBufferedIsZeroError,t,e),this.debug.log("EasyPro","mediaSourceBufferedIsZeroError and autoWasm is false")})).catch((i=>{this.emit(st.playFailedAndPaused,lt.mediaSourceBufferedIsZeroError,t,e),this.debug.error("EasyPro","mediaSourceBufferedIsZeroError and pause error:",i)}))}})),this.player.once(lt.mseAddSourceBufferError,(e=>{if(this.isDestroyed())return void this.debug.log("EasyPro","mseAddSourceBufferError but player is destroyed");this.emit(st.crashLog,this.getCrashLog(lt.mseAddSourceBufferError,e));const t=this._getVideoLastIframeInfo();if(this.player&&this.player._opt.hardDecodingNotSupportAutoWasm){this.debug.log("EasyPro","mseAddSourceBufferError auto wasm [mse-> wasm] reset player and play");const i=this._opt.url,r=this.isMute(),s={...this._opt.playOptions,isNotMute:!r};let a={useMSE:!1,useWCS:!1};this.player._opt.replayUseLastFrameShow&&(a=Object.assign({},a,t,{loadingIcon:this.player._opt.replayShowLoadingIcon,isNotMute:!r})),this._resetPlayer(a).then((()=>{this.play(i,s).then((()=>{this.debug.log("EasyPro","mseAddSourceBufferError auto wasm [mse-> wasm] reset player and play success")})).catch((i=>{this.emit(st.playFailedAndPaused,lt.mseAddSourceBufferError,t,e),this.debug.error("EasyPro","mseAddSourceBufferError auto wasm [mse-> wasm] reset player and play error",i)}))})).catch((i=>{this.emit(st.playFailedAndPaused,lt.mseAddSourceBufferError,t,e),this.debug.error("EasyPro","mseAddSourceBufferError auto wasm [mse-> wasm] _resetPlayer and play error",i)}))}else{const i=!1===this._opt.playFailedUseLastFrameShow;this._pause(i).then((()=>{this.emit(st.playFailedAndPaused,lt.mseAddSourceBufferError,t,e),this.debug.log("EasyPro","mseAddSourceBufferError and autoWasm is false")})).catch((i=>{this.emit(st.playFailedAndPaused,lt.mseAddSourceBufferError,t,e),this.debug.error("EasyPro","mseAddSourceBufferError and pause error",i)}))}})),this.player.once(lt.mediaSourceDecoderConfigurationError,(e=>{if(this.isDestroyed())this.debug.log("EasyPro","mediaSourceDecoderConfigurationError but player is destroyed");else if(this.emit(st.crashLog,this.getCrashLog(lt.mediaSourceDecoderConfigurationError,e)),this.player&&this.player._opt.hardDecodingNotSupportAutoWasm){this.debug.log("EasyPro","mediaSourceDecoderConfigurationError auto wasm [mse-> wasm] reset player and play");const t=this._opt.url,i=this.isMute(),r={...this._opt.playOptions,isNotMute:!i};let s={useMSE:!1,useWCS:!1,isNotMute:!i};this._resetPlayer(s).then((()=>{this.play(t,r).then((()=>{this.debug.log("EasyPro","mediaSourceDecoderConfigurationError auto wasm [mse-> wasm] reset player and play success")})).catch((t=>{this.emit(st.playFailedAndPaused,lt.mediaSourceDecoderConfigurationError,e),this.debug.error("EasyPro","mediaSourceDecoderConfigurationError auto wasm [mse-> wasm] reset player and play error",t)}))})).catch((t=>{this.emit(st.playFailedAndPaused,lt.mediaSourceDecoderConfigurationError,e),this.debug.error("EasyPro","mediaSourceDecoderConfigurationError auto wasm [mse-> wasm] _resetPlayer and play error",t)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this._pause(t).then((()=>{this.emit(st.playFailedAndPaused,lt.mediaSourceDecoderConfigurationError,e),this.debug.log("EasyPro","mediaSourceDecoderConfigurationError and autoWasm is false")})).catch((t=>{this.emit(st.playFailedAndPaused,lt.mediaSourceDecoderConfigurationError,e),this.debug.error("EasyPro","mediaSourceDecoderConfigurationError and pause error",t)}))}})),this.player.once(lt.mediaSourceTsIsMaxDiff,(e=>{if(this.isDestroyed())return void this.debug.log("EasyPro","mediaSourceTsIsMaxDiff but player is destroyed");this.emit(st.crashLog,this.getCrashLog(lt.mediaSourceTsIsMaxDiff,e));const t=this._getVideoLastIframeInfo();if(this.player&&this.player._opt.mediaSourceTsIsMaxDiffReplay){this.debug.log("EasyPro","mediaSourceTsIsMaxDiff reset player and play");const i=this._opt.url,r=this.isMute(),s={...this._opt.playOptions,isNotMute:!r};let a={isNotMute:!r};a=Object.assign({},a,t),this._resetPlayer(a).then((()=>{this.play(i,s).then((()=>{this.debug.log("EasyPro","mediaSourceTsIsMaxDiff replay success")})).catch((i=>{this.emit(st.playFailedAndPaused,lt.mediaSourceTsIsMaxDiff,t,e),this.debug.error("EasyPro","mediaSourceTsIsMaxDiff replay error",i)}))})).catch((i=>{this.emit(st.playFailedAndPaused,lt.mediaSourceTsIsMaxDiff,t,e),this.debug.error("EasyPro","mediaSourceTsIsMaxDiff _resetPlayer error",i)}))}else{const i=!1===this._opt.playFailedUseLastFrameShow;this._pause(i).then((()=>{this.emit(st.playFailedAndPaused,lt.mediaSourceTsIsMaxDiff,t,e),this.debug.log("EasyPro","mediaSourceTsIsMaxDiff and replay is false")})).catch((i=>{this.emit(st.playFailedAndPaused,lt.mediaSourceTsIsMaxDiff,t,e),this.debug.error("EasyPro","mediaSourceTsIsMaxDiff and pause error",i)}))}})),this.player.once(lt.mseWidthOrHeightChange,(t=>{if(this.isDestroyed())return void this.debug.log("EasyPro","mseWidthOrHeightChange but player is destroyed");this.emit(st.crashLog,this.getCrashLog(lt.mseWidthOrHeightChange,t));const i=this._getVideoLastIframeInfo();if(this.player&&this.player._opt.widthOrHeightChangeReplay){this.debug.log("EasyPro","mseWidthOrHeightChange and reset player and play");const e=this._opt.url,r=this.isMute(),s={...this._opt.playOptions,isNotMute:!r};let a={isNotMute:!r};a=Object.assign({},a,i),this._resetPlayer(a).then((()=>{this.player._opt.widthOrHeightChangeReplayDelayTime>0?setTimeout((()=>{this.isDestroyed()?this.debug.log("EasyPro","mseWidthOrHeightChange and widthOrHeightChangeReplayDelayTime but player is destroyed"):this.play(e,s).then((()=>{this.debug.log("EasyPro","mseWidthOrHeightChange and reset player and play success")})).catch((e=>{this.emit(st.playFailedAndPaused,lt.mseWidthOrHeightChange,i,t),this.debug.error("EasyPro","mseWidthOrHeightChange and reset player and play error",e)}))}),1e3*this.player._opt.widthOrHeightChangeReplayDelayTime):this.play(e,s).then((()=>{this.debug.log("EasyPro","mseWidthOrHeightChange and reset player and play success")})).catch((e=>{this.emit(st.playFailedAndPaused,lt.mseWidthOrHeightChange,i,t),this.debug.error("EasyPro","mseWidthOrHeightChange and reset player and play error",e)}))})).catch((e=>{this.emit(st.playFailedAndPaused,lt.mseWidthOrHeightChange,i,t),this.debug.error("EasyPro","mseWidthOrHeightChange and _resetPlayer error",e)}))}else{const r=!1===this._opt.playFailedUseLastFrameShow;this._pause(r).then((()=>{this.emit(st.playFailedAndPaused,lt.mseWidthOrHeightChange,i,t),this.debug.error("EasyPro","mseWidthOrHeightChange and _resetPlayer error",e)})).catch((e=>{this.emit(st.playFailedAndPaused,lt.mseWidthOrHeightChange,i,t),this.debug.error("EasyPro","mseWidthOrHeightChange error and pause error",e)}))}})),this.player.once(lt.mediaSourceAudioG711NotSupport,(t=>{if(this.isDestroyed())return void this.debug.log("EasyPro","mediaSourceAudioG711NotSupport but player is destroyed");const i=this._getVideoLastIframeInfo();if(this.player&&this.player._opt.mediaSourceAudioG711NotSupportReplay){this.debug.log("EasyPro","mediaSourceAudioG711NotSupport and reset player and play");const e=this._opt.url,r=this.isMute(),s={...this._opt.playOptions,isNotMute:!r};let a={mseDecodeAudio:!1,isNotMute:!r};a=Object.assign({},a,i),this._resetPlayer(a).then((()=>{this.play(e,s).then((()=>{this.debug.log("EasyPro","mediaSourceAudioG711NotSupport and reset player and play success")})).catch((e=>{this.emit(st.playFailedAndPaused,lt.mediaSourceAudioG711NotSupport,i,t),this.debug.error("EasyPro","mediaSourceAudioG711NotSupport and reset player and play error",e)}))})).catch((e=>{this.emit(st.playFailedAndPaused,lt.mediaSourceAudioG711NotSupport,i,t),this.debug.error("EasyPro","mediaSourceAudioG711NotSupport and _resetPlayer error",e)}))}else{const r=!1===this._opt.playFailedUseLastFrameShow;this._pause(r).then((()=>{this.emit(st.playFailedAndPaused,lt.mediaSourceAudioG711NotSupport,i,t),this.debug.error("EasyPro","mediaSourceAudioG711NotSupport and _resetPlayer error",e)})).catch((e=>{this.emit(st.playFailedAndPaused,lt.mediaSourceAudioG711NotSupport,i,t),this.debug.error("EasyPro","mediaSourceAudioG711NotSupport error and pause error",e)}))}})),this.player.once(lt.mediaSourceAudioInitTimeout,(t=>{if(this.isDestroyed())return void this.debug.log("EasyPro","mediaSourceAudioInitTimeout but player is destroyed");const i=this._getVideoLastIframeInfo();if(this.player&&this.player._opt.mediaSourceAudioInitTimeoutReplay){this.debug.log("EasyPro","mediaSourceAudioInitTimeout and reset player and play");const e=this._opt.url,r=this.isMute(),s={...this._opt.playOptions,isNotMute:!r};let a={mseDecodeAudio:!1,isNotMute:!r};a=Object.assign({},a,i),this._resetPlayer(a).then((()=>{this.play(e,s).then((()=>{this.debug.log("EasyPro","mediaSourceAudioInitTimeout and reset player and play success")})).catch((e=>{this.emit(st.playFailedAndPaused,lt.mediaSourceAudioInitTimeout,i,t),this.debug.error("EasyPro","mediaSourceAudioInitTimeout and reset player and play error",e)}))})).catch((e=>{this.emit(st.playFailedAndPaused,lt.mediaSourceAudioInitTimeout,i,t),this.debug.error("EasyPro","mediaSourceAudioInitTimeout and _resetPlayer error",e)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this._pause(t).then((()=>{this.emit(st.playFailedAndPaused,lt.mediaSourceAudioInitTimeout,i),this.debug.error("EasyPro","mediaSourceAudioInitTimeout and _resetPlayer error",e)})).catch((e=>{this.emit(st.playFailedAndPaused,lt.mediaSourceAudioInitTimeout,i),this.debug.error("EasyPro","mediaSourceAudioInitTimeout error and pause error",e)}))}})),this.player.once(lt.mediaSourceUseCanvasRenderPlayFailed,(e=>{if(this.isDestroyed())this.debug.log("EasyPro","mediaSourceUseCanvasRenderPlayFailed but player is destroyed");else if(this.emit(st.crashLog,this.getCrashLog(lt.mediaSourceUseCanvasRenderPlayFailed,e)),this.player&&this.player._opt.mediaSourceUseCanvasRenderPlayFailedReplay&&this.player._opt.mediaSourceUseCanvasRenderPlayFailedReplayType){this.debug.log("EasyPro",`mediaSourceUseCanvasRenderPlayFailed relayType is ${this.player._opt.mediaSourceUseCanvasRenderPlayFailedReplayType} and reset player and play`);const t=this._opt.url,i=this.isMute(),r={...this._opt.playOptions,isNotMute:!i};let s={};const a=this.player._opt.mediaSourceUseCanvasRenderPlayFailedReplayType;a===K?s={useMSE:!1,useWCS:!1}:a===q&&(s={useVideoRender:!0,useCanvasRender:!1}),this._resetPlayer({...s,isNotMute:!i}).then((()=>{this.play(t,r).then((()=>{this.debug.log("EasyPro","mediaSourceUseCanvasRenderPlayFailed and reset player and play success")})).catch((t=>{this.emit(st.playFailedAndPaused,lt.mediaSourceUseCanvasRenderPlayFailed,e),this.debug.error("EasyPro","mediaSourceUseCanvasRenderPlayFailed and reset player and play error",t)}))})).catch((e=>{this.debug.error("EasyPro","mediaSourceUseCanvasRenderPlayFailed auto and _resetPlayer and play error",e)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this._pause(t).then((()=>{this.debug.log("EasyPro","mediaSourceUseCanvasRenderPlayFailed and pause player success")})).catch((t=>{this.emit(st.playFailedAndPaused,lt.mediaSourceUseCanvasRenderPlayFailed,e),this.debug.error("EasyPro","mediaSourceUseCanvasRenderPlayFailed and pause",t)}))}})),this.player.once(lt.webcodecsH265NotSupport,(e=>{if(this.isDestroyed())this.debug.log("EasyPro","webcodecsH265NotSupport but player is destroyed");else if(this.emit(st.crashLog,this.getCrashLog(lt.webcodecsH265NotSupport,e)),this.player&&this.player._opt.hardDecodingNotSupportAutoWasm){this.debug.log("EasyPro","webcodecsH265NotSupport auto wasm [wcs-> wasm] reset player and play");const t=this._opt.url,i=this.isMute(),r={...this._opt.playOptions,isNotMute:!i};this._resetPlayer({useMSE:!1,useWCS:!1,isNotMute:!i}).then((()=>{this.play(t,r).then((()=>{this.debug.log("EasyPro","webcodecsH265NotSupport auto wasm [wcs-> wasm] reset player and play success")})).catch((t=>{this.emit(st.playFailedAndPaused,lt.webcodecsH265NotSupport,e),this.debug.error("EasyPro","webcodecsH265NotSupport auto wasm [wcs-> wasm] reset player and play error",t)}))})).catch((e=>{this.debug.error("EasyPro","webcodecsH265NotSupport auto wasm [wcs-> wasm] _resetPlayer and play error",e)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this._pause(t).then((()=>{this.emit(st.playFailedAndPaused,lt.webcodecsH265NotSupport,e),this.debug.log("EasyPro","webcodecsH265NotSupport and autoWasm is false")})).catch((t=>{this.emit(st.playFailedAndPaused,lt.webcodecsH265NotSupport,e),this.debug.error("EasyPro","webcodecsH265NotSupport and pause error",t)}))}})),this.player.once(lt.webcodecsUnsupportedConfigurationError,(e=>{if(this.isDestroyed())this.debug.log("EasyPro","webcodecsUnsupportedConfigurationError but player is destroyed");else if(this.emit(st.crashLog,this.getCrashLog(lt.webcodecsUnsupportedConfigurationError,e)),this.player&&this.player._opt.hardDecodingNotSupportAutoWasm){this.debug.log("EasyPro","webcodecsUnsupportedConfigurationError auto wasm [wcs-> wasm] reset player and play");const t=this._opt.url,i=this.isMute(),r={...this._opt.playOptions,isNotMute:!i};this._resetPlayer({useMSE:!1,useWCS:!1,isNotMute:!i}).then((()=>{this.play(t,r).then((()=>{this.debug.log("EasyPro","webcodecsUnsupportedConfigurationError auto wasm [wcs-> wasm] reset player and play success")})).catch((t=>{this.emit(st.playFailedAndPaused,lt.webcodecsUnsupportedConfigurationError,e),this.debug.error("EasyPro","webcodecsUnsupportedConfigurationError auto wasm [wcs-> wasm] reset player and play error",t)}))})).catch((t=>{this.emit(st.playFailedAndPaused,lt.webcodecsUnsupportedConfigurationError,e),this.debug.error("EasyPro","webcodecsUnsupportedConfigurationError auto wasm [wcs-> wasm] _resetPlayer and play error",t)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this._pause(t).then((()=>{this.emit(st.playFailedAndPaused,lt.webcodecsUnsupportedConfigurationError,e),this.debug.log("EasyPro","webcodecsUnsupportedConfigurationError and autoWasm is false")})).catch((t=>{this.emit(st.playFailedAndPaused,lt.webcodecsUnsupportedConfigurationError,e),this.debug.error("EasyPro","webcodecsUnsupportedConfigurationError and pause error",t)}))}})),this.player.once(lt.webcodecsDecodeConfigureError,(e=>{if(this.isDestroyed())this.debug.log("EasyPro","webcodecsDecodeConfigureError but player is destroyed");else if(this.emit(st.crashLog,this.getCrashLog(lt.webcodecsDecodeConfigureError,e)),this.player&&this.player._opt.hardDecodingNotSupportAutoWasm){this.debug.log("EasyPro","webcodecsDecodeConfigureError auto wasm [wcs-> wasm] reset player and play");const t=this._opt.url,i=this.isMute(),r={...this._opt.playOptions,isNotMute:!i};this._resetPlayer({useMSE:!1,useWCS:!1,isNotMute:!i}).then((()=>{this.play(t,r).then((()=>{this.debug.log("EasyPro","webcodecsDecodeConfigureError auto wasm [wcs-> wasm] reset player and play success")})).catch((t=>{this.emit(st.playFailedAndPaused,lt.webcodecsDecodeConfigureError,e),this.debug.error("EasyPro","webcodecsDecodeConfigureError auto wasm [wcs-> wasm] reset player and play error",t)}))})).catch((t=>{this.emit(st.playFailedAndPaused,lt.webcodecsDecodeConfigureError,e),this.debug.error("EasyPro","webcodecsDecodeConfigureError auto wasm [wcs-> wasm] _resetPlayer and play error",t)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this._pause(t).then((()=>{this.emit(st.playFailedAndPaused,lt.webcodecsDecodeConfigureError,e),this.debug.log("EasyPro","webcodecsDecodeConfigureError and autoWasm is false")})).catch((t=>{this.emit(st.playFailedAndPaused,lt.webcodecsDecodeConfigureError,e),this.debug.error("EasyPro","webcodecsDecodeConfigureError and pause error",t)}))}})),this.player.once(lt.webcodecsDecodeError,(e=>{if(this.isDestroyed())return void this.debug.log("EasyPro","webcodecsDecodeError but player is destroyed");this.emit(st.crashLog,this.getCrashLog(lt.webcodecsDecodeError,e));const t=this._getVideoLastIframeInfo();if(this.player&&this.player._opt.wcsDecodeErrorReplay){const i=this._opt.url,r=this.isMute(),s={...this._opt.playOptions,isNotMute:!r};let a={};this.player._opt.decoderErrorAutoWasm&&(a={useMSE:!1,useWCS:!1}),this.debug.log("EasyPro",`webcodecs decode error autoWasm [wcs-> ${this.player._opt.decoderErrorAutoWasm?"wasm":"wcs"}] reset player and play`),this.player._opt.replayUseLastFrameShow&&(a=Object.assign({},a,t,{loadingIcon:this.player._opt.replayShowLoadingIcon,isNotMute:!r})),this._resetPlayer(a).then((()=>{this.play(i,s).then((()=>{this.debug.log("EasyPro","webcodecs decode error reset player and play success")})).catch((i=>{this.emit(st.playFailedAndPaused,lt.webcodecsDecodeError,t,e),this.debug.error("EasyPro","webcodecs decode error reset player and play error",i)}))})).catch((()=>{this.emit(st.playFailedAndPaused,lt.webcodecsDecodeError,t,e),this.debug.error("EasyPro","webcodecs decode error _resetPlayer error")}))}else{const i=!1===this._opt.playFailedUseLastFrameShow;this._pause(i).then((()=>{this.emit(st.playFailedAndPaused,lt.webcodecsDecodeError,t,e),this.debug.log("EasyPro","webcodecs decode error and autoWasm is false")})).catch((i=>{this.emit(st.playFailedAndPaused,lt.webcodecsDecodeError,t,e),this.debug.error("EasyPro","webcodecs decode error and pause error",i)}))}})),this.player.once(lt.wcsWidthOrHeightChange,(t=>{if(this.isDestroyed())return void this.debug.log("EasyPro","wcsWidthOrHeightChange but player is destroyed");this.emit(st.crashLog,this.getCrashLog(lt.wcsWidthOrHeightChange,t));const i=this._getVideoLastIframeInfo();if(this.player&&this.player._opt.widthOrHeightChangeReplay){this.debug.log("EasyPro","wcsWidthOrHeightChange and reset player and play");const e=this._opt.url,r=this.isMute(),s={...this._opt.playOptions,isNotMute:!r};let a={};a=Object.assign({},a,i),this._resetPlayer(a).then((()=>{this._opt.widthOrHeightChangeReplayDelayTime>0?setTimeout((()=>{this.isDestroyed()?this.debug.log("EasyPro","wcsWidthOrHeightChange and widthOrHeightChangeReplayDelayTime but player is destroyed"):this.play(e,s).then((()=>{this.debug.log("EasyPro","wcsWidthOrHeightChange and reset player and play success")})).catch((e=>{this.emit(st.playFailedAndPaused,lt.wcsWidthOrHeightChange,i,t),this.debug.error("EasyPro","wcsWidthOrHeightChange and reset player and play error",e)}))}),1e3*this._opt.widthOrHeightChangeReplayDelayTime):this.play(e,s).then((()=>{this.debug.log("EasyPro","wcsWidthOrHeightChange and reset player and play success")})).catch((e=>{this.emit(st.playFailedAndPaused,lt.wcsWidthOrHeightChange,i,t),this.debug.error("EasyPro","wcsWidthOrHeightChange and reset player and play error",e)}))})).catch((e=>{this.emit(st.playFailedAndPaused,lt.wcsWidthOrHeightChange,i,t),this.debug.error("EasyPro","wcsWidthOrHeightChange and _resetPlayer error",e)}))}else{const r=!1===this._opt.playFailedUseLastFrameShow;this._pause(r).then((()=>{this.emit(st.playFailedAndPaused,lt.wcsWidthOrHeightChange,i,t),this.debug.error("EasyPro","wcsWidthOrHeightChange and _resetPlayer error",e)})).catch((e=>{this.emit(st.playFailedAndPaused,lt.wcsWidthOrHeightChange,i,t),this.debug.error("EasyPro","wcsWidthOrHeightChange error and pause error",e)}))}})),this.player.once(lt.wasmDecodeError,(e=>{if(this.isDestroyed())return void this.debug.log("EasyPro","wasmDecodeError but player is destroyed");this.emit(st.crashLog,this.getCrashLog(lt.wasmDecodeError,e));const t=this._getVideoLastIframeInfo();if(this.player&&this.player._opt.wasmDecodeErrorReplay){this.debug.log("EasyPro","wasm decode error and reset player and play");const i=this._opt.url,r=this.isMute(),s={...this._opt.playOptions,isNotMute:!r};let a={};this.player._opt.replayUseLastFrameShow&&(a=Object.assign({},a,t,{loadingIcon:this.player._opt.replayShowLoadingIcon,isNotMute:!r})),this._resetPlayer(a).then((()=>{this.play(i,s).then((()=>{this.debug.log("EasyPro","wasm decode error and reset player and play success")})).catch((i=>{this.emit(st.playFailedAndPaused,lt.wasmDecodeError,t,e),this.debug.error("EasyPro","wasm decode error and reset player and play error",i)}))})).catch((()=>{this.emit(st.playFailedAndPaused,lt.wasmDecodeError,t,e),this.debug.error("EasyPro","wasm decode error and _resetPlayer error")}))}else{const i=!1===this._opt.playFailedUseLastFrameShow;this._pause(i).then((()=>{this.emit(st.playFailedAndPaused,lt.wasmDecodeError,t,e),this.debug.log("EasyPro","wasm decode error and wasmDecodeErrorReplay is false")})).catch((i=>{this.emit(st.playFailedAndPaused,lt.wasmDecodeError,t,e),this.debug.error("EasyPro","wasm decode error and pause error",i)}))}})),this.player.once(lt.simdDecodeError,(e=>{if(this.isDestroyed())return void this.debug.log("EasyPro","simdDecodeError but player is destroyed");this.emit(st.crashLog,this.getCrashLog(lt.simdDecodeError,e));const t=this._getVideoLastIframeInfo();if(this.player&&this.player._opt.simdDecodeErrorReplay){this.debug.log("EasyPro",`simdDecodeError error simdDecodeErrorReplayType is ${this.player._opt.simdDecodeErrorReplayType} and reset player and play`);const i=this._opt.url,r=this.isMute(),s=this.getPlaybackCurrentRate(),a={...this._opt.playOptions,isNotMute:!r};let n={};this.player._opt.simdDecodeErrorReplayType===G&&(n={useSIMD:!1,isNotMute:!r}),n=Object.assign({},n,t),this._resetPlayer(n).then((()=>{this.play(i,a).then((()=>{s&&this.forward(s),this.debug.log("EasyPro","simdDecodeError and reset player and play success")})).catch((i=>{this.emit(st.playFailedAndPaused,lt.simdDecodeError,t,e),this.debug.error("EasyPro","simdDecodeError and reset player and play error",i)}))})).catch((i=>{this.emit(st.playFailedAndPaused,lt.simdDecodeError,t,e),this.debug.error("EasyPro","simdDecodeError and _resetPlayer error",i)}))}else{const i=!1===this._opt.playFailedUseLastFrameShow;this._pause(i).then((()=>{this.emit(st.playFailedAndPaused,lt.simdDecodeError,t,e),this.debug.error("EasyPro","simdDecodeError and simdDecodeErrorReplay is false")})).catch((i=>{this.emit(st.playFailedAndPaused,lt.simdDecodeError,t,e),this.debug.error("EasyPro","simdDecodeError error and pause error",i)}))}})),this.player.once(lt.wasmWidthOrHeightChange,(t=>{if(this.isDestroyed())return void this.debug.log("EasyPro","wasmWidthOrHeightChange but player is destroyed");this.emit(st.crashLog,this.getCrashLog(lt.wasmWidthOrHeightChange,t));const i=this._getVideoLastIframeInfo();if(this.player&&this.player._opt.widthOrHeightChangeReplay){this.debug.log("EasyPro","wasmWidthOrHeightChange and reset player and play");const e=this._opt.url,r=this.isMute(),s={...this._opt.playOptions,isNotMute:!r};let a={isNotMute:!r};a=Object.assign({},a,i),this._resetPlayer(a).then((()=>{this._opt.widthOrHeightChangeReplayDelayTime>0?setTimeout((()=>{this.isDestroyed()?this.debug.log("EasyPro","wasmWidthOrHeightChange and widthOrHeightChangeReplayDelayTime but player is destroyed"):this.play(e,s).then((()=>{this.debug.log("EasyPro","wasmWidthOrHeightChange and reset player and play success")})).catch((e=>{this.emit(st.playFailedAndPaused,lt.wasmWidthOrHeightChange,i,t),this.debug.error("EasyPro","wasmWidthOrHeightChange and reset player and play error",e)}))}),1e3*this._opt.widthOrHeightChangeReplayDelayTime):this.play(e,s).then((()=>{this.debug.log("EasyPro","wasmWidthOrHeightChange and reset player and play success")})).catch((e=>{this.emit(st.playFailedAndPaused,lt.wasmWidthOrHeightChange,i,t),this.debug.error("EasyPro","wasmWidthOrHeightChange and reset player and play error",e)}))})).catch((e=>{this.emit(st.playFailedAndPaused,lt.wasmWidthOrHeightChange,i,t),this.debug.error("EasyPro","wasmWidthOrHeightChange and _resetPlayer error",e)}))}else{const r=!1===this._opt.playFailedUseLastFrameShow;this._pause(r).then((()=>{this.emit(st.playFailedAndPaused,lt.wasmWidthOrHeightChange,i,t),this.debug.error("EasyPro","wasmWidthOrHeightChange and _resetPlayer error",e)})).catch((e=>{this.emit(st.playFailedAndPaused,lt.wasmWidthOrHeightChange,i),this.debug.error("EasyPro","wasmWidthOrHeightChange error and pause error",e)}))}})),this.player.once(lt.wasmUseVideoRenderError,(e=>{if(this.isDestroyed())return void this.debug.log("EasyPro","wasmUseVideoRenderError but player is destroyed");this.emit(st.crashLog,this.getCrashLog(lt.wasmUseVideoRenderError,e)),this.debug.log("EasyPro","wasmUseVideoRenderError and reset player and play");const t=this._opt.url,i=this.isMute(),r={...this._opt.playOptions,isNotMute:!i};this._resetPlayer({useVideoRender:!1,useCanvasRender:!0,isNotMute:!i}).then((()=>{this.play(t,r).then((()=>{this.debug.log("EasyPro","wasmUseVideoRenderError and reset player and play success")})).catch((t=>{this.emit(st.playFailedAndPaused,lt.wasmUseVideoRenderError,{},e),this.debug.error("EasyPro","wasmUseVideoRenderError and reset player and play error",t)}))})).catch((t=>{this.emit(st.playFailedAndPaused,lt.wasmUseVideoRenderError,{},e),this.debug.error("EasyPro","wasmUseVideoRenderError and _resetPlayer error",t)}))})),this.player.once(lt.videoElementPlayingFailed,(e=>{if(this.isDestroyed())this.debug.log("EasyPro","videoElementPlayingFailed but player is destroyed");else if(this.emit(st.crashLog,this.getCrashLog(lt.videoElementPlayingFailed,e)),this.player&&this.player._opt.videoElementPlayingFailedReplay){this.debug.log("EasyPro",`videoElementPlayingFailed and useMSE is ${this._opt.useMSE} and reset player and play`);const t=this._opt.url,i=this.isMute(),r={...this._opt.playOptions,isNotMute:!i};this._resetPlayer({useMSE:!1,useVideoRender:!1,useCanvasRender:!0,isNotMute:!i}).then((()=>{this.play(t,r).then((()=>{this.debug.log("EasyPro","videoElementPlayingFailed and reset player and play success")})).catch((t=>{this.emit(st.playFailedAndPaused,lt.videoElementPlayingFailed,{},e),this.debug.error("EasyPro","videoElementPlayingFailed and reset player and play error",t)}))})).catch((t=>{this.emit(st.playFailedAndPaused,lt.videoElementPlayingFailed,{},e),this.debug.error("EasyPro","videoElementPlayingFailed and _resetPlayer error",t)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this._pause(t).then((()=>{this.emit(st.playFailedAndPaused,lt.videoElementPlayingFailed,{},e),this.debug.error("EasyPro","videoElementPlayingFailed and videoElementPlayingFailedReplay is false")})).catch((t=>{this.emit(st.playFailedAndPaused,lt.videoElementPlayingFailed,{},e),this.debug.error("EasyPro","videoElementPlayingFailed and _pause error",t)}))}})),this.player.once(lt.simdH264DecodeVideoWidthIsTooLarge,(e=>{if(this.isDestroyed())this.debug.log("EasyPro","simdH264DecodeVideoWidthIsTooLarge but player is destroyed");else if(this.emit(st.crashLog,this.getCrashLog(lt.simdH264DecodeVideoWidthIsTooLarge,e)),this.player&&this.player._opt.simdH264DecodeVideoWidthIsTooLargeReplay){this.debug.log("EasyPro","simdH264DecodeVideoWidthIsTooLarge and reset player and play");const t=this._opt.url,i=this.isMute(),r={...this._opt.playOptions,isNotMute:!i};this._resetPlayer({useSIMD:!1,isNotMute:!i}).then((()=>{this.play(t,r).then((()=>{this.debug.log("EasyPro","simdH264DecodeVideoWidthIsTooLarge and reset player and play success")})).catch((t=>{this.emit(st.playFailedAndPaused,lt.simdH264DecodeVideoWidthIsTooLarge,{},e),this.debug.error("EasyPro","simdH264DecodeVideoWidthIsTooLarge and reset player and play error",t)}))})).catch((t=>{this.emit(st.playFailedAndPaused,lt.simdH264DecodeVideoWidthIsTooLarge,{},e),this.debug.error("EasyPro","simdH264DecodeVideoWidthIsTooLarge and _resetPlayer error",t)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this._pause(t).then((()=>{this.emit(st.playFailedAndPaused,lt.simdH264DecodeVideoWidthIsTooLarge,{},e),this.debug.error("EasyPro","simdH264DecodeVideoWidthIsTooLarge and simdDecodeErrorReplay is false")})).catch((t=>{this.emit(st.playFailedAndPaused,lt.simdH264DecodeVideoWidthIsTooLarge,{},e),this.debug.error("EasyPro","simdH264DecodeVideoWidthIsTooLarge and pause error",t)}))}})),this.player.once(st.networkDelayTimeout,(e=>{if(this.player._opt.networkDelayTimeoutReplay){if(this.isDestroyed())return void this.debug.log("EasyPro","networkDelayTimeout but player is destroyed");this.emit(st.crashLog,this.getCrashLog(st.networkDelayTimeout,e));const t=this._getVideoLastIframeInfo();this.debug.log("EasyPro","network delay time out and reset player and play");const i=this._opt.url,r=this.isMute(),s={...this._opt.playOptions,isNotMute:!r};let a={};this.player&&this.player._opt.replayUseLastFrameShow&&(a=Object.assign({},a,t,{loadingIcon:this.player._opt.replayShowLoadingIcon,isNotMute:!r})),this._resetPlayer(a).then((()=>{this.play(i,s).then((()=>{this.debug.log("EasyPro","wasm decode error and reset player and play success")})).catch((i=>{this.emit(st.playFailedAndPaused,st.networkDelayTimeout,t,e),this.debug.error("EasyPro","wasm decode error and reset player and play error",i)}))})).catch((()=>{this.emit(st.playFailedAndPaused,st.networkDelayTimeout,t,e),this.debug.error("EasyPro","wasm decode error and _resetPlayer error")}))}})),this.player.once(lt.fetchError,(e=>{if(this.isDestroyed())return void this.debug.log("EasyPro","fetchError but player is destroyed");this.emit(st.crashLog,this.getCrashLog(lt.fetchError,e));const t=this._getVideoLastIframeInfo();this.debug.log("EasyPro","fetch error and pause player");const i=!1===this._opt.playFailedUseLastFrameShow;this._pause(i).then((()=>{this.emit(st.playFailedAndPaused,lt.fetchError,t,e)})).catch((i=>{this.emit(st.playFailedAndPaused,lt.fetchError,t,e),this.debug.error("EasyPro","fetch error and pause",i)}))})),this.player.once(st.streamEnd,(e=>{if(this.isDestroyed())return void this.debug.log("EasyPro","streamEnd but player is destroyed and return");this.emit(st.crashLog,this.getCrashLog(st.streamEnd,e));const t=this._getVideoLastIframeInfo();let i={};if(this.player&&this.player._opt.replayUseLastFrameShow&&t.loadingBackgroundHeight&&(i=Object.assign({},i,t,{loadingIcon:this.player._opt.replayShowLoadingIcon})),this.player&&this.player._opt.websocket1006ErrorReplay&&""+e=="1006"){this.debug.log("EasyPro","streamEnd and websocket1006ErrorReplay is true and error is 1006 and reset player and play");const t=this.isMute(),r={...this._opt.playOptions,isNotMute:!t},s=this._opt.url;this._resetPlayer(i).then((()=>{setTimeout((()=>{this.isDestroyed()?this.debug.log("EasyPro","streamEnd and 1006 error but player is destroyed and return"):this.play(s,r).then((()=>{this.debug.log("EasyPro","streamEnd and 1006 error and reset player and play success")})).catch((t=>{this.emit(st.playFailedAndPaused,lt.streamEnd,{},e),this.debug.error("EasyPro","streamEnd and 1006 error and reset player and play error",t)}))}),1e3*this._opt.websocket1006ErrorReplayDelayTime)})).catch((t=>{this.emit(st.playFailedAndPaused,lt.streamEnd,{},e),this.debug.error("EasyPro","streamEnd and 1006 and _resetPlayer error",t)}))}else{this.debug.log("EasyPro","streamEnd pause player");const i=!1===this._opt.playFailedUseLastFrameShow;this._pause(i).then((()=>{this.emit(st.playFailedAndPaused,st.streamEnd,t,e)})).catch((i=>{this.emit(st.playFailedAndPaused,st.streamEnd,t,e),this.debug.error("EasyPro","streamEnd pause",i)}))}})),this.player.once(lt.websocketError,(e=>{if(this.isDestroyed())return void this.debug.log("EasyPro","websocketError but player is destroyed");this.emit(st.crashLog,this.getCrashLog(lt.websocketError,e));const t=this._getVideoLastIframeInfo();this.debug.log("EasyPro","websocketError and reset player");const i=!1===this._opt.playFailedUseLastFrameShow;this._pause(i).then((()=>{this.emit(st.playFailedAndPaused,lt.websocketError,t,e)})).catch((i=>{this.emit(st.playFailedAndPaused,lt.websocketError,t,e),this.debug.error("EasyPro","websocketError and pause",i)}))})),this.player.once(lt.webrtcError,(e=>{if(this.isDestroyed())return void this.debug.log("EasyPro","webrtcError but player is destroyed");this.emit(st.crashLog,this.getCrashLog(lt.webrtcError,e));const t=this._getVideoLastIframeInfo();this.debug.log("EasyPro","webrtcError and pause player");const i=!1===this._opt.playFailedUseLastFrameShow;this._pause(i).then((()=>{this.emit(st.playFailedAndPaused,lt.webrtcError,t,e)})).catch((i=>{this.emit(st.playFailedAndPaused,lt.webrtcError,t,e),this.debug.error("EasyPro","webrtcError and pause",i)}))})),this.player.once(lt.hlsError,(e=>{if(this.isDestroyed())return void this.debug.log("EasyPro","hlsError but player is destroyed");this.emit(st.crashLog,this.getCrashLog(lt.hlsError,e));const t=this._getVideoLastIframeInfo();this.debug.log("EasyPro","hlsError and pause player");const i=!1===this._opt.playFailedUseLastFrameShow;this._pause(i).then((()=>{this.emit(st.playFailedAndPaused,lt.hlsError,t,e)})).catch((i=>{this.emit(st.playFailedAndPaused,lt.hlsError,t,e),this.debug.error("EasyPro","hlsError and pause",i)}))})),this.player.once(lt.aliyunRtcError,(e=>{if(this.isDestroyed())return void this.debug.log("EasyPro","aliyunRtcError but player is destroyed");this.emit(st.crashLog,this.getCrashLog(lt.aliyunRtcError,e));const t=this._getVideoLastIframeInfo();this.debug.log("EasyPro","aliyunRtcError and pause player");const i=!1===this._opt.playFailedUseLastFrameShow;this._pause(i).then((()=>{this.emit(st.playFailedAndPaused,lt.aliyunRtcError,t,e)})).catch((i=>{this.emit(st.playFailedAndPaused,lt.aliyunRtcError,t,e),this.debug.error("EasyPro","aliyunRtcError and pause",i)}))})),this.player.once(lt.decoderWorkerInitError,(e=>{if(this.isDestroyed())return void this.debug.log("EasyPro","decoderWorkerInitError but player is destroyed");this.emit(st.crashLog,this.getCrashLog(lt.decoderWorkerInitError,e)),this.debug.log("EasyPro","decoderWorkerInitError and pause player");const t=!1===this._opt.playFailedUseLastFrameShow;this._pause(t).then((()=>{this.emit(st.playFailedAndPaused,lt.decoderWorkerInitError,{},e)})).catch((t=>{this.emit(st.playFailedAndPaused,lt.decoderWorkerInitError,{},e),this.debug.error("EasyPro","decoderWorkerInitError and pause",t)}))})),this.player.once(lt.videoElementPlayingFailedForWebrtc,(e=>{if(this.isDestroyed())return void this.debug.log("EasyPro","videoElementPlayingFailedForWebrtc but player is destroyed");this.emit(st.crashLog,this.getCrashLog(lt.videoElementPlayingFailedForWebrtc,e)),this.debug.log("EasyPro","videoElementPlayingFailedForWebrtc and pause player");const t=!1===this._opt.playFailedUseLastFrameShow;this._pause(t).then((()=>{this.emit(st.playFailedAndPaused,lt.videoElementPlayingFailedForWebrtc,{},e)})).catch((t=>{this.emit(st.playFailedAndPaused,lt.videoElementPlayingFailedForWebrtc,{},e),this.debug.error("EasyPro","videoElementPlayingFailedForWebrtc and pause",t)}))})),this.player.once(lt.videoInfoError,(e=>{if(this.isDestroyed())return void this.debug.log("EasyPro","videoInfoError but player is destroyed");this.emit(st.crashLog,this.getCrashLog(lt.videoInfoError,e)),this.debug.log("EasyPro","videoInfoError and pause player");const t=!1===this._opt.playFailedUseLastFrameShow;this._pause(t).then((()=>{this.emit(st.playFailedAndPaused,lt.videoInfoError,{},e)})).catch((t=>{this.emit(st.playFailedAndPaused,lt.videoInfoError,{},e),this.debug.error("EasyPro","videoInfoError and pause",t)}))})),this.player.once(st.webrtcStreamH265,(e=>{if(this.isDestroyed())return void this.debug.log("EasyPro","webrtcStreamH265 but player is destroyed");this.debug.log("EasyPro","webrtcStreamH265 and reset player and play");const t=this._opt.url,i=this.isMute(),r={...this._opt.playOptions,isNotMute:!i},s={isWebrtcH265:!0,isNotMute:!i};this._resetPlayer(s).then((()=>{this.play(t,r).then((()=>{this.debug.log("EasyPro","webrtcStreamH265 and reset player and play success")})).catch((t=>{this.emit(st.playFailedAndPaused,st.webrtcStreamH265,{},e),this.debug.error("EasyPro","webrtcStreamH265 and reset player and play error",t)}))})).catch((()=>{this.emit(st.playFailedAndPaused,st.webrtcStreamH265,{},e),this.debug.error("EasyPro","webrtcStreamH265 and _resetPlayer error")}))})),this.player.on(st.delayTimeout,(e=>{if(this.isDestroyed())return void this.debug.log("EasyPro","delay timeout but player is destroyed");this.emit(st.crashLog,this.getCrashLog(st.delayTimeout,e));const t=this._getVideoLastIframeInfo();if(this.player&&this.player._opt.heartTimeoutReplay&&(this._heartTimeoutReplayTimes{this.play(i,a).then((()=>{console.log("重连成功!",s),s&&this.forward(s)})).catch((i=>{this.emit(st.playFailedAndPaused,st.delayTimeout,t,e),this.debug.error("EasyPro","delay timeout replay error",i)}))})).catch((i=>{this.emit(st.playFailedAndPaused,st.delayTimeout,t,e),this.debug.error("EasyPro","delay timeout _resetPlayer error",i)}))}else{const i=!1===this._opt.playFailedUseLastFrameShow;this._pause(i).then((()=>{this.emit(st.playFailedAndPaused,st.delayTimeout,t,e),this.player&&(this.emit(st.delayTimeoutRetryEnd),this.emit(st.playFailedAndPaused,st.delayTimeoutRetryEnd)),this.debug.warn("EasyPro",`delayTimeoutRetryEnd and\n opt.heartTimeout is ${this.player&&this.player._opt.heartTimeout} and\n opt.heartTimeoutReplay is ${this.player&&this.player._opt.heartTimeoutReplay} and\n opt.heartTimeoutReplayTimes is ${this.player&&this.player._opt.heartTimeoutReplayTimes},and\n local._heartTimeoutReplayTimes is ${this._heartTimeoutReplayTimes}`)})).catch((i=>{this.emit(st.playFailedAndPaused,st.delayTimeout,t,e),this.debug.error("EasyPro","delay timeout and pause error",i)}))}})),this.player.on(st.loadingTimeout,(e=>{if(this.emit(st.crashLog,this.getCrashLog(st.loadingTimeout,e)),this.isDestroyed())this.debug.log("EasyPro","loading timeout but player is destroyed");else if(this.player&&this.player._opt.loadingTimeoutReplay&&(this._loadingTimeoutReplayTimes{this.play(t,s).then((()=>{r&&this.forward(r)})).catch((t=>{this.emit(st.playFailedAndPaused,st.loadingTimeout,{},e),this.debug.error("EasyPro","loading timeout replay error",t)}))})).catch((t=>{this.emit(st.playFailedAndPaused,st.loadingTimeout,{},e),this.debug.error("EasyPro","loading timeout _resetPlayer error",t)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this._pause(t).then((()=>{this.emit(st.playFailedAndPaused,st.loadingTimeout,{},e),this.player&&(this.emit(st.loadingTimeoutRetryEnd),this.emit(st.playFailedAndPaused,st.loadingTimeoutRetryEnd,{},e)),this.debug.log("EasyPro",`loadingTimeoutRetryEnd and\n opt.loadingTimeout is ${this.player&&this.player._opt.loadingTimeout} and\n opt.loadingTimeoutReplay is ${this.player&&this.player._opt.loadingTimeoutReplay} and\n local._loadingTimeoutReplayTimes time is ${this._loadingTimeoutReplayTimes} and\n opt.loadingTimeoutReplayTimes is ${this.player&&this.player._opt.loadingTimeoutReplayTimes}`)})).catch((t=>{this.emit(st.playFailedAndPaused,st.loadingTimeout,{},e),this.debug.error("EasyPro","loading timeout and pause error",t)}))}})),this._hasLoaded()?this.player.play(t,h).then((()=>{c()})).catch((e=>{this.debug.error("EasyPro","_hasLoaded() and play error",e),this.emit(st.crashLog,this.getCrashLog("_hasLoaded() and play error",e)),this.player&&this.player.pause().then((()=>{u(e)})).catch((e=>{u(e),this.debug.error("EasyPro","_hasLoaded() and play error and next pause error",e)}))})):this.player.once(st.decoderWorkerInit,(()=>{this.player.play(t,h).then((()=>{c()})).catch((e=>{this.debug.error("EasyPro","decoderWorkerInit and play error",e),this.emit(st.crashLog,this.getCrashLog("decoderWorkerInit and play error",e)),this.player&&this.player.pause().then((()=>{u(e)})).catch((e=>{u(e),this.debug.error("EasyPro","decoderWorkerInit and play error and next pause error",e)}))}))}))},j=this.player.getOption(),Y=w&&ka(this._opt.supportHls265),Q=m&&ka(this._opt.isWebrtcH265),X=w&&!!ua(),J=w&&j.demuxUseWorker;if(Y||Q||g||p||U||X||J)this.debug.log("EasyPro",`need reset player and\n isOldHls is ${Y} and isOldWebrtc is ${Q} and\n isAliyunRtc is ${g} and\n needResetPlayer(url change) is ${p} and\n isMpeg4 is ${U} and\n isHlsCanVideoPlay is ${X} and\n isHlsButDemuxUseWorker is ${J}`),this._resetPlayer({protocol:V,demuxType:H,isWsRtc:_,isHls:w,isWebrtc:m,isWebrtcForZLM:N,isWebrtcForSRS:z,isWebrtcForOthers:W,isAliyunRtc:g,cryptoKey:h.cryptoKey||"",cryptoIV:h.cryptoIV||"",url:t}).then((()=>{$()})).catch((e=>{u("reset player error")}));else{const e={protocol:V,demuxType:H,isHls:w,isWsRtc:_,isWebrtc:m,isAliyunRtc:g,isFlv:this._opt.isFlv,isFmp4:this._opt.isFmp4,isMpeg4:this._opt.isMpeg4,isNakedFlow:this._opt.isNakedFlow,isTs:this._opt.isTs,cryptoKey:h.cryptoKey||"",cryptoIV:h.cryptoIV||""};this._opt.isNakedFlow&&(e.mseDecodeAudio=!1),this.player.updateOption(e),h.cryptoKey&&h.cryptoIV&&this.player.decoderWorker&&(this.player.decoderWorker.updateWorkConfig({key:"cryptoKey",value:h.cryptoKey}),this.player.decoderWorker.updateWorkConfig({key:"cryptoIV",value:h.cryptoIV})),$()}}))}_resetDemuxType(e){this._opt.isFlv=!1,this._opt.isFmp4=!1,this._opt.isMpeg4=!1,this._opt.isNakedFlow=!1,this._opt.isHls=!1,this._opt.isWsRtc=!1,this._opt.isWebrtc=!1,this._opt.isWebrtcForZLM=!1,this._opt.isWebrtcForSRS=!1,this._opt.isWebrtcForOthers=!1,this._opt.isAliyunRtc=!1,this._opt.isTs=!1,e&&(this._opt[e]=!0),"isFmp4"!==e&&(this._opt.isFmp4Private=!1)}startVoice(){this.player.startVoice()}pauseVoice(){this.player.pauseVoice()}removeVoice(){this.player.removeVoice()}resize(){this.debug.log("EasyPro","resize()"),this.player&&this.player.resize()}setBufferTime(e){this.debug.log("EasyPro",`setBufferTime() ${e}`),(e=Number(e))>10&&this.debug.warn("EasyPro",`setBufferTime() buffer time is ${e} second, is too large, video will show blank screen until cache ${e} second buffer data`);const t=1e3*e;this._opt.videoBuffer=t,this.player?this.player.updateOption({videoBuffer:t},!0):this.debug.warn("EasyPro","setBufferTime() player is null")}setBufferDelayTime(e){this.debug.log("EasyPro",`setBufferDelayTime() ${e}`),(e=Number(e))<.2&&this.debug.warn("EasyPro",`setBufferDelayTime() buffer time delay is ${e} second, is too small`);const t=1e3*(e=bs(e,.2,100));this._opt.videoBufferDelay=t,this.player?this.player.updateOption({videoBufferDelay:t},!0):this.debug.warn("EasyPro","setBufferDelayTime() player is null")}setRotate(e){this.debug.log("EasyPro",`setRotate() ${e}`),e=parseInt(e,10);this._opt.rotate!==e&&-1!==[0,90,180,270].indexOf(e)?(this._opt.rotate=e,this.player?(this.player.updateOption({rotate:e}),this.resize()):this.debug.warn("EasyPro","setRotate() player is null")):this.debug.warn("EasyPro",`setRotate() rotate is ${e} and this._opt.rotate is ${this._opt.rotate}`)}setMirrorRotate(e){this.debug.log("EasyPro",`setMirrorRotate() ${e}`);e||(e="none"),this._opt.mirrorRotate!==e&&-1!==["none","level","vertical"].indexOf(e)?(this._opt.mirrorRotate=e,this.player?(this.player.updateOption({mirrorRotate:e}),this.resize()):this.debug.warn("EasyPro","setMirrorRotate() player is null")):this.debug.warn("EasyPro",`setMirrorRotate() mirrorRotate is ${e} and this._opt.mirrorRotate is ${this._opt.mirrorRotate}`)}setAspectRatio(e){this.debug.log("EasyPro",`setAspectRatio() ${e}`);e||(e="default"),this._opt.aspectRatio!==e&&-1!==["default","4:3","16:9"].indexOf(e)?(this._opt.aspectRatio=e,this.player?(this.player.updateOption({aspectRatio:e}),this.resize()):this.debug.warn("EasyPro","setAspectRatio() player is null")):this.debug.warn("EasyPro",`setAspectRatio() aspectRatio is ${e} and this._opt.aspectRatio is ${this._opt.mirrorRotate}`)}hasLoaded(){return!0}_hasLoaded(){return this.player&&this.player.loaded||!1}setKeepScreenOn(){this.debug.log("EasyPro","setKeepScreenOn()"),this._opt.keepScreenOn=!0,this.player?this.player.updateOption({keepScreenOn:!0}):this.debug.warn("EasyPro","setKeepScreenOn() player is not ready")}setFullscreen(e){this.debug.log("EasyPro",`setFullscreen() ${e}`);const t=!!e;this.player?this.player.fullscreen!==t?this.player.fullscreen=t:this.debug.warn("EasyPro",`setFullscreen() fullscreen is ${t} and this.player.fullscreen is ${this.player.fullscreen}`):this.debug.warn("EasyPro","setFullscreen() player is not ready")}setWebFullscreen(e){this.debug.log("EasyPro",`setWebFullscreen() ${e}`);const t=!!e;this.player?this.player.webFullscreen=t:this.debug.warn("EasyPro","setWebFullscreen() player is not ready")}screenshot(e,t,i,r){return this.debug.log("EasyPro",`screenshot() ${e} ${t} ${i} ${r}`),this.player&&this.player.video?this.player.video.screenshot(e,t,i,r):(this.debug.warn("EasyPro","screenshot() player is not ready"),console.log("没有player实例"),null)}screenshotWatermark(e){return new Promise(((t,i)=>{this.debug.log("EasyPro","screenshotWatermark()",e),this.player&&this.player.video?this.player.video.screenshotWatermark(e).then((e=>{t(e)})).catch((e=>{i(e)})):(this.debug.warn("EasyPro","screenshotWatermark() player is not ready"),i("player is not ready"))}))}startRecord(e,t){return new Promise(((i,r)=>{if(this.debug.log("EasyPro",`startRecord() ${e} ${t}`),!this.player)return this.debug.warn("EasyPro","startRecord() player is not ready"),r("player is not ready");this.player.playing?(this.player.startRecord(e,t),i()):(this.debug.warn("EasyPro","startRecord() player is not playing"),r("not playing"))}))}stopRecordAndSave(e,t){return new Promise(((i,r)=>{this.debug.log("EasyPro",`stopRecordAndSave() ${e} ${t}`),this.player&&this.player.recording?this.player.stopRecordAndSave(e,t).then((e=>{i(e)})).catch((e=>{r(e)})):r("not recording")}))}isPlaying(){let e=!1;return this.player&&(e=this.player.isPlaying()),e}isLoading(){return!!this.player&&this.player.loading}isPause(){let e=!1;return this._opt.playType===A?e=!this.isPlaying()&&!this.isLoading():this._opt.playType===b&&this.player&&(e=this.player.playbackPause),e}isPaused(){return this.isPause()}isPlaybackPause(){let e=!1;return this._opt.playType===b&&this.player&&(e=this.player.playbackPause),e}isMute(){let e=!0;return this.player&&(e=this.player.isAudioMute()),e}isRecording(){return this.player&&this.player.recorder&&this.player.recorder.recording||!1}isFullscreen(){let e=!1;return this.player&&(e=this.player.fullscreen),e}isWebFullscreen(){let e=!1;return this.player&&(e=this.player.webFullscreen),e}clearBufferDelay(){this.debug.log("EasyPro","clearBufferDelay()"),this.player?this.player.clearBufferDelay():this.debug.warn("EasyPro","clearBufferDelay() player is not init")}setNetworkDelayTime(e){this.debug.log("EasyPro",`setNetworkDelayTime() ${e}`),(e=Number(e))<1&&this.debug.warn("EasyPro",`setNetworkDelayTime() network delay is ${e} second, is too small`);const t=1e3*(e=bs(e,1,100));this._opt.networkDelay=t,this.player?this.player.updateOption({networkDelay:t},!0):this.debug.warn("EasyPro","setNetworkDelayTime() player is null")}getDecodeType(){let e="";return this.player&&(e=this.player.getDecodeType()),e}getRenderType(){let e="";return this.player&&(e=this.player.getRenderType()),e}getAudioEngineType(){let e="";return this.player&&(e=this.player.getAudioEngineType()),e}getPlayingTimestamp(){let e=0;return this.player&&(e=this.player.getPlayingTimestamp()),e}getStatus(){let e=Oi;return this.player&&(e=this.player.loading?Mi:this.player.playing?Ui:Fi),e}getPlayType(){return this.player?this.player._opt.playType:A}togglePerformancePanel(e){this.debug.log("EasyPro",`togglePerformancePanel() ${e}`);const t=this.player._opt.showPerformance;let i=!t;js(e)&&(i=e),i!==t?this.player?this.player.togglePerformancePanel(i):this.debug.warn("EasyPro","togglePerformancePanel() failed, this.player is not init"):this.debug.warn("EasyPro",`togglePerformancePanel() failed, showPerformance is prev: ${t} === now: ${i}`)}openZoom(){this.debug.log("EasyPro","openZoom()"),this.player?this.player.zooming=!0:this.debug.warn("EasyPro","openZoom() failed, this.player is not init")}closeZoom(){this.debug.log("EasyPro","closeZoom()"),this.player?this.player.zooming=!1:this.debug.warn("EasyPro","closeZoom() failed, this.player is not init")}isZoomOpen(){let e=!1;return this.player&&(e=this.player.zooming),e}toggleZoom(e){this.debug.log("EasyPro",`toggleZoom() ${e}`),js(e)||(e=!this.isZoomOpen()),Ta(e)?this.openZoom():ka(!1)&&this.closeZoom()}expandZoom(){this.debug.log("EasyPro","expandZoom()"),this.player&&this.player.zoom&&this.player.zooming?this.player.zoom.expandPrecision():this.debug.warn("EasyPro","expandZoom() failed, zoom is not open or not init")}narrowZoom(){this.debug.log("EasyPro","narrowZoom()"),this.player&&this.player.zoom&&this.player.zooming?this.player.zoom.narrowPrecision():this.debug.warn("EasyPro","narrowZoom failed, zoom is not open or not init")}getCurrentZoomIndex(){let e=1;return this.player&&this.player.zoom&&(e=this.player.zoom.currentZoom),e}startTalk(e,t={}){return new Promise(((i,r)=>{this.debug.log("EasyPro","startTalk()",e,t),this._initTalk(t),this.talk.startTalk(e).then((()=>{i(),this.talk.once(st.talkStreamClose,(()=>{this.debug.warn("EasyPro","talk stream close"),this.stopTalk().catch((e=>{}))})),this.talk.once(st.talkStreamError,(e=>{this.debug.warn("EasyPro","talk stream error",e),this.stopTalk().catch((e=>{}))})),this.talk.once(st.talkStreamInactive,(()=>{this.debug.warn("EasyPro","talk stream inactive"),this.stopTalk().catch((e=>{}))}))})).catch((e=>{r(e)}))}))}stopTalk(){return new Promise(((e,t)=>{if(this.debug.log("EasyPro","stopTalk()"),!this.talk)return t("stopTalk() talk is not init");this.talk.destroy(),e()}))}getTalkVolume(){return new Promise(((e,t)=>{if(!this.talk)return t("getTalkVolume() talk is not init");e(this.talk.volume)}))}setTalkVolume(e){return new Promise(((t,i)=>{if(this.debug.log("EasyPro","setTalkVolume()",e),!this.talk)return i("setTalkVolume() talk is not init");this.talk.setVolume(e/100),t()}))}setNakedFlowFps(e){return new Promise(((t,i)=>{if(this.debug.log("EasyPro","setNakedFlowFps()",e),$s(e))return i("setNakedFlowFps() fps is empty");let r=Number(e);r=bs(r,1,100),this._opt.nakedFlowFps=r,this.player?this.player.updateOption({nakedFlowFps:r}):this.debug.warn("EasyPro","setNakedFlowFps() player is null"),t()}))}getCrashLog(e,t=""){if(!this.player)return;const i=this.player.getAllStatsData(),r=this.player;let s={url:this._opt.url,playType:r.isPlayback()?"playback":"live",demuxType:r.getDemuxType(),decoderType:r.getDecodeType(),renderType:r.getRenderType(),videoInfo:{encType:"",width:"",height:""},audioInfo:{encType:"",sampleRate:"",channels:""},audioEngine:r.getAudioEngineType(),allTimes:i.pTs,timestamp:vs(),type:e,error:ga(t)||e};if(r.video){const e=r.video.videoInfo||{};s.videoInfo={encType:e.encType||"",width:e.width||"",height:e.height||""}}if(r.audio){const e=r.audio.audioInfo||{};s.audioInfo={encType:e.encType||"",sampleRate:e.sampleRate||"",channels:e.channels||""}}return s}updateDebugLevel(e){this.debug.log("EasyPro","updateDebugLevel()",e),e===Y||e===Q?e!==this.player._opt.debugLevel?(this._opt.debugLevel=e,this.player?this.player.updateOption({debugLevel:e},!0):this.debug.warn("EasyPro","updateDebugLevel() player is null")):this.debug.warn("EasyPro",`updateDebugLevel() level is same, level: ${e}`):this.debug.warn("EasyPro",`updateDebugLevel() level is not valid, level: ${e}`)}updateWatermark(e){this.debug.log("EasyPro","updateWatermark()",e),this.player?this.player.updateWatermark(e):this.debug.warn("EasyPro","updateWatermark() player is not init")}removeWatermark(){this.debug.log("EasyPro","removeWatermark()"),this.player?this.player.removeWatermark():this.debug.warn("EasyPro","removeWatermark() player is not init")}updateFullscreenWatermark(e){if(this.debug.log("EasyPro","updateFullscreenWatermark()",e),sa(e)){this._opt.fullscreenWatermarkConfig=e;const t=Ys(this.$container,e);if(!t.watermark_txt)return void this.debug.warn("EasyPro","fullscreenWatermarkConfig text is empty");this.watermark.load(t)}else this.debug.warn("EasyPro",`updateFullscreenWatermark() config is not valid, config: ${e}`)}removeFullscreenWatermark(){this.debug.log("EasyPro","removeFullscreenWatermark()"),this.watermark?this.watermark.remove():this.debug.warn("EasyPro","removeFullscreenWatermark() watermark is not init")}faceDetectOpen(){this.debug.log("EasyPro","faceDetectOpen()"),this.player?this.player.faceDetect(!0):this.debug.warn("EasyPro","faceDetectOpen() player is not init")}faceDetectClose(){this.debug.log("EasyPro","faceDetectClose()"),this.player?this.player.faceDetect(!1):this.debug.warn("EasyPro","faceDetectClose() player is not init")}objectDetectOpen(){this.debug.log("EasyPro","objectDetectOpen()"),this.player?this.player.objectDetect(!0):this.debug.warn("EasyPro","objectDetectOpen() player is not init")}objectDetectClose(){this.debug.log("EasyPro","objectDetectClose()"),this.player?this.player.objectDetect(!1):this.debug.warn("EasyPro","objectDetectClose() player is not init")}sendWebsocketMessage(e){this.debug.log("EasyPro","sendWebsocketMessage()",e),this.player?this.player.sendWebsocketMessage(e):this.debug.warn("EasyPro","sendWebsocketMessage() player is not init")}addContentToCanvas(e){this.debug.log("EasyPro","addContentToCanvas()"),this.player?this.player.addContentToCanvas(e):this.debug.warn("EasyPro","addContentToCanvas() player is not init")}clearContentToCanvas(){this.debug.log("EasyPro","clearContentToCanvas()"),this.player?this.player.addContentToCanvas([]):this.debug.warn("EasyPro","clearContentToCanvas() player is not init")}setControlHtml(e){this.debug.log("EasyPro","setControlHtml()",e),this.player?this.player.setControlHtml(e):this.debug.warn("EasyPro","setControlHtml() player is not init")}clearControlHtml(){this.debug.log("EasyPro","clearControlHtml()"),this.player?this.player.clearControlHtml():this.debug.warn("EasyPro","clearControlHtml() player is not init")}getVideoInfo(){let e=null;return this.player&&(e=this.player.getVideoInfo()),e}getAudioInfo(){let e=null;return this.player&&(e=this.player.getAudioInfo()),e}setSm4CryptoKey(e){this.debug.log("EasyPro","setSm4CryptoKey()",e),32===(e=""+e).length?(this._opt.sm4CryptoKey=e,this.player?this.player.updateOption({sm4CryptoKey:e},!0):this.debug.warn("EasyPro","setSm4CryptoKey() player is null")):this.debug.warn("EasyPro",`setSm4CryptoKey() key is invalid and length is ${e.length} !== 32`)}setM7sCryptoKey(e){this.debug.log("EasyPro","setM7sCryptoKey()",e),e=""+e,this._opt.m7sCryptoKey=e,this.player?this.player.updateOption({m7sCryptoKey:e},!0):this.debug.warn("EasyPro","setM7sCryptoKey() player is null")}setXorCryptoKey(e){this.debug.log("EasyPro","setXorCryptoKey()",e),e=""+e,this._opt.xorCryptoKey=e,this.player?this.player.updateOption({xorCryptoKey:e},!0):this.debug.warn("EasyPro","setXorCryptoKey() player is null")}updateLoadingText(e){this.debug.log("EasyPro","updateLoadingText()",e),this.player?this.player.updateLoadingText(e):this.debug.warn("EasyPro","updateLoadingText() player is null")}updateIsEmitSEI(e){this.debug.log("EasyPro","updateIsEmitSEI()",e),this._opt.isEmitSEI=e,this.player?this.player.updateOption({isEmitSEI:e},!0):this.debug.warn("EasyPro","updateIsEmitSEI() player is null")}getPTZCmd(e,t){if(this.debug.log("EasyPro","getPTZCmd()",e),e)return this.player?Xc({type:e,index:0,speed:t}):void this.debug.warn("EasyPro","getPTZCmd() player is null");this.debug.warn("EasyPro","getPTZCmd() ptz is null")}downloadTempNakedFlowFile(){return new Promise(((e,t)=>{this.player?(this.player.downloadNakedFlowFile(),e()):t("player is not init")}))}downloadTempFmp4File(){return new Promise(((e,t)=>{this.player?(this.player.downloadFmp4File(),e()):t("player is not init")}))}downloadTempMpeg4File(){return new Promise(((e,t)=>{this.player?(this.player.downloadMpeg4File(),e()):t("player is not init")}))}downloadTempRtpFile(){return new Promise(((e,t)=>{this.talk?(this.talk.downloadRtpFile(),e()):t("talk is not init")}))}downloadMemoryLog(){this.memoryLogger&&this.memoryLogger.download()}_getVideoLastIframeInfo(){const e=this.getVideoInfo()||{};return{loadingBackground:this.screenshot("","png",.92,"base64"),loadingBackgroundWidth:e.width||0,loadingBackgroundHeight:e.height||0}}getExtendBtnList(){this.debug.log("EasyPro","getExtendBtnList()");let e=[];return this.player?e=this.player.getExtendBtnList():this.debug.warn("EasyPro","getExtendBtnList() player is null"),e}getFlvMetaData(){this.debug.log("EasyPro","getFlvMetaData()");let e=null;return this.player?e=this.player.getMetaData():this.debug.warn("EasyPro","getFlvMetaData() player is null"),e}updateAiFaceDetectInterval(e){this.debug.log("EasyPro","updateAiFaceDetectInterval()",e);const t=1e3*(e=Number(e));this._opt.aiFaceDetectInterval=t,this.player?this.player.updateOption({aiFaceDetectInterval:t}):this.debug.warn("EasyPro","updateAiFaceDetectInterval() player is null")}updateAiFaceDetectLevel(e){if(this.debug.log("EasyPro","updateAiFaceDetectLevel()",e),!Rr[e])return void this.debug.warn("EasyPro",`'updateAiFaceDetectLevel() level ${e} is invalid'`);const t=Rr[e];this._opt.aiFaceDetectWidth=t,this.player?(this.player.updateOption({aiFaceDetectWidth:t}),this.player.ai&&this.player.ai.updateFaceDetectorConfig({detectWidth:t})):this.debug.warn("EasyPro","updateAiFaceDetectLevel() player is null")}updateAiObjectDetectInterval(e){this.debug.log("EasyPro","updateAiObjectDetectInterval()",e);const t=1e3*(e=Number(e));this._opt.aiObjectDetectInterval=t,this.player?this.player.updateOption({aiObjectDetectInterval:t}):this.debug.warn("EasyPro","updateAiObjectDetectInterval() player is null")}updateAiObjectDetectLevel(e){if(this.debug.log("EasyPro","updateAiObjectDetectLevel()",e),!xr[e])return void this.debug.warn("EasyPro",`'updateAiObjectDetectLevel() level ${e} is invalid'`);const t=xr[e];this._opt.aiObjectDetectWidth=t,this.player?(this.player.updateOption({aiObjectDetectWidth:t}),this.player.ai&&this.player.ai.updateObjectDetectorConfig({detectWidth:t})):this.debug.warn("EasyPro","updateAiObjectDetectLevel() player is null")}setCryptoKeyUrl(e){this.debug.log("EasyPro","setCryptoKeyUrl()",e),e&&(this._opt.cryptoKeyUrl=e)}showErrorMessageTips(e){this.debug.log("EasyPro","showErrorMessageTips()",e),e&&(this.player?this.player.showTipsMessageByContent(e):this.debug.warn("EasyPro","showErrorMessageTips() player is null"))}hideErrorMessageTips(){this.debug.log("EasyPro","hideErrorMessageTips()"),this.player?this.player.hideTipsMessage():this.debug.warn("EasyPro","hideErrorMessageTips() player is null")}}ru.ERROR=lt,ru.EVENTS=at,window.EasyPlayerPro=ru,window.WebPlayerPro=ru;kd('.easyplayer-multi-container .easyplayer-multi-player-container-v2{overflow:hidden;width:100%;height:100%;position:relative;display:grid;grid-template-columns:repeat(var(--split),1fr);grid-template-rows:repeat(var(--split),1fr)}.easyplayer-multi-container .easyplayer-multi-player-container-v2 .easyplayer-multi-player{overflow:hidden;position:relative;width:100%;height:100%}.easyplayer-multi-container .easyplayer-multi-player-container-v2 .easyplayer-multi-player .easyplayer-multi-player-draw-window{position:absolute;z-index:1;width:calc(100% - 2px);height:calc(100% - 2px);color:#fff;transition:all .25s}.easyplayer-multi-container .easyplayer-multi-player-container-v2 .easyplayer-multi-player .easyplayer-multi-player-video-window{position:absolute;left:1px;top:1px;z-index:2;width:calc(100% - 2px);height:calc(100% - 2px)}.easyplayer-multi-container .easyplayer-multi-player[fullscreen="1"]{grid-column-start:1;grid-column-end:9;grid-row-start:1;grid-row-end:9}.easyplayer-multi-container .easyplayer-multi-layout-6 .easyplayer-multi-player[order="0"]{grid-column-start:1;grid-column-end:3;grid-row-start:1;grid-row-end:3}.easyplayer-multi-container .easyplayer-multi-layout-9 .easyplayer-multi-player[order="0"]{grid-column-start:1;grid-column-end:4;grid-row-start:1;grid-row-end:4}');class su extends t{constructor(e={}){super(),this._opt={},Object.keys(e).forEach((t=>{if(void 0===e[t])throw new Error(`easyplayer-pro-multi option "${t}" can not be undefined`)}));const t=_a(ar);this._opt=Object.assign({},t,e),this.LOG_TAG="easyplayerProMulti";let i=e.container;if("string"==typeof e.container&&(i=document.querySelector(e.container)),!i)throw new Error("easyplayer-pro-multi need container option");if("CANVAS"===i.nodeName||"VIDEO"===i.nodeName)throw new Error(`easyplayer-pro-multi container type can not be ${i.nodeName} type`);i.classList.add("easyplayer-multi-container"),this.maxWindowSize=this._opt.maxSplit*this._opt.maxSplit,this.currentWindowIndex=-1,this.currentWindowUuid=null,this.specialLayoutType=null,this.startDragWindowItem=null,this.windowList=[],this.$container=i,this.debug=new Xr(this),this.events=new Ma(this),this._opt.split||(this._opt.split=1),Ta(this._opt.draggable)?this._initWindows$2():this._initWindows(),this._innerArrangeWindow(this._opt.split,!0),this._initEvents(),this._handleWindowSelect(0),this._listenFullscreenChange()}destroy(){return new Promise(((e,t)=>{if(this.debug.log(this.LOG_TAG,"destroy()"),this.off(),this.events&&(this.events.destroy(),this.events=null),this.specialLayoutType=null,this.startDragWindowItem=null,this.currentWindowUuid=null,this.currentWindowIndex=-1,this.$container&&(this.$container.classList.remove("easyplayer-multi-container"),this.$container=null),this.windowList){const i=[];this.windowList.forEach((e=>{e.$playerContainerEvents.forEach((e=>{e()})),e.player&&i.push(e.player.destroy())})),Promise.all(i).then((()=>{this.windowList.forEach((e=>{e.player=null})),this.windowList=[],e()})).catch((e=>{t(e)}))}else e();this.debug&&this.debug.log(this.LOG_TAG,"destroy")}))}_createPlayer(e){const t=this._findWindowItemIndex(e);e.uuid;const i=this._opt;i.supportDblclickContainerFullscreen&&(i.supportDblclickFullscreen=!1);const r=new ru({...i,isMulti:!0,multiIndex:t,container:e.$player});return Object.keys(at).forEach((e=>{r.on(at[e],((...i)=>{this.emit(e,t,...i)}))})),r.on(st.close,(()=>{this.emit(st.close,t),e.player=null})),r}_initWindows(){let e="";for(let t=0;t\n
\n
\n
未选择视频
\n \n `;const t=`
${e}
`;this.$container.innerHTML=t;const i=this.$container.querySelectorAll(".easyplayer-multi-player");for(let e=0;e\n
\n
\n
未选择视频
\n \n `;const i=`
\n ${e}\n
`;this.$container.innerHTML=i,this.$multiContainer=this.$container.querySelector(".easyplayer-multi-player-container-v2");const r=this.$container.querySelectorAll(".easyplayer-multi-player");for(let e=0;e{const r=t.$playerContainer,s=e(r,"click",(e=>{const t=Da(r,"uuid"),i=this._findWindowItemIndexByUuid(t);if(this.emit(nr.selected,i,e),this.getSelectedWindowUuid()===t){if(this._getWindowItem(t).isContainerFullscreen)return}1!==this._opt.split&&this._handleWindowSelect(i)})),a=e(r,"dblclick",(e=>{const t=Da(r,"uuid"),i=this._findWindowItemIndexByUuid(t);this.emit(nr.dblSelected,i,e),this._opt.supportDblclickContainerFullscreen&&1!==this._opt.split&&this._handleWindowContainerFullscreen(i)})),n=e(r,"mouseup",(e=>{const t=Da(r,"uuid"),i=this._findWindowItemIndexByUuid(t);this.emit(nr.mouseup,i,e)})),o=e(r,"mouseover",(e=>{const t=Da(r,"uuid"),i=this._findWindowItemIndexByUuid(t);this.emit(nr.mouseover,i,e)})),l=e(r,"mouseout",(e=>{const t=Da(r,"uuid"),i=this._findWindowItemIndexByUuid(t);this.emit(nr.mouseout,i,e)})),d=e(r,"mousedown",(e=>{const t=Da(r,"uuid"),i=this._findWindowItemIndexByUuid(t);this.emit(nr.mousedown,i,e)})),h=e(r,"dragover",(e=>{e.preventDefault()})),c=e(r,"dragenter",(e=>{const t=Da(r,"uuid"),i=this._findWindowItemIndexByUuid(t);this.emit(nr.dragenter,i,e)})),u=e(r,"dragleave",(e=>{const t=Da(r,"uuid"),i=this._findWindowItemIndexByUuid(t);this.emit(nr.dragleave,i,e)})),p=e(r,"drop",(e=>{const t=Da(r,"uuid"),i=this._findWindowItemIndexByUuid(t);if(e.preventDefault(),this._opt.draggable&&this.startDragWindowItem){const e=this.startDragWindowItem.$playerContainer,t=e.style.order;e.style.order=r.style.order,e.setAttribute("order",e.style.order),r.setAttribute("order",t),r.style.order=t,this.debug.log(this.LOG_TAG,`player Drop ${t} -> ${e.style.order}`),this._sortWindows()}this.emit(nr.drop,i,e)}));if(t.$playerContainerEvents=[s,n,o,l,d,a,h,c,u,p],this._opt.draggable){const i=e(r,"dragstart",(e=>{const t=Da(r,"uuid"),i=this._findWindowItemIndexByUuid(t);this._handleWindowSelect(i),this.startDragWindowItem=this._getWindowItem(i),this.emit(nr.dragstart,i,e,r)}));t.$playerContainerEvents.push(i)}if(this._opt.supportMousemoveEvent){const i=e(r,"mousemove",(e=>{const t=Da(r,"uuid"),i=this._findWindowItemIndexByUuid(t);this.emit(nr.mousemove,i,e)}));t.$playerContainerEvents.push(i)}}))}_getContainerRect(){const e=this.$container.getBoundingClientRect();return{width:parseInt(e.width),height:parseInt(e.height)}}_updateWindows(){const e=this._getContainerRect(),t=e.width,i=e.height,r=this._opt.split,s=t%r,a=i%r,n=(t-s-2*r)/r,o=(i-a-2*r)/r,l=(t-s)/r,d=(i-a)/r;let h=this._getCurrentMaxSplit();for(let e=0;e=Math.pow(r,2)?a:0),f=l+(e%r==r-1?s:0),y=d+(e+r>=Math.pow(r,2)?a:0);i.style.width=f+"px",i.style.height=y+"px",i.style.display="block",c.style.width=u+"px",c.style.height=p+"px",c.style.display="block",h.style.width=u+"px",h.style.height=p+"px",h.style.display="block",t.player&&t.player.resize()}if(this.specialLayoutType){const e=this.windowList[0],t=e.$playerContainer,i=e.$player,r=e.$playerBorder,s=t.style.width.replace("px",""),a=t.style.height.replace("px",""),n=i.style.width.replace("px",""),o=i.style.height.replace("px","");let l,d,c,u;this.specialLayoutType===or?(l=2*s,d=2*a,c=2*n+2,u=2*o+2):this.specialLayoutType===lr&&(l=3*s,d=3*a,c=3*n+4,u=3*o+4),t.style.width=l+"px",t.style.height=d+"px",i.style.width=c+"px",i.style.height=u+"px",r.style.width=c+"px",r.style.height=u+"px",e.player&&e.player.resize(),h=this._getSpecialMaxSplit()}for(let e=h;e{e.$playerContainer.draggable=this._opt.split>1}))}_sortWindows(){const e=[];for(let t=0;t1&&(this.windowList.forEach((e=>{t.$playerBorder.style.display="block",e.$playerBorder.style.border=`1px solid ${this._opt.style.border}`})),this._opt.showSelectedBorder&&(t.$playerBorder.style.border=`1px solid ${this._opt.style.borderSelect}`))):this.debug.warn(this.LOG_TAG,`_handleWindowSelect() ${e} is not exist`),1===this._opt.split&&(t.$playerBorder.style.display="none")}_handleWindowContainerFullscreen(e,t){const i=this._getWindowItem(e);if(i){if(js(t)&&t===i.isContainerFullscreen)return;if(this._opt.draggable)i.isContainerFullscreen?(i.$playerContainer.setAttribute("fullscreen","0"),i.$playerContainer.style.fullscreen="0"):(i.$playerContainer.setAttribute("fullscreen","1"),i.$playerContainer.style.fullscreen="1");else if(i.isContainerFullscreen)i.$playerContainer.style.position="relative",i.$playerContainer.style.left="auto",i.$playerContainer.style.top="auto",i.$playerContainer.style.zIndex="auto",i.$playerContainer.style.width=i.prevInfo.playerContainerWidth,i.$playerContainer.style.height=i.prevInfo.playerContainerHeight,i.$player.style.width=i.prevInfo.playerWidth,i.$player.style.height=i.prevInfo.playerHeight,this.getSelectedWindowUuid()===i.uuid&&(i.$playerBorder.style.display="block");else{const e=this._getContainerRect(),t=e.width,r=e.height;i.prevInfo={playerContainerWidth:i.$playerContainer.style.width,playerContainerHeight:i.$playerContainer.style.height,playerWidth:i.$player.style.width,playerHeight:i.$player.style.height},i.$playerContainer.style.position="absolute",i.$playerContainer.style.top="0",i.$playerContainer.style.left="0",i.$playerContainer.style.zIndex="10",i.$playerContainer.style.width=t+"px",i.$playerContainer.style.height=r+"px",i.$player.style.width=t+"px",i.$player.style.height=r+"px",i.$playerBorder.style.display="none"}i.isContainerFullscreen=!i.isContainerFullscreen,i.player&&i.player.resize()}else this.debug.warn(this.LOG_TAG,`handleWindowContainerFullscreen() ${e} is not exist`)}_handleFullscreenResize(e=5){let t=this._getContainerRect(),i=0;const r=setInterval((()=>{const s=es.isFullscreen,a=this._getContainerRect(),n={width:screen.width,height:screen.height};this.debug.log(this.LOG_TAG,`isInFullscreen ${s} , checkRectInterval times : ${i} nowRect:${JSON.stringify(a)}, prevRect:${JSON.stringify(t)} ,window screen rect:${JSON.stringify(n)}`);const o=a.width===t.width&&a.height===t.height,l=!s||n.width-a.width<10&&n.height-a.height<10;if(o&&l||i>=e)return this.resize(),void clearInterval(r);t=a,i++}),1e3)}_listenFullscreenChange(){try{const e=e=>{la(e)===this.$container&&(this.emit(nr.multiFullscreen,es.isFullscreen),es.isFullscreen||-1!==window.navigator.userAgent.indexOf("Edg")?this._handleFullscreenResize():this.resize())};es.on("change",e),this.events.destroys.push((()=>{es.off("change",e)}))}catch(e){}}play(e,t,i){return new Promise(((r,s)=>{(Ns(t)||aa(t))&&(i=t,t={});const a=this._getWindowItem(i);if(a)if(a.player)a.player.play(e,t).then((()=>{r()})).catch((e=>{s(e)}));else{const i=this._createPlayer(a);a.player=i,i.play(e,t).then((()=>{r()})).catch((e=>{s(e)}))}else s(`play() windowIndex ${selectedWindowIndex} is not exist`)}))}getOption(e){const t=this._getWindowItem(e);return t&&t.player?t.player.getOption():(this.debug.warn(this.LOG_TAG,`getOption() windowIndex ${e} is not exist`),{})}setDebug(e,t){const i=this._getWindowItem(t);i&&i.player?i.player.setDebug(e):this.debug.warn(this.LOG_TAG,`setDebug() windowIndex ${t} is not exist`)}mute(e){const t=this._getWindowItem(e);t&&t.player?t.player.mute():this.debug.warn(this.LOG_TAG,`mute() windowIndex ${e} is not exist`)}cancelMute(e){const t=this._getWindowItem(e);t&&t.player?t.player.cancelMute():this.debug.warn(this.LOG_TAG,`cancelMute() windowIndex ${e} is not exist`)}setVolume(e,t){const i=this._getWindowItem(t);i&&i.player?i.player.setVolume(e):this.debug.warn(this.LOG_TAG,`setVolume() windowIndex ${t} is not exist`)}audioResume(e){const t=this._getWindowItem(e);t&&t.player?t.player.audioResume():this.debug.warn(this.LOG_TAG,`audioResume() windowIndex ${e} is not exist`)}setTimeout(e,t){const i=this._getWindowItem(t);i&&i.player?i.player.setTimeout(e):this.debug.warn(this.LOG_TAG,`setTimeout() windowIndex ${t} is not exist`)}setScaleMode(e,t){const i=this._getWindowItem(t);i&&i.player?i.player.setScaleMode(e):this.debug.warn(this.LOG_TAG,`setScaleMode() windowIndex ${t} is not exist`)}pause(e=!1,t){return new Promise(((i,r)=>{const s=this._getWindowItem(t);s&&s.player?s.player.pause(e).then((()=>{i()})).catch((e=>{r(e)})):r(`pause() windowIndex ${t} is not exist`)}))}close(e){return new Promise(((t,i)=>{const r=this._getWindowItem(e);r&&r.player?r.player.close().then((()=>{t()})).catch((e=>{i(e)})):i(`close() windowIndex ${e} is not exist`)}))}clearView(e){const t=this._getWindowItem(e);t&&t.player?t.player.clearView():this.debug.warn(this.LOG_TAG,`clearView() windowIndex ${e} is not exist`)}setStreamQuality(e,t){const i=this._getWindowItem(t);i&&i.player?i.player.setStreamQuality(e):this.debug.warn(this.LOG_TAG,`setStreamQuality() windowIndex ${t} is not exist`)}resize(){this._opt.draggable?this._updateWindows$2():this._updateWindows()}setBufferTime(e,t){const i=this._getWindowItem(t);i&&i.player?i.player.setBufferTime(e):this.debug.warn(this.LOG_TAG,`setBufferTime() windowIndex ${t} is not exist`)}setBufferDelayTime(e,t){const i=this._getWindowItem(t);i&&i.player?i.player.setBufferDelayTime(e):this.debug.warn(this.LOG_TAG,`setBufferDelayTime() windowIndex ${t} is not exist`)}setRotate(e,t){const i=this._getWindowItem(t);i&&i.player?i.player.setRotate(e):this.debug.warn(this.LOG_TAG,`setRotate() windowIndex ${t} is not exist`)}setMirrorRotate(e,t){const i=this._getWindowItem(t);i&&i.player?i.player.setMirrorRotate(e):this.debug.warn(this.LOG_TAG,`setMirrorRotate() windowIndex ${t} is not exist`)}updateIsEmitSEI(e,t){const i=this._getWindowItem(t);i&&i.player?i.player.updateIsEmitSEI(e):this.debug.warn(this.LOG_TAG,`updateIsEmitSEI() windowIndex ${t} is not exist`)}setAspectRatio(e,t){const i=this._getWindowItem(t);i&&i.player?i.player.setAspectRatio(e):this.debug.warn(this.LOG_TAG,`setAspectRatio() windowIndex ${t} is not exist`)}hasLoaded(e){const t=this._getWindowItem(e);return!(!t||!t.player)&&t.player.hasLoaded()}setKeepScreenOn(e){const t=this._getWindowItem(e);t&&t.player?t.player.setKeepScreenOn():this.debug.warn(this.LOG_TAG,`setKeepScreenOn() windowIndex ${e} is not exist`)}setFullscreen(e,t){const i=this._getWindowItem(t);i&&i.player?i.player.setFullscreen(e):this.debug.warn(this.LOG_TAG,`setFullscreen() windowIndex ${t} is not exist`)}screenshot(e,t){const i=this._getWindowItem(t);return i&&i.player?i.player.screenshot(e.filename,e.format,e.quality,e.type):null}screenshotWatermark(e,t){const i=this._getWindowItem(t);return i&&i.player?i.player.screenshotWatermark(e):null}startRecord(e,t,i){return new Promise(((r,s)=>{const a=this._getWindowItem(i);a&&a.player?a.player.startRecord(e,t).then((()=>{r()})).catch((e=>{s(e)})):(this.debug.warn(this.LOG_TAG,`startRecord() windowIndex ${i} is not exist`),s(`windowIndex ${i} is not exist`))}))}stopRecordAndSave(e,t,i){return new Promise(((r,s)=>{const a=this._getWindowItem(i);a&&a.player?a.player.stopRecordAndSave(e,t).then((e=>{r(e)})).catch((e=>{s(e)})):(this.debug.warn(this.LOG_TAG,`stopRecordAndSave() windowIndex ${i} is not exist`),s(`windowIndex ${i} is not exist`))}))}isPlaying(e){const t=this._getWindowItem(e);return t&&t.player?t.player.isPlaying():(this.debug.warn(this.LOG_TAG,`isPlaying() windowIndex ${e} is not exist`),!1)}isLoading(e){const t=this._getWindowItem(e);return t&&t.player?t.player.isLoading():(this.debug.warn(this.LOG_TAG,`isLoading() windowIndex ${e} is not exist`),!1)}isPaused(e){const t=this._getWindowItem(e);return t&&t.player?t.player.isPaused():(this.debug.warn(this.LOG_TAG,`windowIndex ${e} is not exist`),!1)}isMute(e){const t=this._getWindowItem(e);return t&&t.player?t.player.isMute():(this.debug.warn(this.LOG_TAG,`isMute() windowIndex ${e} is not exist`),!1)}isRecording(e){const t=this._getWindowItem(e);return t&&t.player?t.player.isRecording():(this.debug.warn(this.LOG_TAG,`isRecording() windowIndex ${e} is not exist`),!1)}clearBufferDelay(e){const t=this._getWindowItem(e);t&&t.player?t.player.clearBufferDelay():this.debug.warn(this.LOG_TAG,`clearBufferDelay() windowIndex ${e} is not exist`)}setNetworkDelayTime(e,t){const i=this._getWindowItem(t);i&&i.player?i.player.setNetworkDelayTime(e):this.debug.warn(this.LOG_TAG,`setNetworkDelayTime() windowIndex ${t} is not exist`)}getDecodeType(e){const t=this._getWindowItem(e);return t&&t.player?t.player.getDecodeType():(this.debug.warn(this.LOG_TAG,`getDecodeType() windowIndex ${e} is not exist`),null)}getRenderType(e){const t=this._getWindowItem(e);return t&&t.player?t.player.getRenderType():(this.debug.warn(this.LOG_TAG,`windowIndex ${e} is not exist`),null)}getAudioEngineType(e){const t=this._getWindowItem(e);return t&&t.player?t.player.getAudioEngineType():(this.debug.warn(this.LOG_TAG,`windowIndex ${e} is not exist`),null)}getPlayingTimestamp(e){const t=this._getWindowItem(e);return t&&t.player?t.player.getPlayingTimestamp():(this.debug.warn(this.LOG_TAG,`windowIndex ${e} is not exist`),null)}getStatus(e){const t=this._getWindowItem(e);return t&&t.player?t.player.getStatus():(this.debug.warn(this.LOG_TAG,`getStatus() windowIndex ${e} is not exist`),null)}getPlayType(e){const t=this._getWindowItem(e);return t&&t.player?t.player.getPlayType():(this.debug.warn(this.LOG_TAG,`getPlayType() windowIndex ${e} is not exist`),null)}togglePerformancePanel(e,t){const i=this._getWindowItem(t);i&&i.player?i.player.togglePerformancePanel(e):this.debug.warn(this.LOG_TAG,`togglePerformancePanel() windowIndex ${t} is not exist`)}openZoom(e){const t=this._getWindowItem(e);t&&t.player?t.player.openZoom():this.debug.warn(this.LOG_TAG,`openZoom() windowIndex ${e} is not exist`)}closeZoom(e){const t=this._getWindowItem(e);t&&t.player?t.player.closeZoom():this.debug.warn(this.LOG_TAG,`closeZoom() windowIndex ${e} is not exist`)}isZoomOpen(e){const t=this._getWindowItem(e);return t&&t.player?t.player.isZoomOpen():(this.debug.warn(this.LOG_TAG,`isZoomOpen() windowIndex ${e} is not exist`),!1)}expandZoom(e){const t=this._getWindowItem(e);t&&t.player?t.player.expandZoom():this.debug.warn(this.LOG_TAG,`expandZoom() windowIndex ${e} is not exist`)}narrowZoom(e){const t=this._getWindowItem(e);t&&t.player?t.player.narrowZoom():this.debug.warn(this.LOG_TAG,`narrowZoom() windowIndex ${e} is not exist`)}getCurrentZoomIndex(e){const t=this._getWindowItem(e);return t&&t.player?t.player.getCurrentZoomIndex():(this.debug.warn(this.LOG_TAG,`getCurrentZoomIndex() windowIndex ${e} is not exist`),0)}setNakedFlowFps(e,t){const i=this._getWindowItem(t);i&&i.player?i.player.setNakedFlowFps(e):this.debug.warn(this.LOG_TAG,`setNakedFlowFps() windowIndex ${t} is not exist`)}updateDebugLevel(e,t){const i=this._getWindowItem(t);i&&i.player?i.player.updateDebugLevel(e):this.debug.warn(this.LOG_TAG,`updateDebugLevel() windowIndex ${t} is not exist`)}updateWatermark(e,t){const i=this._getWindowItem(t);i&&i.player?i.player.updateWatermark(e):this.debug.warn(this.LOG_TAG,`updateWatermark() windowIndex ${t} is not exist`)}removeWatermark(e){const t=this._getWindowItem(e);t&&t.player?t.player.removeWatermark():this.debug.warn(this.LOG_TAG,`removeWatermark() windowIndex ${e} is not exist`)}updateFullscreenWatermark(e,t){const i=this._getWindowItem(t);i&&i.player?i.player.updateFullscreenWatermark(e):this.debug.warn(this.LOG_TAG,`updateFullscreenWatermark() windowIndex ${t} is not exist`)}removeFullscreenWatermark(e){const t=this._getWindowItem(e);t&&t.player?t.player.removeFullscreenWatermark():this.debug.warn(this.LOG_TAG,`removeFullscreenWatermark() windowIndex ${e} is not exist`)}faceDetectOpen(e){const t=this._getWindowItem(e);t&&t.player?t.player.faceDetectOpen():this.debug.warn(this.LOG_TAG,`faceDetectOpen() windowIndex ${e} is not exist`)}faceDetectClose(e){const t=this._getWindowItem(e);t&&t.player?t.player.faceDetectClose():this.debug.warn(this.LOG_TAG,`faceDetectClose() windowIndex ${e} is not exist`)}objectDetectOpen(e){const t=this._getWindowItem(e);t&&t.player?t.player.objectDetectOpen():this.debug.warn(this.LOG_TAG,`objectDetectOpen() windowIndex ${e} is not exist`)}objectDetectClose(e){const t=this._getWindowItem(e);t&&t.player?t.player.objectDetectClose():this.debug.warn(this.LOG_TAG,`objectDetectClose() windowIndex ${e} is not exist`)}sendWebsocketMessage(e,t){const i=this._getWindowItem(t);i&&i.player?i.player.sendWebsocketMessage(e):this.debug.warn(this.LOG_TAG,`sendWebsocketMessage() windowIndex ${t} is not exist`)}addContentToCanvas(e,t){const i=this._getWindowItem(t);i&&i.player?i.player.addContentToCanvas(e):this.debug.warn(this.LOG_TAG,`addContentToCanvas() windowIndex ${t} is not exist`)}clearContentToCanvas(e){const t=this._getWindowItem(e);t&&t.player?t.player.clearContentToCanvas():this.debug.warn(this.LOG_TAG,`clearContentToCanvas() windowIndex ${e} is not exist`)}setControlHtml(e,t){const i=this._getWindowItem(t);i&&i.player?i.player.setControlHtml(e):this.debug.warn(this.LOG_TAG,`setControlHtml() windowIndex ${t} is not exist`)}clearControlHtml(e){const t=this._getWindowItem(e);t&&t.player?t.player.clearControlHtml():this.debug.warn(this.LOG_TAG,`clearControlHtml() windowIndex ${e} is not exist`)}getFlvMetaData(e){const t=this._getWindowItem(e);return t&&t.player?t.player.getFlvMetaData():(this.debug.warn(this.LOG_TAG,`getFlvMetaData() windowIndex ${e} is not exist`),null)}getExtendBtnList(e){const t=this._getWindowItem(e);return t&&t.player?t.player.getExtendBtnList():(this.debug.warn(this.LOG_TAG,`getExtendBtnList() windowIndex ${e} is not exist`),null)}updateAiFaceDetectInterval(e,t){const i=this._getWindowItem(t);if(!i||!i.player)return this.debug.warn(this.LOG_TAG,`updateAiFaceDetectInterval() windowIndex ${t} is not exist`),null;i.player.updateAiFaceDetectInterval(e)}updateAiFaceDetectLevel(e,t){const i=this._getWindowItem(t);if(!i||!i.player)return this.debug.warn(this.LOG_TAG,`updateAiFaceDetectLevel() windowIndex ${t} is not exist`),null;i.player.updateAiFaceDetectLevel(e)}updateAiObjectDetectInterval(e,t){const i=this._getWindowItem(t);if(!i||!i.player)return this.debug.warn(this.LOG_TAG,`updateAiObjectDetectInterval() windowIndex ${t} is not exist`),null;i.player.updateAiObjectDetectInterval(e)}updateAiObjectDetectLevel(e,t){const i=this._getWindowItem(t);if(!i||!i.player)return this.debug.warn(this.LOG_TAG,`updateAiObjectDetectLevel() windowIndex ${t} is not exist`),null;i.player.updateAiObjectDetectLevel(e)}setCryptoKeyUrl(e,t){const i=this._getWindowItem(t);if(!i||!i.player)return this.debug.warn(this.LOG_TAG,`setCryptoKeyUrl() windowIndex ${t} is not exist`),null;i.player.setCryptoKeyUrl(e)}showErrorMessageTips(e,t){const i=this._getWindowItem(t);if(!i||!i.player)return this.debug.warn(this.LOG_TAG,`showErrorMessageTips() windowIndex ${t} is not exist`),null;i.player.showErrorMessageTips(e)}hideErrorMessageTips(e){const t=this._getWindowItem(e);if(!t||!t.player)return this.debug.warn(this.LOG_TAG,`hideErrorMessageTips() windowIndex ${e} is not exist`),null;t.player.hideErrorMessageTips()}destroySingle(e){return new Promise(((t,i)=>{const r=this._getWindowItem(e);r?r.player&&r.player.destroy().then((()=>{r.player=null,t()})).catch((e=>{i(e)})):(i("windowIndex is not exist"),this.debug.warn(this.LOG_TAG,`destroySingle() windowIndex ${e} is not exist`))}))}initSingle(e){return new Promise(((t,i)=>{const r=this._getWindowItem(e);if(r)if(r.player)r.player.destroy().then((()=>{r.player=null;const e=this._createPlayer(r);r.player=e,t()})).catch((e=>{i(e)}));else{const e=this._createPlayer(r);r.player=e,t()}else i("windowIndex is not exist"),this.debug.warn(this.LOG_TAG,`destroySingle() windowIndex ${e} is not exist`)}))}setFullscreenMulti(e){return new Promise(((t,i)=>{if(this.debug.log(this.LOG_TAG,"setFullscreenMulti",e),e)try{es.request(this.$container).then((()=>{t()})).catch((e=>{this.debug.error(this.LOG_TAG,"fullscreen request inner error",e),i(e)}))}catch(e){this.debug.error(this.LOG_TAG,"fullscreen request error",e),i(e)}else try{es.exit().then((()=>{t()})).catch((e=>{this.debug.error(this.LOG_TAG,"fullscreen exit inner error",e),i(e)}))}catch(e){this.debug.error(this.LOG_TAG,"fullscreen exit error",e),i(e)}}))}toggleSingleWindowContainerFullscreen(e,t){this.debug.log(this.LOG_TAG,"setSingleWindowContainerFullscreen",t);const i=this._getWindowItem(t);this.windowList.forEach((e=>{e.uuid!==i.uuid&&this._handleWindowContainerFullscreen(e.uuid,!1)})),this._handleWindowContainerFullscreen(i.uuid,e)}selectWindow(e){this.debug.log(this.LOG_TAG,"selectWindow",e),this._handleWindowSelect(e)}arrangeWindow(e){this.debug.log(this.LOG_TAG,"arrangeWindow",e),this._innerArrangeWindow(e)}_innerArrangeWindow(e,t=!1){if(!e)return void this.debug.warn(this.LOG_TAG,`arrangeWindow() split ${e} is not valid`);if([or,lr].includes(e))this._arrangeSpecialWindow(e);else{if(this._opt.split===e&&null===this.specialLayoutType&&ka(t))return void this.debug.warn(this.LOG_TAG,`arrangeWindow() split ${e} is not changed`);this.specialLayoutType=null,this._arrangeWindow(e)}}_arrangeWindow(e){(e=Ms(e))<1||!Ns(e)?this.debug.warn(this.LOG_TAG,`arrangeWindow() split ${e} is not valid`):(e>this._opt.maxSplit&&(e=this._opt.maxSplit),this._opt.split=e,this.currentWindowIndex=0,this._opt.draggable?this._updateWindows$2():this._updateWindows(),this._handleWindowSelect(this.currentWindowIndex))}_arrangeSpecialWindow(e){this._opt.maxSplit<=3&&e===lr||this._opt.maxSplit<=2&&e===or?this.debug.warn(this.LOG_TAG,`_arrangeSpecialWindow() type ${e} is not valid because maxSplit is ${this._opt.maxSplit}`):this.specialLayoutType&&this.specialLayoutType===e?this.debug.warn(this.LOG_TAG,`_arrangeSpecialWindow() type ${e} is not changed`):(this.specialLayoutType=e,e===or?this._arrangeWindow(3):e===lr?this._arrangeWindow(4):this.debug.warn(this.LOG_TAG,`_arrangeSpecialWindow() type ${e} is not valid`))}getCurrentSplit(){return this.specialLayoutType?this.specialLayoutType:this._opt.split}_getCurrentMaxSplit(){if(this.specialLayoutType){let e=0;return this.specialLayoutType===or?e=9:this.specialLayoutType===lr&&(e=16),e}return this._opt.split*this._opt.split}_getSpecialMaxSplit(){let e=0;return this.specialLayoutType===or?e=6:this.specialLayoutType===lr&&(e=8),e}getSelectedWindowIndex(){return this.currentWindowIndex}getSelectedWindowUuid(){return this.currentWindowUuid}getWindowItem(e){let t=this._getWindowItem(e),i=null;return t&&(i={index:e,$player:t.$player,$playerContainer:t.$playerContainer,player:t.player,uuid:t.uuid}),i}getNextWindowItem(e){let t=null,i=this._getWindowItem(e);if(i){const e=this._getWindowUuidList()||[],r=e.findIndex((e=>e===i.uuid));if(re===i.uuid));if(r>0){const i=r-1,s=this._findWindowItemByUuid(e[i]);s&&(t={index:i,$player:s.$player,$playerContainer:s.$playerContainer,player:s.player,uuid:s.uuid})}}return t}isWindowItemHasInitPlayer(e){let t=!1,i=this._getWindowItem(e);return i&&i.player&&(t=!0),t}_getWindowItem(e){let t=null;const i=aa(e)&&16===e.length;return t=i||!Ns(e)?this._findWindowItemByUuid(i?e:this.currentWindowUuid):this.windowList[e],t}_getWindowUuidList(){return this.windowList.filter(((e,t)=>te.uuid))}_findWindowItemIndex(e){return e&&e.uuid?this._findWindowItemIndexByUuid(e.uuid):null}_findWindowItemIndexByUuid(e){return this.windowList.findIndex((t=>t.uuid===e))}_findWindowItemByUuid(e){return this.windowList.find((t=>t.uuid===e))}}su.MULTI_EVENTS=nr,su.EVENTS={...at,...nr},su.ERROR=lt,window.EasyPlayerProMulti=su,window.WebPlayerProMulti=su})); diff --git a/html-demo/js/easyplayer-pro-talk.js b/html-demo/js/easyplayer-pro-talk.js new file mode 100644 index 0000000..372c1f8 --- /dev/null +++ b/html-demo/js/easyplayer-pro-talk.js @@ -0,0 +1 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self)["easyplayer-talk"]=t()}(this,(function(){"use strict";class e{on(e,t,i){const s=this.e||(this.e={});return(s[e]||(s[e]=[])).push({fn:t,ctx:i}),this}once(e,t,i){const s=this;function r(...o){s.off(e,r),t.apply(i,o)}return r._=t,this.on(e,r,i)}emit(e,...t){const i=((this.e||(this.e={}))[e]||[]).slice();for(let e=0;e{delete i[e]})),void delete this.e;const s=i[e],r=[];if(s&&t)for(let e=0,i=s.length;e{try{if("object"==typeof WebAssembly&&"function"==typeof WebAssembly.instantiate){const e=new WebAssembly.Module(Uint8Array.of(0,97,115,109,1,0,0,0));if(e instanceof WebAssembly.Module)return new WebAssembly.Instance(e)instanceof WebAssembly.Instance}}catch(e){}})();class P{constructor(e){const{fromSampleRate:t,toSampleRate:i,channels:s,inputBufferSize:r}=e;if(!t||!i||!s)throw new Error("Invalid settings specified for the resampler.");this.resampler=null,this.fromSampleRate=t,this.toSampleRate=i,this.channels=s||0,this.inputBufferSize=r,this.initialize()}initialize(){this.fromSampleRate==this.toSampleRate?(this.resampler=e=>e,this.ratioWeight=1):(this.fromSampleRate{let t,i,s,r,o,a,n,l,h,u=e.length,c=this.channels;if(u%c!=0)throw new Error("Buffer was of incorrect sample length.");if(u<=0)return[];for(t=this.outputBufferSize,i=this.ratioWeight,s=this.lastWeight,r=0,o=0,a=0,n=0,l=this.outputBuffer;s<1;s+=i)for(o=s%1,r=1-o,this.lastWeight=s%1,h=0;h0?h:0)]*r+e[a+(c+h)]*o;s+=i,a=Math.floor(s)*c}for(h=0;h{let t,i,s,r,o,a,n,l,h,u,c,d=e.length,p=this.channels;if(d%p!=0)throw new Error("Buffer was of incorrect sample length.");if(d<=0)return[];for(t=this.outputBufferSize,i=[],s=this.ratioWeight,r=0,a=0,n=0,l=!this.tailExists,this.tailExists=!1,h=this.outputBuffer,u=0,c=0,o=0;o0&&a=n)){for(o=0;o0?o:0)]*r;c+=r,r=0;break}for(o=0;o{t[i]=function(e){let t,i,s;return e>=0?t=213:(t=85,(e=-e-1)<0&&(e=32767)),i=$(e,q,8),i>=8?127^t:(s=i<>4&D:e>>i+3&D,s^t)}(e)})),t}function H(e){const t=[];return Array.prototype.slice.call(e).forEach(((e,i)=>{t[i]=function(e){let t=0;e<0?(e=z-e,t=127):(e+=z,t=255);let i=$(e,q,8);return i>=8?127^t:(i<<4|e>>i+3&15)^t}(e)})),t}class V{constructor(e){this.log=(i,...s)=>{if(e._opt.debug&&e._opt.debugLevel==t){const t=e._opt.debugUuid?`[${e._opt.debugUuid}]`:"";console.log(`EasyPro${t}[✅✅✅][${i}]`,...s)}},this.warn=(s,...r)=>{if(e._opt.debug&&(e._opt.debugLevel==t||e._opt.debugLevel==i)){const t=e._opt.debugUuid?`[${e._opt.debugUuid}]`:"";console.log(`EasyPro${t}[❗❗❗][${s}]`,...r)}},this.error=(t,...i)=>{const s=e._opt.debugUuid?`[${e._opt.debugUuid}]`:"";console.error(`EasyPro${s}[❌❌❌][${t}]`,...i)}}}class J{constructor(e){this.destroys=[],this.proxy=this.proxy.bind(this),this.master=e}proxy(e,t,i,s={}){if(!e)return;if(Array.isArray(t))return t.map((t=>this.proxy(e,t,i,s)));e.addEventListener(t,i,s);const r=()=>{"function"==typeof e.removeEventListener&&e.removeEventListener(t,i,s)};return this.destroys.push(r),r}destroy(){this.master.debug&&this.master.debug.log("Events","destroy"),this.destroys.forEach((e=>e())),this.destroys=[]}}class Z extends e{constructor(e,t={}){super(),this._opt={},e&&(this.player=e),this.tag="talk";const i=O(A);this._opt=Object.assign({},i,t),this._opt.sampleRate=parseInt(this._opt.sampleRate,10),this._opt.sampleBitsWidth=parseInt(this._opt.sampleBitsWidth,10),this.audioContext=null,this.gainNode=null,this.recorder=null,this.workletRecorder=null,this.biquadFilter=null,this.userMediaStream=null,this.clearWorkletUrlTimeout=null,this.bufferSize=512,this._opt.audioBufferLength=this.calcAudioBufferLength(),this.audioBufferList=[],this.socket=null,this.socketStatus=m,this.mediaStreamSource=null,this.heartInterval=null,this.checkGetUserMediaTimeout=null,this.wsUrl=null,this.startTimestamp=0,this.sequenceId=0,this.tempTimestamp=null,this.tempG711BufferList=[],this.tempRtpBufferList=[],this.events=new J(this),this._initTalk(),this.player||(this.debug=new V(this)),this._opt.encType!==b&&this._opt.encType!==S||8e3===this._opt.sampleRate&&16===this._opt.sampleBitsWidth||this.warn(this.tag,`\n encType is ${this._opt.encType} and sampleBitsWidth is ${this._opt.sampleBitsWidth}, set sampleBitsWidth to ${this._opt.sampleBitsWidth}。\n ${this._opt.encType} only support sampleRate 8000 and sampleBitsWidth 16`),this.log(this.tag,"init",JSON.stringify(this._opt))}destroy(){this.clearWorkletUrlTimeout&&(clearTimeout(this.clearWorkletUrlTimeout),this.clearWorkletUrlTimeout=null),this.userMediaStream&&(this.userMediaStream.getTracks&&this.userMediaStream.getTracks().forEach((e=>{e.stop()})),this.userMediaStream=null),this.mediaStreamSource&&(this.mediaStreamSource.disconnect(),this.mediaStreamSource=null),this.recorder&&(this.recorder.disconnect(),this.recorder.onaudioprocess=null,this.recorder=null),this.biquadFilter&&(this.biquadFilter.disconnect(),this.biquadFilter=null),this.gainNode&&(this.gainNode.disconnect(),this.gainNode=null),this.workletRecorder&&(this.workletRecorder.disconnect(),this.workletRecorder=null),this.socket&&(this.socketStatus===g&&this._sendClose(),this.socket.close(),this.socket=null),this._stopHeartInterval(),this._stopCheckGetUserMediaTimeout(),this.audioContext=null,this.gainNode=null,this.recorder=null,this.audioBufferList=[],this.sequenceId=0,this.wsUrl=null,this.tempTimestamp=null,this.tempRtpBufferList=[],this.tempG711BufferList=[],this.startTimestamp=0,this.log("talk","destroy")}addRtpToBuffer(e){const t=e.length+this.tempRtpBufferList.length,i=new Uint8Array(t);i.set(this.tempRtpBufferList,0),i.set(e,this.tempRtpBufferList.length),this.tempRtpBufferList=i}addG711ToBuffer(e){const t=e.length+this.tempG711BufferList.length,i=new Uint8Array(t);i.set(this.tempG711BufferList,0),i.set(e,this.tempG711BufferList.length),this.tempG711BufferList=i}downloadRtpFile(){const e=new Blob([this.tempRtpBufferList]);try{const t=document.createElement("a");t.href=window.URL.createObjectURL(e),t.download=Date.now()+".rtp",t.click(),window.URL.revokeObjectURL(t.href)}catch(e){console.error("downloadRtpFile",e)}}downloadG711File(){const e=new Blob([this.tempG711BufferList]);try{const t=document.createElement("a");t.href=window.URL.createObjectURL(e),t.download=Date.now()+"."+this._opt.encType,t.click(),window.URL.revokeObjectURL(t.href)}catch(e){console.error("downloadRtpFile",e)}}calcAudioBufferLength(){const{sampleRate:e,sampleBitsWidth:t}=this._opt;return 8*e*.02/8}get socketStatusOpen(){return this.socketStatus===g}log(...e){this._log("log",...e)}warn(...e){this._log("warn",...e)}error(...e){this._log("error",...e)}_log(e,...t){this.player?this.player.debug[e](...t):this.debug?this.debug[e](...t):console[e](...t)}_getSequenceId(){return++this.sequenceId}_createWebSocket(){return new Promise(((e,t)=>{const i=this.events.proxy;this.socket=new WebSocket(this.wsUrl),this.socket.binaryType="arraybuffer",this.emit(a),i(this.socket,C,(()=>{this.socketStatus=g,this.log(this.tag,"websocket open -> do talk"),this.emit(n),e(),this._doTalk()})),i(this.socket,L,(e=>{this.log(this.tag,"websocket message",e.data),this.emit(l,e)})),i(this.socket,R,(e=>{this.socketStatus=k,this.warn(this.tag,"websocket close -> reject",e),this.emit(h),t(e)})),i(this.socket,G,(e=>{this.socketStatus=w,this.error(this.tag,"websocket error -> reject",e),this.emit(u,e),t(e)}))}))}_sendClose(){}_initTalk(){this._initMethods(),this._opt.engine===F?this._initWorklet():this._opt.engine===W&&this._initScriptProcessor(),this.log(this.tag,"audioContext samplerate",this.audioContext.sampleRate)}_initMethods(){this.audioContext=new(window.AudioContext||window.webkitAudioContext)({sampleRate:48e3}),this.gainNode=this.audioContext.createGain(),this.gainNode.gain.value=1,this.biquadFilter=this.audioContext.createBiquadFilter(),this.biquadFilter.type="lowpass",this.biquadFilter.frequency.value=3e3,this.resampler=new P({fromSampleRate:this.audioContext.sampleRate,toSampleRate:this._opt.sampleRate,channels:this._opt.numberChannels,inputBufferSize:this.bufferSize})}_initScriptProcessor(){const e=this.audioContext.createScriptProcessor||this.audioContext.createJavaScriptNode;this.recorder=e.apply(this.audioContext,[this.bufferSize,this._opt.numberChannels,this._opt.numberChannels]),this.recorder.onaudioprocess=e=>this._onaudioprocess(e)}_initWorklet(){const e=function(e){const t=e.toString().trim().match(/^function\s*\w*\s*\([\w\s,]*\)\s*{([\w\W]*?)}$/)[1];console.log(">>>funcStr >>>",t);const i=new Blob([t],{type:"application/javascript"});return URL.createObjectURL(i)}((function(){class e extends AudioWorkletProcessor{constructor(e){super(),this._cursor=0,this._bufferSize=e.processorOptions.bufferSize,this._buffer=new Float32Array(this._bufferSize)}process(e,t,i){if(!e.length||!e[0].length)return!0;for(let t=0;t>> workletUrl >>>",e),this.audioContext.audioWorklet&&this.audioContext.audioWorklet.addModule(e).then((()=>{const e=new AudioWorkletNode(this.audioContext,"talk-processor",{processorOptions:{bufferSize:this.bufferSize}});e.connect(this.gainNode),e.port.onmessage=e=>{"data"===e.data.eventType&&this._encodeAudioData(e.data.buffer)},this.workletRecorder=e})),this.clearWorkletUrlTimeout=setTimeout((()=>{URL.revokeObjectURL(e),this.clearWorkletUrlTimeout=null}),1e4)}_onaudioprocess(e){const t=e.inputBuffer.getChannelData(0);this._encodeAudioData(new Float32Array(t))}_encodeAudioData(e){if(0===e[0]&&0===e[1])return void this.log(this.tag,"empty audio data");const t=this.resampler.resample(e);let i=t;if(16===this._opt.sampleBitsWidth?i=function(e){let t=e.length,i=new Int16Array(t);for(;t--;){let s=Math.max(-1,Math.min(1,e[t]));i[t]=s<0?32768*s:32767*s}return i}(t):8===this._opt.sampleBitsWidth&&(i=function(e){let t=e.length,i=new Int8Array(t);for(;t--;){let s=Math.max(-1,Math.min(1,e[t]));const r=s<0?32768*s:32767*s;i[t]=parseInt(255/(65535/(32768+r)),10)}return i}(t)),null!==i.buffer){let e=null;this._opt.encType===b?e=j(i):this._opt.encType===S?e=H(i):this._opt.encType===T&&(e=i);const t=new Uint8Array(e);for(let e=0;e>8,t[n++]=255&e}t[n++]=128,t[n++]=128+i,t[n++]=s/256,t[n++]=s%256,t[n++]=r/65536/256,t[n++]=r/65536%256,t[n++]=r%65536/256,t[n++]=r%65536%256,t[n++]=o/65536/256,t[n++]=o/65536%256,t[n++]=o%65536/256,t[n++]=o%65536%256;let l=t.concat([...e]),h=new Uint8Array(l.length);for(let e=0;e{this.log(this.tag,"getUserMedia success"),this.userMediaStream=e,this.mediaStreamSource=this.audioContext.createMediaStreamSource(e),this.mediaStreamSource.connect(this.biquadFilter),this.recorder?(this.biquadFilter.connect(this.recorder),this.recorder.connect(this.gainNode)):this.workletRecorder&&(this.biquadFilter.connect(this.workletRecorder),this.workletRecorder.connect(this.gainNode)),this.gainNode.connect(this.audioContext.destination),this.emit(s),null===e.oninactive&&(e.oninactive=e=>{this._handleStreamInactive(e)})})).catch((e=>{this.error(this.tag,"getUserMedia error",e.toString()),this.emit(r,e.toString())})).finally((()=>{this.log(this.tag,"getUserMedia finally"),this._stopCheckGetUserMediaTimeout()}))}_getUserMedia2(){this.log(this.tag,"getUserMedia"),navigator.mediaDevices?navigator.mediaDevices.getUserMedia({audio:!0}).then((e=>{this.log(this.tag,"getUserMedia2 success")})):navigator.getUserMedia({audio:!0},this.log(this.tag,"getUserMedia2 success"),this.log(this.tag,"getUserMedia2 fail"))}async _getUserMedia3(){this.log(this.tag,"getUserMedia3");try{const e=await navigator.mediaDevices.getUserMedia({audio:{latency:!0,noiseSuppression:!0,autoGainControl:!0,echoCancellation:!0,sampleRate:48e3,channelCount:1},video:!1});console.log("getUserMedia() got stream:",e),this.log(this.tag,"getUserMedia3 success")}catch(e){this.log(this.tag,"getUserMedia3 fail")}}_handleStreamInactive(e){this.userMediaStream&&(this.warn(this.tag,"stream oninactive",e),this.emit(c))}_startCheckGetUserMediaTimeout(){this._stopCheckGetUserMediaTimeout(),this.checkGetUserMediaTimeout=setTimeout((()=>{this.log(this.tag,"check getUserMedia timeout"),this.emit(o)}),this._opt.getUserMediaTimeout)}_stopCheckGetUserMediaTimeout(){this.checkGetUserMediaTimeout&&(this.log(this.tag,"stop checkGetUserMediaTimeout"),clearTimeout(this.checkGetUserMediaTimeout),this.checkGetUserMediaTimeout=null)}_startHeartInterval(){this.heartInterval=setInterval((()=>{this.log(this.tag,"heart interval");let e=[35,36,0,0,0,0,0,0];e=new Uint8Array(e),this.socket.send(e.buffer)}),15e3)}_stopHeartInterval(){this.heartInterval&&(this.log(this.tag,"stop heart interval"),clearInterval(this.heartInterval),this.heartInterval=null)}startTalk(e){return new Promise(((t,i)=>{if(!function(){let e=!1;const t=window.navigator;return t&&(e=!(!t.mediaDevices||!t.mediaDevices.getUserMedia),e||(e=!!(t.getUserMedia||t.webkitGetUserMedia||t.mozGetUserMedia||t.msGetUserMedia))),e}())return i("not support getUserMedia");if(this.wsUrl=e,this._opt.testMicrophone)this._doTalk();else{if(!this.wsUrl)return i("wsUrl is null");this._createWebSocket().catch((e=>{i(e)}))}this.once(r,(()=>{i("getUserMedia fail")})),this.once(s,(()=>{t()}))}))}setVolume(e){var t,i,s;(e=parseFloat(e).toFixed(2),isNaN(e))||(t=e,i=0,s=1,e=Math.max(Math.min(t,Math.max(i,s)),Math.min(i,s)),this.gainNode.gain.value=e)}getOption(){return this._opt}get volume(){return this.gainNode?parseFloat(100*this.gainNode.gain.value).toFixed(0):null}}class K extends e{constructor(e={}){super(),this.talk=null,this._opt=e,this.LOG_TAG="EasyProTalk",this.debug=new V(this),this.debug.log(this.LOG_TAG,"init",JSON.stringify(e))}destroy(){this.debug.log(this.LOG_TAG,"destroy()"),this.off(),this.talk&&(this.talk.destroy(),this.talk=null),this.debug.log(this.LOG_TAG,"destroy")}_initTalk(e={}){this.talk&&(this.debug.log(this.LOG_TAG,"_initTalk this.talk is not null and destroy"),this.talk.destroy(),this.talk=null);const t=Object.assign({},O(this._opt),e);this.talk=new Z(null,t),this.debug.log(this.LOG_TAG,"_initTalk",this.talk.getOption()),this._bindTalkEvents()}_bindTalkEvents(){Object.keys(p).forEach((e=>{this.talk.on(p[e],(t=>{this.emit(e,t)}))}))}startTalk(e,t={}){return new Promise(((i,s)=>{this.debug.log(this.LOG_TAG,"startTalk",e,JSON.stringify(t)),this._initTalk(t),this.talk.startTalk(e).then((()=>{i(),this.talk.once(h,(()=>{this.debug.warn(this.LOG_TAG,"talkStreamClose -> stopTalk"),this.stopTalk().catch((e=>{this.debug.warn(this.LOG_TAG,"talkStreamClose stopTalk",e)})).finally((()=>{this.emit(d,h)}))})),this.talk.once(u,(e=>{this.debug.error(this.LOG_TAG,"talkStreamError -> stopTalk"),this.stopTalk().catch((e=>{this.debug.warn(this.LOG_TAG,"talkStreamError stopTalk",e)})).finally((()=>{this.emit(d,u)}))})),this.talk.once(c,(()=>{this.debug.warn(this.LOG_TAG,"talkStreamInactive -> stopTalk"),this.stopTalk().catch((e=>{this.debug.warn(this.LOG_TAG,"talkStreamInactive stopTalk",e)})).finally((()=>{this.emit(d,c)}))})),this.talk.once(o,(()=>{this.debug.warn(this.LOG_TAG,"talkGetUserMediaTimeout -> stopTalk"),this.stopTalk().catch((e=>{this.debug.warn(this.LOG_TAG,"talkGetUserMediaTimeout stopTalk",e)})).finally((()=>{this.emit(d,o)}))}))})).catch((e=>{s(e)}))}))}stopTalk(){return new Promise(((e,t)=>{this.debug.log(this.LOG_TAG,"stopTalk()"),this.talk||t("talk is not init"),this.talk.destroy(),this.talk=null,e()}))}getTalkVolume(){return new Promise(((e,t)=>{this.talk||t("talk is not init"),e(this.talk.volume)}))}setTalkVolume(e){return new Promise(((t,i)=>{this.debug.log(this.LOG_TAG,"setTalkVolume",e),this.talk||i("talk is not init"),this.talk.setVolume(e/100),t()}))}downloadTempRtpFile(){return new Promise(((e,t)=>{this.talk?(this.talk.downloadRtpFile(),e()):t("talk is not init")}))}downloadTempG711File(){return new Promise(((e,t)=>{this.talk?(this.talk.downloadG711File(),e()):t("talk is not init")}))}}return K.EVENTS=p,window.EasyPlayerProTalk=K,window.EasyProTalk=K,window.WebPlayerProTalk=K,K})); diff --git a/html-demo/js/easyplayer-pro.js b/html-demo/js/easyplayer-pro.js new file mode 100644 index 0000000..cf0ba1a --- /dev/null +++ b/html-demo/js/easyplayer-pro.js @@ -0,0 +1 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self)["easyplayer-pro"]=t()}(this,(function(){"use strict";const t=1,i=2,r=3,s=4,a=5,n=6,o=9,l=["","websocket","fetch","hls","webrtc","webTransport","aliyunRtc","ts"],d="fetch",h="hls",c="websocket",u="webrtc",p="webTransport",f="worker",m="aliyunRtc",y="wsRtc",g="player",A="playerAudio",v="playbackTF",b="mp4",_="mp4",E="flv",S="mov",w="flv",T="m7s",k="hls",C="webrtc",R="webTransport",D="nakedFlow",x="fmp4",L="mpeg4",I="aliyunRtc",P="ts",B="wsRtc",M={flv:"FLV",m7s:"M7S",hls:"HLS",fmp4:"FMP4",mpeg4:"MPEG4",webrtc:"Webrtc",webTransport:"WebTransport",nakedFlow:"裸流",aliyunRtc:"AliyunRtc",ts:"TS"},U="mse",F="wcs",O="offscreen",N="wasm",G="simd",z="mt",V="webrtc",H="hls",W="wsRtc",j="aliyunRtc",$="canvas",K="video",q="debug",Y="warn",Q="click",X="mouseDownAndUp",J={normal:"normal",simple:"simple"},Z=36e5,ee="/crypto/",te="jbprov",ie=1e4,re={url:"",playbackConfig:{},fullscreenWatermarkConfig:{},playType:g,playbackForwardMaxRateDecodeIFrame:4,playOptions:{},isLive:!0,isMulti:!0,isM7sCrypto:!1,supportHls265:!0,playFailedUseLastFrameShow:!0,playFailedAndPausedShowMessage:!1,pauseAndNextPlayUseLastFrameShow:!1,widthOrHeightChangeReplayDelayTime:0,isUseNewFullscreenWatermark:!1},se={playType:g,container:"",videoBuffer:1e3,videoBufferDelay:1e3,networkDelay:1e4,isResize:!0,isFullResize:!1,isFlv:!1,isHls:!1,isFmp4:!1,isFmp4Private:!1,isWebrtc:!1,isWebrtcForZLM:!1,isWebrtcForSRS:!1,isWebrtcForOthers:!0,isNakedFlow:!1,isMpeg4:!1,isAliyunRtc:!1,isTs:!1,debug:!1,debugLevel:Y,debugUuid:"",isMulti:!0,multiIndex:-1,hotKey:!1,loadingTimeout:10,heartTimeout:10,timeout:10,pageVisibilityHiddenTimeout:300,loadingTimeoutReplay:!0,heartTimeoutReplay:!0,loadingTimeoutReplayTimes:3,heartTimeoutReplayTimes:3,heartTimeoutReplayUseLastFrameShow:!0,replayUseLastFrameShow:!0,replayShowLoadingIcon:!1,supportDblclickFullscreen:!1,showBandwidth:!1,showPerformance:!1,mseCorrectTimeDuration:20,keepScreenOn:!0,isNotMute:!1,hasAudio:!0,hasVideo:!0,operateBtns:{fullscreen:!1,screenshot:!1,play:!1,audio:!1,record:!1,ptz:!1,quality:!1,zoom:!1,close:!1,scale:!1,performance:!1,logSave:!1,aiFace:!1,aiObject:!1,aiOcclusion:!1,fullscreenFn:null,fullscreenExitFn:null,screenshotFn:null,playFn:null,pauseFn:null,recordFn:null,recordStopFn:null},extendOperateBtns:[],contextmenuBtns:[],watermarkConfig:{},controlAutoHide:!1,hasControl:!1,loadingIcon:!0,loadingIconStyle:{},loadingText:"",background:"",backgroundLoadingShow:!0,loadingBackground:"",loadingBackgroundWidth:0,loadingBackgroundHeight:0,decoder:"decoder-pro.js",decoderAudio:"decoder-pro-audio.js",decoderHard:"decoder-pro-hard.js",decoderHardNotWasm:"decoder-pro-hard-not-wasm.js",wasmMp4RecorderDecoder:"easyplayer-pro-mp4-recorder-decoder.js",decoderWASM:"",isDecoderUseCDN:!1,url:"",rotate:0,mirrorRotate:"none",aspectRatio:"default",playbackConfig:{playList:[],fps:"",showControl:!0,controlType:J.normal,duration:0,startTime:"",showRateBtn:!1,rateConfig:[],showPrecision:"",showPrecisionBtn:!0,isCacheBeforeDecodeForFpsRender:!1,uiUsePlaybackPause:!1,isPlaybackPauseClearCache:!0,isUseFpsRender:!1,isUseLocalCalculateTime:!1,localOneFrameTimestamp:40,supportWheel:!1,useWCS:!1,useMSE:!1},qualityConfig:[],defaultStreamQuality:"",scaleConfig:["拉伸","缩放","正常"],forceNoOffscreen:!0,hiddenAutoPause:!1,protocol:i,demuxType:w,useWasm:!1,useMSE:!1,useWCS:!1,useSIMD:!0,useMThreading:!1,wcsUseVideoRender:!0,wcsUseWebgl2Render:!0,wasmUseVideoRender:!0,mseUseCanvasRender:!1,hlsUseCanvasRender:!1,webrtcUseCanvasRender:!1,useOffscreen:!1,useWebGPU:!1,mseDecodeErrorReplay:!0,wcsDecodeErrorReplay:!0,wasmDecodeErrorReplay:!0,simdDecodeErrorReplay:!0,simdDecodeErrorReplayType:N,autoWasm:!0,decoderErrorAutoWasm:!0,hardDecodingNotSupportAutoWasm:!0,webglAlignmentErrorReplay:!0,webglContextLostErrorReplay:!0,openWebglAlignment:!1,syncAudioAndVideo:!1,syncAudioAndVideoDiff:500,playbackDelayTime:1e3,playbackFps:25,playbackForwardMaxRateDecodeIFrame:4,playbackCurrentTimeMove:!0,useVideoRender:!0,useCanvasRender:!1,networkDelayTimeoutReplay:!1,recordType:b,checkFirstIFrame:!0,nakedFlowFps:25,audioEngine:null,isShowRecordingUI:!0,isShowZoomingUI:!0,useFaceDetector:!1,useObjectDetector:!1,useImageDetector:!1,useOcclusionDetector:!1,ptzClickType:Q,ptzStopEmitDelay:.3,ptzZoomShow:!1,ptzApertureShow:!1,ptzFocusShow:!1,ptzMoreArrowShow:!1,weiXinInAndroidAudioBufferSize:4800,isM7sCrypto:!1,m7sCryptoAudio:!1,isSm4Crypto:!1,isXorCrypto:!1,sm4CryptoKey:"",m7sCryptoKey:"",xorCryptoKey:"",cryptoKey:"",cryptoIV:"",cryptoKeyUrl:"",autoResize:!1,useWebFullScreen:!1,ptsMaxDiff:3600,aiFaceDetectLevel:2,aiFaceDetectWidth:240,aiFaceDetectShowRect:!0,aiFaceDetectInterval:1e3,aiFaceDetectRectConfig:{},aiObjectDetectLevel:2,aiObjectDetectWidth:240,aiObjectDetectShowRect:!0,aiObjectDetectInterval:1e3,aiObjectDetectRectConfig:{},aiOcclusionDetectInterval:1e3,aiImageDetectDrop:!1,aiImageDetectActive:!1,videoRenderSupportScale:!0,mediaSourceTsIsMaxDiffReplay:!0,controlHtml:"",isH265:!1,isWebrtcH265:!1,supportLockScreenPlayAudio:!0,supportHls265:!0,isEmitSEI:!1,pauseAndNextPlayUseLastFrameShow:!1,demuxUseWorker:!1,playFailedAndReplay:!0,showMessageConfig:{webglAlignmentError:"Webgl 渲染失败",webglContextLostError:"webgl 上下文丢失",mediaSourceH265NotSupport:"不支持硬解码H265",mediaSourceFull:"缓冲区已满",mediaSourceAppendBufferError:"初始化解码器失败",mseSourceBufferError:"解码失败",mseAddSourceBufferError:"初始化解码器失败",mediaSourceDecoderConfigurationError:"初始化解码器失败",mediaSourceTsIsMaxDiff:"流异常",mseWidthOrHeightChange:"流异常",mediaSourceAudioG711NotSupport:"硬解码不支持G711a/u音频格式",mediaSourceUseCanvasRenderPlayFailed:"MediaSource解码使用canvas渲染失败",webcodecsH265NotSupport:"不支持硬解码H265",webcodecsUnsupportedConfigurationError:"初始化解码器失败",webcodecsDecodeConfigureError:"初始化解码器失败",webcodecsDecodeError:"解码失败",wcsWidthOrHeightChange:"解码失败",wasmDecodeError:"解码失败",simdDecodeError:"解码失败",wasmWidthOrHeightChange:"流异常",wasmUseVideoRenderError:"video自动渲染失败",videoElementPlayingFailed:"video自动渲染失败",simdH264DecodeVideoWidthIsTooLarge:"不支持该分辨率的视频",networkDelayTimeout:"网络超时重播失败",fetchError:"请求失败",streamEnd:"请求结束",websocketError:"请求失败",webrtcError:"请求失败",hlsError:"请求失败",decoderWorkerInitError:"初始化worker失败",videoElementPlayingFailedForWebrtc:"video自动渲染失败",videoInfoError:"解析视频分辨率失败",webrtcStreamH265:"webrtc不支持H265",delayTimeout:"播放超时重播失败",loadingTimeout:"加载超时重播失败",loadingTimeoutRetryEnd:"加载超时重播失败",delayTimeoutRetryEnd:"播放超时重播失败"},videoElementPlayingFailedReplay:!0,mp4RecordUseWasm:!0,mseAutoCleanupSourceBuffer:!0,mseAutoCleanupMaxBackwardDuration:30,mseAutoCleanupMinBackwardDuration:10,widthOrHeightChangeReplay:!0,simdH264DecodeVideoWidthIsTooLargeReplay:!0,mediaSourceAudioG711NotSupportReplay:!0,mediaSourceAudioInitTimeoutReplay:!0,mediaSourceUseCanvasRenderPlayFailedReplay:!0,mediaSourceUseCanvasRenderPlayFailedReplayType:K,widthOrHeightChangeReplayDelayTime:0,ghostWatermarkConfig:{on:5,off:5,content:"",fontSize:12,color:"white",opacity:.15,speed:.2},dynamicWatermarkConfig:{content:"",speed:.2,fontSize:12,color:"white",opacity:.15},isDropSameTimestampGop:!1,mseDecodeAudio:!1,nakedFlowH265DemuxUseNew:!0,extendDomConfig:{html:"",showBeforePlay:!1,showAfterLoading:!0},disableContextmenu:!1,websocket1006ErrorReplay:!1,websocket1006ErrorReplayDelayTime:0,mseDecoderUseWorker:!1},ae="init",ne="initVideo",oe="render",le="playAudio",de="initAudio",he="audioCode",ce="audioNalu",ue="audioAACSequenceHeader",pe="videoCode",fe="videoCodec",me="videoNalu",ye="videoPayload",ge="audioPayload",Ae="wasmError",ve="workerFetch",be="iframeIntervalTs",_e="isDropping",Ee="workerEnd",Se="playbackStreamVideoFps",we="wasmDecodeVideoNoResponseError",Te="wasmWidthOrHeightChange",ke="simdDecodeError",Ce="simdH264DecodeVideoWidthIsTooLarge",Re="closeEnd",De="tempStream",xe="videoSEI",Le="flvScriptData",Ie="aacSequenceHeader",Pe="videoSequenceHeader",Be="flvBufferData",Me="checkFirstIFrame",Ue="Invalid NAL unit size",Fe=1,Oe=2,Ne=8,Ge=9,ze=18,Ve="init",He="decode",We="audioDecode",je="videoDecode",$e="close",Ke="updateConfig",qe="clearBuffer",Ye="fetchStream",Qe="sendWsMessage",Xe="fetch",Je="destroy",Ze="buffer",et="fetchError",tt="fetchClose",it="fetchSuccess",rt={fullscreen:"fullscreen$2",webFullscreen:"webFullscreen",decoderWorkerInit:"decoderWorkerInit",play:"play",playing:"playing",pause:"pause",mute:"mute",load:"load",screenshot:"screenshot",screenshots:"screenshots",loading:"loading",zooming:"zooming",videoInfo:"videoInfo",timeUpdate:"timeUpdate",audioInfo:"audioInfo",log:"log",error:"error",kBps:"kBps",timeout:"timeout",delayTimeout:"delayTimeout",delayTimeoutRetryEnd:"delayTimeoutRetryEnd",loadingTimeout:"loadingTimeout",loadingTimeoutRetryEnd:"loadingTimeoutRetryEnd",stats:"stats",performance:"performance",videoSmooth:"videoSmooth",faceDetectActive:"faceDetectActive",objectDetectActive:"objectDetectActive",occlusionDetectActive:"occlusionDetectActive",imageDetectActive:"imageDetectActive",record:"record",recording:"recording",recordingTimestamp:"recordingTimestamp",recordStart:"recordStart",recordEnd:"recordEnd",recordCreateError:"recordCreateError",recordBlob:"recordBlob",buffer:"buffer",videoFrame:"videoFrame",videoSEI:"videoSEI",start:"start",metadata:"metadata",resize:"resize",volumechange:"volumechange",destroy:"destroy",beforeDestroy:"beforeDestroy",streamEnd:"streamEnd",streamRate:"streamRate",streamAbps:"streamAbps",streamVbps:"streamVbps",streamDts:"streamDts",streamSuccess:"streamSuccess",streamMessage:"streamMessage",streamError:"streamError",streamStats:"streamStats",mseSourceOpen:"mseSourceOpen",mseSourceClose:"mseSourceClose",mseSourceended:"mseSourceended",mseSourceBufferError:"mseSourceBufferError",mseAddSourceBufferError:"mseAddSourceBufferError",mseSourceBufferBusy:"mseSourceBufferBusy",mseSourceBufferFull:"mseSourceBufferFull",videoWaiting:"videoWaiting",videoTimeUpdate:"videoTimeUpdate",videoSyncAudio:"videoSyncAudio",playToRenderTimes:"playToRenderTimes",playbackTime:"playbackTime",playbackTimestamp:"playbackTimestamp",playbackTimeScroll:"playbackTimeScroll",playbackPrecision:"playbackPrecision",playbackShowPrecisionChange:"playbackShowPrecisionChange",playbackJustTime:"playbackJustTime",playbackStats:"playbackStats",playbackSeek:"playbackSeek",playbackPause:"playbackPause",playbackPauseOrResume:"playbackPauseOrResume",playbackRateChange:"playbackRateChange",playbackPreRateChange:"playbackPreRateChange",ptz:"ptz",streamQualityChange:"streamQualityChange",visibilityChange:"visibilityChange",netBuf:"netBuf",close:"close",networkDelayTimeout:"networkDelayTimeout",togglePerformancePanel:"togglePerformancePanel",viewResizeChange:"viewResizeChange",flvDemuxBufferSizeTooLarge:"flvDemuxBufferSizeTooLarge",talkGetUserMediaSuccess:"talkGetUserMediaSuccess",talkGetUserMediaFail:"talkGetUserMediaFail",talkGetUserMediaTimeout:"talkGetUserMediaTimeout",talkStreamStart:"talkStreamStart",talkStreamOpen:"talkStreamOpen",talkStreamMessage:"talkStreamMessage",talkStreamClose:"talkStreamClose",talkStreamError:"talkStreamError",talkStreamInactive:"talkStreamInactive",webrtcDisconnect:"webrtcDisconnect",webrtcFailed:"webrtcFailed",webrtcClosed:"webrtcClosed",webrtcOnConnectionStateChange:"webrtcOnConnectionStateChange",webrtcOnIceConnectionStateChange:"webrtcOnIceConnectionStateChange",crashLog:"crashLog",focus:"focus",blur:"blur",visibilityHiddenTimeout:"visibilityHiddenTimeout",websocketOpen:"websocketOpen",websocketClose:"websocketClose",websocketError:"websocketError",websocketMessage:"websocketMessage",aiObjectDetectorInfo:"aiObjectDetectorInfo",aiFaceDetectorInfo:"aiFaceDetectorInfo",aiOcclusionDetectResult:"aiOcclusionDetectResult",aiImageDetectResult:"aiImageDetectResult",playFailedAndPaused:"playFailedAndPaused",audioResumeState:"audioResumeState",webrtcStreamH265:"webrtcStreamH265",rtcConnetMessage:"rtcConnetMessage",flvMetaData:"flvMetaData",talkFailedAndStop:"talkFailedAndStop",removeLoadingBgImage:"removeLoadingBgImage",memoryLog:"memoryLog",downloadMemoryLog:"downloadMemoryLog",pressureObserverCpu:"pressureObserverCpu",currentPts:"currentPts"},st={load:rt.load,timeUpdate:rt.timeUpdate,videoInfo:rt.videoInfo,audioInfo:rt.audioInfo,error:rt.error,kBps:rt.kBps,start:rt.start,timeout:rt.timeout,loadingTimeout:rt.loadingTimeout,loadingTimeoutRetryEnd:rt.loadingTimeoutRetryEnd,delayTimeout:rt.delayTimeout,delayTimeoutRetryEnd:rt.delayTimeoutRetryEnd,fullscreen:"fullscreen",webFullscreen:rt.webFullscreen,play:rt.play,pause:rt.pause,mute:rt.mute,stats:rt.stats,performance:rt.performance,recordingTimestamp:rt.recordingTimestamp,recordStart:rt.recordStart,recordCreateError:rt.recordCreateError,recordEnd:rt.recordEnd,recordBlob:rt.recordBlob,playToRenderTimes:rt.playToRenderTimes,playbackSeek:rt.playbackSeek,playbackStats:rt.playbackStats,playbackTimestamp:rt.playbackTimestamp,playbackPauseOrResume:rt.playbackPauseOrResume,playbackPreRateChange:rt.playbackPreRateChange,playbackRateChange:rt.playbackRateChange,playbackShowPrecisionChange:rt.playbackShowPrecisionChange,ptz:rt.ptz,streamQualityChange:rt.streamQualityChange,zooming:rt.zooming,crashLog:rt.crashLog,focus:rt.focus,blur:rt.blur,visibilityHiddenTimeout:rt.visibilityHiddenTimeout,visibilityChange:rt.visibilityChange,websocketOpen:rt.websocketOpen,websocketClose:rt.websocketClose,networkDelayTimeout:rt.networkDelayTimeout,aiObjectDetectorInfo:rt.aiObjectDetectorInfo,aiFaceDetectorInfo:rt.aiFaceDetectorInfo,aiOcclusionDetectResult:rt.aiOcclusionDetectResult,aiImageDetectResult:rt.aiImageDetectResult,playFailedAndPaused:rt.playFailedAndPaused,streamEnd:rt.streamEnd,audioResumeState:rt.audioResumeState,videoSEI:rt.videoSEI,flvMetaData:rt.flvMetaData,webrtcOnConnectionStateChange:rt.webrtcOnConnectionStateChange,webrtcOnIceConnectionStateChange:rt.webrtcOnIceConnectionStateChange,rtcConnetMessage:rt.rtcConnetMessage,currentPts:rt.currentPts,videoSmooth:rt.videoSmooth},at={talkStreamClose:rt.talkStreamClose,talkStreamError:rt.talkStreamError,talkStreamMessage:rt.talkStreamMessage,talkStreamInactive:rt.talkStreamInactive,talkGetUserMediaTimeout:rt.talkGetUserMediaTimeout,talkFailedAndStop:rt.talkFailedAndStop},nt={playError:"playIsNotPauseOrUrlIsNull",fetchError:"fetchError",websocketError:"websocketError",webcodecsH265NotSupport:"webcodecsH265NotSupport",webcodecsDecodeError:"webcodecsDecodeError",webcodecsUnsupportedConfigurationError:"webcodecsUnsupportedConfigurationError",webcodecsDecodeConfigureError:"webcodecsDecodeConfigureError",mediaSourceH265NotSupport:"mediaSourceH265NotSupport",mediaSourceAudioG711NotSupport:"mediaSourceAudioG711NotSupport",mediaSourceAudioInitTimeout:"mediaSourceAudioInitTimeout",mediaSourceDecoderConfigurationError:"mediaSourceDecoderConfigurationError",mediaSourceFull:rt.mseSourceBufferFull,mseSourceBufferError:rt.mseSourceBufferError,mseAddSourceBufferError:rt.mseAddSourceBufferError,mediaSourceAppendBufferError:"mediaSourceAppendBufferError",mediaSourceTsIsMaxDiff:"mediaSourceTsIsMaxDiff",mediaSourceUseCanvasRenderPlayFailed:"mediaSourceUseCanvasRenderPlayFailed",mediaSourceBufferedIsZeroError:"mediaSourceBufferedIsZeroError",wasmDecodeError:"wasmDecodeError",wasmUseVideoRenderError:"wasmUseVideoRenderError",hlsError:"hlsError",webrtcError:"webrtcError",webrtcClosed:rt.webrtcClosed,webrtcIceCandidateError:"webrtcIceCandidateError",webglAlignmentError:"webglAlignmentError",wasmWidthOrHeightChange:"wasmWidthOrHeightChange",mseWidthOrHeightChange:"mseWidthOrHeightChange",wcsWidthOrHeightChange:"wcsWidthOrHeightChange",widthOrHeightChange:"widthOrHeightChange",tallWebsocketClosedByError:"tallWebsocketClosedByError",flvDemuxBufferSizeTooLarge:rt.flvDemuxBufferSizeTooLarge,wasmDecodeVideoNoResponseError:"wasmDecodeVideoNoResponseError",audioChannelError:"audioChannelError",simdH264DecodeVideoWidthIsTooLarge:"simdH264DecodeVideoWidthIsTooLarge",simdDecodeError:"simdDecodeError",webglContextLostError:"webglContextLostError",videoElementPlayingFailed:"videoElementPlayingFailed",videoElementPlayingFailedForWebrtc:"videoElementPlayingFailedForWebrtc",decoderWorkerInitError:"decoderWorkerInitError",videoInfoError:"videoInfoError",videoCodecIdError:"videoCodecIdError",streamEnd:rt.streamEnd,delayTimeout:rt.delayTimeout,loadingTimeout:rt.loadingTimeout,networkDelayTimeout:rt.networkDelayTimeout,aliyunRtcError:"aliyunRtcError",...{talkStreamError:rt.talkStreamError,talkStreamClose:rt.talkStreamClose}},ot="notConnect",lt="open",dt="close",ht="error",ct={download:"download",base64:"base64",blob:"blob"},ut="download",pt="blob",ft={7:"H264(AVC)",12:"H265(HEVC)",99:"MPEG4"},mt=7,yt=12,gt="H264(AVC)",At="H265(HEVC)",vt={AAC:10,ALAW:7,MULAW:8,MP3:2},bt={AAC:"AAC",ALAW:"ALAW(g711a)",MULAW:"MULAW(g711u)",MP3:"MP3"},_t={10:"AAC",7:"ALAW",8:"MULAW",2:"MP3"},Et={sps:7,pps:8,iFrame:5,kUnspecified:0,kSliceNonIDR:1,kSliceDPA:2,kSliceDPB:3,kSliceDPC:4,kSliceIDR:5,kSliceSEI:6,kSliceSPS:7,kSlicePPS:8,kSliceAUD:9,kEndOfSequence:10,kEndOfStream:11,kFiller:12,kSPSExt:13,kReserved0:14},St=19,wt=20,Tt=32,kt=33,Ct=34,Rt=39,Dt=39,xt=40,Lt=48,It=0,Pt=1,Bt=2,Mt="webcodecs",Ut="webgl",Ft="webgl2",Ot="webgpu",Nt="offscreen",Gt="mse",zt="hls",Vt="webrtc",Ht="key",Wt="delta",jt='video/mp4; codecs="avc1.64002A"',$t='video/mp4; codecs="hev1.1.6.L123.b0"',Kt="ended",qt="open",Yt="closed",Qt=2e3,Xt=27,Jt=38,Zt=40,ei="oneHour",ti="halfHour",ii="tenMin",ri="fiveMin",si={oneHour:"one-hour",halfHour:"half-hour",tenMin:"ten-min",fiveMin:"five-min"},ai=["oneHour","halfHour","tenMin","fiveMin"],ni=["up","right","down","left","left-up","right-up","left-down","right-down"],oi="stop",li="fiStop",di="zoomExpand",hi="zoomNarrow",ci="apertureFar",ui="apertureNear",pi="focusFar",fi="focusNear",mi="g711a",yi="g711u",gi="pcm",Ai="opus",vi={png:"image/png",jpeg:"image/jpeg",webp:"image/webp"},bi={sourceClose:"sourceclose",sourceOpen:"sourceopen",sourceended:"sourceended"},_i="canplay",Ei="waiting",Si="timeupdate",wi="ratechange",Ti="hevc",ki="A key frame is required after configure() or flush()",Ci="Cannot call 'decode' on a closed codec",Ri="Unsupported configuration",Di="Decoder failure",xi="Decoding error",Li="Decoder error",Ii="HEVC decoding is not supported",Pi="loading",Bi="playing",Mi="paused",Ui="destroy",Fi=0,Oi=1,Ni=8,Gi=0,zi=98,Vi="empty",Hi="rtp",Wi="tcp",ji="open",$i="close",Ki="error",qi="message",Yi="worklet",Qi="script",Xi={encType:mi,packetType:Hi,packetTcpSendType:Wi,rtpSsrc:"0000000000",numberChannels:1,sampleRate:8e3,sampleBitsWidth:16,sendInterval:20,debug:!1,debugLevel:Y,testMicrophone:!1,saveRtpToFile:!1,audioBufferLength:160,engine:Yi,checkGetUserMediaTimeout:!1,getUserMediaTimeout:1e4,audioConstraints:{latency:!0,noiseSuppression:!0,autoGainControl:!0,echoCancellation:!0,sampleRate:48e3,channelCount:1}},Ji="worklet",Zi="script",er="active",tr={name:"",index:0,icon:"",iconHover:"",iconTitle:"",activeIcon:"",activeIconHover:"",activeIconTitle:"",click:null,activeClick:null},ir={content:"",click:null,index:0},rr=1,sr="subtitle-segments",ar="hls-manifest-loaded",nr="hls-level-loaded",or="demuxed-track",lr="flv-script-data",dr="metadata-parsed",hr="ttfb",cr="load-retry",ur="load-start",pr="speed",fr="load-complete",mr="load-response-headers",yr="sei",gr="sei-in-time",Ar="switch-url-failed",vr="switch-url-success",br="subtitle-playlist",_r="stream-parsed",Er="error",Sr=[0,160,240,320,480,640],wr=[0,160,240,320,480,640],Tr=["轻松","正常","较高","高"],kr={1:"MEDIA_ERR_ABORTED",2:"MEDIA_ERR_NETWORK",3:"MEDIA_ERR_DECODE",4:"MEDIA_ERR_SRC_NOT_SUPPORTED"},Cr="video decoder initialization failed",Rr=1,Dr=2,xr=0,Lr=1,Ir=3,Pr=16,Br="candidate-pair",Mr="inbound-rtp",Ur="local-candidate",Fr="remote-candidate",Or="track",Nr="ulaw",Gr="alaw",zr="mp3",Vr=9e4,Hr=45e4,Wr=9e4;class jr{constructor(e){this.log=(t,...i)=>{if(e._opt.debug&&e._opt.debugLevel==q){const r=e._opt.debugUuid?`[${e._opt.debugUuid}]`:"";console.log(`EasyPro${r}[✅✅✅][${t}]`,...i)}},this.warn=(t,...i)=>{if(e._opt.debug&&(e._opt.debugLevel==q||e._opt.debugLevel==Y)){const r=e._opt.debugUuid?`[${e._opt.debugUuid}]`:"";console.log(`EasyPro${r}[❗❗❗][${t}]`,...i)}},this.error=(t,...i)=>{const r=e._opt.debugUuid?`[${e._opt.debugUuid}]`:"";console.error(`EasyPro${r}[❌❌❌][${t}]`,...i)}}}var $r="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function Kr(e,t){return e(t={exports:{}},t.exports),t.exports}var qr=Kr((function(e){!function(){var t="undefined"!=typeof window&&void 0!==window.document?window.document:{},i=e.exports,r=function(){for(var e,i=[["requestFullscreen","exitFullscreen","fullscreenElement","fullscreenEnabled","fullscreenchange","fullscreenerror"],["webkitRequestFullscreen","webkitExitFullscreen","webkitFullscreenElement","webkitFullscreenEnabled","webkitfullscreenchange","webkitfullscreenerror"],["webkitRequestFullScreen","webkitCancelFullScreen","webkitCurrentFullScreenElement","webkitCancelFullScreen","webkitfullscreenchange","webkitfullscreenerror"],["mozRequestFullScreen","mozCancelFullScreen","mozFullScreenElement","mozFullScreenEnabled","mozfullscreenchange","mozfullscreenerror"],["msRequestFullscreen","msExitFullscreen","msFullscreenElement","msFullscreenEnabled","MSFullscreenChange","MSFullscreenError"]],r=0,s=i.length,a={};r>1,(1&t)<<7|i<<3])}function Qr(e){return Xr(e)&&e[1]===Fi}function Xr(e){return e[0]>>4===vt.AAC}qr.isEnabled;const Jr=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350],Zr=Jr;function es(e,t){if("mp4a.40.2"===e){if(1===t)return new Uint8Array([0,200,0,128,35,128]);if(2===t)return new Uint8Array([33,0,73,144,2,25,0,35,128]);if(3===t)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,142]);if(4===t)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,128,44,128,8,2,56]);if(5===t)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,130,48,4,153,0,33,144,2,56]);if(6===t)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,130,48,4,153,0,33,144,2,0,178,0,32,8,224])}else{if(1===t)return new Uint8Array([1,64,34,128,163,78,230,128,186,8,0,0,0,28,6,241,193,10,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,94]);if(2===t)return new Uint8Array([1,64,34,128,163,94,230,128,186,8,0,0,0,0,149,0,6,241,161,10,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,94]);if(3===t)return new Uint8Array([1,64,34,128,163,94,230,128,186,8,0,0,0,0,149,0,6,241,161,10,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,94])}}function ts(e,t=9e4){return 1024*t/e}const is=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350];function rs(e){let t=new Uint8Array(e),i=null,r=0,s=0,a=0,n=null;if(r=s=t[0]>>>3,a=(7&t[0])<<1|t[1]>>>7,a<0||a>=is.length)return void console.error("Flv: AAC invalid sampling frequency index!");let o=is[a],l=(120&t[1])>>>3;if(l<0||l>=8)return void console.log("Flv: AAC invalid channel configuration");5===r&&(n=(7&t[1])<<1|t[2]>>>7,t[2]);let d=self.navigator.userAgent.toLowerCase();return-1!==d.indexOf("firefox")?a>=6?(r=5,i=new Array(4),n=a-3):(r=2,i=new Array(2),n=a):-1!==d.indexOf("android")?(r=2,i=new Array(2),n=a):(r=5,n=a,i=new Array(4),a>=6?n=a-3:1===l&&(r=2,i=new Array(2),n=a)),i[0]=r<<3,i[0]|=(15&a)>>>1,i[1]=(15&a)<<7,i[1]|=(15&l)<<3,5===r&&(i[1]|=(15&n)>>>1,i[2]=(1&n)<<7,i[2]|=8,i[3]=0),{audioType:"aac",config:i,sampleRate:o,channelCount:l,objectType:r,codec:"mp4a.40."+r,originalCodec:"mp4a.40."+s}}class ss{constructor(e){this.buffer=e,this.buflen=e.length,this.bufpos=0,this.bufoff=0,this.iserro=!1}read(e){let t=0,i=0;for(;e;){if(e<0||this.bufpos>=this.buflen)return this.iserro=!0,0;this.iserro=!1,i=this.bufoff+e>8?8-this.bufoff:e,t<<=i,t+=this.buffer[this.bufpos]>>8-this.bufoff-i&255>>8-i,this.bufoff+=i,e-=i,8==this.bufoff&&(this.bufpos++,this.bufoff=0)}return t}look(e){let t=this.bufpos,i=this.bufoff,r=this.read(e);return this.bufpos=t,this.bufoff=i,r}read_golomb(){let e;for(e=0;0==this.read(1)&&!this.iserro;e++);return(1<{ms(e,i,t[i])})),e.style[t]=i,e}function ys(e,t,i=!0){if(!e)return 0;const r=getComputedStyle(e,null).getPropertyValue(t);return i?parseFloat(r):r}function gs(){return performance&&"function"==typeof performance.now?performance.now():Date.now()}function As(e){let t=0,i=gs();return r=>{if(!Ps(r))return;t+=r;const s=gs(),a=s-i;a>=1e3&&(e(t/a*1e3),i=s,t=0)}}(()=>{try{if("object"==typeof WebAssembly&&"function"==typeof WebAssembly.instantiate){const e=new WebAssembly.Module(Uint8Array.of(0,97,115,109,1,0,0,0));if(e instanceof WebAssembly.Module)return new WebAssembly.Instance(e)instanceof WebAssembly.Instance}}catch(e){}})();const vs='"2024-7-26"';function bs(){return/iphone|ipod|android.*mobile|windows.*phone|blackberry.*mobile/i.test(window.navigator.userAgent.toLowerCase())}function _s(){return!(bs()||/ipad|android(?!.*mobile)|tablet|kindle|silk/i.test(window.navigator.userAgent.toLowerCase()))}function Es(){const e=window.navigator.userAgent.toLowerCase();return/android/i.test(e)}function Ss(){const e=window.navigator.userAgent.toLowerCase();return/firefox/i.test(e)}function ws(){const e=window.navigator.userAgent.toLowerCase()||"",t={type:"",version:""},i={IE:window.ActiveXObject||"ActiveXObject"in window,Chrome:e.indexOf("chrome")>-1&&e.indexOf("safari")>-1,Firefox:e.indexOf("firefox")>-1,Opera:e.indexOf("opera")>-1,Safari:e.indexOf("safari")>-1&&-1==e.indexOf("chrome"),Edge:e.indexOf("edge")>-1,QQBrowser:/qqbrowser/.test(e),WeixinBrowser:/MicroMessenger/i.test(e)};for(let r in i)if(i[r]){let i="";if("IE"===r){const t=e.match(/(msie\s|trident.*rv:)([\w.]+)/);t&&t.length>2&&(i=e.match(/(msie\s|trident.*rv:)([\w.]+)/)[2])}else if("Chrome"===r){for(let e in navigator.mimeTypes)"application/360softmgrplugin"===navigator.mimeTypes[e].type&&(r="360");const t=e.match(/chrome\/([\d.]+)/);t&&t.length>1&&(i=t[1])}else if("Firefox"===r){const t=e.match(/firefox\/([\d.]+)/);t&&t.length>1&&(i=t[1])}else if("Opera"===r){const t=e.match(/opera\/([\d.]+)/);t&&t.length>1&&(i=t[1])}else if("Safari"===r){const t=e.match(/version\/([\d.]+)/);t&&t.length>1&&(i=t[1])}else if("Edge"===r){const t=e.match(/edge\/([\d.]+)/);t&&t.length>1&&(i=t[1])}else if("QQBrowser"===r){const t=e.match(/qqbrowser\/([\d.]+)/);t&&t.length>1&&(i=t[1])}t.type=r,t.version=parseInt(i)}return t}function Ts(){const e=window.navigator.userAgent.toLowerCase();return e&&/iphone|ipad|ipod|ios/.test(e)}function ks(){const e=window.navigator.userAgent;return!e.match(/Chrome/gi)&&!!e.match(/Safari/gi)}function Cs(e,t){if(0===arguments.length)return null;var i,r=t||"{y}-{m}-{d} {h}:{i}:{s}";"object"==typeof e?i=e:(10===(""+e).length&&(e=1e3*parseInt(e)),e=+e,i=new Date(e));var s={y:i.getFullYear(),m:i.getMonth()+1,d:i.getDate(),h:i.getHours(),i:i.getMinutes(),s:i.getSeconds(),a:i.getDay()};return r.replace(/{(y|m|d|h|i|s|a)+}/g,((e,t)=>{var i=s[t];return"a"===t?["一","二","三","四","五","六","日"][i-1]:(e.length>0&&i<10&&(i="0"+i),i||0)}))}function Rs(){return"VideoFrame"in window}function Ds(e){if("string"!=typeof e)return e;var t=Number(e);return isNaN(t)?e:t}function xs(){return"xxxxxxxxxxxx4xxx".replace(/[xy]/g,(function(e){var t=16*Math.random()|0;return("x"==e?t:3&t|8).toString(16)}))}function Ls(e,t){let i,r,s=!1;return function a(...n){if(s)return i=n,void(r=this);s=!0,e.apply(this,n),setTimeout((()=>{s=!1,i&&(a.apply(r,i),i=null,r=null)}),t)}}function Is(e){if(null==e||""==e)return"0 Bytes";const t=new Array("Bytes","KB","MB","GB","TB","PB","EB","ZB","YB");let i=0;const r=parseFloat(e);i=Math.floor(Math.log(r)/Math.log(1024));var s=r/Math.pow(1024,i);return(s=s.toFixed(2))+t[i]}function Ps(e){return"[object Number]"===Object.prototype.toString.call(e)}function Bs(){let e=!1;return"MediaSource"in self&&self.MediaSource.isTypeSupported($t)&&(e=!0),e}function Ms(){const e=ws();return"chrome"===e.type.toLowerCase()&&e.version>=107}function Us(){let e=!1;return"MediaStreamTrackGenerator"in window&&(e=!0),e}function Fs(){let e=!1;return"MediaStream"in window&&(e=!0),e}function Os(e,t){let i=window.URL.createObjectURL(t),r=window.document.createElement("a");r.download=e,r.href=i;let s=window.document.createEvent("MouseEvents");s.initEvent("click",!0,!0),r.dispatchEvent(s),setTimeout((()=>{window.URL.revokeObjectURL(i)}),Ts()?1e3:0)}function Ns(e){return null==e}function Gs(e){return!0===e||!1===e}function zs(e){return!Ns(e)}function Vs(e){let t={left:"",right:"",top:"",bottom:"",opacity:1,backgroundColor:"",image:{src:"",width:"100",height:"60"},text:{content:"",fontSize:"14",color:"#000",width:"",height:""},rect:{color:"green",lineWidth:2,width:"",height:"",fill:"",fillOpacity:.2},line:{x1:"",y1:"",x2:"",y2:"",color:"green",lineWidth:2},polygon:{color:"green",lineWidth:2,list:[],fill:"",fillOpacity:.2},html:""};const i=Object.assign(t.image,e.image||{}),r=Object.assign(t.text,e.text||{}),s=Object.assign(t.rect,e.rect||{}),a=Object.assign(t.line,e.line||{});return t=Object.assign(t,e,{image:i,text:r,rect:s,line:a}),t}function Hs(e,t){let i={container:e||"",text:"",opacity:"",angle:"",color:"",fontSize:"",fontFamily:""};return i=Object.assign(i,t),{watermark_parent_node:i.container,watermark_alpha:i.opacity,watermark_angle:i.angle,watermark_fontsize:i.fontSize,watermark_color:i.color,watermark_font:i.fontFamily,watermark_txt:i.text}}function Ws(e,t){return new Promise(((i,r)=>{let s=Vs(t);if(!s.image.src&&!s.text.content)return i(e);let a=document.createElement("canvas");a.width=t.width,a.height=t.height;let n=a.getContext("2d");Ps(s.left)?s.left:Ps(s.right)&&(a.width,s.right),Ps(s.top)?s.top:Ps(s.bottom)&&(a.height,s.bottom);const o=new Image;o.src=e,o.onload=()=>{if(n.drawImage(o,0,0,a.width,a.height),s.image&&s.image.src){const e=new Image;e.src=s.image.src,e.setAttribute("crossOrigin","Anonymous"),e.onload=()=>{let e=a.width/2,r=a.height/2;n.translate(e,r),n.rotate(-Math.PI/4),n.font=s.text.fontSize+"px 宋体",n.fillStyle=s.text.color,n.textAlign="center",n.fillText(s.text.content,0,0),n.rotate(Math.PI/4),n.translate(-e,-r),i(a.toDataURL(t.format,t.quality))},e.onerror=e=>{r(e)}}else if(s.text&&s.text.content){n.font=s.text.fontSize+"px 宋体",n.fillStyle=s.text.color,n.textAlign="center",n.textBaseline="middle";const e=n.measureText(s.text.content).width,r=s.text.fontSize;for(let t=0;t{r(e)}}))}function js(e){var t;if(e>-1){var i=Math.floor(e/3600),r=Math.floor(e/60)%60,s=e%60;t=i<10?"0"+i+":":i+":",r<10&&(t+="0"),t+=r+":",(s=Math.round(s))<10&&(t+="0"),t+=s.toFixed(0)}return t}function $s(e,t){let i="";if(e>-1){const r=Math.floor(e/60)%60;let s=e%60;s=Math.round(s),i=r<10?"0"+r+":":r+":",s<10&&(i+="0"),i+=s,Ns(t)||(t<10&&(t="0"+t),i+=":"+t)}return i}function Ks(e){let t="";if(e>-1){const i=Math.floor(e/60/60)%60;let r=Math.floor(e/60)%60,s=e%60;r=Math.round(r),t=i<10?"0"+i+":":i+":",r<10&&(t+="0"),t+=r+":",s<10&&(t+="0"),t+=s}return t}function qs(e,t){const i=Math.floor(t/60)%60,r=Math.floor(t%60);return new Date(e).setHours(i,r,0,0)}function Ys(e,t){const i=Math.floor(t/60/60)%60,r=Math.floor(t/60)%60,s=t%60;return new Date(e).setHours(i,r,s,0)}function Qs(e){return(""+e).length}function Xs(e){return e&&0===Object.keys(e).length}function Js(e){return!Xs(e)}function Zs(e){return"string"==typeof e}const ea=()=>{const e=window.navigator.userAgent;return/MicroMessenger/i.test(e)},ta=()=>{const e=window.navigator.userAgent;return/Chrome/i.test(e)};function ia(e){const t=e||window.event;return t.target||t.srcElement}function ra(){return Ss()&&function(){const e=navigator.userAgent.toLowerCase();return/macintosh|mac os x/i.test(e)}()}function sa(e){return"function"==typeof e}function aa(e){if(bs()){let t=0,i=0;if(1===e.touches.length){let r=e.touches[0];t=r.clientX,i=r.clientY}return{posX:t,posY:i}}let t=0,i=0;const r=e||window.event;return r.pageX||r.pageY?(t=r.pageX,i=r.pageY):(r.clientX||r.clientY)&&(t=e.clientX+document.documentElement.scrollLeft+document.body.scrollLeft,i=e.clientY+document.documentElement.scrollTop+document.body.scrollTop),{posX:t,posY:i}}function na(){let e=document.createElement("video"),t=e.canPlayType("application/vnd.apple.mpegurl");return e=null,t}function oa(e){let t=ba(e.hasAudio)&&(e.useMSE||e.useWCS&&!e.useOffscreen)&&ba(e.demuxUseWorker);return!!(ba(t)&&e.useMSE&&e.mseDecodeAudio&&ba(e.demuxUseWorker))||t}function la(e){const t=e.toString().trim().match(/^function\s*\w*\s*\([\w\s,]*\)\s*{([\w\W]*?)}$/)[1];console.log(">>>funcStr >>>",t);const i=new Blob([t],{type:"application/javascript"});return URL.createObjectURL(i)}function da(e){e.close()}function ha(){return"https:"===window.location.protocol||"localhost"===window.location.hostname}function ca(e){const t=Object.prototype.toString;return function(e){switch(t.call(e)){case"[object Error]":case"[object Exception]":case"[object DOMException]":return!0;default:try{return e instanceof Error}catch(e){return!1}}}(e)?e.message:null==e?"":"object"==typeof e?JSON.stringify(e,null,2):String(e)}function ua(e,t){t&&(e=e.filter((e=>e.type&&e.type===t)));let i=e[0],r=null,s=1;if(e.length>0){let t=e[1];t&&t.ts-i.ts>1e5&&(i=t,s=2)}if(i)for(let a=s;a=1e3){e[a-1].ts-i.ts<1e3&&(r=a+1)}}}return r}function pa(e){for(var t=(e+"=".repeat((4-e.length%4)%4)).replace(/\-/g,"+").replace(/_/g,"/"),i=window.atob(t),r=new Uint8Array(i.length),s=0;s>4===Oi&&e[1]===Fi}function va(e){return!0===e||"true"===e}function ba(e){return!0!==e&&"true"!==e}function _a(e){return e.replace(/-([a-z])/g,(function(e,t){return t.toUpperCase()}))}function Ea(){return/iphone/i.test(navigator.userAgent)}function Sa(){try{var e=document.createElement("canvas");return!(!window.WebGL2RenderingContext||!e.getContext("webgl2"))}catch(e){return!1}}function wa(e){return e.trim().match(/^function\s*\w*\s*\([\w\s,]*\)\s*{([\w\W]*?)}$/)[1]}function Ta(){let e=!1;return"requestVideoFrameCallback"in HTMLVideoElement.prototype&&(e=!0),e}function ka(){let e=!1;return"PressureObserver"in window&&(e=!0),e}class Ca{constructor(e){this.destroys=[],this.proxy=this.proxy.bind(this),this.master=e}proxy(e,t,i,r={}){if(!e)return;if(Array.isArray(t))return t.map((t=>this.proxy(e,t,i,r)));e.addEventListener(t,i,r);const s=()=>{sa(e.removeEventListener)&&e.removeEventListener(t,i,r)};return this.destroys.push(s),s}destroy(){this.master.debug&&this.master.debug.log("Events","destroy"),this.destroys.forEach((e=>e())),this.destroys=[]}}class Ra{on(e,t,i){const r=this.e||(this.e={});return(r[e]||(r[e]=[])).push({fn:t,ctx:i}),this}once(e,t,i){const r=this;function s(...a){r.off(e,s),t.apply(i,a)}return s._=t,this.on(e,s,i)}emit(e,...t){const i=((this.e||(this.e={}))[e]||[]).slice();for(let e=0;e{delete i[e]})),void delete this.e;const r=i[e],s=[];if(r&&t)for(let e=0,i=r.length;e0) {\n\n highp float y = texture2D(yTexture, vTexturePosition).r;\n highp float u = texture2D(uTexture, vTexturePosition).r;\n highp float v = texture2D(vTexture, vTexturePosition).r;\n gl_FragColor = vec4(y, u, v, 1) * YUV2RGB;\n\n } else {\n gl_FragColor = texture2D(rgbaTexture, vTexturePosition);\n }\n }\n "),i=this.gl.createProgram();return this.gl.attachShader(i,e),this.gl.attachShader(i,t),this.gl.linkProgram(i),this.gl.getProgramParameter(i,this.gl.LINK_STATUS)?i:(console.log("Unable to initialize the shader program: "+this.gl.getProgramInfoLog(i)),null)}_loadShader(e,t){const i=this.gl,r=i.createShader(e);return i.shaderSource(r,t),i.compileShader(r),i.getShaderParameter(r,i.COMPILE_STATUS)?r:(console.log("An error occurred compiling the shaders: "+i.getShaderInfoLog(r)),i.deleteShader(r),null)}_initBuffers(){const e=this.gl,t=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,t);const i=[-1,-1,1,-1,1,1,-1,1];e.bufferData(e.ARRAY_BUFFER,new Float32Array(i),e.STATIC_DRAW);var r=[];r=r.concat([0,1],[1,1],[1,0],[0,0]);const s=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,s),e.bufferData(e.ARRAY_BUFFER,new Float32Array(r),e.STATIC_DRAW);const a=e.createBuffer();e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,a);return e.bufferData(e.ELEMENT_ARRAY_BUFFER,new Uint16Array([0,1,2,0,2,3]),e.STATIC_DRAW),{positions:i,position:t,texPosition:s,indices:a}}_createTexture(){let e=this.gl.createTexture();return this.gl.bindTexture(this.gl.TEXTURE_2D,e),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_MAG_FILTER,this.gl.LINEAR),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_MIN_FILTER,this.gl.LINEAR),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_WRAP_S,this.gl.CLAMP_TO_EDGE),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_WRAP_T,this.gl.CLAMP_TO_EDGE),e}_drawScene(e,t,i){this.gl.viewport(0,0,e,t),this.gl.enable(this.gl.BLEND),this.gl.blendFunc(this.gl.SRC_ALPHA,this.gl.ONE_MINUS_SRC_ALPHA),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,this._buffers.position),this.gl.bufferData(this.gl.ARRAY_BUFFER,new Float32Array(this._buffers.positions),this.gl.STATIC_DRAW),this.gl.vertexAttribPointer(this._programInfo.attribLocations.vertexPosition,2,this.gl.FLOAT,!1,0,0),this.gl.enableVertexAttribArray(this._programInfo.attribLocations.vertexPosition),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,this._buffers.texPosition),this.gl.vertexAttribPointer(this._programInfo.attribLocations.texturePosition,2,this.gl.FLOAT,!1,0,0),this.gl.enableVertexAttribArray(this._programInfo.attribLocations.texturePosition),this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER,this._buffers.indices);i?(this.gl.activeTexture(this.gl.TEXTURE0+3),this.gl.bindTexture(this.gl.TEXTURE_2D,this._ytexture),this.gl.activeTexture(this.gl.TEXTURE0+4),this.gl.bindTexture(this.gl.TEXTURE_2D,this._utexture),this.gl.activeTexture(this.gl.TEXTURE0+5),this.gl.bindTexture(this.gl.TEXTURE_2D,this._vtexture)):(this.gl.activeTexture(this.gl.TEXTURE0+2),this.gl.bindTexture(this.gl.TEXTURE_2D,this._rgbatexture)),this.gl.useProgram(this._programInfo.program),this.gl.uniform1i(this._programInfo.uniformLocations.rgbatexture,2),this.gl.uniform1i(this._programInfo.uniformLocations.ytexture,3),this.gl.uniform1i(this._programInfo.uniformLocations.utexture,4),this.gl.uniform1i(this._programInfo.uniformLocations.vtexture,5),this.gl.uniform1i(this._programInfo.uniformLocations.isyuv,i?1:0),this.gl.drawElements(this.gl.TRIANGLES,6,this.gl.UNSIGNED_SHORT,0)}_calRect(e,t,i,r,s,a){let n=2*e/s-1,o=2*(a-t-r)/a-1,l=2*(e+i)/s-1,d=2*(a-t)/a-1;return[n,o,l,o,l,d,n,d]}_clear(){this.gl.clearColor(0,0,0,1),this.gl.clearDepth(1),this.gl.clear(this.gl.COLOR_BUFFER_BIT|this.gl.DEPTH_BUFFER_BIT)}render(e,t,i,r,s){const a=this.gl;this._clear(),a.activeTexture(a.TEXTURE0),a.bindTexture(a.TEXTURE_2D,this._ytexture),a.texImage2D(a.TEXTURE_2D,0,a.LUMINANCE,e,t,0,a.LUMINANCE,a.UNSIGNED_BYTE,i),a.activeTexture(a.TEXTURE1),a.bindTexture(a.TEXTURE_2D,this._utexture),a.texImage2D(a.TEXTURE_2D,0,a.LUMINANCE,e/2,t/2,0,a.LUMINANCE,a.UNSIGNED_BYTE,r),a.activeTexture(a.TEXTURE2),a.bindTexture(a.TEXTURE_2D,this._vtexture),a.texImage2D(a.TEXTURE_2D,0,a.LUMINANCE,e/2,t/2,0,a.LUMINANCE,a.UNSIGNED_BYTE,s),this._buffers.positions=[-1,-1,1,-1,1,1,-1,1],this._drawScene(e,t,!0)}renderYUV(e,t,i){let r=i.slice(0,e*t),s=i.slice(e*t,e*t*5/4),a=i.slice(e*t*5/4,e*t*3/2);const n=this.gl;this._clear(),n.activeTexture(n.TEXTURE0),n.bindTexture(n.TEXTURE_2D,this._ytexture),n.texImage2D(n.TEXTURE_2D,0,n.LUMINANCE,e,t,0,n.LUMINANCE,n.UNSIGNED_BYTE,r),n.activeTexture(n.TEXTURE1),n.bindTexture(n.TEXTURE_2D,this._utexture),n.texImage2D(n.TEXTURE_2D,0,n.LUMINANCE,e/2,t/2,0,n.LUMINANCE,n.UNSIGNED_BYTE,s),n.activeTexture(n.TEXTURE2),n.bindTexture(n.TEXTURE_2D,this._vtexture),n.texImage2D(n.TEXTURE_2D,0,n.LUMINANCE,e/2,t/2,0,n.LUMINANCE,n.UNSIGNED_BYTE,a),this._buffers.positions=[-1,-1,1,-1,1,1,-1,1],this._drawScene(e,t,!0)}drawDom(e,t,i,r,s){const a=this.gl;a.activeTexture(a.TEXTURE0),a.bindTexture(a.TEXTURE_2D,this._rgbatexture),a.texImage2D(a.TEXTURE_2D,0,a.RGBA,a.RGBA,a.UNSIGNED_BYTE,s),this._buffers.positions=this._calRect(i,r,s.width,s.height,e,t),this._drawScene(e,t,!1)}}class Fa{constructor(e){this.gpu=e,this.pipeline=null,this.matrixGroupInfo=null,this.depthTexture=null,this.textureGroupInfo=null,this.hasInited=!1,this.buffers=this._initBuffer(),this._initPipeline().then((e=>{this.pipeline=e,this.matrixGroupInfo=this._initMatrixGroupInfo(),this.hasInited=!0}))}destroy(){this.gpu&&(this.gpu.device.destroy(),this.gpu=null),this.hasInited=!1,this.pipeline=null,this.matrixGroupInfo=null,this.depthTexture=null,this.textureGroupInfo=null}_initBuffer(){const e=this.gpu.device,t=new Float32Array([-1,-1,-1,1,-1,-1,1,1,-1,-1,1,-1]),i=e.createBuffer({size:t.byteLength,usage:window.GPUBufferUsage.VERTEX|window.GPUBufferUsage.COPY_DST});e.queue.writeBuffer(i,0,t);const r=new Float32Array([0,1,1,1,1,0,0,0]),s=e.createBuffer({size:r.byteLength,usage:window.GPUBufferUsage.VERTEX|window.GPUBufferUsage.COPY_DST});e.queue.writeBuffer(s,0,r);const a=new Uint16Array([0,1,2,0,2,3]),n=e.createBuffer({size:a.byteLength,usage:window.GPUBufferUsage.INDEX|window.GPUBufferUsage.COPY_DST});return e.queue.writeBuffer(n,0,a),{positionBuffer:i,texpositionBuffer:s,indexBuffer:n}}_initPipeline(){return new Promise(((e,t)=>{const i=this.gpu.device,r=this.gpu.format,s={layout:"auto",vertex:{module:i.createShaderModule({code:"\n\n @binding(0) @group(0) var uModelMatrix : mat4x4;\n @binding(1) @group(0) var uViewMatrix : mat4x4;\n @binding(2) @group(0) var uProjectionMatrix : mat4x4;\n\n struct VertexOutput {\n @builtin(position) Position : vec4,\n @location(0) vTexturePosition : vec2,\n }\n\n @vertex\n fn main(\n @location(0) aVertexPosition : vec4,\n @location(1) aTexturePosition : vec2\n ) -> VertexOutput {\n var output : VertexOutput;\n var tmppos : vec4 = uProjectionMatrix * uViewMatrix * uModelMatrix * aVertexPosition;\n output.Position = vec4(tmppos.x, tmppos.y, (tmppos.z+1.)/2., tmppos.w); // webgl z [-1, 1], webgpu z [0, 1], 这里z做下调整 z-webgpu = (z-webgl+1)/2\n output.vTexturePosition = aTexturePosition;\n return output;\n }\n\n "}),entryPoint:"main",buffers:[{arrayStride:12,attributes:[{shaderLocation:0,offset:0,format:"float32x3"}]},{arrayStride:8,attributes:[{shaderLocation:1,offset:0,format:"float32x2"}]}]},primitive:{topology:"triangle-list"},fragment:{module:i.createShaderModule({code:"\n @group(1) @binding(0) var mySampler: sampler;\n @group(1) @binding(1) var yTexture: texture_2d;\n @group(1) @binding(2) var uTexture: texture_2d;\n @group(1) @binding(3) var vTexture: texture_2d;\n\n const YUV2RGB : mat4x4 = mat4x4( 1.1643828125, 0, 1.59602734375, -.87078515625,\n 1.1643828125, -.39176171875, -.81296875, .52959375,\n 1.1643828125, 2.017234375, 0, -1.081390625,\n 0, 0, 0, 1);\n\n @fragment\n fn main(\n @location(0) vTexturePosition: vec2\n ) -> @location(0) vec4 {\n\n var y : f32= textureSample(yTexture, mySampler, vTexturePosition).r;\n var u : f32 = textureSample(uTexture, mySampler, vTexturePosition).r;\n var v : f32 = textureSample(vTexture, mySampler, vTexturePosition).r;\n\n return vec4(y, u, v, 1.0)*YUV2RGB;\n }\n\n "}),entryPoint:"main",targets:[{format:r}]},depthStencil:{depthWriteEnabled:!0,depthCompare:"less",format:"depth24plus"}};i.createRenderPipelineAsync(s).then((t=>{e(t)})).catch((e=>{t(e)}))}))}_initMatrixGroupInfo(){const e=this.gpu.device,t=this.pipeline,i=La();Ba(i,-1,1,-1,1,.1,100);const r=La();Ia(r);const s=La();!function(e,t,i,r){var s,a,n,o,l,d,h,c,u,p,f=t[0],m=t[1],y=t[2],g=r[0],A=r[1],v=r[2],b=i[0],_=i[1],E=i[2];Math.abs(f-b)Vs(e)));this.configList=i,this._updateDom()}_resizeDomForVideo(){const e=this.player.width,t=this.player.height,i=this.player.getVideoInfo();if(!(i&&i.height>0&&i.width>0))return;let r=i.width,s=i.height;const a=this.player._opt;let n=t,o=e;if(a.hasControl&&!a.controlAutoHide){const e=a.playType===v?Lt:0;bs()&&this.player.fullscreen&&a.useWebFullScreen?o-=e:n-=e}const l=a.rotate;let d=(o-r)/2,h=(n-s)/2;270!==l&&90!==l||(r=i.height,s=i.width);const c=o/r,u=n/s;let p=c>u?u:c;a.isResize||c!==u&&(p=c+","+u),a.isFullResize&&(p=c>u?c:u);let f="scale("+p+")";"none"===a.mirrorRotate&&l&&(f+=" rotate("+l+"deg)"),"level"===a.mirrorRotate?f+=" rotateY(180deg)":"vertical"===a.mirrorRotate&&(f+=" rotateX(180deg)"),this.scale=-1!==(""+p).indexOf(",")?c:p,this.shadowRootInnerDom.style.transform=f,this.shadowRootInnerDom.style.left=d+"px",this.shadowRootInnerDom.style.top=h+"px",this.shadowRootInnerDom.style.width=i.width+"px",this.shadowRootInnerDom.style.height=i.height+"px",this.shadowRootInnerDom.style.display="block"}_resizeDomForCanvas(){const e=this.player.getVideoInfo();if(!(e&&e.height>0&&e.width>0))return;const t=this.player._opt;let i=this.player.width,r=this.player.height;if(t.hasControl&&!t.controlAutoHide){const e=t.playType===v?Lt:0;bs()&&this.player.fullscreen&&t.useWebFullScreen?i-=e:r-=e}let s=e.width,a=e.height;const n=t.rotate;let o=(i-s)/2,l=(r-a)/2;270!==n&&90!==n||(s=e.height,a=e.width);const d=i/s,h=r/a;let c=d>h?h:d;t.isResize||d!==h&&(c=d+","+h),t.isFullResize&&(c=d>h?d:h);let u="scale("+c+")";"none"===t.mirrorRotate&&n&&(u+=" rotate("+n+"deg)"),"level"===t.mirrorRotate?u+=" rotateY(180deg)":"vertical"===t.mirrorRotate&&(u+=" rotateX(180deg)"),this.shadowRootInnerDom.style.height=e.height+"px",this.shadowRootInnerDom.style.width=e.width+"px",this.shadowRootInnerDom.style.padding="0",this.shadowRootInnerDom.style.transform=u,this.shadowRootInnerDom.style.left=o+"px",this.shadowRootInnerDom.style.top=l+"px",this.shadowRootInnerDom.style.display="block"}_resizeDomRatio(){const e=this.player.getVideoInfo();if(!(e&&e.height>0&&e.width>0))return;const t=this.player._opt.aspectRatio.split(":").map(Number);let i=this.player.width,r=this.player.height;const s=this.player._opt;let a=0;s.hasControl&&!s.controlAutoHide&&(a=s.playType===v?Lt:0,r-=a);const n=e.width/e.height,o=t[0]/t[1];if(n>o){const t=o*e.height/e.width;this.shadowRootInnerDom.style.width=100*t+"%",this.shadowRootInnerDom.style.height=`calc(100% - ${a}px)`,this.shadowRootInnerDom.style.padding=`0 ${(i-i*t)/2}px`}else{const t=e.width/o/e.height;this.shadowRootInnerDom.style.width="100%",this.shadowRootInnerDom.style.height=`calc(${100*t}% - ${a}px)`,this.shadowRootInnerDom.style.padding=(r-r*t)/2+"px 0"}this.shadowRootInnerDom.style.display="block"}_updateDom(){this.shadowRoot&&this.configList.forEach((e=>{const t=document.createElement("div");let i=null;if(e.image&&e.image.src?(i=document.createElement("img"),i.style.height="100%",i.style.width="100%",i.style.objectFit="contain",i.src=e.image.src):e.text&&e.text.content?i=document.createTextNode(e.text.content):(e.rect&&e.rect.color&&e.rect.width||e.html||e.line&&e.line.x1&&e.line.y1&&e.line.x2&&e.line.y2||e.polygon&&e.polygon.list&&e.polygon.list.length>=3)&&(i=document.createElement("div")),i){if(t.appendChild(i),t.style.visibility="",t.style.position="absolute",t.style.display="block",t.style["-ms-user-select"]="none",t.style["-moz-user-select"]="none",t.style["-webkit-user-select"]="none",t.style["-o-user-select"]="none",t.style["user-select"]="none",t.style["-webkit-touch-callout"]="none",t.style["-webkit-tap-highlight-color"]="rgba(0,0,0,0)",t.style["-webkit-text-size-adjust"]="none",t.style["-webkit-touch-callout"]="none",t.style.opacity=e.opacity,Ps(e.left)&&(t.style.left=e.left+"px"),Ps(e.right)&&(t.style.right=e.right+"px"),Ps(e.top)&&(t.style.top=e.top+"px"),Ps(e.bottom)&&(t.style.bottom=e.bottom+"px"),e.backgroundColor&&(t.style.backgroundColor=e.backgroundColor),t.style.overflow="hidden",t.style.zIndex="9999999",e.image&&e.image.src)t.style.width=e.image.width+"px",t.style.height=e.image.height+"px";else if(e.text&&e.text.content)t.style.fontSize=e.text.fontSize+"px",t.style.color=e.text.color,e.text.width&&(t.style.width=e.text.width+"px"),e.text.height&&(t.style.height=e.text.height+"px");else if(e.rect&&e.rect.color&&e.rect.width){if(t.style.width=e.rect.width+"px",t.style.height=e.rect.height+"px",t.style.borderWidth=e.rect.lineWidth+"px",t.style.borderStyle="solid",t.style.borderColor=e.rect.color,e.rect.fill){const i=document.createElement("div");i.style.position="absolute",i.style.width="100%",i.style.height="100%",i.style.backgroundColor=e.rect.fill,e.rect.fillOpacity&&(i.style.opacity=e.rect.fillOpacity),t.appendChild(i)}}else if(e.html)t.style.width="100%",t.style.height="100%",t.innerHTML=e.html;else if(e.line&&e.line.x1&&e.line.y1&&e.line.x2&&e.line.y2)this.settingLine(t,e.line);else if(e.polygon&&e.polygon.list&&e.polygon.list.length>=3){t.style.width="100%",t.style.height="100%";let i=e.polygon.list;const r=e.polygon.color,s=e.polygon.lineWidth;if(i=i.sort(((e,t)=>(e.index||0)-(t.index||0))),e.polygon.fill){const r=document.createElement("div");r.style.position="absolute",r.style.width="100%",r.style.height="100%";const s="polygon("+i.map((e=>`${e.x}px ${e.y}px`)).join(", ")+")";r.style.clipPath=s,r.style.backgroundColor=e.polygon.fill,e.polygon.fillOpacity&&(r.style.opacity=e.polygon.fillOpacity),t.appendChild(r)}i.forEach(((e,a)=>{const n=document.createElement("div");if(a===i.length-1){const a=i[0],o={x1:e.x,y1:e.y,x2:a.x,y2:a.y,color:r,lineWidth:s};return this.settingLine(n,o),void t.appendChild(n)}const o=i[a+1],l={x1:e.x,y1:e.y,x2:o.x,y2:o.y,color:r,lineWidth:s};this.settingLine(n,l),t.appendChild(n)}))}this.isDynamic&&(this.shadowRootDynamicDom=t),this.shadowRootInnerDom.appendChild(t)}}))}settingLine(e,t){const i=t.x1,r=t.y1,s=t.x2,a=t.y2;var n=Math.sqrt((i-s)**2+(r-a)**2),o=180*Math.atan2(a-r,s-i)/Math.PI;e.style.backgroundColor=t.color,e.style.width=n+"px",e.style.height=t.lineWidth+"px",e.style.position="absolute",e.style.top=r+"px",e.style.left=i+"px",e.style.transform="rotate("+o+"deg)",e.style.transformOrigin="0 0"}remove(){this._removeDom()}_removeDom(){this.shadowRootInnerDom&&(this.shadowRootInnerDom.innerHTML="")}}class Na extends Ra{constructor(){super(),this.videoInfo={width:null,height:null,encType:null,encTypeCode:null},this.init=!1,this.prevAiFaceDetectTime=null,this.prevAiObjectDetectTime=null,this.prevOcclusionDetectTime=null,this.contentWatermark=null,this.aiContentWatermark=null,this.tempContentList=[],this.tempAiContentList=[],this.streamFps=0}destroy(){this.resetInit(),this.contentWatermark&&(this.contentWatermark.destroy(),this.contentWatermark=null),this.tempContentList=[],this.aiContentWatermark&&(this.aiContentWatermark.destroy(),this.aiContentWatermark=null),this.tempAiContentList=[],this.prevAiFaceDetectTime=null,this.prevAiObjectDetectTime=null,this.streamFps=0,this.off()}resetInit(){this.videoInfo={width:null,height:null,encType:null,encTypeCode:null},this.init=!1}getHasInit(){return this.init}updateVideoInfo(e){zs(e.encTypeCode)&&(this.videoInfo.encType=ft[e.encTypeCode],this.videoInfo.encTypeCode=e.encTypeCode),zs(e.encType)&&(this.videoInfo.encType=e.encType),zs(e.width)&&(this.videoInfo.width=e.width),zs(e.height)&&(this.videoInfo.height=e.height),zs(this.videoInfo.encType)&&zs(this.videoInfo.height)&&zs(this.videoInfo.width)&&!this.init&&(this.player.emit(rt.videoInfo,this.videoInfo),this.init=!0)}getVideoInfo(){return this.videoInfo}clearView(){this.tempContentList=[],this.tempAiContentList=[]}resize(){if(this.player.debug.log("CommonVideo","resize()"),"default"===this.player._opt.aspectRatio||bs()?this._resize():this._resizeRatio(),this.contentWatermark&&this.contentWatermark.resize(),this.aiContentWatermark&&this.aiContentWatermark.resize(),this.player.singleWatermark&&this.player.singleWatermark.resize(),this.player.ghostWatermark&&this.player.ghostWatermark.resize(),this.player.dynamicWatermark&&this.player.dynamicWatermark.resize(),this.player.zoom&&this.player.zooming){const e=this._getStyleScale();this.player.zoom.updatePrevVideoElementStyleScale(e),this.player.zoom.updateVideoElementScale()}}_resizeRatio(){this.player.debug.log("CommonVideo","_resizeRatio()");const e=this.player._opt.aspectRatio.split(":").map(Number);let t=this.player.width,i=this.player.height;const r=this.player._opt;let s=0;r.hasControl&&!r.controlAutoHide&&(s=r.playType===v?Lt:0,i-=s);const a=this.videoInfo,n=a.width/a.height,o=e[0]/e[1];if(this.getType()===$&&(this.$videoElement.style.left="0",this.$videoElement.style.top="0",this.$videoElement.style.transform="none"),this.getType()===K&&this.player._opt.videoRenderSupportScale&&(this.$videoElement.style.objectFit="fill"),n>o){const e=o*a.height/a.width;this.$videoElement.style.width=100*e+"%",this.$videoElement.style.height=`calc(100% - ${s}px)`,this.$videoElement.style.padding=`0 ${(t-t*e)/2}px`}else{const e=a.width/o/a.height;this.$videoElement.style.width="100%",this.$videoElement.style.height=`calc(${100*e}% - ${s}px)`,this.$videoElement.style.padding=(i-i*e)/2+"px 0"}}play(){}pause(){}setRate(e){}getType(){return""}getCanvasType(){return""}getCurrentTime(){return 0}getStreamFps(){return this.streamFps}isPlaying(){return!0}getPlaybackQuality(){return null}setStreamFps(e){this.player.debug.log("CommonVideo","setStreamFps",e),this.streamFps=e}addContentToCanvas(e=[]){this.tempContentList=e}addAiContentToCanvas(e=[]){this.tempAiContentList=e}doAddContentToWatermark(){if(this.tempContentList.length>0){this.contentWatermark||(this.contentWatermark=new Oa(this.player),this.contentWatermark.resize());const e=[];this.tempContentList.forEach((t=>{let i={left:t.x||0,top:t.y||0};"text"===t.type?i.text={content:t.text,fontSize:t.fontSize||"14",color:t.color||"#000"}:"rect"===t.type?i.rect={width:t.width,height:t.height,color:t.color||"green",lineWidth:t.lineWidth||2,fill:t.fill||"",fillOpacity:t.fillOpacity||.2}:"polygon"===t.type?i.polygon={list:t.list,color:t.color||"green",lineWidth:t.lineWidth||2,fill:t.fill,fillOpacity:t.fillOpacity||.2}:"line"===t.type&&(i.line={color:t.color||"green",lineWidth:t.lineWidth||2,x1:t.x1,y1:t.y1,x2:t.x2,y2:t.y2}),e.push(i)})),this.contentWatermark.update(e)}else this.contentWatermark&&this.contentWatermark.remove()}doAddAiContentToWatermark(){if(this.tempAiContentList.length>0){this.aiContentWatermark||(this.aiContentWatermark=new Oa(this.player),this.aiContentWatermark.resize());const e=this.tempAiContentList.map((e=>{let t={left:e.x,top:e.y};return"text"===e.type?t.text={content:e.text,fontSize:e.fontSize,color:e.color}:"rect"===e.type&&(t.rect={width:e.width,height:e.height,color:e.color,lineWidth:e.lineWidth}),t}));this.aiContentWatermark.update(e)}else this.aiContentWatermark&&this.aiContentWatermark.remove()}_getStyleScale(){let e=this.$videoElement.style.transform.match(/scale\([0-9., ]*\)/g),t="";if(e&&e[0]){t=e[0].replace("scale(","").replace(")","").split(",")}return t}}var Ga="object"==typeof window&&window.window===window?window:"object"==typeof self&&self.self===self?self:"object"==typeof global&&global.global===global?global:void 0;function za(e,t,i){var r=new XMLHttpRequest;r.open("GET",e),r.responseType="blob",r.onload=function(){ja(r.response,t,i)},r.onerror=function(){console.error("could not download file")},r.send()}function Va(e){var t=new XMLHttpRequest;t.open("HEAD",e,!1);try{t.send()}catch(e){}return t.status>=200&&t.status<=299}function Ha(e){try{e.dispatchEvent(new MouseEvent("click"))}catch(i){var t=document.createEvent("MouseEvents");t.initMouseEvent("click",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),e.dispatchEvent(t)}}var Wa=Ga.navigator&&/Macintosh/.test(navigator.userAgent)&&/AppleWebKit/.test(navigator.userAgent)&&!/Safari/.test(navigator.userAgent),ja="object"!=typeof window||window!==Ga?function(){}:"download"in HTMLAnchorElement.prototype&&!Wa?function(e,t,i){var r=Ga.URL||Ga.webkitURL,s=document.createElementNS("http://www.w3.org/1999/xhtml","a");t=t||e.name||"download",s.download=t,s.rel="noopener","string"==typeof e?(s.href=e,s.origin!==location.origin?Va(s.href)?za(e,t,i):Ha(s,s.target="_blank"):Ha(s)):(s.href=r.createObjectURL(e),setTimeout((function(){r.revokeObjectURL(s.href)}),4e4),setTimeout((function(){Ha(s)}),0))}:"msSaveOrOpenBlob"in navigator?function(e,t,i){if(t=t||e.name||"download","string"==typeof e)if(Va(e))za(e,t,i);else{var r=document.createElement("a");r.href=e,r.target="_blank",setTimeout((function(){Ha(r)}))}else navigator.msSaveOrOpenBlob(function(e,t){return void 0===t?t={autoBom:!1}:"object"!=typeof t&&(console.warn("Deprecated: Expected third argument to be a object"),t={autoBom:!t}),t.autoBom&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(e.type)?new Blob([String.fromCharCode(65279),e],{type:e.type}):e}(e,i),t)}:function(e,t,i,r){if((r=r||open("","_blank"))&&(r.document.title=r.document.body.innerText="downloading..."),"string"==typeof e)return za(e,t,i);var s="application/octet-stream"===e.type,a=/constructor/i.test(Ga.HTMLElement)||Ga.safari,n=/CriOS\/[\d]+/.test(navigator.userAgent);if((n||s&&a||Wa)&&"undefined"!=typeof FileReader){var o=new FileReader;o.onloadend=function(){var e=o.result;e=n?e:e.replace(/^data:[^;]*;/,"data:attachment/file;"),r?r.location.href=e:location=e,r=null},o.readAsDataURL(e)}else{var l=Ga.URL||Ga.webkitURL,d=l.createObjectURL(e);r?r.location=d:location.href=d,r=null,setTimeout((function(){l.revokeObjectURL(d)}),4e4)}};class $a{constructor(e,t){this.canvas=e,this.gl=t;const i=t.createShader(t.VERTEX_SHADER);if(t.shaderSource(i,"\n attribute vec2 xy;\n varying highp vec2 uv;\n void main(void) {\n gl_Position = vec4(xy, 0.0, 1.0);\n // Map vertex coordinates (-1 to +1) to UV coordinates (0 to 1).\n // UV coordinates are Y-flipped relative to vertex coordinates.\n uv = vec2((1.0 + xy.x) / 2.0, (1.0 - xy.y) / 2.0);\n }\n "),t.compileShader(i),!t.getShaderParameter(i,t.COMPILE_STATUS))throw t.getShaderInfoLog(i);const r=t.createShader(t.FRAGMENT_SHADER);if(t.shaderSource(r,"\n varying highp vec2 uv;\n uniform sampler2D texture;\n void main(void) {\n gl_FragColor = texture2D(texture, uv);\n }\n "),t.compileShader(r),!t.getShaderParameter(r,t.COMPILE_STATUS))throw t.getShaderInfoLog(r);const s=t.createProgram();if(t.attachShader(s,i),t.attachShader(s,r),t.linkProgram(s),!t.getProgramParameter(s,t.LINK_STATUS))throw t.getProgramInfoLog(s);t.useProgram(s);const a=t.createBuffer();t.bindBuffer(t.ARRAY_BUFFER,a),t.bufferData(t.ARRAY_BUFFER,new Float32Array([-1,-1,-1,1,1,1,1,-1]),t.STATIC_DRAW);const n=t.getAttribLocation(s,"xy");t.vertexAttribPointer(n,2,t.FLOAT,!1,0,0),t.enableVertexAttribArray(n);const o=t.createTexture();t.bindTexture(t.TEXTURE_2D,o),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.NEAREST),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.NEAREST),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),this.program=s,this.buffer=a,this.vertexShader=i,this.fragmentShader=r,this.texture=o}destroy(){this.gl.deleteProgram(this.program),this.gl.deleteBuffer(this.buffer),this.gl.deleteTexture(this.texture),this.gl.deleteShader(this.vertexShader),this.gl.deleteShader(this.fragmentShader),this.program=null,this.buffer=null,this.vertexShader=null,this.fragmentShader=null,this.texture=null}render(e){this.canvas.width=e.displayWidth,this.canvas.height=e.displayHeight;const t=this.gl;t.texImage2D(t.TEXTURE_2D,0,t.RGBA,t.RGBA,t.UNSIGNED_BYTE,e),t.viewport(0,0,t.drawingBufferWidth,t.drawingBufferHeight),t.clearColor(1,0,0,1),t.clear(t.COLOR_BUFFER_BIT),t.drawArrays(t.TRIANGLE_FAN,0,4)}}class Ka extends Na{constructor(e){super(),this.player=e;const t=document.createElement("canvas");t.style.position="absolute",t.style.top=0,t.style.left=0,this.$videoElement=t,e.$container.appendChild(this.$videoElement),this.context2D=null,this.contextGl=null,this.webglRender=null,this.webglRectRender=null,this.webGPURender=null,this.isWebglContextLost=!1,this.isWcsWebgl2=!1,this.bitmaprenderer=null,this.renderType=null,this.controlHeight=0,this.proxyDestroyList=[],this._initCanvasRender()}destroy(){super.destroy(),this.proxyDestroyList.length>0&&(this.proxyDestroyList.forEach((e=>{e&&e()})),this.proxyDestroyList=[]),this.contextGl&&(this.contextGl=null),this.context2D&&(this.context2D=null),this.webglRender&&(this.webglRender.destroy(),this.webglRender=null),this.webglRectRender&&(this.webglRectRender.destroy(),this.webglRectRender=null),this.webGPURender&&(this.webGPURender.destroy(),this.webGPURender=null),this.bitmaprenderer&&(this.bitmaprenderer=null),this.renderType=null,this.isWebglContextLost=!1,this.videoInfo={width:"",height:"",encType:""},this.player.$container.removeChild(this.$videoElement),this.init=!1,this.off()}_initContext2D(e={}){this.context2D=this.$videoElement.getContext("2d",e)}_initContextGl(){this.player.events,this.contextGl=hs(this.$videoElement),this.contextGl?(this._bindContextGlEvents(),this.webglRender=new Ua(this.contextGl,this.player._opt.openWebglAlignment)):this.player.debug.error("CommonCanvasLoader","_initContextGl() createContextGL error")}_initContextGl2(){if(this.contextGl=cs(this.$videoElement),this.contextGl){this._bindContextGlEvents(2);try{this.webglRender=new $a(this.$videoElement,this.contextGl)}catch(e){this.player.debug.error("CommonCanvasLoader",`create webgl2Render error is ${e} and next use context2d.draw render`),this.contextGl=null,this.webglRender=null,this._initContext2D()}}else this.player.debug.error("CommonCanvasLoader","_initContextGl2() createContextGL2 error")}_bindContextGlEvents(e=1){const{proxy:t}=this.player.events,i=t(this.$videoElement,"webglcontextlost",(t=>{t.preventDefault(),this.player.debug.error("canvasVideo","webglcontextlost error",t),this.isWebglContextLost=!0,this.webglRender&&(this.player.debug.log("CommonCanvasLoader","webglcontextlost error and destroy webglRender"),this.webglRender.destroy(),this.webglRender=null),this.webglRectRender&&(this.player.debug.log("CommonCanvasLoader","webglcontextlost error and destroy webglRectRender"),this.webglRectRender.destroy(),this.webglRectRender=null),this.contextGl=null,setTimeout((()=>{if(this.player.debug.log("CommonCanvasLoader",`createContextGL() version ${e}`),1===e?this.contextGl=hs(this.$videoElement):2===e&&(this.contextGl=cs(this.$videoElement)),this.player.debug.log("CommonCanvasLoader","createContextGL success"),this.contextGl&&this.contextGl.getContextAttributes){const t=this.contextGl.getContextAttributes();t&&t.stencil?(1===e?this.webglRender=new Ua(this.contextGl,this.player._opt.openWebglAlignment):2===e&&(this.webglRender=new $a(this.$videoElement,this.contextGl)),this.isWebglContextLost=!1,this.player.debug.log("CommonCanvasLoader","webglcontextlost error reset and getContextAttributes().stencil is true")):(this.player.debug.error("CommonCanvasLoader","webglcontextlost error, getContextAttributes().stencil is false"),this.player.emitError(nt.webglContextLostError))}else this.player.debug.error("CommonCanvasLoader","webglcontextlost error, getContextAttributes().stencil is false"),this.player.emitError(nt.webglContextLostError)}),500)})),r=t(this.$videoElement,"webglcontextrestored",(e=>{e.preventDefault(),this.player.debug.log("CommonCanvasLoader","webglcontextrestored ",e)}));this.proxyDestroyList.push(i,r)}_initContextGPU(){var t;(t=this.$videoElement,new Promise(((e,i)=>{navigator.gpu?navigator.gpu.requestAdapter().then((r=>{r?r.requestDevice().then((s=>{if(s){const a=t.getContext("webgpu");if(a){const t=navigator.gpu.getPreferredCanvasFormat();a.configure({device:s,format:t,alphaMode:"opaque"}),e({adapter:r,device:s,context:a,format:t})}else i('WebGPU "context" create fail')}else i('WebGPU "device" request fail')})).catch((e=>{i('WebGPU "adapter.requestDevice()" fail')})):i('WebGPU "adapter" request fail is empty')})).catch((e=>{i('WebGPU "navigator.gpu.requestAdapter()" fail')})):i("WebGPU not support!!")}))).then((t=>{t?(this.webGPURender=new Fa(t),this.player.debug.log("CommonCanvasLoader","webGPURender init success")):(this.player.debug.warn("CommonCanvasLoader",`createWebGPUContext error is ${e} and next use webgl render`),this.renderType=Ut,this._initContextGl())})).catch((e=>{this.player.debug.warn("CommonCanvasLoader",`createWebGPUContext error is ${e} and next use webgl render`),this.renderType=Ut,this._initContextGl()}))}initCanvasViewSize(){this.$videoElement.width=this.videoInfo.width,this.$videoElement.height=this.videoInfo.height,this.resize()}screenshot(e,t,i,r){e=e||ps(),r=r||ct.download;let s=.92;!vi[t]&&ct[t]&&(r=t,t="png",i=void 0),"string"==typeof i&&(r=i,i=void 0),void 0!==i&&(s=Number(i));const a=vi[t]||vi.png,n=this.$videoElement.toDataURL(a,s);if(r===ct.base64)return n;{const t=us(n);if(r===ct.blob)return t;if(r===ct.download){const i=a.split("/")[1];ja(t,e+"."+i)}}}screenshotWatermark(e){return new Promise(((t,i)=>{Zs(e)&&(e={filename:e}),(e=e||{}).width=this.videoInfo.width,e.height=this.videoInfo.height,e.filename=e.filename||ps(),e.format=e.format?vi[e.format]:vi.png,e.quality=Number(e.quality)||.92,e.type=e.type||ct.download;const r=this.$videoElement.toDataURL(e.format,e.quality);Ws(r,e).then((i=>{if(e.type===ct.base64)t(r);else{const r=us(i);if(e.type===ct.blob)t(r);else if(e.type===ct.download){t();const i=e.format.split("/")[1];ja(r,e.filename+"."+i)}}})).catch((e=>{i(e)}))}))}render(){}clearView(){super.clearView()}play(){}pause(){}_resize(){this.player.debug.log("canvasVideo","_resize()");const e=this.player._opt;let t=this.player.width,i=this.player.height;if(e.hasControl&&!e.controlAutoHide){const r=this.controlHeight;bs()&&this.player.fullscreen&&e.useWebFullScreen?t-=r:i-=r}let r=this.$videoElement.width,s=this.$videoElement.height;const a=e.rotate;let n=(t-r)/2,o=(i-s)/2;270!==a&&90!==a||(r=this.$videoElement.height,s=this.$videoElement.width);const l=t/r,d=i/s;let h=l>d?d:l;ba(e.isResize)&&l!==d&&(h=l+","+d),e.isFullResize&&(h=l>d?l:d);let c="scale("+h+")";"none"===e.mirrorRotate&&a&&(c+=" rotate("+a+"deg)"),"level"===e.mirrorRotate?c+=" rotateY(180deg)":"vertical"===e.mirrorRotate&&(c+=" rotateX(180deg)"),this.$videoElement.style.height=this.videoInfo.height+"px",this.$videoElement.style.width=this.videoInfo.width+"px",this.$videoElement.style.padding="0",this.$videoElement.style.transform=c,this.$videoElement.style.left=n+"px",this.$videoElement.style.top=o+"px"}initFps(){}setStreamFps(e){}getStreamFps(){return 25}getType(){return $}getCanvasType(){let e=this.renderType===Ot?Ot:Ut;return this.isWcsWebgl2&&(e=Ft),e}}class qa extends Ka{constructor(e){super(e),this.yuvList=[],this.controlHeight=0,this.tempTextCanvas=null,this.tempTextCanvasCtx=null,this.player.debug.log("CanvasVideo","init")}destroy(){super.destroy(),this.yuvList=[],this.tempTextCanvas&&(this.tempTextCanvasCtx.clearRect(0,0,this.tempTextCanvas.width,this.tempTextCanvas.height),this.tempTextCanvas.width=0,this.tempTextCanvas.height=0,this.tempTextCanvas=null),this.player.debug.log("CanvasVideoLoader","destroy")}_initCanvasRender(){this.player._opt.useWCS&&!this._supportOffscreen()?(this.renderType=Mt,Sa()&&this.player._opt.wcsUseWebgl2Render?(this._initContextGl2(),this.webglRender&&(this.isWcsWebgl2=!0)):this._initContext2D()):this.player._opt.useMSE&&this.player._opt.mseUseCanvasRender?(this.renderType=Gt,this._initContext2D()):this.player.isOldHls()&&this.player._opt.useCanvasRender?(this.renderType=zt,this._initContext2D()):this.player.isWebrtcH264()&&this.player._opt.webrtcUseCanvasRender?(this.renderType=Vt,this._initContext2D()):this._supportOffscreen()?(this.renderType=Nt,this._bindOffscreen()):this.player._opt.useWebGPU?(this.renderType=Ot,this._initContextGPU()):(this.renderType=Ut,this._initContextGl())}_supportOffscreen(){return"function"==typeof this.$videoElement.transferControlToOffscreen&&this.player._opt.useOffscreen}_bindOffscreen(){this.bitmaprenderer=this.$videoElement.getContext("bitmaprenderer")}render(e){this.yuvList.push(e),this.startRender()}startRender(){for(;!(this.yuvList.length<=0);){const e=this.yuvList.shift();this.doRender(e)}}doRender(e){if(this.renderType!==Gt){const t={ts:e.ts||0,fps:!0};this.player.updateStats(t)}switch(this.renderType){case Nt:this.bitmaprenderer.transferFromImageBitmap(e.buffer);break;case Ut:case Ot:if(this.isWebglContextLost)return void this.player.debug.warn("CanvasVideoLoader","doRender() and webgl context is lost");let t=e.output;if(this.player.faceDetectActive&&this.player.ai&&this.player.ai.faceDetector){null===this.prevAiFaceDetectTime&&(this.prevAiFaceDetectTime=ps());const i=ps();i-this.prevAiFaceDetectTime>=this.player._opt.aiFaceDetectInterval&&(t=this.player.ai.faceDetector.detect({width:this.$videoElement.width,height:this.$videoElement.height,data:e.output,ts:e.ts||0}),this.prevAiFaceDetectTime=i)}if(this.player.objectDetectActive&&this.player.ai&&this.player.ai.objectDetector){null===this.prevAiObjectDetectTime&&(this.prevAiObjectDetectTime=ps());const i=ps();i-this.prevAiObjectDetectTime>=this.player._opt.aiObjectDetectInterval&&(t=this.player.ai.objectDetector.detect({width:this.$videoElement.width,height:this.$videoElement.height,data:e.output,ts:e.ts||0}),this.prevAiObjectDetectTime=i)}if(this.player.occlusionDetectActive&&this.player.ai&&this.player.ai.occlusionDetector){null===this.prevAiOcclusionDetectTime&&(this.prevAiOcclusionDetectTime=ps());const t=ps();if(t-this.prevAiOcclusionDetectTime>=this.player._opt.aiOcclusionDetectInterval){const i=this.player.ai.occlusionDetector.check({width:this.$videoElement.width,height:this.$videoElement.height,data:e.output});this.prevAiOcclusionDetectTime=t,i&&this.player.emit(rt.aiOcclusionDetectResult,{ts:e.ts||0})}}if(this.player.imageDetectActive&&this.player.ai&&this.player.ai.imageDetector){const t=this.player.ai.imageDetector.check({width:this.$videoElement.width,height:this.$videoElement.height,data:e.output});if(t&&t.data&&(this.player.emit(rt.aiOcclusionDetectResult,{type:t.type,ts:e.ts||0}),this.player._opt.aiImageDetectDrop))return void this.player.debug.log("CanvasVideoLoader",`doRender() and ai image detect result type is ${t.type} and drop`)}if(this.renderType===Ot)try{if(!this.webGPURender)return void this.player.debug.warn("CanvasVideoLoader","doRender webgpu render is not init");this.webGPURender.renderYUV(this.$videoElement.width,this.$videoElement.height,t)}catch(e){this.player.debug.error("CanvasVideoLoader",`doRender webgpu render and error: ${e.toString()}`)}else if(this.renderType===Ut)try{this.webglRender.renderYUV(this.$videoElement.width,this.$videoElement.height,t)}catch(e){this.player.debug.error("CanvasVideoLoader",`doRender webgl render context is lost ${this.contextGl&&this.contextGl.isContextLost()} and error: ${e.toString()}`)}break;case Mt:if(this.webglRender)this.webglRender.render(e.videoFrame),da(e.videoFrame);else if(this.context2D)if(sa(e.videoFrame.createImageBitmap))try{e.videoFrame.createImageBitmap().then((t=>{this.context2D.drawImage(t,0,0,this.$videoElement.width,this.$videoElement.height),da(e.videoFrame)}))}catch(e){}else this.context2D.drawImage(e.videoFrame,0,0,this.$videoElement.width,this.$videoElement.height),da(e.videoFrame);else this.player.debug.warn("CanvasVideoLoader","doRender() and webcodecs context is lost");break;case Gt:case zt:case Vt:this.context2D.drawImage(e.$video,0,0,this.$videoElement.width,this.$videoElement.height)}let t=e.ts||0;this.renderType===Gt&&(t=parseInt(1e3*e.$video.currentTime,10)+(this.player.mseDecoder.firstRenderTime||0)),this.player.updateCurrentPts(t),this.doAddContentToWatermark(),this.doAddAiContentToWatermark()}clearView(){switch(super.clearView(),this.renderType){case Nt:(function(e,t){const i=document.createElement("canvas");i.width=e,i.height=t;const r=window.createImageBitmap(i,0,0,e,t);return i.width=0,i.height=0,r})(this.$videoElement.width,this.$videoElement.height).then((e=>{this.bitmaprenderer.transferFromImageBitmap(e)}));break;case Ut:this.contextGl.clear(this.contextGl.COLOR_BUFFER_BIT);break;case Ot:this.webGPURender.clear();break;case Mt:this.contextGl?this.contextGl.clear(this.contextGl.COLOR_BUFFER_BIT):this.context2D&&this.context2D.clearRect(0,0,this.$videoElement.width,this.$videoElement.height);break;case Gt:case zt:case Vt:this.context2D.clearRect(0,0,this.$videoElement.width,this.$videoElement.height)}}_initTempTextCanvas(){this.tempTextCanvas=document.createElement("canvas"),this.tempTextCanvasCtx=this.tempTextCanvas.getContext("2d"),this.tempTextCanvas.width=600,this.tempTextCanvas.height=20}doAddContentToCanvas(){this.tempContentList.length>0&&this.context2D&&function({ctx:e,list:t}){e.save(),(t||[]).forEach((t=>{"text"===t.type?(e.font=`${t.fontSize||12}px Arial`,e.fillStyle=t.color||"green",e.fillText(t.text,t.x,t.y)):"rect"===t.type&&(e.strokeStyle=t.color||"green",e.lineWidth=t.lineWidth||2,e.strokeRect(t.x,t.y,t.width,t.height))})),e.restore()}({ctx:this.context2D,list:this.tempContentList})}doAddContentToWebGlCanvas(){this.tempContentList.length>0&&this.contextGl&&this.webglRectRender&&this.tempContentList.forEach((e=>{const t=e.x,i=e.y;if("rect"===e.type){const s=e.width,a=e.height,n=(r=e.color||"#008000",[parseInt(r.substring(1,3),16)/255,parseInt(r.substring(3,5),16)/255,parseInt(r.substring(5,7),16)/255,1]),o=e.lineWidth||4;if(!s||!a)return;this.webglRectRender.drawBox({x:t,y:i,width:s,height:a,lineColor:n,lineWidth:o,canvasWidth:this.$videoElement.width,canvasHeight:this.$videoElement.height})}else if("text"===e.type){const r=e.text||"";if(!r)return;const s=e.fontSize||20,a=e.color||"#008000";this.tempTextCanvas||this._initTempTextCanvas(),this.tempTextCanvasCtx.clearRect(0,0,this.tempTextCanvas.width,this.tempTextCanvas.height),this.tempTextCanvasCtx.font=`${s}px Arial`,this.tempTextCanvasCtx.fillStyle=a,this.tempTextCanvasCtx.textBaseline="top",this.tempTextCanvasCtx.fillText(r,0,0),this.webglRender.drawDom(this.$videoElement.width,this.$videoElement.height,t,i,this.tempTextCanvas)}var r}))}}class Ya extends Na{constructor(e){super(),this.player=e,this.TAG_NAME="Video";const t=document.createElement("video"),i=document.createElement("canvas");t.muted=!0,t.style.position="absolute",t.style.top=0,t.style.left=0,this._delayPlay=!1,e.$container.appendChild(t),this.$videoElement=t,this.$canvasElement=i,this.canvasContext=i.getContext("2d"),this.mediaStream=null,this.vwriter=null,e.canVideoTrackWritter()&&Us()&&Fs()&&(this.trackGenerator=new MediaStreamTrackGenerator({kind:"video"}),this.mediaStream=new MediaStream([this.trackGenerator]),t.srcObject=this.mediaStream,this.vwriter=this.trackGenerator.writable.getWriter()),this.fixChromeVideoFlashBug(),this.fixMobileAutoFullscreen(),this.resize(),this.eventListenList=[],this.isRenderRetryPlaying=!1,this.isRenderRetryPlayingTimes=0,this.isRetryPlaying=!1,this.isRetryPlayingTimes=0,this.checkVideoCanplayTimeout=null;const r=Ta();this.supportVideoFrameCallbackHandle=null;const{proxy:s}=this.player.events,a=s(this.$videoElement,"canplay",(()=>{this.player.debug.log("Video","canplay"),this.player.isDestroyedOrClosed()||this._delayPlay&&(this.clearCheckVideoCanplayTimeout(),this._play(),Ta()?this.supportVideoFrameCallbackHandle||(this.supportVideoFrameCallbackHandle=this.$videoElement.requestVideoFrameCallback(this.videoFrameCallback.bind(this))):this.player.debug.warn("Video","not support requestVideoFrameCallback and use timeupdate event to update stats"))})),n=s(this.$videoElement,"waiting",(()=>{this.player.debug.log("Video","waiting")})),o=s(this.$videoElement,"loadedmetadata",(()=>{this.player.debug.log("Video","loadedmetadata")})),l=s(this.$videoElement,"timeupdate",(t=>{if(!this.player.isDestroyedOrClosed()){if(ba(r)){const t=parseInt(1e3*this.getCurrentTime(),10);(e.isWebrtcH264()||this.player.isOldHls()||this.player.isAliyunRtc())&&(this.player.emit(rt.timeUpdate,t),e.handleRender(),e.updateStats({fps:!0,ts:t,dts:t}))}this.player.isMseDecoderUseWorker()&&(this.player.decoderWorker.updateVideoTimestamp(this.getCurrentTime()),this._handleUpdatePlaybackRate())}})),d=s(this.$videoElement,"error",(()=>{this.player.debug.error("Video","Error Code "+this.$videoElement.error.code+" "+kr[this.$videoElement.error.code]+"; Details: "+this.$videoElement.error.message),this.player.isUseMSE()&&4===this.$videoElement.error.code&&-1!==this.$videoElement.error.message.indexOf(Cr)&&(this.player.isMSEVideoDecoderInitializationFailedNotSupportHevc=!0),this.player.isHlsCanVideoPlay()}));if(this.eventListenList.push(a,n,l,d,o),this.player.isMseDecoderUseWorker()){const e=s(this.$videoElement,wi,(()=>{this.player.debug.log(this.TAG_NAME,"video playback Rate change",this.$videoElement&&this.$videoElement.playbackRate),this.$videoElement&&this.$videoElement.paused&&(this.player.debug.log(this.TAG_NAME,"video is paused and next try to replay"),this.$videoElement.play())}));this.eventListenList.push(e)}this.player.debug.log("Video","init")}destroy(){if(super.destroy(),this.clearCheckVideoCanplayTimeout(),this._cancelVideoFrameCallback(),this.eventListenList&&(this.eventListenList.forEach((e=>{e()})),this.eventListenList=[]),this.isRenderRetryPlaying=!1,this.isRenderRetryPlayingTimes=0,this.isRetryPlaying=!1,this.isRetryPlayingTimes=0,this.player._opt.videoRenderSupportScale&&this._isNeedAddBackDropFilter()){const e=this.player.$container;e.style.backdropFilter="none",e.style.transform="none"}if(this.$canvasElement.height=0,this.$canvasElement.width=0,this.$canvasElement=null,this.canvasContext=null,this.$videoElement){this.$videoElement.pause(),this.$videoElement.currentTime=0,this.$videoElement.srcObject&&(this.$videoElement.srcObject=null,this.$videoElement.removeAttribute("srcObject")),this.$videoElement.src&&(this.$videoElement.src="",this.$videoElement.removeAttribute("src"));try{this.$videoElement.load()}catch(e){}this.player.$container.removeChild(this.$videoElement),this.$videoElement=null}this.trackGenerator&&(this.trackGenerator.stop(),this.trackGenerator=null),this.vwriter&&(this.vwriter.close(),this.vwriter=null),this._delayPlay=!1,this.mediaStream&&(this.mediaStream.getTracks().forEach((e=>e.stop())),this.mediaStream=null),this.off(),this.player.debug.log("Video","destroy")}videoFrameCallback(e,t={}){if(this.player.isDestroyedOrClosed())return void this.player.debug.log("Video","videoFrameCallback() and isDestroyedOrClosed and return");this.player.handleRender();const i=parseInt(1e3*Math.max(t.mediaTime,this.getCurrentTime()),10)||0;if(this.player.isUseHls265UseMse())this.player.updateStats({fps:!0,ts:i});else if(this.player.isMseDecoderUseWorker()){this.player._times.videoStart||(this.player._times.videoStart=ps(),this.player.handlePlayToRenderTimes());const e=i+(this.player._mseWorkerData.firstRenderTime||0);if(this.player.updateStats({fps:!0,dfps:!0,ts:e,mseTs:i}),this.player.emit(rt.timeUpdate,e),ba(this.getHasInit())&&t.width&&t.height){const e={width:t.width,height:t.height};this.updateVideoInfo(e),this.initCanvasViewSize()}}if(this.player.isWebrtcH264()||this.player.isOldHls()||this.player.isAliyunRtc()){if(this.player.emit(rt.timeUpdate,i),ba(this.getHasInit())&&t.width&&t.height){const e={width:t.width,height:t.height};this.videoInfo.encTypeCode||this.player.isOldHls()||(e.encTypeCode=mt),this.updateVideoInfo(e)}this.player.updateStats({fps:!0,ts:i,dts:i}),this.player.updateCurrentPts(i),this.doAddContentToWatermark()}else if(va(this.player._opt.useMSE)&&ba(this.player._opt.mseUseCanvasRender)){if(this.player.mseDecoder){let e=parseInt(1e3*Math.max(t.mediaTime,this.getCurrentTime()),10)+(this.player.mseDecoder.firstRenderTime||0);this.player.updateCurrentPts(e)}else if(this.player._opt.mseDecoderUseWorker){let e=parseInt(1e3*Math.max(t.mediaTime,this.getCurrentTime()),10)+(this.player._mseWorkerData.firstRenderTime||0);this.player.updateCurrentPts(e)}this.doAddContentToWatermark()}this.supportVideoFrameCallbackHandle=this.$videoElement.requestVideoFrameCallback(this.videoFrameCallback.bind(this))}fixChromeVideoFlashBug(){if(this.player._opt.videoRenderSupportScale&&this._isNeedAddBackDropFilter()){const e=this.player.$container;e.style.backdropFilter="blur(0px)",e.style.transform="translateZ(0)"}}fixMobileAutoFullscreen(){const e=Ts(),t=Es();(e||t)&&(this.player.debug.log("Video",`fixMobileAutoFullscreen and isIOS ${e} and isAndroid ${t}`),this.$videoElement.setAttribute("webkit-playsinline","true"),this.$videoElement.setAttribute("playsinline","true"),this.$videoElement.setAttribute("x5-video-player-type","h5-page"))}_isNeedAddBackDropFilter(){const e=ws().type.toLowerCase();return"chrome"===e||"edge"===e}isPaused(){let e=!0;return this.$videoElement&&(e=this.$videoElement.paused),e}isPause(){return this.isPaused()}_getVideoReadyState(){let e=0;return this.$videoElement&&(e=this.$videoElement.readyState),e}_getVideoCurrentTime(){let e=0;return this.$videoElement&&(e=this.$videoElement.currentTime),e}play(){if(this.$videoElement){const e=this._getVideoReadyState();if(this.player.debug.log("Video",`play and readyState: ${e}`),0===e)return this.player.debug.log("Video","readyState is 0 and set _delayPlay to true and listen canplay event to play"),this._delayPlay=!0,void(null===this.checkVideoCanplayTimeout&&(this.checkVideoCanplayTimeout=setTimeout((()=>{if(this.clearCheckVideoCanplayTimeout(),!this.player.isDestroyedOrClosed()&&ba(this.isPlaying())){const e=this._getBufferStore();this.player.debug.warn("Video",`checkVideoCanplayTimeout and video is not playing and buffer store is ${e} and retry play`),this.$videoElement.currentTime=e,this._replay()}}),1e3)));this._play()}}_play(){this.$videoElement&&this.$videoElement.play().then((()=>{this._delayPlay=!1,this.player.debug.log("Video","_play success"),this.isPlaying()?(this.player.emit(rt.removeLoadingBgImage),this.isRetryPlayingTimes=0,this.isRetryPlaying=!1):setTimeout((()=>{this._replay()}),100)})).catch((e=>{this.player.isDestroyedOrClosed()?this.player.debug.log("Video","_play error and player is isDestroyedOrClosed and return"):(this.player.debug.error("Video","_play error",e),this.isRetryPlaying=!1,setTimeout((()=>{this._replay()}),100))}))}_replay(){if(!this.isPlaying()&&ba(this.player.isDestroyedOrClosed())&&ba(this.isRetryPlaying)){if(this.isRetryPlaying=!0,this.isRetryPlayingTimes>=3)return void(this.player.isWebrtcH264()?(this.player.debug.error("Video",`_replay(webrtc H264) then but not playing and retry play times is ${this.isRetryPlayingTimes} and emit error`),this.player.emitError(nt.videoElementPlayingFailedForWebrtc)):(this.player.debug.error("Video",`_replay then but not playing and retry play times is ${this.isRetryPlayingTimes} and emit error to use canvas render`),this.player.emitError(nt.videoElementPlayingFailed)));this.player.debug.warn("Video",`_play then but not playing and retry play and isRetryPlayingTimes is ${this.isRetryPlayingTimes}`),this._play(),this.isRetryPlayingTimes++}else this.player.debug.log("Video",`_replay() and isPlaying is ${this.isPlaying()} and isRetryPlaying is ${this.isRetryPlaying} and isDestroyedOrClosed is ${this.player.isDestroyedOrClosed()} and return;`)}pause(e){this.player.debug.log(this.TAG_NAME,"pause and isNow is "+e),this.isPlaying()&&(e?(this.$videoElement&&this.$videoElement.pause(),this._cancelVideoFrameCallback()):setTimeout((()=>{this.$videoElement&&this.$videoElement.pause(),this._cancelVideoFrameCallback()}),100))}clearView(){super.clearView(),this.$videoElement&&(this.$videoElement.pause(),this.$videoElement.currentTime=0,this.$videoElement.src&&(this.$videoElement.src="",this.$videoElement.removeAttribute("src")),this.$videoElement.srcObject&&(this.$videoElement.srcObject=null,this.$videoElement.removeAttribute("srcObject")))}screenshot(e,t,i,r){if(!this._canScreenshot())return this.player.debug.warn("Video","screenshot failed, video is not ready"),null;e=e||ps(),r=r||ct.download;let s=.92;!vi[t]&&ct[t]&&(r=t,t="png",i=void 0),"string"==typeof i&&(r=i,i=void 0),void 0!==i&&(s=Number(i));const a=this.$videoElement;let n=this.$canvasElement;n.width=a.videoWidth,n.height=a.videoHeight,this.canvasContext.drawImage(a,0,0,n.width,n.height);const o=vi[t]||vi.png,l=n.toDataURL(o,s);if(this.canvasContext.clearRect(0,0,n.width,n.height),n.width=0,n.height=0,r===ct.base64)return l;{const t=us(l);if(r===ct.blob)return t;if(r===ct.download){const i=o.split("/")[1];ja(t,e+"."+i)}}}screenshotWatermark(e){return new Promise(((t,i)=>{if(Zs(e)&&(e={filename:e}),!this._canScreenshot())return this.player.debug.warn("Video","screenshot failed, video is not ready"),i("screenshot failed, video is not ready");const r=this.$videoElement;(e=e||{}).width=r.videoWidth,e.height=r.videoHeight,e.filename=e.filename||ps(),e.format=e.format?vi[e.format]:vi.png,e.quality=Number(e.quality)||.92,e.type=e.type||ct.download;let s=this.$canvasElement;s.width=r.videoWidth,s.height=r.videoHeight,this.canvasContext.drawImage(r,0,0,s.width,s.height);const a=s.toDataURL(e.format,e.quality);this.canvasContext.clearRect(0,0,s.width,s.height),s.width=0,s.height=0,Ws(a,e).then((i=>{if(e.type===ct.base64)t(a);else{const r=us(i);if(e.type===ct.blob)t(r);else if(e.type===ct.download){t();const i=e.format.split("/")[1];ja(r,e.filename+"."+i)}}})).catch((e=>{i(e)}))}))}initCanvasViewSize(){this.resize()}clear(){const e=this.$videoElement,t=e.buffered,i=t.length?t.end(t.length-1):0;e.currentTime=i}render(e){if(this.vwriter){if(this.$videoElement.srcObject||(this.$videoElement.srcObject=this.mediaStream),this.isPaused()){const e=this._getVideoReadyState();if(this.player.debug.warn("Video","render() error, video is paused and readyState is "+e),4===e&&ba(this.isRenderRetryPlaying)){if(this.isRenderRetryPlaying=!0,this.isRenderRetryPlayingTimes>3)return this.player.debug.error("Video","render() error, video is paused and readyState is "+e+", retry times is "+this.isRenderRetryPlayingTimes+", emit error and use canvas render"),void this.player.emitError(nt.videoElementPlayingFailed);this.$videoElement.play().then((()=>{this.isRenderRetryPlayingTimes=0,this.isRenderRetryPlaying=!1,this.player.debug.log("Video","render() video is paused and replay success")})).catch((e=>{this.isRenderRetryPlaying=!1,this.isRenderRetryPlayingTimes++,this.player.debug.warn("Video","render() error, video is paused and replay error ",e)}))}}if(this.player.updateStats({fps:!0,ts:e.ts||0}),e.videoFrame)this.vwriter.write(e.videoFrame),da(e.videoFrame);else if(e.output){let r=e.output;if(this.player.faceDetectActive&&this.player.ai&&this.player.ai.faceDetector){null===this.prevAiFaceDetectTime&&(this.prevAiFaceDetectTime=ps());const t=ps();t-this.prevAiFaceDetectTime>this.player._opt.aiFaceDetectInterval&&(r=this.player.ai.faceDetector.detect({width:this.videoInfo.width,height:this.videoInfo.height,data:e.output,ts:e.ts||0}),this.prevAiFaceDetectTime=t)}if(this.player.objectDetectActive&&this.player.ai&&this.player.ai.objectDetector){null===this.prevAiObjectDetectTime&&(this.prevAiObjectDetectTime=ps());const t=ps();t-this.prevAiObjectDetectTime>this.player._opt.aiObjectDetectInterval&&(r=this.player.ai.objectDetector.detect({width:this.videoInfo.width,height:this.videoInfo.height,data:e.output,ts:e.ts||0}),this.prevAiObjectDetectTime=t)}if(this.player.occlusionDetectActive&&this.player.ai&&this.player.ai.occlusionDetector){null===this.prevAiOcclusionDetectTime&&(this.prevAiOcclusionDetectTime=ps());const t=ps();if(t-this.prevAiOcclusionDetectTime>=this.player._opt.aiOcclusionDetectInterval){const i=this.player.ai.occlusionDetector.check({width:this.videoInfo.width,height:this.videoInfo.height,data:e.output,ts:e.ts||0});this.prevAiOcclusionDetectTime=t,i&&(this.player.debug.log("Video","render() and ai occlusion detect result is true"),this.player.emit(rt.aiOcclusionDetectResult,{ts:e.ts||0}))}}if(this.player.imageDetectActive&&this.player.ai&&this.player.ai.imageDetector){const t=this.player.ai.imageDetector.check({width:this.videoInfo.width,height:this.videoInfo.height,data:e.output,ts:e.ts||0});if(t&&t.data&&(this.player.emit(rt.aiOcclusionDetectResult,{type:t.type,ts:e.ts||0}),this.player._opt.aiImageDetectDrop))return void this.player.debug.log("Video",`render() and ai image detect result type is ${t.type} and drop`)}try{const s=(t=r,i={format:"I420",codedWidth:this.videoInfo.width,codedHeight:this.videoInfo.height,timestamp:e.ts},new VideoFrame(t,i));this.vwriter.write(s),da(s)}catch(e){this.player.debug.error("Video","render error",e),this.player.emitError(nt.wasmUseVideoRenderError,e)}}this.player.updateCurrentPts(e.ts||0),this.doAddContentToWatermark(),this.doAddAiContentToWatermark()}else this.player.debug.warn("Video","render and this.vwriter is null");var t,i}_resize(){this.player.debug.log("Video","_resize()");let e=this.player.width,t=this.player.height;const i=this.player._opt,r=i.rotate;if(i.hasControl&&!i.controlAutoHide){const r=i.playType===v?Lt:0;bs()&&this.player.fullscreen&&i.useWebFullScreen?e-=r:t-=r}this.$videoElement.width=e,this.$videoElement.height=t,this.$videoElement.style.width=e+"px",this.$videoElement.style.height=t+"px",270!==r&&90!==r||(this.$videoElement.width=t,this.$videoElement.height=e,this.$videoElement.style.width=t+"px",this.$videoElement.style.height=e+"px");let s=(e-this.$videoElement.width)/2,a=(t-this.$videoElement.height)/2,n="contain";ba(i.isResize)&&(n="fill"),i.isFullResize&&(n="none");let o="";"none"===i.mirrorRotate&&r&&(o+=" rotate("+r+"deg)"),"level"===i.mirrorRotate?o+=" rotateY(180deg)":"vertical"===i.mirrorRotate&&(o+=" rotateX(180deg)"),this.player._opt.videoRenderSupportScale&&(this.$videoElement.style.objectFit=n),this.$videoElement.style.transform=o,this.$videoElement.style.padding="0",this.$videoElement.style.left=s+"px",this.$videoElement.style.top=a+"px"}getType(){return K}getCurrentTime(){return this.$videoElement.currentTime}isPlaying(){return this.$videoElement&&ba(this.$videoElement.paused)&&ba(this.$videoElement.ended)&&0!==this.$videoElement.playbackRate&&0!==this.$videoElement.readyState}_canScreenshot(){return this.$videoElement&&this.$videoElement.readyState>=2}getPlaybackQuality(){let e=null;if(this.$videoElement){if(sa(this.$videoElement.getVideoPlaybackQuality)){const t=this.$videoElement.getVideoPlaybackQuality();e={droppedVideoFrames:t.droppedVideoFrames||t.corruptedVideoFrames,totalVideoFrames:t.totalVideoFrames,creationTime:t.creationTime}}else e={droppedVideoFrames:this.$videoElement.webkitDroppedFrameCount,totalVideoFrames:this.$videoElement.webkitDecodedFrameCount,creationTime:ps()};e&&(e.renderedVideoFrames=e.totalVideoFrames-e.droppedVideoFrames)}return e}setRate(e){this.$videoElement&&(this.$videoElement.playbackRate=e)}get rate(){let e=1;return this.$videoElement&&(e=this.$videoElement.playbackRate),e}clearCheckVideoCanplayTimeout(){this.checkVideoCanplayTimeout&&(clearTimeout(this.checkVideoCanplayTimeout),this.checkVideoCanplayTimeout=null)}_cancelVideoFrameCallback(){this.supportVideoFrameCallbackHandle&&this.$videoElement&&(this.$videoElement.cancelVideoFrameCallback(this.supportVideoFrameCallbackHandle),this.supportVideoFrameCallbackHandle=null)}_getBufferStore(){const e=this.$videoElement;let t=0;return e.buffered.length>0&&(t=e.buffered.start(0)),t}_handleUpdatePlaybackRate(){const e=this.$videoElement;let t=(this.player._opt.videoBuffer+this.player._opt.videoBufferDelay)/1e3;const i=e.buffered;i.length&&i.start(0);const r=i.length?i.end(i.length-1):0;let s=e.currentTime;const a=r-s,n=Math.max(5,t+3);if(this.player.updateStats({mseVideoBufferDelayTime:a}),a>n)this.player.debug.log(this.TAG_NAME,`handleUpdatePlaybackRate and buffered is ${r} and current is ${s} , delay buffer is more than ${n} is ${a} and new time is ${r}`),e.currentTime=r,s=e.currentTime;else if(a<0){if(this.player.debug.warn(this.TAG_NAME,`handleUpdatePlaybackRate and delay buffer is ${r} - current is ${s} = ${a} < 0 and check video is paused : ${e.paused} `),0===r)return void this.player.emit(nt.mediaSourceBufferedIsZeroError,"video.buffered is empty");e.paused&&e.play()}const o=this._getPlaybackRate(r-s);e.playbackRate!==o&&(this.player.debug.log(this.TAG_NAME,`handleUpdatePlaybackRate and buffered is ${r} and current time is ${s} and delay is ${r-s} set playbackRate is ${o} `),e.playbackRate=o)}_getPlaybackRate(e){const t=this.$videoElement;let i=this.player._opt.videoBufferDelay+this.player._opt.videoBuffer;const r=Math.max(i,1e3),s=r/2;return e*=1e3,1===t.playbackRate?e>r?1.2:1:e<=s?1:t.playbackRate}getVideoCurrentTime(){let e=0;return this.$videoElement&&(e=this.$videoElement.currentTime),e}getVideoBufferLastTime(){const e=this.$videoElement;let t=0;if(e){const i=e.buffered;i.length&&i.start(0);t=i.length?i.end(i.length-1):0}return t}getVideoBufferDelayTime(){const e=this.$videoElement;const t=this.getVideoBufferLastTime()-e.currentTime;return t>0?t:0}checkSourceBufferDelay(){const e=this.$videoElement;let t=0;return e.buffered.length>0&&(t=e.buffered.end(e.buffered.length-1)-e.currentTime),t<0&&(this.player.debug.warn(this.TAG_NAME,`checkSourceBufferDelay end(0) is ${e.buffered.end(0)} - currentTime is ${e.currentTime} and result < 0 and result is ${t}`),t=0),t}checkSourceBufferStore(){const e=this.$videoElement;let t=0;return e.buffered.length>0&&(t=e.currentTime-e.buffered.start(0)),t}getDecodePlaybackRate(){let e=0;const t=this.$videoElement;return t&&(e=t.playbackRate),e}}class Qa extends Ka{constructor(e){super(e),this.controlHeight=Lt,this.bufferList=[],this.playing=!1,this.playInterval=null,this.fps=1,this.preFps=1,this.streamFps=0,this.playbackRate=1,this._firstTimestamp=null,this._renderFps=0,this._startfpsTime=null,this._startFpsTimestamp=null,this._hasCalcFps=!1,this.player.on(rt.playbackPause,(e=>{e?(this.pause(),this.player.playback.isPlaybackPauseClearCache&&this.clear()):this.resume()})),this.player.debug.log("CanvasPlaybackLoader","init")}destroy(){this._stopSync(),this._firstTimestamp=null,this.playing=!1,this.playbackRate=1,this.fps=1,this.preFps=1,this.bufferList=[],this._renderFps=0,this._startfpsTime=null,this._startFpsTimestamp=null,this._hasCalcFps=!1,super.destroy(),this.player.debug.log("CanvasPlaybackLoader","destroy")}_initCanvasRender(){this.player._opt.useWCS?(this.renderType=Mt,Sa()&&this.player._opt.wcsUseWebgl2Render?(this._initContextGl2(),this.webglRender&&(this.isWcsWebgl2=!0)):this._initContext2D()):this.player._opt.useWebGPU?(this.renderType=Ot,this._initContextGPU()):(this.renderType=Ut,this._initContextGl())}_sync(){this._stopSync(),this._doPlay(),this.playInterval=setInterval((()=>{this._doPlay()}),this.fragDuration)}_doPlay(){if(this.bufferList.length>0&&!this.player.seeking){const e=this.bufferList.shift();e&&e.buffer&&(this._doRender(e.buffer),this.player.handleRender(),this.player.playback.updateStats({ts:e.ts,tfTs:e.tfTs}))}}_stopSync(){this.playInterval&&(clearInterval(this.playInterval),this.playInterval=null)}_doRender(e){if(this.player._opt.useWCS)if(this.webglRender)this.webglRender.render(e),da(e);else if(sa(e.createImageBitmap))try{e.createImageBitmap().then((t=>{this.context2D.drawImage(t,0,0,this.$videoElement.width,this.$videoElement.height),da(e)}))}catch(e){}else this.context2D.drawImage(e,0,0,this.$videoElement.width,this.$videoElement.height),da(e);else if(this.getCanvasType()===Ut)try{this.webglRender.renderYUV(this.$videoElement.width,this.$videoElement.height,e)}catch(e){this.player.debug.error("CanvasPlaybackLoader",`doRender webgl render context is lost ${this.contextGl&&this.contextGl.isContextLost()} and error: ${e.toString()}`)}else if(this.getCanvasType()===Ot)try{if(!this.webGPURender)return void this.player.debug.warn("CanvasVideoLoader","doRender webgpu render is not init");this.webGPURender.renderYUV(this.$videoElement.width,this.$videoElement.height,e)}catch(e){this.player.debug.error("CanvasPlaybackLoader",`doRender webgpu render and error: ${e.toString()}`)}}get rate(){return this.playbackRate}get fragDuration(){return Math.ceil(1e3/(this.fps*this.playbackRate))}get bufferSize(){return this.bufferList.length}getStreamFps(){return this.streamFps}initFps(){this._hasCalcFps?this.player.debug.log("CanvasPlaybackLoader","initFps, has calc fps"):(this.preFps=fs(this.player.playback.fps,1,100),this.fps=this.preFps)}setFps(e){e!==this.fps?(e>100&&this.player.debug.warn("CanvasPlaybackLoader","setFps max",e),e<0&&this.player.debug.warn("CanvasPlaybackLoader","setFps min",e),this.fps=fs(e,1,100),this.player.debug.log("CanvasPlaybackLoader",`setFps ${this.preFps} -> ${this.fps}`),this.player.playback.isUseFpsRender&&this._sync()):this.player.debug.log("CanvasPlaybackLoader",`setFps, same fps ${e}`)}setStreamFps(e){this.player.debug.log("CanvasPlaybackLoader","setStreamFps",e),this._hasCalcFps=!0,this.streamFps=e,this.preFps=e,this.setFps(e)}setRate(e){e!==this.playbackRate&&(this.playbackRate=e,this.player.playback.isUseFpsRender&&this._sync())}render$2(e){null===this._firstTimestamp&&(this._firstTimestamp=e.ts);const t={tfTs:e.ts-this._firstTimestamp,ts:e.ts};e.videoFrame?t.buffer=e.videoFrame:t.buffer=e.output,this.bufferList.push(t),this.startRender(),this.player.handleRender(),this.player.playback.updateStats({ts:e.ts,tfTs:t.tfTs})}startRender(){for(;!(this.bufferList.length<=0);){const e=this.bufferList.shift();this._doRender(e.buffer)}}pushData(e){null===this._firstTimestamp&&(this._firstTimestamp=e.ts);const t={tfTs:e.ts-this._firstTimestamp,ts:e.ts};e.videoFrame?t.buffer=e.videoFrame:t.buffer=e.output;const i=this.player._opt.playbackConfig.isCacheBeforeDecodeForFpsRender;if(i||this.bufferSize>this.fps*this.playbackRate*2&&(this.player.debug.warn("CanvasPlaybackLoader",`buffer size is ${this.bufferSize}`),this._doPlay()),this.bufferList.push(t),!this._hasCalcFps){const e=ua(this.bufferList);null!==e&&e!==this.preFps&&(this.player.debug.log("CanvasPlaybackLoader",`calc fps is ${e} pre fps is ${this.preFps} and updatePreFps`),this.setStreamFps(e))}if(!i){const e=this.bufferList.length,t=e/(this.fps*this.playbackRate);this.player.debug.log("CanvasPlaybackLoader","rate is",t),t<=1?this.setFps(this.preFps):(this.setFps(this.fps+Math.floor(t*this.playbackRate)),this.player.debug.warn("CanvasPlaybackLoader","rate is",t,"fps is",this.fps,"bufferListLength is",e))}}initVideo(){this.player.playback&&this.player.playback.isUseFpsRender&&this._sync(),this.playing=!0}initVideoDelay(){const e=this.player._opt.playbackDelayTime;e>0?this.delayTimeout=setTimeout((()=>{this.initVideo()}),e):this.initVideo()}clearView(){super.clearView(),this.contextGl.clear(this.contextGl.COLOR_BUFFER_BIT)}clear(){this.player._opt.useWCS&&this.bufferList.forEach((e=>{e.buffer&&da(e.buffer)})),this.bufferList=[]}resume(){this.player.playback.isUseFpsRender&&this._sync(),this.playing=!0}pause(){this.player.playback.isUseFpsRender&&this._stopSync(),this.playing=!1}}class Xa{constructor(e){return new(Xa.getLoaderFactory(e._opt))(e)}static getLoaderFactory(e){return e.isWsRtc?Ya:e.useMSE?e.mseUseCanvasRender?qa:Ya:e.isHls&&ba(e.supportHls265)||e.isWebrtc&&ba(e.isWebrtcH265)?e.useCanvasRender?qa:Ya:e.isAliyunRtc?Ya:e.useWCS?e.playType===v?Qa:!e.useOffscreen&&e.wcsUseVideoRender?Ya:qa:e.playType===v?Qa:e.wasmUseVideoRender&&!e.useOffscreen?Ya:qa}}class Ja extends Ra{constructor(e){super(),this.bufferList=[],this.player=e,this.$audio=null,this.scriptNode=null,this.workletProcessorNode=null,this.hasInitScriptNode=!1,this.audioContext=new(window.AudioContext||window.webkitAudioContext)({sampleRate:48e3}),this.gainNode=this.audioContext.createGain();const t=this.audioContext.createBufferSource();t.buffer=this.audioContext.createBuffer(1,1,22050),t.connect(this.audioContext.destination),t.noteOn?t.noteOn(0):t.start(0),this.audioBufferSourceNode=t,this.mediaStreamAudioDestinationNode=this.audioContext.createMediaStreamDestination(),this.gainNode.gain.value=0,this.playing=!1,this.audioInfo={encType:"",channels:"",sampleRate:"",depth:""},this.init=!1,this.hasAudio=!1,this.audioResumeStateTimeout=null}destroy(){this.closeAudio(),this.resetInit(),this.audioContext&&(this.audioContext.close(),this.audioContext=null),this.gainNode=null,this.hasAudio=!1,this.playing=!1,this.scriptNode&&(this.scriptNode.onaudioprocess=ds,this.scriptNode=null),this.workletProcessorNode&&(this.workletProcessorNode.port.onmessage=ds,this.workletProcessorNode=null),this.clearAudioResumeStateTimeout(),this.audioBufferSourceNode=null,this.mediaStreamAudioDestinationNode=null,this.hasInitScriptNode=!1,this.off()}resetInit(){this.audioInfo={encType:"",channels:"",sampleRate:"",depth:""},this.init=!1}getAudioInfo(){return this.audioInfo}updateAudioInfo(e){e.encTypeCode&&(this.audioInfo.encTypeCode=e.encTypeCode,this.audioInfo.encType=_t[e.encTypeCode]),e.channels&&(this.audioInfo.channels=e.channels),e.sampleRate&&(this.audioInfo.sampleRate=e.sampleRate),e.depth&&(this.audioInfo.depth=e.depth),this.audioInfo.sampleRate&&this.audioInfo.channels&&this.audioInfo.encType&&!this.init&&(this.player.emit(rt.audioInfo,this.audioInfo),this.init=!0)}get isPlaying(){return this.playing}get isMute(){return 0===this.gainNode.gain.value}get volume(){return this.gainNode.gain.value}get bufferSize(){return this.bufferList.length}get audioContextState(){let e=null;return this.audioContext&&(e=this.audioContext.state),e}initScriptNode(){}initMobileScriptNode(){}initWorkletScriptNode(){}getEngineType(){return""}mute(e){this.player.emit(rt.mute,e),e?(this.setVolume(0),this.clear()):this.setVolume(this.player.lastVolume||.5)}setVolume(e){e=parseFloat(e).toFixed(2),isNaN(e)||(this.audioEnabled(!0),e=fs(e,0,1),this.gainNode.gain.value=e,this.player.emit(rt.volumechange,this.player.volume))}closeAudio(){this.hasInitScriptNode&&(this.scriptNode&&this.scriptNode.disconnect(this.gainNode),this.workletProcessorNode&&this.workletProcessorNode.disconnect(this.gainNode),this.gainNode&&(this.gainNode.disconnect(this.mediaStreamAudioDestinationNode),this.$audio||this.gainNode.disconnect(this.audioContext.destination))),this.clear()}audioEnabled(e){e?this.isStateSuspended()&&(this.audioContext.resume().then((()=>{this.player.emit(rt.audioResumeState,{state:this.audioContextState,isRunning:this.isStateRunning()})})),this.audioResumeStateTimeout=setTimeout((()=>{this.clearAudioResumeStateTimeout(),this.isStateSuspended()&&this.player.emit(rt.audioResumeState,{state:this.audioContextState,isRunning:this.isStateRunning()})}),1e3)):this.isStateRunning()&&this.audioContext.suspend()}isStateRunning(){return"running"===this.audioContextState}isStateSuspended(){return"suspended"===this.audioContextState}clearAudioResumeStateTimeout(){this.audioResumeStateTimeout&&(clearTimeout(this.audioResumeStateTimeout),this.audioResumeStateTimeout=null)}clear(){this.bufferList=[]}play(e,t){}pause(){this.playing=!1}resume(){this.playing=!0}setRate(e){}getAudioBufferSize(){return 0}}class Za{constructor(e,t,i,r){this.player=e,this.audio=t,this.channel=i,this.bufferSize=r}extract(e,t){let i=this.provide(t);for(let t=0;t=n){try{for(let e=0;e=0||(i=(e.length-r)/2);const s=2*i;this.ensureCapacity(i+this._frameCount);const a=this.endIndex;this.vector.set(e.subarray(r,r+s),a),this._frameCount+=i}putBuffer(e,t,i=0){t=t||0,i>=0||(i=e.frameCount-t),this.putSamples(e.vector,e.position+t,i)}receive(e){e>=0&&!(e>this._frameCount)||(e=this.frameCount),this._frameCount-=e,this._position+=e}receiveSamples(e,t=0){const i=2*t,r=this.startIndex;e.set(this._vector.subarray(r,r+i)),this.receive(t)}extract(e,t=0,i=0){const r=this.startIndex+2*t,s=2*i;e.set(this._vector.subarray(r,r+s))}ensureCapacity(e=0){const t=parseInt(2*e);if(this._vector.length0&&(this._vector.set(this._vector.subarray(this.startIndex,this.endIndex)),this._position=0)}}class tn{constructor(e){e?(this._inputBuffer=new en,this._outputBuffer=new en):this._inputBuffer=this._outputBuffer=null}get inputBuffer(){return this._inputBuffer}set inputBuffer(e){this._inputBuffer=e}get outputBuffer(){return this._outputBuffer}set outputBuffer(e){this._outputBuffer=e}clear(){this._inputBuffer.clear(),this._outputBuffer.clear()}}class rn extends tn{constructor(e){super(e),this.reset(),this._rate=1}set rate(e){this._rate=e}reset(){this.slopeCount=0,this.prevSampleL=0,this.prevSampleR=0}clone(){const e=new rn;return e.rate=this._rate,e}process(){const e=this._inputBuffer.frameCount;this._outputBuffer.ensureAdditionalCapacity(e/this._rate+1);const t=this.transpose(e);this._inputBuffer.receive(),this._outputBuffer.put(t)}transpose(e=0){if(0===e)return 0;const t=this._inputBuffer.vector,i=this._inputBuffer.startIndex,r=this._outputBuffer.vector,s=this._outputBuffer.endIndex;let a=0,n=0;for(;this.slopeCount<1;)r[s+2*n]=(1-this.slopeCount)*this.prevSampleL+this.slopeCount*t[i],r[s+2*n+1]=(1-this.slopeCount)*this.prevSampleR+this.slopeCount*t[i+1],n+=1,this.slopeCount+=this._rate;if(this.slopeCount-=1,1!==e)e:for(;;){for(;this.slopeCount>1;)if(this.slopeCount-=1,a+=1,a>=e-1)break e;const o=i+2*a;r[s+2*n]=(1-this.slopeCount)*t[o]+this.slopeCount*t[o+2],r[s+2*n+1]=(1-this.slopeCount)*t[o+1]+this.slopeCount*t[o+3],n+=1,this.slopeCount+=this._rate}return this.prevSampleL=t[i+2*e-2],this.prevSampleR=t[i+2*e-1],n}}class sn{constructor(e){this._pipe=e}get pipe(){return this._pipe}get inputBuffer(){return this._pipe.inputBuffer}get outputBuffer(){return this._pipe.outputBuffer}fillInputBuffer(){throw new Error("fillInputBuffer() not overridden")}fillOutputBuffer(e=0){for(;this.outputBuffer.frameCountthis._position)throw new RangeError("New position may not be greater than current position");const t=this.outputBufferPosition-(this._position-e);if(t<0)throw new RangeError("New position falls outside of history buffer");this.outputBufferPosition=t,this._position=e}get sourcePosition(){return this._sourcePosition}set sourcePosition(e){this.clear(),this._sourcePosition=e}onEnd(){this.callback()}fillInputBuffer(e=0){const t=new Float32Array(2*e),i=this.sourceSound.extract(t,e,this._sourcePosition);this._sourcePosition+=i,this.inputBuffer.putSamples(t,0,i)}extract(e,t=0){this.fillOutputBuffer(this.outputBufferPosition+t);const i=Math.min(t,this.outputBuffer.frameCount-this.outputBufferPosition);this.outputBuffer.extract(e,this.outputBufferPosition,i);const r=this.outputBufferPosition+i;return this.outputBufferPosition=Math.min(this.historyBufferSize,r),this.outputBuffer.receive(Math.max(r-this.historyBufferSize,0)),this._position+=i,i}handleSampleData(e){this.extract(e.data,4096)}clear(){super.clear(),this.outputBufferPosition=0}}const on=[[124,186,248,310,372,434,496,558,620,682,744,806,868,930,992,1054,1116,1178,1240,1302,1364,1426,1488,0],[-100,-75,-50,-25,25,50,75,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[-20,-15,-10,-5,5,10,15,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[-4,-3,-2,-1,1,2,3,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],ln=-10/1.5;class dn extends tn{constructor(e){super(e),this._quickSeek=!0,this.midBufferDirty=!1,this.midBuffer=null,this.overlapLength=0,this.autoSeqSetting=!0,this.autoSeekSetting=!0,this._tempo=1,this.setParameters(44100,0,0,8)}clear(){super.clear(),this.clearMidBuffer()}clearMidBuffer(){this.midBufferDirty&&(this.midBufferDirty=!1,this.midBuffer=null)}setParameters(e,t,i,r){e>0&&(this.sampleRate=e),r>0&&(this.overlapMs=r),t>0?(this.sequenceMs=t,this.autoSeqSetting=!1):this.autoSeqSetting=!0,i>0?(this.seekWindowMs=i,this.autoSeekSetting=!1):this.autoSeekSetting=!0,this.calculateSequenceParameters(),this.calculateOverlapLength(this.overlapMs),this.tempo=this._tempo}set tempo(e){let t;this._tempo=e,this.calculateSequenceParameters(),this.nominalSkip=this._tempo*(this.seekWindowLength-this.overlapLength),this.skipFract=0,t=Math.floor(this.nominalSkip+.5),this.sampleReq=Math.max(t+this.overlapLength,this.seekWindowLength)+this.seekLength}get tempo(){return this._tempo}get inputChunkSize(){return this.sampleReq}get outputChunkSize(){return this.overlapLength+Math.max(0,this.seekWindowLength-2*this.overlapLength)}calculateOverlapLength(e=0){let t;t=this.sampleRate*e/1e3,t=t<16?16:t,t-=t%8,this.overlapLength=t,this.refMidBuffer=new Float32Array(2*this.overlapLength),this.midBuffer=new Float32Array(2*this.overlapLength)}checkLimits(e,t,i){return ei?i:e}calculateSequenceParameters(){let e,t;this.autoSeqSetting&&(e=150+-50*this._tempo,e=this.checkLimits(e,50,125),this.sequenceMs=Math.floor(e+.5)),this.autoSeekSetting&&(t=28.333333333333332+ln*this._tempo,t=this.checkLimits(t,15,25),this.seekWindowMs=Math.floor(t+.5)),this.seekWindowLength=Math.floor(this.sampleRate*this.sequenceMs/1e3),this.seekLength=Math.floor(this.sampleRate*this.seekWindowMs/1e3)}set quickSeek(e){this._quickSeek=e}clone(){const e=new dn;return e.tempo=this._tempo,e.setParameters(this.sampleRate,this.sequenceMs,this.seekWindowMs,this.overlapMs),e}seekBestOverlapPosition(){return this._quickSeek?this.seekBestOverlapPositionStereoQuick():this.seekBestOverlapPositionStereo()}seekBestOverlapPositionStereo(){let e,t,i,r=0;for(this.preCalculateCorrelationReferenceStereo(),e=0,t=Number.MIN_VALUE;rt&&(t=i,e=r);return e}seekBestOverlapPositionStereoQuick(){let e,t,i,r,s,a=0;for(this.preCalculateCorrelationReferenceStereo(),t=Number.MIN_VALUE,e=0,r=0,s=0;a<4;a+=1){let n=0;for(;on[a][n]&&(s=r+on[a][n],!(s>=this.seekLength));)i=this.calculateCrossCorrelationStereo(2*s,this.refMidBuffer),i>t&&(t=i,e=s),n+=1;r=e}return e}preCalculateCorrelationReferenceStereo(){let e,t,i=0;for(;i=this.sampleReq;){e=this.seekBestOverlapPosition(),this._outputBuffer.ensureAdditionalCapacity(this.overlapLength),this.overlap(Math.floor(e)),this._outputBuffer.put(this.overlapLength),t=this.seekWindowLength-2*this.overlapLength,t>0&&this._outputBuffer.putBuffer(this._inputBuffer,e+this.overlapLength,t);const r=this._inputBuffer.startIndex+2*(e+this.seekWindowLength-this.overlapLength);this.midBuffer.set(this._inputBuffer.vector.subarray(r,r+2*this.overlapLength)),this.skipFract+=this.nominalSkip,i=Math.floor(this.skipFract),this.skipFract-=i,this._inputBuffer.receive(i)}}}const hn=function(e,t){return(e>t?e-t:t-e)>1e-10};class cn{constructor(){this.transposer=new rn(!1),this.stretch=new dn(!1),this._inputBuffer=new en,this._intermediateBuffer=new en,this._outputBuffer=new en,this._rate=0,this._tempo=0,this.virtualPitch=1,this.virtualRate=1,this.virtualTempo=1,this.calculateEffectiveRateAndTempo()}clear(){this.transposer.clear(),this.stretch.clear()}clone(){const e=new cn;return e.rate=this.rate,e.tempo=this.tempo,e}get rate(){return this._rate}set rate(e){this.virtualRate=e,this.calculateEffectiveRateAndTempo()}set rateChange(e){this._rate=1+.01*e}get tempo(){return this._tempo}set tempo(e){this.virtualTempo=e,this.calculateEffectiveRateAndTempo()}set tempoChange(e){this.tempo=1+.01*e}set pitch(e){this.virtualPitch=e,this.calculateEffectiveRateAndTempo()}set pitchOctaves(e){this.pitch=Math.exp(.69314718056*e),this.calculateEffectiveRateAndTempo()}set pitchSemitones(e){this.pitchOctaves=e/12}get inputBuffer(){return this._inputBuffer}get outputBuffer(){return this._outputBuffer}calculateEffectiveRateAndTempo(){const e=this._tempo,t=this._rate;this._tempo=this.virtualTempo/this.virtualPitch,this._rate=this.virtualRate*this.virtualPitch,hn(this._tempo,e)&&(this.stretch.tempo=this._tempo),hn(this._rate,t)&&(this.transposer.rate=this._rate),this._rate>1?this._outputBuffer!=this.transposer.outputBuffer&&(this.stretch.inputBuffer=this._inputBuffer,this.stretch.outputBuffer=this._intermediateBuffer,this.transposer.inputBuffer=this._intermediateBuffer,this.transposer.outputBuffer=this._outputBuffer):this._outputBuffer!=this.stretch.outputBuffer&&(this.transposer.inputBuffer=this._inputBuffer,this.transposer.outputBuffer=this._intermediateBuffer,this.stretch.inputBuffer=this._intermediateBuffer,this.stretch.outputBuffer=this._outputBuffer)}process(){this._rate>1?(this.stretch.process(),this.transposer.process()):(this.transposer.process(),this.stretch.process())}}class un{constructor(e,t,i){this.player=e,this.audio=t,this.soundTouch=new cn,this.soundTouch.tempo=1,this.soundTouch.rate=1,this.filter=new nn(i,this.soundTouch)}setRate(e){e!==this.soundTouch.rate&&(this.soundTouch.tempo=e)}provide(e){let t=new Float32Array(2*e),i=this.filter.extract(t,e),r=new Float32Array(i),s=new Float32Array(i);for(let e=0;e{e()})),this.eventListenList=[]),this.$audio&&(this.$audio.pause(),this.$audio.srcObject=null,this.$audio.parentNode&&this.$audio.parentNode.removeChild(this.$audio),this.$audio=null),this.processor&&(this.processor.destroy(),this.processor=null),this.rateProcessor&&(this.rateProcessor.destroy(),this.rateProcessor=null),this.scriptNodeInterval&&(clearInterval(this.scriptNodeInterval),this.scriptNodeInterval=null),this.defaultPlaybackRate=1,this.playbackRate=1,this.scriptStartTime=0,this.audioBufferSize=0,this.engineType=Zi,this.player.debug.log("AudioContext","destroy")}isAudioPlaying(){return this.$audio&&ba(this.$audio.paused)&&ba(this.$audio.ended)&&0!==this.$audio.playbackRate&&0!==this.$audio.readyState}_bindAudioProxy(){const{proxy:e}=this.player.events,t=e(this.$audio,"canplay",(()=>{this.player.debug.log("AudioContext","canplay"),this._delayPlay&&this._audioElementPlay()}));this.eventListenList.push(t)}_getAudioElementReadyState(){let e=0;return this.$audio&&(e=this.$audio.readyState),e}audioElementPlay(){if(this.$audio){const e=this._getAudioElementReadyState();if(this.player.debug.log("AudioContext",`play and readyState: ${e}`),!(0!==e||ea()&&Ts()))return this.player.debug.warn("AudioContext","readyState is 0 and set _delayPlay to true"),void(this._delayPlay=!0);this._audioElementPlay()}}_audioElementPlay(){this.$audio&&this.$audio.play().then((()=>{this._delayPlay=!1,this.player.debug.log("AudioContext","_audioElementPlay success"),setTimeout((()=>{this.isAudioPlaying()||(this.player.debug.warn("AudioContext","play failed and retry play"),this._audioElementPlay())}),100),this.isAudioPlaying()&&(this.player.debug.log("AudioContext","play success and remove document click event listener"),document.removeEventListener("click",this._audioElementPlay.bind(this)))})).catch((e=>{this.player.debug.error("AudioContext","_audioElementPlay error",e),document.addEventListener("click",this._audioElementPlay.bind(this))}))}getAudioBufferSize(){return this.audioBufferSize}get oneBufferDuration(){return this.audioBufferSize/this.audioContext.sampleRate*1e3}get isActiveEngineType(){return this.engineType===er}initProcessor(){this.processor=new Za(this.player,this,this.audioInfo.channels,this.audioBufferSize),this.rateProcessor=new un(this.player,this,this.processor)}getAutoAudioEngineType(){let e=this.player._opt.audioEngine||Zi;const t=()=>{e=ea()&&Es()?er:Ts()&&this.player._opt.supportLockScreenPlayAudio?Zi:ha()&&this.supportAudioWorklet()?Ji:Zi};return this.player._opt.audioEngine?this.player._opt.audioEngine===Ji&&ha()?e=Ji:this.player._opt.audioEngine===er?e=er:this.player._opt.audioEngine===Zi?e=Zi:t():t(),e}getAudioBufferSizeByType(){const e=this.engineType;this.player._opt.hasVideo;const t=this.player._opt.weiXinInAndroidAudioBufferSize;return e===Ji?1024:e===er?t||4800:1024}supportAudioWorklet(){return this.audioContext&&this.audioContext.audioWorklet}initScriptNode(){this.playing=!0,this.hasInitScriptNode||(this.initProcessor(),this.engineType===Ji?this.initWorkletScriptNode():this.engineType===er?this.initIntervalScriptNode():this.engineType===Zi&&this.initProcessScriptNode(),this.audioElementPlay())}getEngineType(){return this.engineType}isPlaybackRateSpeed(){return this.playbackRate>this.defaultPlaybackRate}initProcessScriptNode(){const e=this.audioContext.createScriptProcessor(this.audioBufferSize,0,this.audioInfo.channels);e.onaudioprocess=e=>{const t=e.outputBuffer;this.handleScriptNodeCallback(t)},e.connect(this.gainNode),this.scriptNode=e,this.gainNode.connect(this.mediaStreamAudioDestinationNode),this.$audio?this.$audio.srcObject=this.mediaStreamAudioDestinationNode.stream:this.gainNode.connect(this.audioContext.destination),this.hasInitScriptNode=!0}initIntervalScriptNode(){this.scriptStartTime=0;const e=1e3*this.audioBufferSize/this.audioContext.sampleRate;this.scriptNodeInterval=setInterval((()=>{if(0===this.bufferList.length||ba(this.playing)||this.isMute)return void(this.playing&&ba(this.isMute)&&this.player.debug.log("AudioContext",`interval script node and bufferList is ${this.bufferList.length} or playing is ${this.playing}`));const e=this.audioContext.createBufferSource(),t=this.audioContext.createBuffer(this.audioInfo.channels,this.audioBufferSize,this.audioContext.sampleRate);this.handleScriptNodeCallback(t,(()=>{this.scriptStartTime{"init"===e.data.message?(this.audioBufferSize=e.data.audioBufferSize,this.start=e.data.start,this.channels=e.data.channels,this.state=0,this.offset=0,this.samplesArray=[]):"stop"===e.data.message?(this.state=0,this.start=!1,this.offset=0,this.samplesArray=[]):"data"===e.data.message?this.samplesArray.push(e.data.buffer):"zero"===e.data.message&&this.samplesArray.push({left:new Float32Array(this.audioBufferSize).fill(0),right:new Float32Array(this.audioBufferSize).fill(0)})}}process(e,t,i){const r=t[0][0],s=t[0][1];if(0===this.offset&&this.port.postMessage({message:"beep"}),0===this.state)this.state=1;else if(1===this.state&&this.samplesArray.length>=4)this.state=2;else if(2===this.state){const e=this.samplesArray[0];for(let t=0;t{if(this.player.isDestroyedOrClosed())return void this.player.debug.log("AudioContext","initWorkletScriptNode() player is destroyed");if(!this.audioContext)return void this.player.debug.warn("AudioContext","initWorkletScriptNode audioContext is null");let e=[1];2===this.audioInfo.channels&&(e=[1,1]);try{this.workletProcessorNode=new AudioWorkletNode(this.audioContext,"worklet-processor",{numberOfOutputs:this.audioInfo.channels,outputChannelCount:e})}catch(e){this.player.debug.error("AudioContext","initWorkletScriptNode error",e),this.workletProcessorNode=null,this.tierDownToProcessScript()}this.workletProcessorNode&&(this.workletProcessorNode.connect(this.gainNode),this.gainNode.connect(this.mediaStreamAudioDestinationNode),this.$audio?this.$audio.srcObject=this.mediaStreamAudioDestinationNode.stream:this.gainNode.connect(this.audioContext.destination),this.hasInitScriptNode=!0,this.workletProcessorNode.port.postMessage({message:"init",audioBufferSize:this.audioBufferSize,start:!0,channels:this.audioInfo.channels}),this.workletProcessorNode.port.onmessage=e=>{this.workletProcessorNode?this.audioContext?this.handleScriptNodeCallback(this.workletProcessorNode,null,!0):this.workletProcessorNode.port.postMessage({message:"zero"}):this.player.debug.error("AudioContext","workletProcessorNode is null")})})),this.clearWorkletUrlTimeout=setTimeout((()=>{URL.revokeObjectURL(this.workletUrl),this.workletUrl=null,this.clearWorkletUrlTimeout=null}),ie)}tierDownToProcessScript(){this.player.debug.log("AudioContext","tierDownToProcessScript"),this.engineType=Zi,this.audioBufferSize=this.getAudioBufferSizeByType(),this.initProcessScriptNode(),this.audioElementPlay()}handleScriptNodeCallback(e,t,i=!1){let r;t=t||ds;let s=e.length;i&&(r=e,s=this.audioBufferSize);const a=this.audioInfo.channels;if(this.bufferList.length&&this.playing){if(this.player._opt,this.player.openSyncAudioAndVideo()&&va(this.player.visibility)){this.calcPlaybackRateBySync();const s=this.player.getAudioSyncVideoDiff();if(s>this.player._opt.syncAudioAndVideoDiff)return this.player.debug.warn("AudioContext",`audioSyncVideoOption more than diff :${s}, waiting and bufferList is ${this.bufferList.length}`),i?r.port.postMessage({message:"zero"}):this.fillScriptNodeOutputBuffer(e,a),void t()}let n=this._provide(s);if(0===n.size)return this.player.debug.warn("AudioContext",`bufferList size is ${this.bufferList.length} outputBufferLength is ${s},and bufferItem.size is 0`),i?r.port.postMessage({message:"zero"}):this.fillScriptNodeOutputBuffer(e,a),void t();n&&n.ts&&(this.player.audioTimestamp=n.ts),i?r.port.postMessage({message:"data",buffer:n}):this.fillScriptNodeOutputBuffer(e,a,n),t()}else 0===this.bufferList.length&&this.playing&&ba(this.isMute)&&this.player.debug.warn("AudioContext",`bufferList size is 0 and outputBufferLength is ${s}`),i?r.port.postMessage({message:"zero"}):this.fillScriptNodeOutputBuffer(e,a),t()}fillScriptNodeOutputBuffer(e,t,i){if(1===t){const t=e.getChannelData(0);i?0===i.size?t.fill(0):t.set(i.left):t.fill(0)}else if(2===t){const t=e.getChannelData(0),r=e.getChannelData(1);i?0===i.size?(t.fill(0),r.fill(0)):(t.set(i.left),r.set(i.right)):(t.fill(0),r.fill(0))}}play(e,t){this.isMute||(this.hasInitScriptNode?(this.hasAudio=!0,this.player.latestAudioTimestamp=t,this.bufferList.push({buffer:e,ts:t}),ba(this.player.openSyncAudioAndVideo())&&this.calcPlaybackRateByBuffer()):this.player.debug.warn("AudioContext","play has not init script node"))}calcPlaybackRateBySync(){if(this.isMute)return;if(!this.playing)return;const e=Math.floor(2e3/this.oneBufferDuration);if(this.bufferList.length>e)return this.player.debug.warn("AudioContext",`bufferList length ${this.bufferList.length} more than ${e}, and drop`),void this.clear();const t=this.player.getAudioSyncVideoDiff();if(this.getEngineType()===er){if(t<-this.player._opt.syncAudioAndVideoDiff){this.player.debug.warn("AudioContext",`engine active , audioSyncVideoOption ${-this.player._opt.syncAudioAndVideoDiff} less than diff :${t},\n and bufferlist is ${this.bufferList.length}`);const e=this.player.getRenderCurrentPts();for(;this.bufferList.length>0;){const t=this.bufferList[0],i=t.ts-e;if(i>-this.player._opt.syncAudioAndVideoDiff/2){this.player.audioTimestamp=t.ts,this.player.debug.log("AudioContext",`engine active , audioSyncVideoOption\n item.ts is ${t.ts} and currentVideoTimestamp is ${e}, diff is ${i} > -${this.player._opt.syncAudioAndVideoDiff/2} and end`);break}this.bufferList.shift(),this.player.audioTimestamp=t.ts}}}else{let e=this.playbackRate;t<-this.player._opt.syncAudioAndVideoDiff?e===this.defaultPlaybackRate&&(this.player.debug.log("AudioContext",`audioSyncVideoOption ${-this.player._opt.syncAudioAndVideoDiff} less than diff :${t},\n speed up, playbackRate is ${e},\n and bufferList is ${this.bufferList.length}`),e=this.defaultPlaybackRate+.2):t>-this.player._opt.syncAudioAndVideoDiff/2&&e!==this.defaultPlaybackRate&&(this.player.debug.log("AudioContext",`diff is ${t} > -${this.player._opt.syncAudioAndVideoDiff/2} and speed to 1`),e=this.defaultPlaybackRate),this.updatePlaybackRate(e)}}calcPlaybackRateByBuffer(){if(this.isMute)return;if(!this.playing)return;let e=this.playbackRate,t=1e3,i=5e3;this.isAudioPlayer&&(t=this.player._opt.videoBufferDelay,i=this.player._opt.videoBufferMax);const r=Math.floor(t/this.oneBufferDuration),s=Math.floor(i/this.oneBufferDuration);if(this.bufferList.length>s)return this.player.debug.warn("AudioContext",`bufferList length ${this.bufferList.length} more than ${s}, and drop`),void this.clear();this.getEngineType()!==er&&(this.bufferList.length>r?(e=this.defaultPlaybackRate+.2,this.player.debug.log("AudioContext",`bufferList length ${this.bufferList.length} more than ${r}, speed up, playbackRate is ${e}`)):this.bufferList.length{this.listenPlaybackPause(e)})),this.player.debug.log("AudioPlaybackContext","init")}destroy(){this.delayTimeout&&(clearTimeout(this.delayTimeout),this.delayTimeout=null),super.destroy(),this.player.debug.log("AudioPlaybackLoader","destroy")}listenPlaybackPause(e){e?(this.pause(),this.player.playback.isPlaybackPauseClearCache&&this.clear()):this.resume()}initScriptNodeDelay(){const e=this.player._opt.playbackDelayTime;e>0?this.delayTimeout=setTimeout((()=>{this.initScriptNode()}),e):this.initScriptNode()}setRate(e){e!==this.defaultPlaybackRate&&this.rateProcessor&&(this.player.debug.log("AudioPlaybackContext","setRate",e),this.defaultPlaybackRate=e,this.updatePlaybackRate(e))}}class yn extends pn{constructor(e){super(e),this.TAG_NAME="AudioPlayerLoader",this.isAudioPlayer=!0,this.player.debug.log(this.TAG_NAME,"init")}destroy(){super.destroy(),this.player.debug.log(this.TAG_NAME,"destroy")}play(e,t){ba(this.playing)||super.play(e,t)}pause(){this.player.debug.log(this.TAG_NAME,"pause"),this.playing=!1,this.clear()}resume(){this.player.debug.log(this.TAG_NAME,"resume"),this.playing=!0}}class gn{constructor(e){return new(gn.getLoaderFactory(e._opt))(e)}static getLoaderFactory(e){return e.playType===v?e.useMSE&&e.mseDecodeAudio?fn:mn:e.playType===A?yn:e.isHls&&ba(e.supportHls265)||e.isWebrtc&&ba(e.isWebrtcH265)||e.useMSE&&e.mseDecodeAudio||e.isAliyunRtc?fn:pn}}class An extends Ra{constructor(e){super(),this.TAG_NAME="FetchWorkerLoader",this.player=e,this.playing=!1,this.fetchWorker=null,this.workerClearTimeout=null,this.workerUrl=null,this.abortController=new AbortController,this.streamRate=As((t=>{e.emit(rt.kBps,(t/1024).toFixed(2))})),this.streamRateInterval=null,this._initFetchWorker(),e.debug.log(this.TAG_NAME,"init")}destroy(){this.off(),this.workerUrl&&(window.URL.revokeObjectURL(this.workerUrl),this.workerUrl=null),this.workerClearTimeout&&(clearTimeout(this.workerClearTimeout),this.workerClearTimeout=null),this.fetchWorker&&(this.fetchWorker.postMessage({cmd:Je}),this.fetchWorker.terminate(),this.fetchWorker=null),this._stopStreamRateInterval(),this.streamRate=null,this.player.debug.log(this.TAG_NAME,"destroy")}_initFetchWorker(){const e=wa(function(){function e(e){return!0===e||"true"===e}function t(e){return!1===e||"false"===e}const i="The user aborted a request",r="AbortError",s="AbortError",a="fetch",n="destroy",o="buffer",l="fetchError",d="fetchClose",h="fetchSuccess",c="idle",u="buffering",p="complete";let f=new class{constructor(){this._requestAbort=!1,this._status=c,this.writableStream=null,this.isChrome=!1,this.abortController=new AbortController}destroy(){this.abort(),this.writableStream&&t(this.writableStream.locked)&&this.writableStream.close().catch((e=>{})),this.writableStream=null,this._status=c}fetchStream(t,a={}){const n=Object.assign({signal:this.abortController.signal},{headers:a.headers||{}});fetch(t,n).then((t=>{if(this._requestAbort)return this._status=c,void t.body.cancel();if(!function(e){return e.ok&&e.status>=200&&e.status<=299}(t))return this.abort(),void postMessage({cmd:l,message:`fetch response status is ${t.status} and ok is ${t.ok}`});if(postMessage({cmd:h}),"undefined"!=typeof WritableStream)this.writableStream=new WritableStream({write:t=>{this.abortController&&this.abortController.signal&&this.abortController.signal.aborted||e(this._requestAbort)?this._status=p:(this._status=u,postMessage({cmd:o,buffer:t},[t.buffer]))},close:()=>{this._status=p,postMessage({cmd:d})},abort:e=>{if(this.abortController&&this.abortController.signal&&this.abortController.signal.aborted)return void(this._status=p);const t=e.toString();-1===t.indexOf(i)&&-1===t.indexOf(r)&&e.name!==s&&(this.abort(),postMessage({cmd:l,message:e.toString()}))}}),t.body.pipeTo(this.writableStream);else{const a=t.body.getReader(),n=()=>{a.read().then((({done:t,value:i})=>{if(t)return this._status=p,void postMessage({cmd:d});this.abortController&&this.abortController.signal&&this.abortController.signal.aborted||e(this._requestAbort)?this._status=p:(this._status=u,postMessage({cmd:o,buffer:i},[i.buffer]),n())})).catch((e=>{if(this.abortController&&this.abortController.signal&&this.abortController.signal.aborted)return void(this._status=p);const t=e.toString();-1===t.indexOf(i)&&-1===t.indexOf(r)&&e.name!==s&&(this.abort(),postMessage({cmd:l,message:e.toString()}))}))};n()}})).catch((e=>{this.abortController&&this.abortController.signal&&this.abortController.signal.aborted||"AbortError"!==e.name&&(this.abort(),postMessage({cmd:l,message:e.toString()}))}))}abort(){if(this._requestAbort=!0,this._status!==u||t(f.isChrome)){if(this.abortController){try{this.abortController.abort()}catch(e){}this.abortController=null}}else this.abortController=null}};self.onmessage=t=>{const i=t.data;switch(i.cmd){case a:f.isChrome=e(i.isChrome),f.fetchStream(i.url,JSON.parse(i.options));break;case n:f.destroy(),f=null}}}.toString()),t=new Blob([e],{type:"text/javascript"});let i=URL.createObjectURL(t);const r=new Worker(i);this.workerUrl=i,this.workerClearTimeout=setTimeout((()=>{window.URL.revokeObjectURL(this.workerUrl),this.workerUrl=null,this.workerClearTimeout=null}),ie),r.onmessage=e=>{const{demux:t}=this.player,i=e.data;switch(i.cmd){case Ze:this.streamRate&&this.streamRate(i.buffer.byteLength),t.dispatch(i.buffer);break;case it:this.emit(rt.streamSuccess),this._startStreamRateInterval();break;case tt:t.close(),this.emit(rt.streamEnd,"fetch done");break;case et:t.close(),this.emit(nt.fetchError,i.message)}},this.fetchWorker=r}_startStreamRateInterval(){this._stopStreamRateInterval(),this.streamRateInterval=setInterval((()=>{this.streamRate&&this.streamRate(0)}),1e3)}_stopStreamRateInterval(){this.streamRateInterval&&(clearInterval(this.streamRateInterval),this.streamRateInterval=null)}fetchStream(e,t={}){this.player._times.streamStart=ps(),this.fetchWorker.postMessage({cmd:Xe,url:e,isChrome:ta(),options:JSON.stringify(t)})}getStreamType(){return d}}class vn extends Ra{constructor(e){super(),this.player=e,this.socket=null,this.socketStatus=ot,this.wsUrl=null,this.requestAbort=!1,this.socketDestroyFnList=[],this.streamRate=As((t=>{e.emit(rt.kBps,(t/1024).toFixed(2))})),this.streamRateInterval=null,e.debug.log("WebsocketStream","init")}destroy(){this._closeWebSocket(),this.stopStreamRateInterval(),this.wsUrl=null,this.off(),this.player.debug.log("WebsocketStream","destroy")}startStreamRateInterval(){this.stopStreamRateInterval(),this.streamRateInterval=setInterval((()=>{this.streamRate&&this.streamRate(0)}),1e3)}stopStreamRateInterval(){this.streamRateInterval&&(clearInterval(this.streamRateInterval),this.streamRateInterval=null)}_createWebSocket(){const e=this.player,{debug:t,events:{proxy:i},demux:r}=e;this.socket=new WebSocket(this.wsUrl),this.socket.binaryType="arraybuffer";const s=i(this.socket,"open",(()=>{t.log("WebsocketStream","socket open"),this.socketStatus=lt,this.emit(rt.streamSuccess),this.player.emit(rt.websocketOpen),this.startStreamRateInterval()})),a=i(this.socket,"message",(e=>{this.streamRate&&this.streamRate(e.data.byteLength),this._handleMessage(e.data)})),n=i(this.socket,"close",(e=>{if(t.log("WebsocketStream",`socket close and code is ${e.code}`),1006===e.code&&t.error("WebsocketStream",`socket close abnormally and code is ${e.code}`),va(this.requestAbort))return this.requestAbort=!1,void t.log("WebsocketStream","socket close and requestAbort is true");r.close(),this.socketStatus=dt,this.player.emit(rt.websocketClose,e.code),this.emit(rt.streamEnd,e.code)})),o=i(this.socket,"error",(e=>{t.error("WebsocketStream","socket error",e),this.socketStatus=ht,this.emit(nt.websocketError,e),r.close(),t.log("WebsocketStream","socket error:",e.isTrusted?"websocket user aborted":"websocket error")}));this.socketDestroyFnList.push(s,a,n,o)}_closeWebSocket(){this.socketDestroyFnList.forEach((e=>e())),!this.socket||0!==this.socket.readyState&&1!==this.socket.readyState?this.socket&&this.player.debug.log("WebsocketStream",`_closeWebSocket() socket is null or socket status is ${this.socket&&this.socket.readyState}`):(this.requestAbort=!0,this.socket.close(1e3,"Client disconnecting")),this.socket=null,this.socketStatus=ot,this.streamRate=null}_handleMessage(e){const{demux:t}=this.player;t?t.dispatch(e):this.player.debug.warn("WebsocketStream","websocket handle message demux is null")}fetchStream(e,t){this.player._times.streamStart=ps(),this.wsUrl=e,this._createWebSocket()}sendMessage(e){this.socket?this.socketStatus===lt?this.socket.send(e):this.player.debug.error("WebsocketStream",`websocket send message error and socket status is ${this.socketStatus}`):this.player.debug.error("WebsocketStream","websocket send message socket is null")}resetFetchStream(){this._closeWebSocket(),this._createWebSocket()}getStreamType(){return c}}class bn extends Ra{constructor(e){super(),this.player=e,e.debug.log("HlsStream","init")}destroy(){this.off(),this.player.debug.log("HlsStream","destroy")}fetchStream(e){const{hlsDecoder:t,debug:i}=this.player;this.player._times.streamStart=ps(),t.loadSource(e).then((()=>{this.player.debug.log("HlsStream","loadSource success"),this.emit(rt.streamSuccess)})).catch((e=>{this.emit(nt.hlsError,e)}))}getStreamType(){return h}}class _n extends Ra{constructor(e){super(),this.player=e,this.webrctUrl=null,e.debug.log("WebrtcStream","init")}destroy(){this.webrctUrl=null,this.off(),this.player.debug.log("WebrtcStream","destroy")}fetchStream(e){const{webrtc:t,debug:i}=this.player;this.player._times.streamStart=ps(),this.webrctUrl=e.replace("webrtc:",window.location.protocol),t.loadSource(this.webrctUrl).then((()=>{this.player.debug.log("WebrtcStream","loadSource success"),this.emit(rt.streamSuccess)})).catch((e=>{this.player.debug.error("WebrtcStream","loadSource error",e),this.emit(nt.webrtcError,e)}))}getStreamType(){return u}}class En extends Ra{constructor(e){super(),this.player=e,e.debug.log("wsRtcStream","init")}destroy(){this.off(),this.player.debug.log("wsRtcStream","destroy")}fetchStream(e){const{wsRtcDecoder:t,debug:i}=this.player;this.player._times.streamStart=ps(),t.loadSource(e).then((()=>{this.player.debug.log("wsRtcStream","loadSource success"),this.emit(rt.streamSuccess)})).catch((e=>{this.emit(nt.webrtcError,e)}))}getStreamType(){return y}}class Sn extends Ra{constructor(e){super(),this.player=e,this.transport=null,this.wtUrl=null,this.streamRate=As((t=>{e.emit(rt.kBps,(t/1024).toFixed(2))})),this.streamRateInterval=null,e.debug.log("WebTransportLoader","init")}destroy(){this.abort(),this.off(),this.player.debug.log("WebTransportLoader","destroy")}startStreamRateInterval(){this.stopStreamRateInterval(),this.streamRateInterval=setInterval((()=>{this.streamRate&&this.streamRate(0)}),1e3)}stopStreamRateInterval(){this.streamRateInterval&&(clearInterval(this.streamRateInterval),this.streamRateInterval=null)}_createWebTransport(){const e=this.player,{debug:t,events:{proxy:i},demux:r}=e;try{this.transport=new WebTransport(this.wtUrl),this.transport.ready.then((()=>{this.emit(rt.streamSuccess),this.startStreamRateInterval(),this.transport.createBidirectionalStream().then((e=>{e.readable.pipeTo(new WritableStream(r.input))}))})).catch((e=>{this.player.debug.warn("WebTransportLoader","_createWebTransport-ready",e)}))}catch(e){this.player.debug.warn("WebTransportLoader","_createWebTransport",e)}}fetchStream(e){this.player._times.streamStart=ps(),this.wtUrl=e.replace(/^wt:/,"https:"),this._createWebTransport()}abort(){if(this.transport)try{this.transport.close(),this.transport=null}catch(e){this.transport=null}}getStreamType(){return p}}class wn extends Ra{constructor(e){super(),this.player=e,this.workUrl=null,e.debug.log("WorkerStream","init")}destroy(){this.workUrl=null,this.off(),this.player.debug.log("WorkerStream","destroy")}sendMessage(e){this.player.decoderWorker.workerSendMessage(e)}fetchStream(e,t={}){this.workUrl=e,this.player._times.streamStart=ps(),this.player.decoderWorker.workerFetchStream(e)}getStreamType(){const e=this.player._opt.protocol;return f+" "+(e===i?d:c)}}class Tn extends Ra{constructor(e){super(),this.TAG_NAME="AliyunRtcLoader",this.player=e,e.debug.log(this.TAG_NAME,"init")}destroy(){this.off(),this.player.debug.log(this.TAG_NAME,"destroy")}fetchStream(e){const{aliyunRtcDecoder:t}=this.player;this.player._times.streamStart=ps(),t.loadSource(e).then((()=>{this.player.debug.log(this.TAG_NAME,"loadSource success"),this.emit(rt.streamSuccess)})).catch((e=>{this.player.debug.error(this.TAG_NAME,"loadSource error",e),this.emit(nt.aliyunRtcError,e)}))}getStreamType(){return m}}class kn{constructor(e){return new(kn.getLoaderFactory(e._opt))(e)}static getLoaderFactory(e){const{protocol:l,useWasm:d,playType:h,useWCS:c,useMSE:u,demuxUseWorker:p}=e;return l===i?h===A?wn:h===g?d&&!oa(e)||p?wn:An:c||u?p?wn:An:wn:l===t?h===A?wn:h===g?d&&!oa(e)||p?wn:vn:c||u?p?wn:vn:wn:l===o?En:l===r?bn:l===s?_n:l===a?Sn:l===n?Tn:void 0}}var Cn=Kr((function(e){function t(e,s){if(!e)throw"First parameter is required.";s=new i(e,s=s||{type:"video"});var a=this;function n(t){t&&(s.initCallback=function(){t(),t=s.initCallback=null});var i=new r(e,s);(p=new i(e,s)).record(),u("recording"),s.disableLogs||console.log("Initialized recorderType:",p.constructor.name,"for output-type:",s.type)}function o(e){if(e=e||function(){},p){if("paused"===a.state)return a.resumeRecording(),void setTimeout((function(){o(e)}),1);"recording"===a.state||s.disableLogs||console.warn('Recording state should be: "recording", however current state is: ',a.state),s.disableLogs||console.log("Stopped recording "+s.type+" stream."),"gif"!==s.type?p.stop(t):(p.stop(),t()),u("stopped")}else m();function t(t){if(p){Object.keys(p).forEach((function(e){"function"!=typeof p[e]&&(a[e]=p[e])}));var i=p.blob;if(!i){if(!t)throw"Recording failed.";p.blob=i=t}if(i&&!s.disableLogs&&console.log(i.type,"->",g(i.size)),e){var r;try{r=h.createObjectURL(i)}catch(e){}"function"==typeof e.call?e.call(a,r):e(r)}s.autoWriteToDisk&&d((function(e){var t={};t[s.type+"Blob"]=e,D.Store(t)}))}else"function"==typeof e.call?e.call(a,""):e("")}}function l(e){postMessage((new FileReaderSync).readAsDataURL(e))}function d(e,t){if(!e)throw"Pass a callback function over getDataURL.";var i=t?t.blob:(p||{}).blob;if(!i)return s.disableLogs||console.warn("Blob encoder did not finish its job yet."),void setTimeout((function(){d(e,t)}),1e3);if("undefined"==typeof Worker||navigator.mozGetUserMedia){var r=new FileReader;r.readAsDataURL(i),r.onload=function(t){e(t.target.result)}}else{var a=function(e){try{var t=h.createObjectURL(new Blob([e.toString(),"this.onmessage = function (eee) {"+e.name+"(eee.data);}"],{type:"application/javascript"})),i=new Worker(t);return h.revokeObjectURL(t),i}catch(e){}}(l);a.onmessage=function(t){e(t.data)},a.postMessage(i)}}function c(e){e=e||0,"paused"!==a.state?"stopped"!==a.state&&(e>=a.recordingDuration?o(a.onRecordingStopped):(e+=1e3,setTimeout((function(){c(e)}),1e3))):setTimeout((function(){c(e)}),1e3)}function u(e){a&&(a.state=e,"function"==typeof a.onStateChanged.call?a.onStateChanged.call(a,e):a.onStateChanged(e))}var p,f='It seems that recorder is destroyed or "startRecording" is not invoked for '+s.type+" recorder.";function m(){!0!==s.disableLogs&&console.warn(f)}var y={startRecording:function(t){return s.disableLogs||console.log("RecordRTC version: ",a.version),t&&(s=new i(e,t)),s.disableLogs||console.log("started recording "+s.type+" stream."),p?(p.clearRecordedData(),p.record(),u("recording"),a.recordingDuration&&c(),a):(n((function(){a.recordingDuration&&c()})),a)},stopRecording:o,pauseRecording:function(){p?"recording"===a.state?(u("paused"),p.pause(),s.disableLogs||console.log("Paused recording.")):s.disableLogs||console.warn("Unable to pause the recording. Recording state: ",a.state):m()},resumeRecording:function(){p?"paused"===a.state?(u("recording"),p.resume(),s.disableLogs||console.log("Resumed recording.")):s.disableLogs||console.warn("Unable to resume the recording. Recording state: ",a.state):m()},initRecorder:n,setRecordingDuration:function(e,t){if(void 0===e)throw"recordingDuration is required.";if("number"!=typeof e)throw"recordingDuration must be a number.";return a.recordingDuration=e,a.onRecordingStopped=t||function(){},{onRecordingStopped:function(e){a.onRecordingStopped=e}}},clearRecordedData:function(){p?(p.clearRecordedData(),s.disableLogs||console.log("Cleared old recorded data.")):m()},getBlob:function(){if(p)return p.blob;m()},getDataURL:d,toURL:function(){if(p)return h.createObjectURL(p.blob);m()},getInternalRecorder:function(){return p},save:function(e){p?A(p.blob,e):m()},getFromDisk:function(e){p?t.getFromDisk(s.type,e):m()},setAdvertisementArray:function(e){s.advertisement=[];for(var t=e.length,i=0;i-1&&"netscape"in window&&/ rv:/.test(navigator.userAgent),f=!u&&!c&&!!navigator.webkitGetUserMedia||v()||-1!==navigator.userAgent.toLowerCase().indexOf("chrome/"),m=/^((?!chrome|android).)*safari/i.test(navigator.userAgent);m&&!f&&-1!==navigator.userAgent.indexOf("CriOS")&&(m=!1,f=!0);var y=window.MediaStream;function g(e){if(0===e)return"0 Bytes";var t=parseInt(Math.floor(Math.log(e)/Math.log(1e3)),10);return(e/Math.pow(1e3,t)).toPrecision(3)+" "+["Bytes","KB","MB","GB","TB"][t]}function A(e,t){if(!e)throw"Blob object is required.";if(!e.type)try{e.type="video/webm"}catch(e){}var i=(e.type||"video/webm").split("/")[1];if(-1!==i.indexOf(";")&&(i=i.split(";")[0]),t&&-1!==t.indexOf(".")){var r=t.split(".");t=r[0],i=r[1]}var s=(t||Math.round(9999999999*Math.random())+888888888)+"."+i;if(void 0!==navigator.msSaveOrOpenBlob)return navigator.msSaveOrOpenBlob(e,s);if(void 0!==navigator.msSaveBlob)return navigator.msSaveBlob(e,s);var a=document.createElement("a");a.href=h.createObjectURL(e),a.download=s,a.style="display:none;opacity:0;color:transparent;",(document.body||document.documentElement).appendChild(a),"function"==typeof a.click?a.click():(a.target="_blank",a.dispatchEvent(new MouseEvent("click",{view:window,bubbles:!0,cancelable:!0}))),h.revokeObjectURL(a.href)}function v(){return"undefined"!=typeof window&&"object"==typeof window.process&&"renderer"===window.process.type||(!("undefined"==typeof process||"object"!=typeof process.versions||!process.versions.electron)||"object"==typeof navigator&&"string"==typeof navigator.userAgent&&navigator.userAgent.indexOf("Electron")>=0)}function b(e,t){return e&&e.getTracks?e.getTracks().filter((function(e){return e.kind===(t||"audio")})):[]}function _(e,t){"srcObject"in t?t.srcObject=e:"mozSrcObject"in t?t.mozSrcObject=e:t.srcObject=e}void 0===y&&"undefined"!=typeof webkitMediaStream&&(y=webkitMediaStream),void 0!==y&&void 0===y.prototype.stop&&(y.prototype.stop=function(){this.getTracks().forEach((function(e){e.stop()}))}),void 0!==t&&(t.invokeSaveAsDialog=A,t.getTracks=b,t.getSeekableBlob=function(e,t){if("undefined"==typeof EBML)throw new Error("Please link: https://www.webrtc-experiment.com/EBML.js");var i=new EBML.Reader,r=new EBML.Decoder,s=EBML.tools,a=new FileReader;a.onload=function(e){r.decode(this.result).forEach((function(e){i.read(e)})),i.stop();var a=s.makeMetadataSeekable(i.metadatas,i.duration,i.cues),n=this.result.slice(i.metadataSize),o=new Blob([a,n],{type:"video/webm"});t(o)},a.readAsArrayBuffer(e)},t.bytesToSize=g,t.isElectron=v);var E={};function S(){if(p||m||c)return!0;var e,t,i=navigator.userAgent,r=""+parseFloat(navigator.appVersion),s=parseInt(navigator.appVersion,10);return(f||u)&&(e=i.indexOf("Chrome"),r=i.substring(e+7)),-1!==(t=r.indexOf(";"))&&(r=r.substring(0,t)),-1!==(t=r.indexOf(" "))&&(r=r.substring(0,t)),s=parseInt(""+r,10),isNaN(s)&&(r=""+parseFloat(navigator.appVersion),s=parseInt(navigator.appVersion,10)),s>=49}function w(e,t){var i=this;if(void 0===e)throw'First argument "MediaStream" is required.';if("undefined"==typeof MediaRecorder)throw"Your browser does not support the Media Recorder API. Please try other modules e.g. WhammyRecorder or StereoAudioRecorder.";if("audio"===(t=t||{mimeType:"video/webm"}).type){var r;if(b(e,"video").length&&b(e,"audio").length)navigator.mozGetUserMedia?(r=new y).addTrack(b(e,"audio")[0]):r=new y(b(e,"audio")),e=r;t.mimeType&&-1!==t.mimeType.toString().toLowerCase().indexOf("audio")||(t.mimeType=f?"audio/webm":"audio/ogg"),t.mimeType&&"audio/ogg"!==t.mimeType.toString().toLowerCase()&&navigator.mozGetUserMedia&&(t.mimeType="audio/ogg")}var s,a=[];function n(){i.timestamps.push((new Date).getTime()),"function"==typeof t.onTimeStamp&&t.onTimeStamp(i.timestamps[i.timestamps.length-1],i.timestamps)}function o(e){return s&&s.mimeType?s.mimeType:e.mimeType||"video/webm"}function l(){a=[],s=null,i.timestamps=[]}this.getArrayOfBlobs=function(){return a},this.record=function(){i.blob=null,i.clearRecordedData(),i.timestamps=[],d=[],a=[];var r=t;t.disableLogs||console.log("Passing following config over MediaRecorder API.",r),s&&(s=null),f&&!S()&&(r="video/vp8"),"function"==typeof MediaRecorder.isTypeSupported&&r.mimeType&&(MediaRecorder.isTypeSupported(r.mimeType)||(t.disableLogs||console.warn("MediaRecorder API seems unable to record mimeType:",r.mimeType),r.mimeType="audio"===t.type?"audio/webm":"video/webm"));try{s=new MediaRecorder(e,r),t.mimeType=r.mimeType}catch(t){s=new MediaRecorder(e)}r.mimeType&&!MediaRecorder.isTypeSupported&&"canRecordMimeType"in s&&!1===s.canRecordMimeType(r.mimeType)&&(t.disableLogs||console.warn("MediaRecorder API seems unable to record mimeType:",r.mimeType)),s.ondataavailable=function(e){if(e.data&&d.push("ondataavailable: "+g(e.data.size)),"number"!=typeof t.timeSlice)!e.data||!e.data.size||e.data.size<100||i.blob?i.recordingCallback&&(i.recordingCallback(new Blob([],{type:o(r)})),i.recordingCallback=null):(i.blob=t.getNativeBlob?e.data:new Blob([e.data],{type:o(r)}),i.recordingCallback&&(i.recordingCallback(i.blob),i.recordingCallback=null));else if(e.data&&e.data.size&&(a.push(e.data),n(),"function"==typeof t.ondataavailable)){var s=t.getNativeBlob?e.data:new Blob([e.data],{type:o(r)});t.ondataavailable(s)}},s.onstart=function(){d.push("started")},s.onpause=function(){d.push("paused")},s.onresume=function(){d.push("resumed")},s.onstop=function(){d.push("stopped")},s.onerror=function(e){e&&(e.name||(e.name="UnknownError"),d.push("error: "+e),t.disableLogs||(-1!==e.name.toString().toLowerCase().indexOf("invalidstate")?console.error("The MediaRecorder is not in a state in which the proposed operation is allowed to be executed.",e):-1!==e.name.toString().toLowerCase().indexOf("notsupported")?console.error("MIME type (",r.mimeType,") is not supported.",e):-1!==e.name.toString().toLowerCase().indexOf("security")?console.error("MediaRecorder security error",e):"OutOfMemory"===e.name?console.error("The UA has exhaused the available memory. User agents SHOULD provide as much additional information as possible in the message attribute.",e):"IllegalStreamModification"===e.name?console.error("A modification to the stream has occurred that makes it impossible to continue recording. An example would be the addition of a Track while recording is occurring. User agents SHOULD provide as much additional information as possible in the message attribute.",e):"OtherRecordingError"===e.name?console.error("Used for an fatal error other than those listed above. User agents SHOULD provide as much additional information as possible in the message attribute.",e):"GenericError"===e.name?console.error("The UA cannot provide the codec or recording option that has been requested.",e):console.error("MediaRecorder Error",e)),function(e){if(!i.manuallyStopped&&s&&"inactive"===s.state)return delete t.timeslice,void s.start(6e5);setTimeout(void 0,1e3)}(),"inactive"!==s.state&&"stopped"!==s.state&&s.stop())},"number"==typeof t.timeSlice?(n(),s.start(t.timeSlice)):s.start(36e5),t.initCallback&&t.initCallback()},this.timestamps=[],this.stop=function(e){e=e||function(){},i.manuallyStopped=!0,s&&(this.recordingCallback=e,"recording"===s.state&&s.stop(),"number"==typeof t.timeSlice&&setTimeout((function(){i.blob=new Blob(a,{type:o(t)}),i.recordingCallback(i.blob)}),100))},this.pause=function(){s&&"recording"===s.state&&s.pause()},this.resume=function(){s&&"paused"===s.state&&s.resume()},this.clearRecordedData=function(){s&&"recording"===s.state&&i.stop(l),l()},this.getInternalRecorder=function(){return s},this.blob=null,this.getState=function(){return s&&s.state||"inactive"};var d=[];this.getAllStates=function(){return d},void 0===t.checkForInactiveTracks&&(t.checkForInactiveTracks=!1);i=this;!function r(){if(s&&!1!==t.checkForInactiveTracks)return!1===function(){if("active"in e){if(!e.active)return!1}else if("ended"in e&&e.ended)return!1;return!0}()?(t.disableLogs||console.log("MediaStream seems stopped."),void i.stop()):void setTimeout(r,1e3)}(),this.name="MediaStreamRecorder",this.toString=function(){return this.name}}function T(e,i){if(!b(e,"audio").length)throw"Your stream has no audio tracks.";var r,s=this,a=[],n=[],o=!1,l=0,d=2,c=(i=i||{}).desiredSampRate;function u(){if(!1===i.checkForInactiveTracks)return!0;if("active"in e){if(!e.active)return!1}else if("ended"in e&&e.ended)return!1;return!0}function p(e,t){function i(e,t){var i,r=e.numberOfAudioChannels,s=e.leftBuffers.slice(0),a=e.rightBuffers.slice(0),n=e.sampleRate,o=e.internalInterleavedLength,l=e.desiredSampRate;function d(e,t,i){var r=Math.round(e.length*(t/i)),s=[],a=Number((e.length-1)/(r-1));s[0]=e[0];for(var n=1;n96e3)&&(i.disableLogs||console.log("sample-rate must be under range 22050 and 96000.")),i.disableLogs||i.desiredSampRate&&console.log("Desired sample-rate: "+i.desiredSampRate);var v=!1;function _(){a=[],n=[],l=0,S=!1,o=!1,v=!1,f=null,s.leftchannel=a,s.rightchannel=n,s.numberOfAudioChannels=d,s.desiredSampRate=c,s.sampleRate=A,s.recordingLength=l,w={left:[],right:[],recordingLength:0}}function E(){r&&(r.onaudioprocess=null,r.disconnect(),r=null),m&&(m.disconnect(),m=null),_()}this.pause=function(){v=!0},this.resume=function(){if(!1===u())throw"Please make sure MediaStream is active.";if(!o)return i.disableLogs||console.log("Seems recording has been restarted."),void this.record();v=!1},this.clearRecordedData=function(){i.checkForInactiveTracks=!1,o&&this.stop(E),E()},this.name="StereoAudioRecorder",this.toString=function(){return this.name};var S=!1;r.onaudioprocess=function(e){if(!v)if(!1===u()&&(i.disableLogs||console.log("MediaStream seems stopped."),r.disconnect(),o=!1),o){S||(S=!0,i.onAudioProcessStarted&&i.onAudioProcessStarted(),i.initCallback&&i.initCallback());var t=e.inputBuffer.getChannelData(0),h=new Float32Array(t);if(a.push(h),2===d){var c=e.inputBuffer.getChannelData(1),p=new Float32Array(c);n.push(p)}l+=g,s.recordingLength=l,void 0!==i.timeSlice&&(w.recordingLength+=g,w.left.push(h),2===d&&w.right.push(p))}else m&&(m.disconnect(),m=null)},f.createMediaStreamDestination?r.connect(f.createMediaStreamDestination()):r.connect(f.destination),this.leftchannel=a,this.rightchannel=n,this.numberOfAudioChannels=d,this.desiredSampRate=c,this.sampleRate=A,s.recordingLength=l;var w={left:[],right:[],recordingLength:0};function T(){o&&"function"==typeof i.ondataavailable&&void 0!==i.timeSlice&&(w.left.length?(p({desiredSampRate:c,sampleRate:A,numberOfAudioChannels:d,internalInterleavedLength:w.recordingLength,leftBuffers:w.left,rightBuffers:1===d?[]:w.right},(function(e,t){var r=new Blob([t],{type:"audio/wav"});i.ondataavailable(r),setTimeout(T,i.timeSlice)})),w={left:[],right:[],recordingLength:0}):setTimeout(T,i.timeSlice))}}function k(e,t){if("undefined"==typeof html2canvas)throw"Please link: https://www.webrtc-experiment.com/screenshot.js";(t=t||{}).frameInterval||(t.frameInterval=10);var i=!1;["captureStream","mozCaptureStream","webkitCaptureStream"].forEach((function(e){e in document.createElement("canvas")&&(i=!0)}));var r,s,a,n=!(!window.webkitRTCPeerConnection&&!window.webkitGetUserMedia||!window.chrome),o=50,l=navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./);if(n&&l&&l[2]&&(o=parseInt(l[2],10)),n&&o<52&&(i=!1),t.useWhammyRecorder&&(i=!1),i)if(t.disableLogs||console.log("Your browser supports both MediRecorder API and canvas.captureStream!"),e instanceof HTMLCanvasElement)r=e;else{if(!(e instanceof CanvasRenderingContext2D))throw"Please pass either HTMLCanvasElement or CanvasRenderingContext2D.";r=e.canvas}else navigator.mozGetUserMedia&&(t.disableLogs||console.error("Canvas recording is NOT supported in Firefox."));this.record=function(){if(a=!0,i&&!t.useWhammyRecorder){var e;"captureStream"in r?e=r.captureStream(25):"mozCaptureStream"in r?e=r.mozCaptureStream(25):"webkitCaptureStream"in r&&(e=r.webkitCaptureStream(25));try{var n=new y;n.addTrack(b(e,"video")[0]),e=n}catch(e){}if(!e)throw"captureStream API are NOT available.";(s=new w(e,{mimeType:t.mimeType||"video/webm"})).record()}else p.frames=[],u=(new Date).getTime(),c();t.initCallback&&t.initCallback()},this.getWebPImages=function(i){if("canvas"===e.nodeName.toLowerCase()){var r=p.frames.length;p.frames.forEach((function(e,i){var s=r-i;t.disableLogs||console.log(s+"/"+r+" frames remaining"),t.onEncodingCallback&&t.onEncodingCallback(s,r);var a=e.image.toDataURL("image/webp",1);p.frames[i].image=a})),t.disableLogs||console.log("Generating WebM"),i()}else i()},this.stop=function(e){a=!1;var r=this;i&&s?s.stop(e):this.getWebPImages((function(){p.compile((function(i){t.disableLogs||console.log("Recording finished!"),r.blob=i,r.blob.forEach&&(r.blob=new Blob([],{type:"video/webm"})),e&&e(r.blob),p.frames=[]}))}))};var d=!1;function h(){p.frames=[],a=!1,d=!1}function c(){if(d)return u=(new Date).getTime(),setTimeout(c,500);if("canvas"===e.nodeName.toLowerCase()){var i=(new Date).getTime()-u;return u=(new Date).getTime(),p.frames.push({image:(r=document.createElement("canvas"),s=r.getContext("2d"),r.width=e.width,r.height=e.height,s.drawImage(e,0,0),r),duration:i}),void(a&&setTimeout(c,t.frameInterval))}var r,s;html2canvas(e,{grabMouse:void 0===t.showMousePointer||t.showMousePointer,onrendered:function(e){var i=(new Date).getTime()-u;if(!i)return setTimeout(c,t.frameInterval);u=(new Date).getTime(),p.frames.push({image:e.toDataURL("image/webp",1),duration:i}),a&&setTimeout(c,t.frameInterval)}})}this.pause=function(){d=!0,s instanceof w&&s.pause()},this.resume=function(){d=!1,s instanceof w?s.resume():a||this.record()},this.clearRecordedData=function(){a&&this.stop(h),h()},this.name="CanvasRecorder",this.toString=function(){return this.name};var u=(new Date).getTime(),p=new R.Video(100)}function C(e,t){function i(e){e=void 0!==e?e:10;var t=(new Date).getTime()-l;return t?a?(l=(new Date).getTime(),setTimeout(i,100)):(l=(new Date).getTime(),o.paused&&o.play(),c.drawImage(o,0,0,h.width,h.height),d.frames.push({duration:t,image:h.toDataURL("image/webp")}),void(s||setTimeout(i,e,e))):setTimeout(i,e,e)}function r(e,t,i,r,s){var a=document.createElement("canvas");a.width=h.width,a.height=h.height;var n,o,l,d=a.getContext("2d"),c=[],u=-1===t,p=t&&t>0&&t<=e.length?t:e.length,f=0,m=0,y=0,g=Math.sqrt(Math.pow(255,2)+Math.pow(255,2)+Math.pow(255,2)),A=i&&i>=0&&i<=1?i:0,v=r&&r>=0&&r<=1?r:0,b=!1;o=-1,l=(n={length:p,functionToLoop:function(t,i){var r,s,a,n=function(){!b&&a-r<=a*v||(u&&(b=!0),c.push(e[i])),t()};if(b)n();else{var o=new Image;o.onload=function(){d.drawImage(o,0,0,h.width,h.height);var e=d.getImageData(0,0,h.width,h.height);r=0,s=e.data.length,a=e.data.length/4;for(var t=0;t127)throw"TrackNumber > 127 not supported";var i=[128|e.trackNum,e.timecode>>8,255&e.timecode,t].map((function(e){return String.fromCharCode(e)})).join("")+e.frame;return i}({discardable:0,frame:e.data.slice(4),invisible:0,keyframe:1,lacing:0,trackNum:1,timecode:Math.round(t)});return t+=e.duration,{data:i,id:163}})))}function i(e){for(var t=[];e>0;)t.push(255&e),e>>=8;return new Uint8Array(t.reverse())}function r(e){var t=[];e=(e.length%8?new Array(9-e.length%8).join("0"):"")+e;for(var i=0;i1?2*i[0].width:i[0].width;var n=1;3!==e&&4!==e||(n=2),5!==e&&6!==e||(n=3),7!==e&&8!==e||(n=4),9!==e&&10!==e||(n=5),a.height=i[0].height*n}else a.width=o.width||360,a.height=o.height||240;t&&t instanceof HTMLVideoElement&&p(t),i.forEach((function(e,t){p(e,t)})),setTimeout(u,o.frameInterval)}}function p(e,t){if(!s){var i=0,r=0,a=e.width,o=e.height;1===t&&(i=e.width),2===t&&(r=e.height),3===t&&(i=e.width,r=e.height),4===t&&(r=2*e.height),5===t&&(i=e.width,r=2*e.height),6===t&&(r=3*e.height),7===t&&(i=e.width,r=3*e.height),void 0!==e.stream.left&&(i=e.stream.left),void 0!==e.stream.top&&(r=e.stream.top),void 0!==e.stream.width&&(a=e.stream.width),void 0!==e.stream.height&&(o=e.stream.height),n.drawImage(e,i,r,a,o),"function"==typeof e.stream.onRender&&e.stream.onRender(n,i,r,a,o,t)}}function f(e){var t=document.createElement("video");return function(e,t){"srcObject"in t?t.srcObject=e:"mozSrcObject"in t?t.mozSrcObject=e:t.srcObject=e}(e,t),t.className=i,t.muted=!0,t.volume=0,t.width=e.width||o.width||360,t.height=e.height||o.height||240,t.play(),t}function m(t){r=[],(t=t||e).forEach((function(e){if(e.getTracks().filter((function(e){return"video"===e.kind})).length){var t=f(e);t.stream=e,r.push(t)}}))}void 0!==l?c.AudioContext=l:"undefined"!=typeof webkitAudioContext&&(c.AudioContext=webkitAudioContext),this.startDrawingFrames=function(){u()},this.appendStreams=function(t){if(!t)throw"First parameter is required.";t instanceof Array||(t=[t]),t.forEach((function(t){var i=new h;if(t.getTracks().filter((function(e){return"video"===e.kind})).length){var s=f(t);s.stream=t,r.push(s),i.addTrack(t.getTracks().filter((function(e){return"video"===e.kind}))[0])}if(t.getTracks().filter((function(e){return"audio"===e.kind})).length){var a=o.audioContext.createMediaStreamSource(t);o.audioDestination=o.audioContext.createMediaStreamDestination(),a.connect(o.audioDestination),i.addTrack(o.audioDestination.stream.getTracks().filter((function(e){return"audio"===e.kind}))[0])}e.push(i)}))},this.releaseStreams=function(){r=[],s=!0,o.gainNode&&(o.gainNode.disconnect(),o.gainNode=null),o.audioSources.length&&(o.audioSources.forEach((function(e){e.disconnect()})),o.audioSources=[]),o.audioDestination&&(o.audioDestination.disconnect(),o.audioDestination=null),o.audioContext&&o.audioContext.close(),o.audioContext=null,n.clearRect(0,0,a.width,a.height),a.stream&&(a.stream.stop(),a.stream=null)},this.resetVideoStreams=function(e){!e||e instanceof Array||(e=[e]),m(e)},this.name="MultiStreamsMixer",this.toString=function(){return this.name},this.getMixedStream=function(){s=!1;var t=function(){var e;m(),"captureStream"in a?e=a.captureStream():"mozCaptureStream"in a?e=a.mozCaptureStream():o.disableLogs||console.error("Upgrade to latest Chrome or otherwise enable this flag: chrome://flags/#enable-experimental-web-platform-features");var t=new h;return e.getTracks().filter((function(e){return"video"===e.kind})).forEach((function(e){t.addTrack(e)})),a.stream=t,t}(),i=function(){c.AudioContextConstructor||(c.AudioContextConstructor=new c.AudioContext);o.audioContext=c.AudioContextConstructor,o.audioSources=[],!0===o.useGainNode&&(o.gainNode=o.audioContext.createGain(),o.gainNode.connect(o.audioContext.destination),o.gainNode.gain.value=0);var t=0;if(e.forEach((function(e){if(e.getTracks().filter((function(e){return"audio"===e.kind})).length){t++;var i=o.audioContext.createMediaStreamSource(e);!0===o.useGainNode&&i.connect(o.gainNode),o.audioSources.push(i)}})),!t)return;return o.audioDestination=o.audioContext.createMediaStreamDestination(),o.audioSources.forEach((function(e){e.connect(o.audioDestination)})),o.audioDestination.stream}();return i&&i.getTracks().filter((function(e){return"audio"===e.kind})).forEach((function(e){t.addTrack(e)})),e.forEach((function(e){e.fullcanvas})),t}}function I(e,t){e=e||[];var i,r,s=this;(t=t||{elementClass:"multi-streams-mixer",mimeType:"video/webm",video:{width:360,height:240}}).frameInterval||(t.frameInterval=10),t.video||(t.video={}),t.video.width||(t.video.width=360),t.video.height||(t.video.height=240),this.record=function(){var s;i=new L(e,t.elementClass||"multi-streams-mixer"),(s=[],e.forEach((function(e){b(e,"video").forEach((function(e){s.push(e)}))})),s).length&&(i.frameInterval=t.frameInterval||10,i.width=t.video.width||360,i.height=t.video.height||240,i.startDrawingFrames()),t.previewStream&&"function"==typeof t.previewStream&&t.previewStream(i.getMixedStream()),(r=new w(i.getMixedStream(),t)).record()},this.stop=function(e){r&&r.stop((function(t){s.blob=t,e(t),s.clearRecordedData()}))},this.pause=function(){r&&r.pause()},this.resume=function(){r&&r.resume()},this.clearRecordedData=function(){r&&(r.clearRecordedData(),r=null),i&&(i.releaseStreams(),i=null)},this.addStreams=function(s){if(!s)throw"First parameter is required.";s instanceof Array||(s=[s]),e.concat(s),r&&i&&(i.appendStreams(s),t.previewStream&&"function"==typeof t.previewStream&&t.previewStream(i.getMixedStream()))},this.resetVideoStreams=function(e){i&&(!e||e instanceof Array||(e=[e]),i.resetVideoStreams(e))},this.getMixer=function(){return i},this.name="MultiStreamRecorder",this.toString=function(){return this.name}}function P(e,t){var i,r,s;function a(){return new ReadableStream({start:function(r){var s=document.createElement("canvas"),a=document.createElement("video"),n=!0;a.srcObject=e,a.muted=!0,a.height=t.height,a.width=t.width,a.volume=0,a.onplaying=function(){s.width=t.width,s.height=t.height;var e=s.getContext("2d"),o=1e3/t.frameRate,l=setInterval((function(){if(i&&(clearInterval(l),r.close()),n&&(n=!1,t.onVideoProcessStarted&&t.onVideoProcessStarted()),e.drawImage(a,0,0),"closed"!==r._controlledReadableStream.state)try{r.enqueue(e.getImageData(0,0,t.width,t.height))}catch(e){}}),o)},a.play()}})}function n(e,l){if(!t.workerPath&&!l)return i=!1,void fetch("https://unpkg.com/webm-wasm@latest/dist/webm-worker.js").then((function(t){t.arrayBuffer().then((function(t){n(e,t)}))}));if(!t.workerPath&&l instanceof ArrayBuffer){var d=new Blob([l],{type:"text/javascript"});t.workerPath=h.createObjectURL(d)}t.workerPath||console.error("workerPath parameter is missing."),(r=new Worker(t.workerPath)).postMessage(t.webAssemblyPath||"https://unpkg.com/webm-wasm@latest/dist/webm-wasm.wasm"),r.addEventListener("message",(function(e){"READY"===e.data?(r.postMessage({width:t.width,height:t.height,bitrate:t.bitrate||1200,timebaseDen:t.frameRate||30,realtime:t.realtime}),a().pipeTo(new WritableStream({write:function(e){i?console.error("Got image, but recorder is finished!"):r.postMessage(e.data.buffer,[e.data.buffer])}}))):e.data&&(s||o.push(e.data))}))}"undefined"!=typeof ReadableStream&&"undefined"!=typeof WritableStream||console.error("Following polyfill is strongly recommended: https://unpkg.com/@mattiasbuelens/web-streams-polyfill/dist/polyfill.min.js"),(t=t||{}).width=t.width||640,t.height=t.height||480,t.frameRate=t.frameRate||30,t.bitrate=t.bitrate||1200,t.realtime=t.realtime||!0,this.record=function(){o=[],s=!1,this.blob=null,n(e),"function"==typeof t.initCallback&&t.initCallback()},this.pause=function(){s=!0},this.resume=function(){s=!1};var o=[];this.stop=function(e){i=!0;var t=this;!function(e){r?(r.addEventListener("message",(function(t){null===t.data&&(r.terminate(),r=null,e&&e())})),r.postMessage(null)):e&&e()}((function(){t.blob=new Blob(o,{type:"video/webm"}),e(t.blob)}))},this.name="WebAssemblyRecorder",this.toString=function(){return this.name},this.clearRecordedData=function(){o=[],s=!1,this.blob=null},this.blob=null}void 0!==t&&(t.DiskStorage=D),void 0!==t&&(t.GifRecorder=x),void 0===t&&(e.exports=L),void 0!==t&&(t.MultiStreamRecorder=I),void 0!==t&&(t.RecordRTCPromisesHandler=function(e,i){if(!this)throw'Use "new RecordRTCPromisesHandler()"';if(void 0===e)throw'First argument "MediaStream" is required.';var r=this;r.recordRTC=new t(e,i),this.startRecording=function(){return new Promise((function(e,t){try{r.recordRTC.startRecording(),e()}catch(e){t(e)}}))},this.stopRecording=function(){return new Promise((function(e,t){try{r.recordRTC.stopRecording((function(i){r.blob=r.recordRTC.getBlob(),r.blob&&r.blob.size?e(i):t("Empty blob.",r.blob)}))}catch(e){t(e)}}))},this.pauseRecording=function(){return new Promise((function(e,t){try{r.recordRTC.pauseRecording(),e()}catch(e){t(e)}}))},this.resumeRecording=function(){return new Promise((function(e,t){try{r.recordRTC.resumeRecording(),e()}catch(e){t(e)}}))},this.getDataURL=function(e){return new Promise((function(e,t){try{r.recordRTC.getDataURL((function(t){e(t)}))}catch(e){t(e)}}))},this.getBlob=function(){return new Promise((function(e,t){try{e(r.recordRTC.getBlob())}catch(e){t(e)}}))},this.getInternalRecorder=function(){return new Promise((function(e,t){try{e(r.recordRTC.getInternalRecorder())}catch(e){t(e)}}))},this.reset=function(){return new Promise((function(e,t){try{e(r.recordRTC.reset())}catch(e){t(e)}}))},this.destroy=function(){return new Promise((function(e,t){try{e(r.recordRTC.destroy())}catch(e){t(e)}}))},this.getState=function(){return new Promise((function(e,t){try{e(r.recordRTC.getState())}catch(e){t(e)}}))},this.blob=null,this.version="5.6.2"}),void 0!==t&&(t.WebAssemblyRecorder=P)}));class Rn{constructor(e){this._buffer=e,this._buffer_index=0,this._total_bytes=e.byteLength,this._total_bits=8*e.byteLength,this._current_word=0,this._current_word_bits_left=0}destroy(){this._buffer=null}_fillCurrentWord(){let e=this._total_bytes-this._buffer_index;if(e<=0)return void console.error("ExpGolomb: _fillCurrentWord() but no bytes available",this._total_bytes,this._buffer_index);let t=Math.min(4,e),i=new Uint8Array(4);i.set(this._buffer.subarray(this._buffer_index,this._buffer_index+t)),this._current_word=new DataView(i.buffer).getUint32(0,!1),this._buffer_index+=t,this._current_word_bits_left=8*t}readBits(e){if(e>32&&console.error("ExpGolomb: readBits() bits exceeded max 32bits!"),e<=this._current_word_bits_left){let t=this._current_word>>>32-e;return this._current_word<<=e,this._current_word_bits_left-=e,t}let t=this._current_word_bits_left?this._current_word:0;t>>>=32-this._current_word_bits_left;let i=e-this._current_word_bits_left;this._fillCurrentWord();let r=Math.min(i,this._current_word_bits_left),s=this._current_word>>>32-r;return this._current_word<<=r,this._current_word_bits_left-=r,t=t<>>e)return this._current_word<<=e,this._current_word_bits_left-=e,e;return this._fillCurrentWord(),e+this._skipLeadingZero()}readUEG(){let e=this._skipLeadingZero();return this.readBits(e+1)-1}readSEG(){let e=this.readUEG();return 1&e?e+1>>>1:-1*(e>>>1)}}class Dn{static _ebsp2rbsp(e){let t=e,i=t.byteLength,r=new Uint8Array(i),s=0;for(let e=0;e=2&&3===t[e]&&0===t[e-1]&&0===t[e-2]||(r[s]=t[e],s++);return new Uint8Array(r.buffer,0,s)}static parseSPS(e){let t=Dn._ebsp2rbsp(e),i=new Rn(t);i.readByte();let r=i.readByte();i.readByte();let s=i.readByte();i.readUEG();let a=Dn.getProfileString(r),n=Dn.getLevelString(s),o=1,l=420,d=[0,420,422,444],h=8;if((100===r||110===r||122===r||244===r||44===r||83===r||86===r||118===r||128===r||138===r||144===r)&&(o=i.readUEG(),3===o&&i.readBits(1),o<=3&&(l=d[o]),h=i.readUEG()+8,i.readUEG(),i.readBits(1),i.readBool())){let e=3!==o?8:12;for(let t=0;t0&&e<16?(b=[1,12,10,16,40,24,20,32,80,18,15,64,160,4,3,2][e-1],_=[1,11,11,11,33,11,11,11,33,11,11,33,99,3,2,1][e-1]):255===e&&(b=i.readByte()<<8|i.readByte(),_=i.readByte()<<8|i.readByte())}if(i.readBool()&&i.readBool(),i.readBool()&&(i.readBits(4),i.readBool()&&i.readBits(24)),i.readBool()&&(i.readUEG(),i.readUEG()),i.readBool()){let e=i.readBits(32),t=i.readBits(32);S=i.readBool(),w=t,T=2*e,E=w/T}}let k=1;1===b&&1===_||(k=b/_);let C=0,R=0;if(0===o)C=1,R=2-m;else{C=3===o?1:2,R=(1===o?2:1)*(2-m)}let D=16*(p+1),x=16*(f+1)*(2-m);D-=(y+g)*C,x-=(A+v)*R;let L=Math.ceil(D*k);return i.destroy(),i=null,{profile_string:a,level_string:n,bit_depth:h,ref_frames:u,chroma_format:l,chroma_format_string:Dn.getChromaFormatString(l),frame_rate:{fixed:S,fps:E,fps_den:T,fps_num:w},sar_ratio:{width:b,height:_},codec_size:{width:D,height:x},present_size:{width:L,height:x}}}static parseSPS$2(e){let t=e.subarray(1,4),i="avc1.";for(let e=0;e<3;e++){let r=t[e].toString(16);r.length<2&&(r="0"+r),i+=r}let r=Dn._ebsp2rbsp(e),s=new Rn(r);s.readByte();let a=s.readByte();s.readByte();let n=s.readByte();s.readUEG();let o=Dn.getProfileString(a),l=Dn.getLevelString(n),d=1,h=420,c=[0,420,422,444],u=8,p=8;if((100===a||110===a||122===a||244===a||44===a||83===a||86===a||118===a||128===a||138===a||144===a)&&(d=s.readUEG(),3===d&&s.readBits(1),d<=3&&(h=c[d]),u=s.readUEG()+8,p=s.readUEG()+8,s.readBits(1),s.readBool())){let e=3!==d?8:12;for(let t=0;t0&&e<16?(S=[1,12,10,16,40,24,20,32,80,18,15,64,160,4,3,2][e-1],w=[1,11,11,11,33,11,11,11,33,11,11,33,99,3,2,1][e-1]):255===e&&(S=s.readByte()<<8|s.readByte(),w=s.readByte()<<8|s.readByte())}if(s.readBool()&&s.readBool(),s.readBool()&&(s.readBits(4),s.readBool()&&s.readBits(24)),s.readBool()&&(s.readUEG(),s.readUEG()),s.readBool()){let e=s.readBits(32),t=s.readBits(32);k=s.readBool(),C=t,R=2*e,T=C/R}}let D=1;1===S&&1===w||(D=S/w);let x=0,L=0;if(0===d)x=1,L=2-A;else{x=3===d?1:2,L=(1===d?2:1)*(2-A)}let I=16*(y+1),P=16*(g+1)*(2-A);I-=(v+b)*x,P-=(_+E)*L;let B=Math.ceil(I*D);return s.destroy(),s=null,{codec_mimetype:i,profile_idc:a,level_idc:n,profile_string:o,level_string:l,chroma_format_idc:d,bit_depth:u,bit_depth_luma:u,bit_depth_chroma:p,ref_frames:m,chroma_format:h,chroma_format_string:Dn.getChromaFormatString(h),frame_rate:{fixed:k,fps:T,fps_den:R,fps_num:C},sar_ratio:{width:S,height:w},codec_size:{width:I,height:P},present_size:{width:B,height:P}}}static _skipScalingList(e,t){let i=8,r=8,s=0;for(let a=0;a=this.buflen)return this.iserro=!0,0;this.iserro=!1,i=this.bufoff+e>8?8-this.bufoff:e,t<<=i,t+=this.buffer[this.bufpos]>>8-this.bufoff-i&255>>8-i,this.bufoff+=i,e-=i,8==this.bufoff&&(this.bufpos++,this.bufoff=0)}return t}look(e){let t=this.bufpos,i=this.bufoff,r=this.read(e);return this.bufpos=t,this.bufoff=i,r}read_golomb(){let e;for(e=0;0===this.read(1)&&!this.iserro;e++);return(1<>>24&255,e>>>16&255,e>>>8&255,255&e]),r=new Uint8Array(e+4);r.set(i,0),r.set(t.sps,4),t.sps=r}if(t.pps){const e=t.pps.byteLength,i=new Uint8Array([e>>>24&255,e>>>16&255,e>>>8&255,255&e]),r=new Uint8Array(e+4);r.set(i,0),r.set(t.pps,4),t.pps=r}return t}function In({sps:e,pps:t}){let i=8+e.byteLength+1+2+t.byteLength,r=!1;const s=Dn.parseSPS$2(e);66!==e[3]&&77!==e[3]&&88!==e[3]&&(r=!0,i+=4);let a=new Uint8Array(i);a[0]=1,a[1]=e[1],a[2]=e[2],a[3]=e[3],a[4]=255,a[5]=225;let n=e.byteLength;a[6]=n>>>8,a[7]=255&n;let o=8;a.set(e,8),o+=n,a[o]=1;let l=t.byteLength;a[o+1]=l>>>8,a[o+2]=255&l,a.set(t,o+3),o+=3+l,r&&(a[o]=252|s.chroma_format_idc,a[o+1]=248|s.bit_depth_luma-8,a[o+2]=248|s.bit_depth_chroma-8,a[o+3]=0,o+=4);const d=[23,0,0,0,0],h=new Uint8Array(d.length+a.byteLength);return h.set(d,0),h.set(a,d.length),h}function Pn(e,t){let i=[];i[0]=t?23:39,i[1]=1,i[2]=0,i[3]=0,i[4]=0;const r=new Uint8Array(i.length+e.byteLength);return r.set(i,0),r.set(e,i.length),r}function Bn(e){return 31&e[0]}function Mn(e){return e===Et.kSliceSEI}function Un(e){return!function(e){return e===Et.sps||e===Et.pps}(e)&&!Mn(e)}function Fn(e){return e===Et.iFrame}const On=e=>{let t=e,i=t.byteLength,r=new Uint8Array(i),s=0;for(let e=0;e=2&&3===t[e]&&0===t[e-1]&&0===t[e-2]||(r[s]=t[e],s++);return new Uint8Array(r.buffer,0,s)},Nn=e=>{switch(e){case 0:return"4:0:0";case 1:return"4:2:0";case 2:return"4:2:2";case 3:return"4:4:4";default:return"Unknown"}};function Gn(e,t=0){return(e[t]<<24>>>0)+(e[t+1]<<16)+(e[t+2]<<8)+(e[t+3]||0)}function zn(e,t=4){if(e.length<4)return;const i=e.length,r=[];let s,a=0;for(;a+t>>=8),a+=t,s){if(a+s>i)break;r.push(e.subarray(a,a+s)),a+=s}return r}function Vn(e){const t=e.byteLength,i=new Uint8Array(4);i[0]=t>>>24&255,i[1]=t>>>16&255,i[2]=t>>>8&255,i[3]=255&t;const r=new Uint8Array(t+4);return r.set(i,0),r.set(e,4),r}class Hn{static _ebsp2rbsp(e){let t=e,i=t.byteLength,r=new Uint8Array(i),s=0;for(let e=0;e=2&&3===t[e]&&0===t[e-1]&&0===t[e-2]||(r[s]=t[e],s++);return new Uint8Array(r.buffer,0,s)}static parseVPS(e){let t=Hn._ebsp2rbsp(e),i=new Rn(t);return i.readByte(),i.readByte(),i.readBits(4),i.readBits(2),i.readBits(6),{num_temporal_layers:i.readBits(3)+1,temporal_id_nested:i.readBool()}}static parseSPS(e){let t=Hn._ebsp2rbsp(e),i=new Rn(t);i.readByte(),i.readByte();let r=0,s=0,a=0,n=0;i.readBits(4);let o=i.readBits(3);i.readBool();let l=i.readBits(2),d=i.readBool(),h=i.readBits(5),c=i.readByte(),u=i.readByte(),p=i.readByte(),f=i.readByte(),m=i.readByte(),y=i.readByte(),g=i.readByte(),A=i.readByte(),v=i.readByte(),b=i.readByte(),_=i.readByte(),E=[],S=[];for(let e=0;e0)for(let e=o;e<8;e++)i.readBits(2);for(let e=0;e1&&i.readSEG();for(let e=0;e0&&e<=16?(B=[1,12,10,16,40,24,20,32,80,18,15,64,160,4,3,2][e-1],M=[1,11,11,11,33,11,11,11,33,11,11,33,99,3,2,1][e-1]):255===e&&(B=i.readBits(16),M=i.readBits(16))}if(i.readBool()&&i.readBool(),i.readBool()){i.readBits(3),i.readBool(),i.readBool()&&(i.readByte(),i.readByte(),i.readByte())}if(i.readBool()&&(i.readUEG(),i.readUEG()),i.readBool(),i.readBool(),i.readBool(),I=i.readBool(),I&&(i.readUEG(),i.readUEG(),i.readUEG(),i.readUEG()),i.readBool()){if(F=i.readBits(32),O=i.readBits(32),i.readBool()&&i.readUEG(),i.readBool()){let e=!1,t=!1,r=!1;e=i.readBool(),t=i.readBool(),(e||t)&&(r=i.readBool(),r&&(i.readByte(),i.readBits(5),i.readBool(),i.readBits(5)),i.readBits(4),i.readBits(4),r&&i.readBits(4),i.readBits(5),i.readBits(5),i.readBits(5));for(let s=0;s<=o;s++){let s=i.readBool();U=s;let a=!0,n=1;s||(a=i.readBool());let o=!1;if(a?i.readUEG():o=i.readBool(),o||(n=i.readUEG()+1),e){for(let e=0;e>6&3,i.general_tier_flag=e[1]>>5&1,i.general_profile_idc=31&e[1],i.general_profile_compatibility_flags=e[2]<<24|e[3]<<16|e[4]<<8|e[5],i.general_constraint_indicator_flags=e[6]<<24|e[7]<<16|e[8]<<8|e[9],i.general_constraint_indicator_flags=i.general_constraint_indicator_flags<<16|e[10]<<8|e[11],i.general_level_idc=e[12],i.min_spatial_segmentation_idc=(15&e[13])<<8|e[14],i.parallelismType=3&e[15],i.chromaFormat=3&e[16],i.bitDepthLumaMinus8=7&e[17],i.bitDepthChromaMinus8=7&e[18],i.avgFrameRate=e[19]<<8|e[20],i.constantFrameRate=e[21]>>6&3,i.numTemporalLayers=e[21]>>3&7,i.temporalIdNested=e[21]>>2&1,i.lengthSizeMinusOne=3&e[21];let r=e[22],s=e.slice(23);for(let e=0;e0)for(let t=i;t<8;t++)e.read(2);r.sub_layer_profile_space=[],r.sub_layer_tier_flag=[],r.sub_layer_profile_idc=[],r.sub_layer_profile_compatibility_flag=[],r.sub_layer_progressive_source_flag=[],r.sub_layer_interlaced_source_flag=[],r.sub_layer_non_packed_constraint_flag=[],r.sub_layer_frame_only_constraint_flag=[],r.sub_layer_level_idc=[];for(let t=0;t{let t=On(e),i=new Rn(t);return i.readByte(),i.readByte(),i.readBits(4),i.readBits(2),i.readBits(6),{num_temporal_layers:i.readBits(3)+1,temporal_id_nested:i.readBool()}})(e),a=(e=>{let t=On(e),i=new Rn(t);i.readByte(),i.readByte();let r=0,s=0,a=0,n=0;i.readBits(4);let o=i.readBits(3);i.readBool();let l=i.readBits(2),d=i.readBool(),h=i.readBits(5),c=i.readByte(),u=i.readByte(),p=i.readByte(),f=i.readByte(),m=i.readByte(),y=i.readByte(),g=i.readByte(),A=i.readByte(),v=i.readByte(),b=i.readByte(),_=i.readByte(),E=[],S=[];for(let e=0;e0)for(let e=o;e<8;e++)i.readBits(2);for(let e=0;e1&&i.readSEG();for(let e=0;e0&&e<16?(B=[1,12,10,16,40,24,20,32,80,18,15,64,160,4,3,2][e-1],M=[1,11,11,11,33,11,11,11,33,11,11,33,99,3,2,1][e-1]):255===e&&(B=i.readBits(16),M=i.readBits(16))}if(i.readBool()&&i.readBool(),i.readBool()&&(i.readBits(3),i.readBool(),i.readBool()&&(i.readByte(),i.readByte(),i.readByte())),i.readBool()&&(i.readUEG(),i.readUEG()),i.readBool(),i.readBool(),i.readBool(),I=i.readBool(),I&&(r+=i.readUEG(),s+=i.readUEG(),a+=i.readUEG(),n+=i.readUEG()),i.readBool()&&(F=i.readBits(32),O=i.readBits(32),i.readBool()&&(i.readUEG(),i.readBool()))){let e=!1,t=!1,r=!1;e=i.readBool(),t=i.readBool(),(e||t)&&(r=i.readBool(),r&&(i.readByte(),i.readBits(5),i.readBool(),i.readBits(5)),i.readBits(4),i.readBits(4),r&&i.readBits(4),i.readBits(5),i.readBits(5),i.readBits(5));for(let s=0;s<=o;s++){let s=i.readBool();U=s;let a=!1,n=1;s||(a=i.readBool());let o=!1;if(a?i.readSEG():o=i.readBool(),o||(cpbcnt=i.readUEG()+1),e)for(let e=0;e{let t=On(e),i=new Rn(t);i.readByte(),i.readByte(),i.readUEG(),i.readUEG(),i.readBool(),i.readBool(),i.readBits(3),i.readBool(),i.readBool(),i.readUEG(),i.readUEG(),i.readSEG(),i.readBool(),i.readBool(),i.readBool()&&i.readUEG(),i.readSEG(),i.readSEG(),i.readBool(),i.readBool(),i.readBool(),i.readBool();let r=i.readBool(),s=i.readBool(),a=1;return s&&r?a=0:s?a=3:r&&(a=2),{parallelismType:a}})(t);r=Object.assign(r,s,a,n);let o=23+(5+e.byteLength)+(5+i.byteLength)+(5+t.byteLength),l=new Uint8Array(o);l[0]=1,l[1]=(3&r.general_profile_space)<<6|(r.general_tier_flag?1:0)<<5|31&r.general_profile_idc,l[2]=r.general_profile_compatibility_flags_1||0,l[3]=r.general_profile_compatibility_flags_2||0,l[4]=r.general_profile_compatibility_flags_3||0,l[5]=r.general_profile_compatibility_flags_4||0,l[6]=r.general_constraint_indicator_flags_1||0,l[7]=r.general_constraint_indicator_flags_2||0,l[8]=r.general_constraint_indicator_flags_3||0,l[9]=r.general_constraint_indicator_flags_4||0,l[10]=r.general_constraint_indicator_flags_5||0,l[11]=r.general_constraint_indicator_flags_6||0,l[12]=60,l[13]=240|(3840&r.min_spatial_segmentation_idc)>>8,l[14]=255&r.min_spatial_segmentation_idc,l[15]=252|3&r.parallelismType,l[16]=252|3&r.chroma_format_idc,l[17]=248|7&r.bit_depth_luma_minus8,l[18]=248|7&r.bit_depth_chroma_minus8,l[19]=0,l[20]=0,l[21]=(3&r.constant_frame_rate)<<6|(7&r.num_temporal_layers)<<3|(r.temporal_id_nested?1:0)<<2|3,l[22]=3,l[23]=128|Tt,l[24]=0,l[25]=1,l[26]=(65280&e.byteLength)>>8,l[27]=255&e.byteLength,l.set(e,28),l[23+(5+e.byteLength)+0]=128|kt,l[23+(5+e.byteLength)+1]=0,l[23+(5+e.byteLength)+2]=1,l[23+(5+e.byteLength)+3]=(65280&i.byteLength)>>8,l[23+(5+e.byteLength)+4]=255&i.byteLength,l.set(i,23+(5+e.byteLength)+5),l[23+(5+e.byteLength+5+i.byteLength)+0]=128|Ct,l[23+(5+e.byteLength+5+i.byteLength)+1]=0,l[23+(5+e.byteLength+5+i.byteLength)+2]=1,l[23+(5+e.byteLength+5+i.byteLength)+3]=(65280&t.byteLength)>>8,l[23+(5+e.byteLength+5+i.byteLength)+4]=255&t.byteLength,l.set(t,23+(5+e.byteLength+5+i.byteLength)+5);const d=[28,0,0,0,0],h=new Uint8Array(d.length+l.byteLength);return h.set(d,0),h.set(l,d.length),h}function Kn(e,t){let i=[];i[0]=t?28:44,i[1]=1,i[2]=0,i[3]=0,i[4]=0;const r=new Uint8Array(i.length+e.byteLength);return r.set(i,0),r.set(e,i.length),r}function qn(e){return(126&e[0])>>1}function Yn(e){return!function(e){return e>=32&&e<=40}(e)}function Qn(e){return e>=16&&e<=21}class Xn extends Ra{constructor(e){super(),this.TAG_NAME="recorderCommon",this.player=e,this.fileName="",this._isRecording=!1,this._recordingTimestamp=0,this.recordingInterval=null,this.sps=null,this.pps=null,this.vps=null,this.codecId=null,this.audioCodeId=null,this.metaInfo={codecWidth:0,codecHeight:0,presentWidth:0,presentHeight:0,refSampleDuration:0,timescale:1e3,avcc:null,videoType:""},this.audioMetaInfo={timescale:1e3,sampleRate:0,refSampleDuration:0,channelCount:0,codec:"",originalCodec:"",audioType:"",extraData:new Uint8Array(0)}}destroy(){this._reset(),this.sps=null,this.pps=null,this.vps=null,this.codecId=null,this.audioCodeId=null,this.metaInfo=null,this.audioMetaInfo=null}get isH264(){return this.codecId===mt}get isH265(){return this.codecId===yt}setFileName(e){this.fileName=e}get isRecording(){return this._isRecording}get recording(){return this._isRecording}get recordTime(){return this._recordingTimestamp}startRecord(){}handleAddNaluTrack(e,t,i,r){}handleAddAudioTrack(e,t){}handleAddTrack(e){}stopRecordAndSave(){}startRecordingInterval(){}isWasmMp4(){return!1}stopRecordingInterval(){this.recordingInterval&&clearInterval(this.recordingInterval),this.recordingInterval=null}getToTalByteLength(){return 0}_reset(){this.fileName="",this._isRecording=!1,this._recordingTimestamp=0,this.stopRecordingInterval()}initMetaData(e,t){let i;const r=e.slice(5);if(this.codecId=t,this.metaInfo.avcc=r,t===mt)i=Ln(r);else if(t===yt){i=function(e){let t=23;const i=e[t];if((63&i)!==Tt)return console.warn(`parseHEVCDecoderVPSAndSPSAndPPS and vpsTag is ${i}`),{};t+=2,t+=1;const r=e[t+1]|e[t]<<8;t+=2;const s=e.slice(t,t+r);t+=r;const a=e[t];if((63&a)!==kt)return console.warn(`parseHEVCDecoderVPSAndSPSAndPPS and sps tag is ${a}`),{};t+=2,t+=1;const n=e[t+1]|e[t]<<8;t+=2;const o=e.slice(t,t+n);t+=n;const l=e[t];if((63&l)!==Ct)return console.warn(`parseHEVCDecoderVPSAndSPSAndPPS and pps tag is ${l}`),{};t+=2,t+=1;const d=e[t+1]|e[t]<<8;t+=2;const h=e.slice(t,t+d),c=new Uint8Array([n>>>24&255,n>>>16&255,n>>>8&255,255&n]),u=new Uint8Array([d>>>24&255,d>>>16&255,d>>>8&255,255&d]),p=new Uint8Array([r>>>24&255,r>>>16&255,r>>>8&255,255&r]),f=new Uint8Array(n+4);f.set(c,0),f.set(o,4);const m=new Uint8Array(d+4);m.set(u,0),m.set(h,4);const y=new Uint8Array(r+4);return y.set(p,0),y.set(s,4),{sps:f,pps:m,vps:y}}(r);const t=Wn(e);i=Object.assign(i,t)}i&&(i.vps&&(this.vps=i.vps),i.pps&&(this.pps=i.pps),i.sps&&(this.sps=i.sps),i.presentWidth&&(this.metaInfo.presentWidth=i.presentWidth),i.presentHeight&&(this.metaInfo.presentHeight=i.presentHeight),i.codecWidth&&(this.metaInfo.codecWidth=i.codecWidth),i.codecHeight&&(this.metaInfo.codecHeight=i.codecHeight),i.timescale&&(this.metaInfo.timescale=i.timescale),i.refSampleDuration&&(this.metaInfo.refSampleDuration=i.refSampleDuration),i.videoType&&(this.metaInfo.videoType=i.videoType))}initAudioMetaData(e,t){this.audioCodeId=t;const i=e[0]>>1&1;let r=null;t===vt.AAC?(r=function(e){let t={},i=new ss(e);return i.read(16),t.object_type=as(i),t.sample_rate=ns(i,t),t.chan_config=i.read(4),t.chan_config{s.onload=function(e){i.decode(this.result).forEach((function(e){t.read(e)})),t.stop();const s=r.makeMetadataSeekable(t.metadatas,t.duration,t.cues),n=this.result.slice(t.metadataSize),o=new Blob([s,n],{type:"video/mp4"});a(o)},s.readAsArrayBuffer(e)}))}startRecord(){const e=this.player.debug,t={type:"video",mimeType:"video/webm;codecs=h264",timeSlice:1e3,onTimeStamp:t=>{e.log("RecorderRTC","record timestamp :"+t),null===this._startRecordingTimestamp&&(this._startRecordingTimestamp=t),this._recordingTimestamp=(t-this._startRecordingTimestamp)/1e3},ondataavailable:t=>{this.totalByteLength+=t.size,e.log("RecorderRTC","ondataavailable",t.size)},disableLogs:!this.player._opt.debug};try{let i=null;if(this.player.getRenderType()===$?i=this.player.video.$videoElement.captureStream(25):this.player.video.mediaStream?i=this.player.video.mediaStream:this.player.isOldHls()||this.player._opt.useMSE||this.player._opt.useWCS?i=this.player.video.$videoElement.captureStream(25):this.player.isWebrtcH264()?i=this.player.webrtc.videoStream:this.player.isAliyunRtc()&&(i=this.player.video.$videoElement.captureStream(25)),!i)return e.error("RecorderRTC","startRecord error and can not create stream"),void this.player.emitError(rt.recordCreateError,"can not create stream");if(this.player.audio&&this.player.audio.mediaStreamAudioDestinationNode&&this.player.audio.mediaStreamAudioDestinationNode.stream&&!this.player.audio.isStateSuspended()&&this.player.audio.hasAudio&&this.player._opt.hasAudio){const e=this.player.audio.mediaStreamAudioDestinationNode.stream;if(e.getAudioTracks().length>0){const t=e.getAudioTracks()[0];t&&t.enabled&&i.addTrack(t)}}this.recorder=Cn(i,t)}catch(t){return e.error("RecorderRTC","startRecord error",t),void this.player.emitError(rt.recordCreateError,t)}this.recorder&&(this._isRecording=!0,this.player.emit(rt.recording,!0),this.recorder.startRecording(),e.log("RecorderRTC","start recording"),this.player.emit(rt.recordStart),this.startRecordingInterval())}startRecordingInterval(){this.stopRecordingInterval(),this.recordingInterval=window.setInterval((()=>{this.player.emit(rt.recordingTimestamp,this._recordingTimestamp)}),1e3)}stopRecordAndSave(e=ut,t){return new Promise(((i,r)=>{this.recorder&&this._isRecording||r("recorder is not ready"),t&&this.setFileName(t),this.recorder.stopRecording((()=>{this.player.debug.log("RecorderRTC","stop recording");const t=(this.fileName||ps())+"."+_;if(this.recorder.getBlob(),e===pt){const e=this.recorder.getBlob();i(e),this.player.emit(rt.recordBlob,e)}else i(),this.recorder.save(t);this.player.emit(rt.recordEnd),this._reset(),this.player.emit(rt.recording,!1)}))}))}getToTalByteLength(){return this.totalByteLength}getTotalDuration(){return this.recordTime}getType(){return _}initMetaData(){}}class Zn{static init(){Zn.types={avc1:[],avcC:[],hvc1:[],hvcC:[],btrt:[],dinf:[],dref:[],esds:[],ftyp:[],hdlr:[],mdat:[],mdhd:[],mdia:[],mfhd:[],minf:[],moof:[],moov:[],mp4a:[],mvex:[],mvhd:[],sdtp:[],stbl:[],stco:[],stsc:[],stsd:[],stsz:[],stts:[],tfdt:[],tfhd:[],traf:[],trak:[],trun:[],trex:[],tkhd:[],vmhd:[],smhd:[],".mp3":[],free:[],edts:[],elst:[],stss:[]};for(let e in Zn.types)Zn.types.hasOwnProperty(e)&&(Zn.types[e]=[e.charCodeAt(0),e.charCodeAt(1),e.charCodeAt(2),e.charCodeAt(3)]);let e=Zn.constants={};e.FTYP=new Uint8Array([105,115,111,109,0,0,2,0,105,115,111,109,105,115,111,50,97,118,99,49,109,112,52,49,0,0,0,0]),e.STSD_PREFIX=new Uint8Array([0,0,0,0,0,0,0,1]),e.STTS=new Uint8Array([0,0,0,0,0,0,0,0]),e.STSC=e.STCO=e.STTS,e.STSZ=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0]),e.HDLR_VIDEO=new Uint8Array([0,0,0,0,0,0,0,0,118,105,100,101,0,0,0,0,0,0,0,0,0,0,0,0,86,105,100,101,111,72,97,110,100,108,101,114,0]),e.HDLR_AUDIO=new Uint8Array([0,0,0,0,0,0,0,0,115,111,117,110,0,0,0,0,0,0,0,0,0,0,0,0,83,111,117,110,100,72,97,110,100,108,101,114,0]),e.DREF=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,12,117,114,108,32,0,0,0,1]),e.SMHD=new Uint8Array([0,0,0,0,0,0,0,0]),e.VMHD=new Uint8Array([0,0,0,1,0,0,0,0,0,0,0,0])}static box(e){let t=8,i=null,r=Array.prototype.slice.call(arguments,1),s=r.length;for(let e=0;e>>24&255,i[1]=t>>>16&255,i[2]=t>>>8&255,i[3]=255&t,i.set(e,4);let a=8;for(let e=0;e=Math.pow(2,32)-1?(a=16,n=new Uint8Array(i+a),n.set(new Uint8Array([0,0,0,1]),0),n.set(Zn.types.mdat,4),n.set(new Uint8Array([i+8>>>56&255,i+8>>>48&255,i+8>>>40&255,i+8>>>32&255,i+8>>>24&255,i+8>>>16&255,i+8>>>8&255,i+8&255]),8)):(n=new Uint8Array(i+a),n[0]=i+8>>>24&255,n[1]=i+8>>>16&255,n[2]=i+8>>>8&255,n[3]=i+8&255,n.set(Zn.types.mdat,4));for(let e=0;e>>24&255,e>>>16&255,e>>>8&255,255&e,t>>>24&255,t>>>16&255,t>>>8&255,255&t,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3]))}static trak(e){return Zn.box(Zn.types.trak,Zn.tkhd(e),Zn.mdia(e))}static tkhd(e){let t=e.id,i=e.duration,r=e.presentWidth,s=e.presentHeight;return Zn.box(Zn.types.tkhd,new Uint8Array([0,0,0,15,206,186,253,168,206,186,253,168,t>>>24&255,t>>>16&255,t>>>8&255,255&t,0,0,0,0,i>>>24&255,i>>>16&255,i>>>8&255,255&i,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,r>>>8&255,255&r,0,0,s>>>8&255,255&s,0,0]))}static edts(e,t){return Zn.box(Zn.types.edts,Zn.elst(e,t))}static elst(e,t){let i=0;for(let r=0;r>>24&255,i>>>16&255,i>>>8&255,255&i,255,255,255,255,0,1,0,0,r>>>24&255,r>>>16&255,r>>>8&255,255&r,0,0,0,0,0,1,0,0]))}static mdia(e){return Zn.box(Zn.types.mdia,Zn.mdhd(e),Zn.hdlr(e),Zn.minf(e))}static mdhd(e){let t=e.timescale/e.refSampleDuration,i=t*e.duration/e.timescale;return Zn.box(Zn.types.mdhd,new Uint8Array([0,0,0,0,206,186,253,168,206,186,253,168,t>>>24&255,t>>>16&255,t>>>8&255,255&t,i>>>24&255,i>>>16&255,i>>>8&255,255&i,85,196,0,0]))}static hdlr(e){let t=null;return t=Zn.constants.HDLR_VIDEO,Zn.box(Zn.types.hdlr,t)}static minf(e){let t=null;return t=Zn.box(Zn.types.vmhd,Zn.constants.VMHD),Zn.box(Zn.types.minf,t,Zn.dinf(),Zn.stbl(e))}static dinf(){return Zn.box(Zn.types.dinf,Zn.box(Zn.types.dref,Zn.constants.DREF))}static stbl(e){let t=e.samples,i=[{No:1,num:0,sampleDelte:1,chunkNo:1,duration:t[0].duration}],r=[t[0].duration],s=t.length;for(let e=0;e>>24&255,t>>>16&255,t>>>8&255,255&t]),r=i.byteLength,s=new Uint8Array(r+8*t);s.set(i,0);for(let i=0;i>>24&255,e[i].num>>>16&255,e[i].num>>>8&255,255&e[i].num,e[i].sampleDelte>>>24&255,e[i].sampleDelte>>>16&255,e[i].sampleDelte>>>8&255,255&e[i].sampleDelte]),r),r+=8;return Zn.box(Zn.types.stts,s)}static stss(e){let t=[],i=e.length;for(let r=0;r>>24&255,r>>>16&255,r>>>8&255,255&r]),a=s.byteLength,n=new Uint8Array(a+4*r);n.set(s,0);for(let e=0;e>>24&255,t[e]>>>16&255,t[e]>>>8&255,255&t[e]]),a),a+=4;return Zn.box(Zn.types.stss,n)}static stsc(e){let t=e.length,i=new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t]),r=i.byteLength,s=new Uint8Array(r+12*t);s.set(i,0);for(let i=0;i>>24&255,t>>>16&255,t>>>8&255,255&t,a>>>24&255,a>>>16&255,a>>>8&255,255&a,n>>>24&255,n>>>16&255,n>>>8&255,255&n]),r),r+=12}return Zn.box(Zn.types.stsc,s)}static stsz(e){let t=e.length,i=new Uint8Array([0,0,0,0,0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t]),r=i.byteLength,s=new Uint8Array(r+4*t);s.set(i,0);for(let i=0;i>>24&255,t>>>16&255,t>>>8&255,255&t]),r),r+=4}return Zn.box(Zn.types.stsz,s)}static stco(e,t){let i=t[0].chunkOffset;return Zn.box(Zn.types.stco,new Uint8Array([0,0,0,0,0,0,0,1,i>>>24&255,i>>>16&255,i>>>8&255,255&i]))}static stsd(e){return"audio"===e.type?"mp3"===e.codec?Zn.box(Zn.types.stsd,Zn.constants.STSD_PREFIX,Zn.mp3(e)):Zn.box(Zn.types.stsd,Zn.constants.STSD_PREFIX,Zn.mp4a(e)):"avc"===e.videoType?Zn.box(Zn.types.stsd,Zn.constants.STSD_PREFIX,Zn.avc1(e)):Zn.box(Zn.types.stsd,Zn.constants.STSD_PREFIX,Zn.hvc1(e))}static mp3(e){let t=e.channelCount,i=e.sampleRate,r=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,t,0,16,0,0,0,0,i>>>8&255,255&i,0,0]);return Zn.box(Zn.types[".mp3"],r)}static mp4a(e){let t=e.channelCount,i=e.sampleRate,r=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,t,0,16,0,0,0,0,i>>>8&255,255&i,0,0]);return Zn.box(Zn.types.mp4a,r,Zn.esds(e))}static esds(e){let t=e.config||[],i=t.length,r=new Uint8Array([0,0,0,0,3,23+i,0,1,0,4,15+i,64,21,0,0,0,0,0,0,0,0,0,0,0,5].concat([i]).concat(t).concat([6,1,2]));return Zn.box(Zn.types.esds,r)}static avc1(e){let t=e.avcc,i=e.codecWidth,r=e.codecHeight,s=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,i>>>8&255,255&i,r>>>8&255,255&r,0,72,0,0,0,72,0,0,0,0,0,0,0,1,13,106,101,115,115,105,98,117,99,97,45,112,114,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,255,255]);return Zn.box(Zn.types.avc1,s,Zn.box(Zn.types.avcC,t))}static hvc1(e){let t=e.avcc;const i=e.codecWidth,r=e.codecHeight;let s=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,i>>>8&255,255&i,r>>>8&255,255&r,0,72,0,0,0,72,0,0,0,0,0,0,0,1,13,106,101,115,115,105,98,117,99,97,45,112,114,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,255,255]);return Zn.box(Zn.types.hvc1,s,Zn.box(Zn.types.hvcC,t))}static mvex(e){return Zn.box(Zn.types.mvex,Zn.trex(e))}static trex(e){let t=e.id,i=new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1]);return Zn.box(Zn.types.trex,i)}static moof(e,t){return Zn.box(Zn.types.moof,Zn.mfhd(e.sequenceNumber),Zn.traf(e,t))}static mfhd(e){let t=new Uint8Array([0,0,0,0,e>>>24&255,e>>>16&255,e>>>8&255,255&e]);return Zn.box(Zn.types.mfhd,t)}static traf(e,t){let i=e.id,r=Zn.box(Zn.types.tfhd,new Uint8Array([0,0,0,0,i>>>24&255,i>>>16&255,i>>>8&255,255&i])),s=Zn.box(Zn.types.tfdt,new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t])),a=Zn.sdtp(e),n=Zn.trun(e,a.byteLength+16+16+8+16+8+8);return Zn.box(Zn.types.traf,r,s,n,a)}static sdtp(e){let t=e.samples||[],i=t.length,r=new Uint8Array(4+i);for(let e=0;e>>24&255,r>>>16&255,r>>>8&255,255&r,t>>>24&255,t>>>16&255,t>>>8&255,255&t],0);for(let e=0;e>>24&255,t>>>16&255,t>>>8&255,255&t,r>>>24&255,r>>>16&255,r>>>8&255,255&r,s.isLeading<<2|s.dependsOn,s.isDependedOn<<6|s.hasRedundancy<<4|s.isNonSync,0,0,n>>>24&255,n>>>16&255,n>>>8&255,255&n],12+16*e)}return Zn.box(Zn.types.trun,a)}static mdat(e){return Zn.box(Zn.types.mdat,e)}}Zn.init();class eo extends Xn{constructor(e){super(e),this.TAG_NAME="recorderMP4",this._reset(),e.debug.log(this.TAG_NAME,"init")}destroy(){super.destroy(),this._reset(),this.player.debug.log(this.TAG_NAME,"destroy")}_reset(){super._reset(),this.totalDuration=0,this.totalAudioDuration=0,this.totalByteLength=0,this.totalAudioByteLength=0,this.bufferList=[],this.audioBufferList=[],this.cacheTrack={},this.audioCacheTrack={},this.sequenceNumber=0,this.audioSequenceNumber=0}startRecord(){const e=this.player.debug;this._isRecording=!0,this.player.emit(rt.recording,!0),e.log(this.TAG_NAME,"start recording"),this.player.emit(rt.recordStart),this.startRecordingInterval()}startRecordingInterval(){this.stopRecordingInterval(),this.recordingInterval=window.setInterval((()=>{this.player.emit(rt.recordingTimestamp,this.getTotalDuration())}),1e3)}formatFmp4Track(e,t,i,r){return{id:1,sequenceNumber:++this.sequenceNumber,size:e.byteLength,dts:i,cts:r,isKeyframe:t,data:e,duration:0,flags:{isLeading:0,dependsOn:t?2:1,isDependedOn:t?1:0,hasRedundancy:0,isNonSync:t?0:1}}}formatAudioFmp4Track(e,t){return{id:2,sequenceNumber:++this.audioSequenceNumber,size:e.byteLength,dts:t,pts:t,cts:0,data:new Uint8Array(e),duration:0,originalDts:t,flags:{isLeading:0,dependsOn:1,isDependedOn:0,hasRedundancy:0}}}handleAddNaluTrack(e,t,i,r){this.cacheTrack.id&&i>=this.cacheTrack.dts?(this.cacheTrack.duration=i-this.cacheTrack.dts,this.handleAddFmp4Track(this.cacheTrack)):this.cacheTrack={},this.cacheTrack=this.formatFmp4Track(e,t,i,r)}handleAddAudioTrack(e,t){}handleAddFmp4Track(e){if(!this.isRecording)return void this.player.debug.error(this.TAG_NAME,"handleAddFmp4Track, isRecording is false ");if((null===this.sps||null===this.pps)&&this.isH264)return void this.player.debug.error(this.TAG_NAME,"handleAddFmp4Track, is h264 and this.sps or this.pps is null ");if((null===this.sps||null===this.pps||null===this.vps)&&this.isH265)return void this.player.debug.error(this.TAG_NAME,"handleAddFmp4Track, is h265 and this.sps or this.pps or this.vps is null ");const t=Object.assign({},e);t.pts=t.dts+t.cts;const i=t.data;if(t.isKeyframe)if(this.isH264){const e=new Uint8Array(this.sps.byteLength+this.pps.byteLength);e.set(this.sps,0),e.set(this.pps,this.sps.byteLength);const r=new Uint8Array(e.byteLength+i.byteLength);r.set(e,0),r.set(i,e.byteLength),t.data=r}else if(this.isH265){const e=new Uint8Array(this.sps.byteLength+this.pps.byteLength+this.vps.byteLength);e.set(this.vps,0),e.set(this.sps,this.vps.byteLength),e.set(this.pps,this.vps.byteLength+this.sps.byteLength);const r=new Uint8Array(e.byteLength+i.byteLength);r.set(e,0),r.set(i,e.byteLength),t.data=r}t.size=t.data.byteLength,this.totalDuration+=t.duration,this.totalByteLength+=t.data.byteLength,t.duration=0,t.originalDts=t.dts,delete t.id,delete t.sequenceNumber,this.bufferList.push(t)}handleAddFmp4AudioTrack(e){const t=Object.assign({},e);t.pts=t.dts+t.cts,t.size=t.data.byteLength,this.totalAudioDuration+=t.duration,this.totalAudioByteLength+=t.data.byteLength,t.duration=0,t.originalDts=t.dts,delete t.id,delete t.sequenceNumber,this.audioBufferList.push(t)}getTotalDuration(){return this.totalDuration/1e3}getType(){return b}getToTalByteLength(){return this.totalByteLength+this.totalAudioByteLength}stopRecordAndSave(e=ut,t){return new Promise(((i,r)=>{if(!this.isRecording)return this.player.debug.error(this.TAG_NAME,"stop recording fail, isRecording is false "),r("stop recording fail, isRecording is false ");if(0===this.bufferList.length)return this.player.debug.error(this.TAG_NAME,"stop recording fail, this.bufferList.length is 0 "),r("stop recording fail, this.bufferList.length is 0 ");t&&this.setFileName(t);const s={id:1,type:"video",sps:this.sps,pps:this.pps,samples:this.bufferList,sequenceNumber:this.bufferList.length,length:0,addSampleNum:1,duration:0,...this.metaInfo},a={id:2,type:"audio",sequenceNumber:this.audioBufferList.length,samples:this.audioBufferList,...this.audioMetaInfo},n=[s];a.samples.length>0&&n.push(a),this.player.debug.log(this.TAG_NAME,`trackList length is ${n.length}`);const o=Zn.generateInitSegment({timescale:1e3,duration:this.totalDuration},n,this.totalByteLength+this.totalAudioByteLength);this.player.debug.log(this.TAG_NAME,"stop recording");const l=new Blob([o],{type:"application/octet-stream"});if(e===pt)i(l),this.player.emit(rt.recordBlob,l);else{i();Os((this.fileName||ps())+"."+b,l)}this.player.emit(rt.recordEnd),this._reset(),this.player.emit(rt.recording,!1)}))}}class to extends Xn{constructor(e){super(e),this.TAG_NAME="FlvRecorderLoader",this.player=e,this._init(),this.player.debug.log(this.TAG_NAME,"init")}destroy(){super.destroy(),this._init(),this.player.debug.log(this.TAG_NAME,"destroy")}_init(){this.hasAudio=!1,this.hasVideo=!1,this.startTime=null,this.currentTime=0,this.prevTimestamp=0,this.totalByteLength=0,this.totalDuration=0,this.flvMetaData=null,this.aacSequenceHeader=null,this.videoSequenceHeader=null,this.bufferList=[]}_reset(){super._reset(),this._init()}startRecord(){const e=this.player.debug;this._isRecording=!0,this.player.emit(rt.recording,!0),e.log(this.TAG_NAME,"start recording"),this.player.emit(rt.recordStart),this.startRecordingInterval()}startRecordingInterval(){this.stopRecordingInterval(),this.recordingInterval=window.setInterval((()=>{this.player.emit(rt.recordingTimestamp,this.getTotalDuration())}),1e3)}addMetaData(e){this.flvMetaData=e}addAACSequenceHeader(e){this.aacSequenceHeader=e}addVideoSequenceHeader(e){this.videoSequenceHeader=e}addVideo(e,t){this._setStartTime(t);const i=this._getBufferTs(t);this.hasVideo=!0,this._createBufferItem(e,Ge,i)}addAudio(e,t){this._setStartTime(t);const i=this._getBufferTs(t);this.hasAudio=!0,this._createBufferItem(e,Ne,i)}_setStartTime(e){null===this.startTime&&this._isRecording&&(this.startTime=e,this.player.debug.log(this.TAG_NAME,`_setStartTime is ${e}`))}_getBufferTs(e){e>this.currentTime&&(this.currentTime=e);let t=0;return this.startTime&&e>=this.startTime&&(t=e-this.startTime),t>this.prevTimestamp?this.prevTimestamp=t:t=this.prevTimestamp,t}_createBufferItem(e,t,i){const r=this._createFlvPacket(e,t,i),s=this._createFlvTag(r);this.totalByteLength+=s.byteLength,this.bufferList.push(s)}_createFlvTag(e){let t=11+e.header.length,i=new Uint8Array(t+4);i[0]=e.header.type;let r=new DataView(i.buffer);return i[1]=e.header.length>>16&255,i[2]=e.header.length>>8&255,i[3]=255&e.header.length,i[4]=e.header.timestamp>>16&255,i[5]=e.header.timestamp>>8&255,i[6]=255&e.header.timestamp,i[7]=e.header.timestamp>>24&255,i[8]=0,i[9]=0,i[10]=0,r.setUint32(t,t),i.set(e.payload.subarray(0,e.header.length),11),i}_createFlvPacket(e=null,t=0,i=0){return{header:{length:e?e.length:0,timestamp:i,type:t},payload:e}}stopRecordAndSave(e=ut,t){return new Promise(((i,r)=>{if(!this.isRecording)return this.player.debug.error(this.TAG_NAME,"stop recording fail, isRecording is false "),r("stop recording fail, isRecording is false ");if(0===this.bufferList.length)return this.player.debug.error(this.TAG_NAME,"stop recording fail, this.bufferList.length is 0 "),r("stop recording fail, this.bufferList.length is 0 ");t&&this.setFileName(t);const s=new Uint8Array([70,76,86,1,0,0,0,0,9,0,0,0,0]);this.hasVideo&&(s[4]|=1),this.hasAudio&&(s[4]|=4);let a=[s];if(this.flvMetaData){const e=this._createFlvPacket(this.flvMetaData,ze),t=this._createFlvTag(e);a.push(t)}if(this.videoSequenceHeader){const e=this._createFlvPacket(this.videoSequenceHeader,Ge),t=this._createFlvTag(e);a.push(t)}if(this.aacSequenceHeader){const e=this._createFlvPacket(this.aacSequenceHeader,Ne),t=this._createFlvTag(e);a.push(t)}const n=function(e){const t=e[0].constructor;return e.reduce(((e,i)=>{const r=new t((0|e.byteLength)+(0|i.byteLength));return r.set(e,0),r.set(i,0|e.byteLength),r}),new t)}(a.concat(this.bufferList));this.player.debug.log(this.TAG_NAME,"stop recording");const o=new Blob([n],{type:"application/octet-stream"});if(e===pt)i(o),this.player.emit(rt.recordBlob,o);else{i();Os((this.fileName||ps())+"."+E,o)}this.player.emit(rt.recordEnd),this._reset(),this.player.emit(rt.recording,!1)}))}getTotalDuration(){let e=0;return null!==this.startTime&&null!==this.currentTime&&(e=this.currentTime-this.startTime),Math.round(e/1e3)}getType(){return E}getToTalByteLength(){return this.totalByteLength}}const io={init:0,findFirstStartCode:1,findSecondStartCode:2};class ro extends Ra{constructor(e){super(),this.player=e,this.isDestroyed=!1,this.reset()}destroy(){this.isDestroyed=!1,this.off(),this.reset()}reset(){this.stats=io.init,this.tempBuffer=new Uint8Array(0),this.parsedOffset=0,this.versionLayer=0}dispatch(e,t){let i=new Uint8Array(this.tempBuffer.length+e.length);for(i.set(this.tempBuffer,0),i.set(e,this.tempBuffer.length),this.tempBuffer=i;!this.isDestroyed;){if(this.state==io.Init){let e=!1;for(;this.tempBuffer.length-this.parsedOffset>=2&&!this.isDestroyed;)if(255==this.tempBuffer[this.parsedOffset]){if(!(!1&this.tempBuffer[this.parsedOffset+1])){this.versionLayer=this.tempBuffer[this.parsedOffset+1],this.state=io.findFirstStartCode,this.fisrtStartCodeOffset=this.parsedOffset,this.parsedOffset+=2,e=!0;break}this.parsedOffset++}else this.parsedOffset++;if(e)continue;break}if(this.state==io.findFirstStartCode){let e=!1;for(;this.tempBuffer.length-this.parsedOffset>=2&&!this.isDestroyed;)if(255==this.tempBuffer[this.parsedOffset]){if(this.tempBuffer[this.parsedOffset+1]==this.versionLayer){this.state=io.findSecondStartCode,this.secondStartCodeOffset=this.parsedOffset,this.parsedOffset+=2,e=!0;break}this.parsedOffset++}else this.parsedOffset++;if(e)continue;break}if(this.state==io.findSecondStartCode){let e=this.tempBuffer.slice(this.fisrtStartCodeOffset,this.secondStartCodeOffset);this.emit("data",e,t),this.tempBuffer=this.tempBuffer.slice(this.secondStartCodeOffset),this.fisrtStartCodeOffset=0,this.parsedOffset=2,this.state=io.findFirstStartCode}}}}class so extends Xn{constructor(e){super(e),this.TAG_NAME="recorderWasmMP4",this._reset(),this.wasmMp4Recorder=new window.EasyPlayerProMp4Recorder({debug:e._opt.debug,debugLevel:e._opt.debugLevel,debugUuid:e._opt.debugUuid,decoder:e._opt.wasmMp4RecorderDecoder}),this.mp3Demuxer=null,this.isG711=!1,e.debug.log(this.TAG_NAME,"init")}destroy(){super.destroy(),this.mp3Demuxer&&(this.mp3Demuxer.destroy(),this.mp3Demuxer=null),this.isG711=!1,this._reset(),this.player.debug.log(this.TAG_NAME,"destroy")}_reset(){super._reset(),this.cacheTrack={},this.audioCacheTrack={},this.totalDuration=0,this.totalAudioDuration=0,this.totalByteLength=0,this.totalAudioByteLength=0,this.hasAudio=!1,this.hasVideo=!1}getType(){return b}isWasmMp4(){return!0}getTotalDuration(){return this.totalDuration/1e3}getToTalByteLength(){return this.totalByteLength+this.totalAudioByteLength}startRecord(){const e=this.player.debug,t=this.player.getAudioInfo(),i=this.player.getVideoInfo(),r={};if(this.codecId){const e={type:this.codecId,width:i.width,height:i.height,extraData:this.metaInfo.avcc};r.video=e,this.hasVideo=!0}if(t.encTypeCode){this.isG711=t.encTypeCode===vt.ALAW||t.encTypeCode===vt.MULAW;const e={type:t.encTypeCode,sampleRate:t.sampleRate,channels:t.channels,extraData:this.audioMetaInfo.extraData,depth:t.depth};this.audioCodeId=t.encTypeCode,r.audio=e,this.hasAudio=!0}this.wasmMp4Recorder.startRecord(r).then((()=>{this._isRecording=!0,this.player.emit(rt.recording,!0),e.log(this.TAG_NAME,"start recording"),this.player.emit(rt.recordStart),this.startRecordingInterval()})).catch((t=>{e.error(this.TAG_NAME,"startRecord error",t),this.player.emitError(rt.recordCreateError,t)}))}startRecordingInterval(){this.stopRecordingInterval(),this.recordingInterval=window.setInterval((()=>{this.player.emit(rt.recordingTimestamp,this.getTotalDuration())}),1e3)}stopRecordAndSave(e=ut,t){return new Promise(((i,r)=>this.isRecording?0===this.totalDuration?(this.player.debug.error(this.TAG_NAME,"stop recording fail, totalDuration is 0 "),r("stop recording fail, totalDuration is 0 ")):(t&&this.setFileName(t),void this.wasmMp4Recorder.stopRecord().then((t=>{if(e===pt)i(t),this.player.emit(rt.recordBlob,t);else{i();const e=this.isG711?S:b;Os((this.fileName||ps())+"."+e,t)}})).catch((e=>{this.player.debug.error(this.TAG_NAME,"stopRecord error",e),r(e)})).finally((()=>{this.player.emit(rt.recordEnd),this._reset(),this.player.emit(rt.recording,!1)}))):(this.player.debug.error(this.TAG_NAME,"stop recording fail, isRecording is false "),r("stop recording fail, isRecording is false "))))}handleAddAudioTrack(e,t){this.audioCodeId===vt.MP3?(this.mp3Demuxer||(this.mp3Demuxer=new ro(this.player),this.mp3Demuxer.on("data",((e,t)=>{this._handleAddAudioTrack(e,t)}))),this.mp3Demuxer.dispatch(e,t)):this._handleAddAudioTrack(e,t)}_handleAddAudioTrack(e,t){ba(this.hasAudio)||(this.audioCacheTrack.id&&t>=this.audioCacheTrack.dts?(this.audioCacheTrack.duration=t-this.audioCacheTrack.dts,this.totalAudioDuration+=this.audioCacheTrack.duration,this.totalAudioByteLength+=this.audioCacheTrack.payload.byteLength,this.wasmMp4Recorder.sendAudioFrame(this.audioCacheTrack.payload,this.audioCacheTrack.dts)):this.audioCacheTrack={},this.audioCacheTrack={id:2,payload:e,dts:t})}handleAddNaluTrack(e,t,i,r){ba(this.hasVideo)||(this.cacheTrack.id&&i>=this.cacheTrack.dts?(this.cacheTrack.duration=i-this.cacheTrack.dts,this.totalDuration+=this.cacheTrack.duration,this.totalByteLength+=this.cacheTrack.payload.byteLength,this.wasmMp4Recorder.sendVideoFrame(this.cacheTrack.payload,this.cacheTrack.isIFrame,this.cacheTrack.dts,this.cacheTrack.cts)):this.cacheTrack={},this.cacheTrack={id:1,payload:e,isIFrame:t,dts:i,cts:r})}}class ao{constructor(e){return new(ao.getLoaderFactory(e._opt))(e)}static getLoaderFactory(e){if(e.recordType===b){if(e.useWasm||e.useMSE||e.useWCS)return window.EasyPlayerProMp4Recorder&&e.mp4RecordUseWasm?so:eo}else if(e.recordType===E)return to;return Jn}}function no(e,t,i){let r=e;if(t+i=128){t.push(String.fromCharCode(65535&e)),r+=2;continue}}}else if(i[r]<240){if(no(i,r,2)){let e=(15&i[r])<<12|(63&i[r+1])<<6|63&i[r+2];if(e>=2048&&55296!=(63488&e)){t.push(String.fromCharCode(65535&e)),r+=3;continue}}}else if(i[r]<248&&no(i,r,3)){let e=(7&i[r])<<18|(63&i[r+1])<<12|(63&i[r+2])<<6|63&i[r+3];if(e>65536&&e<1114112){e-=65536,t.push(String.fromCharCode(e>>>10|55296)),t.push(String.fromCharCode(1023&e|56320)),r+=4;continue}}t.push(String.fromCharCode(65533)),++r}return t.join("")}let lo=function(){let e=new ArrayBuffer(2);return new DataView(e).setInt16(0,256,!0),256===new Int16Array(e)[0]}();class ho{static parseScriptData(e,t,i){let r={};try{let s=ho.parseValue(e,t,i),a=ho.parseValue(e,t+s.size,i-s.size);r[s.data]=a.data}catch(e){console.error("AMF",e.toString())}return r}static parseObject(e,t,i){let r=ho.parseString(e,t,i),s=ho.parseValue(e,t+r.size,i-r.size),a=s.objectEnd;return{data:{name:r.data,value:s.data},size:r.size+s.size,objectEnd:a}}static parseVariable(e,t,i){return ho.parseObject(e,t,i)}static parseString(e,t,i){let r,s=new DataView(e,t,i).getUint16(0,!lo);return r=s>0?oo(new Uint8Array(e,t+2,s)):"",{data:r,size:2+s}}static parseLongString(e,t,i){let r,s=new DataView(e,t,i).getUint32(0,!lo);return r=s>0?oo(new Uint8Array(e,t+4,s)):"",{data:r,size:4+s}}static parseDate(e,t,i){let r=new DataView(e,t,i),s=r.getFloat64(0,!lo);return s+=60*r.getInt16(8,!lo)*1e3,{data:new Date(s),size:10}}static parseValue(e,t,i){let r,s=new DataView(e,t,i),a=1,n=s.getUint8(0),o=!1;try{switch(n){case 0:r=s.getFloat64(1,!lo),a+=8;break;case 1:r=!!s.getUint8(1),a+=1;break;case 2:{let s=ho.parseString(e,t+1,i-1);r=s.data,a+=s.size;break}case 3:{r={};let n=0;for(9==(16777215&s.getUint32(i-4,!lo))&&(n=3);a{window.URL.revokeObjectURL(this.workerUrl),this.workerUrl=null,this.workerClearTimeout=null}),ie)}this.decoderWorker=new Worker(t),this._initDecoderWorker(),e.debug.log("decoderWorker",`init and decoder url is ${t}`),e.on(rt.visibilityChange,(()=>{this.updateWorkConfig({key:"visibility",value:e.visibility})}))}destroy(){return new Promise(((e,t)=>{this.player.loaded?(this.player.debug.log("decoderWorker","has loaded and post message to destroy"),this.decoderWorker?(this.decoderWorker.postMessage({cmd:$e}),this.destroyResolve=e,this.decoderWorkerCloseTimeout=setTimeout((()=>{this.player.debug.warn("decoderWorker","send close but not response and destroy directly"),this.decoderWorkerCloseTimeout&&(clearTimeout(this.decoderWorkerCloseTimeout),this.decoderWorkerCloseTimeout=null),this._destroy(),setTimeout((()=>{e()}),0)}),2e3)):(this.player.debug.warn("decoderWorker","has loaded but decoderWorker is null and destroy directly"),this._destroy(),setTimeout((()=>{e()}),0))):(this.player.debug.log("decoderWorker","has not loaded and destroy directly"),this._destroy(),setTimeout((()=>{e()}),0))}))}_destroy(){this.decoderWorkerCloseTimeout&&(clearTimeout(this.decoderWorkerCloseTimeout),this.decoderWorkerCloseTimeout=null),this.workerUrl&&(window.URL.revokeObjectURL(this.workerUrl),this.workerUrl=null),this.workerClearTimeout&&(clearTimeout(this.workerClearTimeout),this.workerClearTimeout=null),this.decoderWorker&&(this.decoderWorker.terminate(),this.decoderWorker.onerror=null,this.decoderWorker.onmessageerror=null,this.decoderWorker.onmessage=null,this.decoderWorker=null),this.player.debug.log("decoderWorker","destroy"),this.destroyResolve&&(this.destroyResolve(),this.destroyResolve=null)}_initDecoderWorker(){const{debug:e,events:{proxy:t}}=this.player;this.decoderWorker.onerror=e=>{this.player.debug.error("decoderWorker","onerror",e),this.player.emitError(nt.decoderWorkerInitError,e)},this.decoderWorker.onmessageerror=e=>{this.player.debug.error("decoderWorker","onmessageerror",e)},this.decoderWorker.onmessage=t=>{const i=t.data;switch(i.cmd){case ae:e.log("decoderWorker","onmessage:",ae),this.decoderWorker&&this._initWork(),this.player.loaded||this.player.emit(rt.load),this.player.emit(rt.decoderWorkerInit);break;case pe:e.log("decoderWorker","onmessage:",pe,i.code),this.player._times.decodeStart||(this.player._times.decodeStart=ps()),this.player.video.updateVideoInfo({encTypeCode:i.code});break;case fe:e.log("decoderWorker","onmessage:",fe,i.codecId),this.player.recorder&&this.player.recorder.initMetaData(i.buffer,i.codecId),this.player.video.updateVideoInfo({encTypeCode:i.codecId});break;case he:e.log("decoderWorker","onmessage:",he,i.code),this.player.audio&&this.player.audio.updateAudioInfo({encTypeCode:i.code});break;case ue:e.log("decoderWorker","onmessage:",ue),this.player.recorder&&this.player.recorder.initAudioAacExtraData(i.buffer);break;case ne:if(e.log("decoderWorker","onmessage:",ne,`width:${i.w},height:${i.h}`),Ns(i.w)||Ns(i.h))return void this.player.emitError(nt.videoInfoError,`video width ${i.w} or height ${i.h} is empty`);if(this.player.video.updateVideoInfo({width:i.w,height:i.h}),!this.player._opt.openWebglAlignment&&i.w/2%4!=0&&this.player.getRenderType()===$)return void this.player.emitError(nt.webglAlignmentError);this.player.video.initCanvasViewSize(),this.player._opt.playType===v&&(this.player.video.initFps(),this.player.video.initVideoDelay());break;case de:if(e.log("decoderWorker","onmessage:",de,`channels:${i.channels},sampleRate:${i.sampleRate}`),i.channels>2)return void this.player.emitError(nt.audioChannelError,`audio channel is ${i.channels}, max is 2`);this.player.audio&&(this.player.audio.updateAudioInfo(i),this.player._opt.playType===g?this.player.audio.initScriptNode():this.player._opt.playType===v&&this.player.audio.initScriptNodeDelay());break;case oe:if(!this.player.video)return void e.warn("decoderWorker","onmessage render but video is null");if(this.player.isPlayer()){if(ba(this.player.video.getHasInit()))return void e.warn("decoderWorker","onmessage render but video has not init");this.player.video.render(i),this.player.handleRender(),this.player.emit(rt.timeUpdate,i.ts),this.player.updateStats({dfps:!0,buf:i.delay}),this.player._times.videoStart||(this.player._times.videoStart=ps(),this.player.handlePlayToRenderTimes())}else this.player.isPlayback()&&(this.player.updateStats({dfps:!0}),ba(this.player.playbackPause)?(this.player.playback.isUseLocalCalculateTime&&this.player.playback.increaseLocalTimestamp(),this.player.playback.isUseFpsRender?this.player.video.pushData(i):this.player.video.render$2(i)):!this.player.playback.isPlaybackPauseClearCache&&this.player.playback.isCacheBeforeDecodeForFpsRender&&this.player.playback.isUseFpsRender&&this.player.video.pushData(i));break;case me:this.player.recorder&&this.player.recorder.isRecording&&this.player._opt.recordType===b&&this.player.recorder.handleAddNaluTrack(i.buffer,i.isIFrame,i.ts,i.cts);break;case ce:this.player.recorder&&this.player.recorder.isRecording&&this.player._opt.recordType===b&&this.player.recorder.isWasmMp4()&&this.player.recorder.handleAddAudioTrack(i.buffer,i.ts);break;case ye:const{webcodecsDecoder:t,mseDecoder:r}=this.player;this.player.updateStats({buf:i.delay});const s=new Uint8Array(i.payload);this.player._opt.useWCS&&!this.player._opt.useOffscreen?t.decodeVideo(s,i.ts,i.isIFrame,i.cts):this.player._opt.useMSE&&r.decodeVideo(s,i.ts,i.isIFrame,i.cts);break;case ge:if(this.player._opt.useMSE){const e=new Uint8Array(i.payload);this.player.mseDecoder.decodeAudio(e,i.ts,i.cts)}break;case le:if(!this.player.audio)return void e.warn("decoderWorker","onmessage playAudio but audio is null");(this.player.playing&&this.player.audio||!this.player.video)&&(this.player._opt.hasVideo||this.player.handleRender(),(this.player._opt.playType===g||this.player._opt.playType===v&&(ba(this.player.playbackPause)||!this.player.playback.isPlaybackPauseClearCache&&this.player.playback.isCacheBeforeDecodeForFpsRender&&this.player.playback.isUseFpsRender))&&this.player.audio.play(i.buffer,i.ts));break;case ve:if(i.type===rt.streamSuccess)this.player.stream?this.player.stream.emit(rt.streamSuccess):e.warn("decoderWorker","onmessage and workerFetch response stream success but stream is null");else if(i.type===rt.streamRate)this.player.emit(rt.kBps,(i.value/1024).toFixed(2));else if(i.type===rt.streamEnd)this.player?(i.value===c&&this.player.emit(rt.websocketClose,i.msg),this.player.stream?this.player.stream.emit(rt.streamEnd,i.msg):e&&e.warn("decoderWorker","onmessage and workerFetch response stream end but player.stream is null")):e&&e.warn("decoderWorker","onmessage and workerFetch response stream end but player is null");else if(i.type===nt.websocketError)this.player&&this.player.stream?this.player.stream.emit(nt.websocketError,i.value):e&&e.warn("decoderWorker","onmessage and workerFetch response websocket error but stream is null");else if(i.type===nt.fetchError)this.player&&this.player.stream?this.player.stream.emit(nt.fetchError,i.value):e&&e.warn("decoderWorker","onmessage and workerFetch response fetch error but stream is null");else if(i.type===rt.streamAbps)this.player.updateStats({abps:i.value});else if(i.type===rt.streamVbps)this.player._times.demuxStart||(this.player._times.demuxStart=ps()),this.player.updateStats({vbps:i.value});else if(i.type===rt.streamDts)this.player.updateStats({dts:i.value});else if(i.type===rt.netBuf)this.player.updateStats({netBuf:i.value});else if(i.type===rt.networkDelayTimeout)this.player.emit(rt.networkDelayTimeout,i.value);else if(i.type===rt.streamStats){const e=JSON.parse(i.value);this.player.updateStats({workerStats:e})}else i.type===rt.websocketOpen&&this.player.emit(rt.websocketOpen);break;case be:this.player&&(this.player.videoIframeIntervalTs=i.value);break;case _e:this.player&&this.player.updateStats({isDropping:!0});break;case Me:this.player.decoderCheckFirstIFrame();break;case Se:this.player&&this.player.video&&this.player.video.setStreamFps(i.value);break;case Ae:i.message&&-1!==i.message.indexOf(Ue)&&this.player.emitError(nt.wasmDecodeError,"");break;case we:this.player.emitError(nt.wasmDecodeVideoNoResponseError);break;case Ce:this.player.emitError(nt.simdH264DecodeVideoWidthIsTooLarge);break;case Te:this.player.emitError(nt.wasmWidthOrHeightChange);break;case ke:this.player.emitError(nt.simdDecodeError);break;case Ee:e.log("decoderWorker","onmessage:",Ee);break;case Re:e.log("decoderWorker","onmessage:",Re),this._destroy();break;case De:this.player&&this.player.pushTempStream(i.buffer);break;case xe:this.player&&this.player.emit(rt.videoSEI,{ts:i.ts,data:new Uint8Array(i.buffer)});break;case Le:if(this.player){if(this.player.isRecordTypeFlv()){const e=new Uint8Array(i.buffer);this.player.recorder.addMetaData(e)}const e=co(new Uint8Array(i.buffer));e&&e.onMetaData&&this.player.updateMetaData(e.onMetaData)}break;case Ie:if(this.player&&this.player.isRecordTypeFlv()){const e=new Uint8Array(i.buffer);this.player.recorder.addAACSequenceHeader(e,i.ts)}break;case Pe:if(this.player&&this.player.isRecordTypeFlv()){const e=new Uint8Array(i.buffer);this.player.recorder.addVideoSequenceHeader(e,i.ts)}break;case Be:if(this.player&&this.player.isRecordTypeFlv()&&this.player.recording){const e=new Uint8Array(i.buffer);i.type===Oe?this.player.recorder.addVideo(e,i.ts):i.type===Fe&&this.player.recorder.addAudio(e,i.ts)}break;default:this.player[i.cmd]&&this.player[i.cmd](i)}}}_initWork(){const e={debug:this.player._opt.debug,debugLevel:this.player._opt.debugLevel,debugUuid:this.player._opt.debugUuid,useOffscreen:this.player._opt.useOffscreen,useWCS:this.player._opt.useWCS,useMSE:this.player._opt.useMSE,videoBuffer:this.player._opt.videoBuffer,videoBufferDelay:this.player._opt.videoBufferDelay,openWebglAlignment:this.player._opt.openWebglAlignment,playType:this.player._opt.playType,hasAudio:this.player._opt.hasAudio,hasVideo:this.player._opt.hasVideo,playbackRate:1,playbackForwardMaxRateDecodeIFrame:this.player._opt.playbackForwardMaxRateDecodeIFrame,playbackIsCacheBeforeDecodeForFpsRender:this.player._opt.playbackConfig.isCacheBeforeDecodeForFpsRender,sampleRate:this.player.audio&&this.player.audio.audioContext&&this.player.audio.audioContext.sampleRate||0,audioBufferSize:this.player.audio&&this.player.audio.getAudioBufferSize()||1024,networkDelay:this.player._opt.networkDelay,visibility:this.player.visibility,useSIMD:this.player._opt.useSIMD,recordType:this.player._opt.recordType,checkFirstIFrame:this.player._opt.checkFirstIFrame,isM7sCrypto:this.player._opt.isM7sCrypto,isXorCrypto:this.player._opt.isXorCrypto,isSm4Crypto:this.player._opt.isSm4Crypto,sm4CryptoKey:this.player._opt.sm4CryptoKey,m7sCryptoAudio:this.player._opt.m7sCryptoAudio,isFlv:this.player._opt.isFlv,isFmp4:this.player._opt.isFmp4,isMpeg4:this.player._opt.isMpeg4,isTs:this.player._opt.isTs,isNakedFlow:this.player._opt.isNakedFlow,isHls265:this.player.isUseHls265(),isFmp4Private:this.player._opt.isFmp4Private,isEmitSEI:this.player._opt.isEmitSEI,isRecordTypeFlv:this.player.isRecordTypeFlv(),isWasmMp4:this.player.recorder&&this.player.recorder.isWasmMp4()||!1,isChrome:ta(),isDropSameTimestampGop:this.player._opt.isDropSameTimestampGop,mseDecodeAudio:this.player._opt.mseDecodeAudio,nakedFlowH265DemuxUseNew:this.player._opt.nakedFlowH265DemuxUseNew};this.decoderWorker.postMessage({cmd:Ve,opt:JSON.stringify(e)}),this.player._opt.isM7sCrypto&&(this.updateWorkConfig({key:"cryptoKey",value:this.player._opt.cryptoKey}),this.updateWorkConfig({key:"cryptoIV",value:this.player._opt.cryptoIV}))}decodeVideo(e,t,i){this.player._opt.playType===g?this.player.isUseHls265()?this._decodeVideoNoDelay(e,t,i):this._decodeVideo(e,t,i):this.player._opt.playType===v&&(this.player.video.rate>=this.player._opt.playbackForwardMaxRateDecodeIFrame?i&&(this.player.debug.log("decoderWorker",`current rate is ${this.player.video.rate},only decode i frame`),this._decodeVideoNoDelay(e,t,i)):1===this.player.video.rate?this._decodeVideo(e,t,i):this._decodeVideoNoDelay(e,t,i))}_decodeVideo(e,t,i){const r={type:Oe,ts:Math.max(t,0),isIFrame:i};this.decoderWorker.postMessage({cmd:He,buffer:e,options:r},[e.buffer])}_decodeVideoNoDelay(e,t,i){this.decoderWorker.postMessage({cmd:je,buffer:e,ts:Math.max(t,0),isIFrame:i},[e.buffer])}decodeAudio(e,t){this.player._opt.playType===g?this.player._opt.useWCS||this.player._opt.useMSE||this.player.isUseHls265()?this._decodeAudioNoDelay(e,t):this._decodeAudio(e,t):this.player._opt.playType===v&&(1===this.player.video.rate?this._decodeAudio(e,t):this._decodeAudioNoDelay(e,t))}_decodeAudio(e,t){const i={type:Fe,ts:Math.max(t,0)};this.decoderWorker.postMessage({cmd:He,buffer:e,options:i},[e.buffer])}_decodeAudioNoDelay(e,t){this.decoderWorker.postMessage({cmd:We,buffer:e,ts:Math.max(t,0)},[e.buffer])}updateWorkConfig(e){this.decoderWorker&&this.decoderWorker.postMessage({cmd:Ke,key:e.key,value:e.value})}workerFetchStream(e){const{_opt:t}=this.player,i={protocol:t.protocol,isFlv:t.isFlv,isFmp4:t.isFmp4,isMpeg4:t.isMpeg4,isNakedFlow:t.isNakedFlow,isTs:t.isTs};this.decoderWorker.postMessage({cmd:Ye,url:e,opt:JSON.stringify(i)})}clearWorkBuffer(e=!1){this.decoderWorker.postMessage({cmd:qe,needClear:e})}workerSendMessage(e){this.decoderWorker.postMessage({cmd:Qe,message:e})}}var po,fo="application/json, text/javascript",mo="text/html",yo=/^(?:text|application)\/xml/i,go=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Ao=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,vo=/^\s*$/,bo={},_o={},Eo="",So={type:"GET",beforeSend:wo,success:wo,error:wo,complete:wo,context:null,xhr:function(){return new window.XMLHttpRequest},accepts:{json:fo,xml:"application/xml, text/xml",html:mo,text:"text/plain","*":"*/".concat("*")},crossDomain:!1,timeout:0,username:null,password:null,processData:!0,promise:wo,contentType:"application/x-www-form-urlencoded; charset=UTF-8"};function wo(){}var To=function(e,t){"object"==typeof e&&(t=e,e=void 0);var i=Po({},t=t||{});for(var r in So)void 0===i[r]&&(i[r]=So[r]);try{var s={},a=new Promise((function(e,t){s.resolve=e,s.reject=t}));a.resolve=s.resolve,a.reject=s.reject,i.promise=a}catch(e){i.promise={resolve:wo,reject:wo}}var n=Ao.exec(window.location.href.toLowerCase())||[];i.url=((e||i.url||window.location.href)+"").replace(/#.*$/,"").replace(/^\/\//,n[1]+"//");var o=i.url;i.crossDomain||(i.crossDomain=/^([\w-]+:)?\/\/([^\/]+)/.test(i.url)&&RegExp.$2!==window.location.href);var l=i.dataType;if("jsonp"===l){if(!/=\?/.test(i.url)){var d=(i.jsonp||"callback")+"=?";i.url=xo(i.url,d)}return function(e){var t,i=e.jsonpCallback||"jsonp"+Uo(),r=window.document.createElement("script"),s={abort:function(){i in window&&(window[i]=wo)}},a=window.document.getElementsByTagName("head")[0]||window.document.documentElement;function n(i){window.clearTimeout(t),s.abort(),Ro(i.type,s,i.type,e),o()}r.onerror=function(e){n(e)},window[i]=function(i){window.clearTimeout(t),ko(i,s,e),o()},Lo(e),r.src=e.url.replace(/=\?/,"="+i),r.src=xo(r.src,"_="+(new Date).getTime()),r.async=!0,e.scriptCharset&&(r.charset=e.scriptCharset);a.insertBefore(r,a.firstChild),e.timeout>0&&(t=window.setTimeout((function(){s.abort(),Ro("timeout",s,"timeout",e),o()}),e.timeout));function o(){r.clearAttributes?r.clearAttributes():r.onload=r.onreadystatechange=r.onerror=null,r.parentNode&&r.parentNode.removeChild(r),r=null,delete window[i]}return e.promise.abort=function(){s.abort()},e.promise.xhr=s,e.promise}(i)}Lo(i);var h=i.accepts[l]||i.accepts["*"],c={};/^([\w-]+:)\/\//.test(i.url)?RegExp.$1:window.location.protocol;var u,p=So.xhr();i.crossDomain||c["X-Requested-With"]||(c["X-Requested-With"]="XMLHttpRequest"),i.ifModified&&(bo[o]&&(c["If-Modified-Since"]=bo[o]),_o[o]&&(c["If-None-Match"]=_o[o])),h&&(c.Accept=h,h.indexOf(",")>-1&&(h=h.split(",",2)[0]),p.overrideMimeType&&p.overrideMimeType(h));var f=!/^(?:GET|HEAD)$/.test(i.type.toUpperCase());if((i.data&&f&&!1!==i.contentType||t.contentType)&&(c["Content-Type"]=i.contentType),!1===i.cache&&!f){var m=/([?&])_=[^&]*/;i.url=m.test(o)?o.replace(m,"$1_="+Uo()):o+(/\?/.test(o)?"&":"?")+"_="+Uo()}i.headers=Po(c,i.headers||{}),p.onreadystatechange=function(){if(4===p.readyState){var e;clearTimeout(u);var t=!1;if(p.status>=200&&p.status<300||304===p.status){if(Eo=p.getAllResponseHeaders(),i.ifModified){var r=Do("Last-Modified");r&&(bo[o]=r),(r=Do("etag"))&&(_o[o]=r)}l=l||function(e){return e&&(e===mo?"html":e===fo?"json":yo.test(e)&&"xml")||"text"}(p.getResponseHeader("content-type")),e=p.responseText;try{"xml"===l?e=p.responseXML:"json"===l&&(e=vo.test(e)?null:JSON.parse(e))}catch(e){t=e}t?Ro(t,"parseerror",p,i):ko(e,p,i)}else Ro(null,"error",p,i)}};var y=!("async"in i)||i.async;if(p.open(i.type,i.url,y,i.username,i.password),i.xhrFields)for(var g in i.xhrFields)p[g]=i.xhrFields[g];for(var g in i.mimeType&&p.overrideMimeType&&p.overrideMimeType(i.mimeType),i.headers)void 0!==i.headers[g]&&p.setRequestHeader(g,i.headers[g]+"");return!1===function(e,t){var i=t.context;if(!1===t.beforeSend.call(i,e,t))return!1}(p,i)?(p.abort(),!1):(i.timeout>0&&(u=window.setTimeout((function(){p.onreadystatechange=wo,p.abort(),Ro(null,"timeout",p,i)}),i.timeout)),p.send(i.data?i.data:null),i.promise.abort=function(){p.abort()},i.promise)};function ko(e,t,i){var r=i.context,s="success";i.success.call(r,e,s,t),i.promise.resolve(e,s,t),Co(s,t,i)}function Co(e,t,i){var r=i.context;i.complete.call(r,t,e)}function Ro(e,t,i,r){var s=r.context;r.error.call(s,i,t,e),r.promise.reject(i,t,e),Co(t,i,r)}function Do(e){var t;if(!po){for(po={};t=go.exec(Eo);)po[t[1].toLowerCase()]=t[2];t=po[e.toLowerCase()]}return null===t?null:t}function xo(e,t){return(e+"&"+t).replace(/[&?]{1,2}/,"?")}function Lo(e){!Bo(e)||e.data instanceof FormData||!e.processData||(e.data=function(e,t){var i=[];return i.add=function(e,t){this.push(encodeURIComponent(e)+"="+encodeURIComponent(t))},Io(i,e,t),i.join("&").replace("%20","+")}(e.data)),!e.data||e.type&&"GET"!==e.type.toUpperCase()||(e.url=xo(e.url,e.data))}function Io(e,t,i,r){var s=function(e){return"[object Array]"===Object.prototype.toString.call(e)}(t);for(var a in t){var n=t[a];r&&(a=i?r:r+"["+(s?"":a)+"]"),!r&&s?e.add(n.name,n.value):(i?s(n):Bo(n))?Io(e,n,i,a):e.add(a,n)}}function Po(e){for(var t=Array.prototype.slice.call(arguments,1),i=0,r=t.length;i255)return!1;return!0}function No(e,t){if(e.buffer&&"Uint8Array"===e.name)return t&&(e=e.slice?e.slice():Array.prototype.slice.call(e)),e;if(Array.isArray(e)){if(!Oo(e))throw new Error("Array contains invalid value: "+e);return new Uint8Array(e)}if(Fo(e.length)&&Oo(e))return new Uint8Array(e);throw new Error("unsupported array-like object")}function Go(e){return new Uint8Array(e)}function zo(e,t,i,r,s){null==r&&null==s||(e=e.slice?e.slice(r,s):Array.prototype.slice.call(e,r,s)),t.set(e,i)}To.get=function(e,t,i,r){return Mo(t)&&(r=r||i,i=t,t=void 0),To({url:e,data:t,success:i,dataType:r})},To.post=function(e,t,i,r){return Mo(t)&&(r=r||i,i=t,t=void 0),To({type:"POST",url:e,data:t,success:i,dataType:r})},To.getJSON=function(e,t,i){return Mo(t)&&(i=t,t=void 0),To({url:e,data:t,success:i,dataType:"json"})},To.ajaxSetup=function(e,t){return t?Po(Po(e,So),t):Po(So,e)};var Vo,Ho={toBytes:function(e){var t=[],i=0;for(e=encodeURI(e);i191&&r<224?(t.push(String.fromCharCode((31&r)<<6|63&e[i+1])),i+=2):(t.push(String.fromCharCode((15&r)<<12|(63&e[i+1])<<6|63&e[i+2])),i+=3)}return t.join("")}},Wo=(Vo="0123456789abcdef",{toBytes:function(e){for(var t=[],i=0;i>4]+Vo[15&r])}return t.join("")}}),jo={16:10,24:12,32:14},$o=[1,2,4,8,16,32,64,128,27,54,108,216,171,77,154,47,94,188,99,198,151,53,106,212,179,125,250,239,197,145],Ko=[99,124,119,123,242,107,111,197,48,1,103,43,254,215,171,118,202,130,201,125,250,89,71,240,173,212,162,175,156,164,114,192,183,253,147,38,54,63,247,204,52,165,229,241,113,216,49,21,4,199,35,195,24,150,5,154,7,18,128,226,235,39,178,117,9,131,44,26,27,110,90,160,82,59,214,179,41,227,47,132,83,209,0,237,32,252,177,91,106,203,190,57,74,76,88,207,208,239,170,251,67,77,51,133,69,249,2,127,80,60,159,168,81,163,64,143,146,157,56,245,188,182,218,33,16,255,243,210,205,12,19,236,95,151,68,23,196,167,126,61,100,93,25,115,96,129,79,220,34,42,144,136,70,238,184,20,222,94,11,219,224,50,58,10,73,6,36,92,194,211,172,98,145,149,228,121,231,200,55,109,141,213,78,169,108,86,244,234,101,122,174,8,186,120,37,46,28,166,180,198,232,221,116,31,75,189,139,138,112,62,181,102,72,3,246,14,97,53,87,185,134,193,29,158,225,248,152,17,105,217,142,148,155,30,135,233,206,85,40,223,140,161,137,13,191,230,66,104,65,153,45,15,176,84,187,22],qo=[82,9,106,213,48,54,165,56,191,64,163,158,129,243,215,251,124,227,57,130,155,47,255,135,52,142,67,68,196,222,233,203,84,123,148,50,166,194,35,61,238,76,149,11,66,250,195,78,8,46,161,102,40,217,36,178,118,91,162,73,109,139,209,37,114,248,246,100,134,104,152,22,212,164,92,204,93,101,182,146,108,112,72,80,253,237,185,218,94,21,70,87,167,141,157,132,144,216,171,0,140,188,211,10,247,228,88,5,184,179,69,6,208,44,30,143,202,63,15,2,193,175,189,3,1,19,138,107,58,145,17,65,79,103,220,234,151,242,207,206,240,180,230,115,150,172,116,34,231,173,53,133,226,249,55,232,28,117,223,110,71,241,26,113,29,41,197,137,111,183,98,14,170,24,190,27,252,86,62,75,198,210,121,32,154,219,192,254,120,205,90,244,31,221,168,51,136,7,199,49,177,18,16,89,39,128,236,95,96,81,127,169,25,181,74,13,45,229,122,159,147,201,156,239,160,224,59,77,174,42,245,176,200,235,187,60,131,83,153,97,23,43,4,126,186,119,214,38,225,105,20,99,85,33,12,125],Yo=[3328402341,4168907908,4000806809,4135287693,4294111757,3597364157,3731845041,2445657428,1613770832,33620227,3462883241,1445669757,3892248089,3050821474,1303096294,3967186586,2412431941,528646813,2311702848,4202528135,4026202645,2992200171,2387036105,4226871307,1101901292,3017069671,1604494077,1169141738,597466303,1403299063,3832705686,2613100635,1974974402,3791519004,1033081774,1277568618,1815492186,2118074177,4126668546,2211236943,1748251740,1369810420,3521504564,4193382664,3799085459,2883115123,1647391059,706024767,134480908,2512897874,1176707941,2646852446,806885416,932615841,168101135,798661301,235341577,605164086,461406363,3756188221,3454790438,1311188841,2142417613,3933566367,302582043,495158174,1479289972,874125870,907746093,3698224818,3025820398,1537253627,2756858614,1983593293,3084310113,2108928974,1378429307,3722699582,1580150641,327451799,2790478837,3117535592,0,3253595436,1075847264,3825007647,2041688520,3059440621,3563743934,2378943302,1740553945,1916352843,2487896798,2555137236,2958579944,2244988746,3151024235,3320835882,1336584933,3992714006,2252555205,2588757463,1714631509,293963156,2319795663,3925473552,67240454,4269768577,2689618160,2017213508,631218106,1269344483,2723238387,1571005438,2151694528,93294474,1066570413,563977660,1882732616,4059428100,1673313503,2008463041,2950355573,1109467491,537923632,3858759450,4260623118,3218264685,2177748300,403442708,638784309,3287084079,3193921505,899127202,2286175436,773265209,2479146071,1437050866,4236148354,2050833735,3362022572,3126681063,840505643,3866325909,3227541664,427917720,2655997905,2749160575,1143087718,1412049534,999329963,193497219,2353415882,3354324521,1807268051,672404540,2816401017,3160301282,369822493,2916866934,3688947771,1681011286,1949973070,336202270,2454276571,201721354,1210328172,3093060836,2680341085,3184776046,1135389935,3294782118,965841320,831886756,3554993207,4068047243,3588745010,2345191491,1849112409,3664604599,26054028,2983581028,2622377682,1235855840,3630984372,2891339514,4092916743,3488279077,3395642799,4101667470,1202630377,268961816,1874508501,4034427016,1243948399,1546530418,941366308,1470539505,1941222599,2546386513,3421038627,2715671932,3899946140,1042226977,2521517021,1639824860,227249030,260737669,3765465232,2084453954,1907733956,3429263018,2420656344,100860677,4160157185,470683154,3261161891,1781871967,2924959737,1773779408,394692241,2579611992,974986535,664706745,3655459128,3958962195,731420851,571543859,3530123707,2849626480,126783113,865375399,765172662,1008606754,361203602,3387549984,2278477385,2857719295,1344809080,2782912378,59542671,1503764984,160008576,437062935,1707065306,3622233649,2218934982,3496503480,2185314755,697932208,1512910199,504303377,2075177163,2824099068,1841019862,739644986],Qo=[2781242211,2230877308,2582542199,2381740923,234877682,3184946027,2984144751,1418839493,1348481072,50462977,2848876391,2102799147,434634494,1656084439,3863849899,2599188086,1167051466,2636087938,1082771913,2281340285,368048890,3954334041,3381544775,201060592,3963727277,1739838676,4250903202,3930435503,3206782108,4149453988,2531553906,1536934080,3262494647,484572669,2923271059,1783375398,1517041206,1098792767,49674231,1334037708,1550332980,4098991525,886171109,150598129,2481090929,1940642008,1398944049,1059722517,201851908,1385547719,1699095331,1587397571,674240536,2704774806,252314885,3039795866,151914247,908333586,2602270848,1038082786,651029483,1766729511,3447698098,2682942837,454166793,2652734339,1951935532,775166490,758520603,3000790638,4004797018,4217086112,4137964114,1299594043,1639438038,3464344499,2068982057,1054729187,1901997871,2534638724,4121318227,1757008337,0,750906861,1614815264,535035132,3363418545,3988151131,3201591914,1183697867,3647454910,1265776953,3734260298,3566750796,3903871064,1250283471,1807470800,717615087,3847203498,384695291,3313910595,3617213773,1432761139,2484176261,3481945413,283769337,100925954,2180939647,4037038160,1148730428,3123027871,3813386408,4087501137,4267549603,3229630528,2315620239,2906624658,3156319645,1215313976,82966005,3747855548,3245848246,1974459098,1665278241,807407632,451280895,251524083,1841287890,1283575245,337120268,891687699,801369324,3787349855,2721421207,3431482436,959321879,1469301956,4065699751,2197585534,1199193405,2898814052,3887750493,724703513,2514908019,2696962144,2551808385,3516813135,2141445340,1715741218,2119445034,2872807568,2198571144,3398190662,700968686,3547052216,1009259540,2041044702,3803995742,487983883,1991105499,1004265696,1449407026,1316239930,504629770,3683797321,168560134,1816667172,3837287516,1570751170,1857934291,4014189740,2797888098,2822345105,2754712981,936633572,2347923833,852879335,1133234376,1500395319,3084545389,2348912013,1689376213,3533459022,3762923945,3034082412,4205598294,133428468,634383082,2949277029,2398386810,3913789102,403703816,3580869306,2297460856,1867130149,1918643758,607656988,4049053350,3346248884,1368901318,600565992,2090982877,2632479860,557719327,3717614411,3697393085,2249034635,2232388234,2430627952,1115438654,3295786421,2865522278,3633334344,84280067,33027830,303828494,2747425121,1600795957,4188952407,3496589753,2434238086,1486471617,658119965,3106381470,953803233,334231800,3005978776,857870609,3151128937,1890179545,2298973838,2805175444,3056442267,574365214,2450884487,550103529,1233637070,4289353045,2018519080,2057691103,2399374476,4166623649,2148108681,387583245,3664101311,836232934,3330556482,3100665960,3280093505,2955516313,2002398509,287182607,3413881008,4238890068,3597515707,975967766],Xo=[1671808611,2089089148,2006576759,2072901243,4061003762,1807603307,1873927791,3310653893,810573872,16974337,1739181671,729634347,4263110654,3613570519,2883997099,1989864566,3393556426,2191335298,3376449993,2106063485,4195741690,1508618841,1204391495,4027317232,2917941677,3563566036,2734514082,2951366063,2629772188,2767672228,1922491506,3227229120,3082974647,4246528509,2477669779,644500518,911895606,1061256767,4144166391,3427763148,878471220,2784252325,3845444069,4043897329,1905517169,3631459288,827548209,356461077,67897348,3344078279,593839651,3277757891,405286936,2527147926,84871685,2595565466,118033927,305538066,2157648768,3795705826,3945188843,661212711,2999812018,1973414517,152769033,2208177539,745822252,439235610,455947803,1857215598,1525593178,2700827552,1391895634,994932283,3596728278,3016654259,695947817,3812548067,795958831,2224493444,1408607827,3513301457,0,3979133421,543178784,4229948412,2982705585,1542305371,1790891114,3410398667,3201918910,961245753,1256100938,1289001036,1491644504,3477767631,3496721360,4012557807,2867154858,4212583931,1137018435,1305975373,861234739,2241073541,1171229253,4178635257,33948674,2139225727,1357946960,1011120188,2679776671,2833468328,1374921297,2751356323,1086357568,2408187279,2460827538,2646352285,944271416,4110742005,3168756668,3066132406,3665145818,560153121,271589392,4279952895,4077846003,3530407890,3444343245,202643468,322250259,3962553324,1608629855,2543990167,1154254916,389623319,3294073796,2817676711,2122513534,1028094525,1689045092,1575467613,422261273,1939203699,1621147744,2174228865,1339137615,3699352540,577127458,712922154,2427141008,2290289544,1187679302,3995715566,3100863416,339486740,3732514782,1591917662,186455563,3681988059,3762019296,844522546,978220090,169743370,1239126601,101321734,611076132,1558493276,3260915650,3547250131,2901361580,1655096418,2443721105,2510565781,3828863972,2039214713,3878868455,3359869896,928607799,1840765549,2374762893,3580146133,1322425422,2850048425,1823791212,1459268694,4094161908,3928346602,1706019429,2056189050,2934523822,135794696,3134549946,2022240376,628050469,779246638,472135708,2800834470,3032970164,3327236038,3894660072,3715932637,1956440180,522272287,1272813131,3185336765,2340818315,2323976074,1888542832,1044544574,3049550261,1722469478,1222152264,50660867,4127324150,236067854,1638122081,895445557,1475980887,3117443513,2257655686,3243809217,489110045,2662934430,3778599393,4162055160,2561878936,288563729,1773916777,3648039385,2391345038,2493985684,2612407707,505560094,2274497927,3911240169,3460925390,1442818645,678973480,3749357023,2358182796,2717407649,2306869641,219617805,3218761151,3862026214,1120306242,1756942440,1103331905,2578459033,762796589,252780047,2966125488,1425844308,3151392187,372911126],Jo=[1667474886,2088535288,2004326894,2071694838,4075949567,1802223062,1869591006,3318043793,808472672,16843522,1734846926,724270422,4278065639,3621216949,2880169549,1987484396,3402253711,2189597983,3385409673,2105378810,4210693615,1499065266,1195886990,4042263547,2913856577,3570689971,2728590687,2947541573,2627518243,2762274643,1920112356,3233831835,3082273397,4261223649,2475929149,640051788,909531756,1061110142,4160160501,3435941763,875846760,2779116625,3857003729,4059105529,1903268834,3638064043,825316194,353713962,67374088,3351728789,589522246,3284360861,404236336,2526454071,84217610,2593830191,117901582,303183396,2155911963,3806477791,3958056653,656894286,2998062463,1970642922,151591698,2206440989,741110872,437923380,454765878,1852748508,1515908788,2694904667,1381168804,993742198,3604373943,3014905469,690584402,3823320797,791638366,2223281939,1398011302,3520161977,0,3991743681,538992704,4244381667,2981218425,1532751286,1785380564,3419096717,3200178535,960056178,1246420628,1280103576,1482221744,3486468741,3503319995,4025428677,2863326543,4227536621,1128514950,1296947098,859002214,2240123921,1162203018,4193849577,33687044,2139062782,1347481760,1010582648,2678045221,2829640523,1364325282,2745433693,1077985408,2408548869,2459086143,2644360225,943212656,4126475505,3166494563,3065430391,3671750063,555836226,269496352,4294908645,4092792573,3537006015,3452783745,202118168,320025894,3974901699,1600119230,2543297077,1145359496,387397934,3301201811,2812801621,2122220284,1027426170,1684319432,1566435258,421079858,1936954854,1616945344,2172753945,1330631070,3705438115,572679748,707427924,2425400123,2290647819,1179044492,4008585671,3099120491,336870440,3739122087,1583276732,185277718,3688593069,3772791771,842159716,976899700,168435220,1229577106,101059084,606366792,1549591736,3267517855,3553849021,2897014595,1650632388,2442242105,2509612081,3840161747,2038008818,3890688725,3368567691,926374254,1835907034,2374863873,3587531953,1313788572,2846482505,1819063512,1448540844,4109633523,3941213647,1701162954,2054852340,2930698567,134748176,3132806511,2021165296,623210314,774795868,471606328,2795958615,3031746419,3334885783,3907527627,3722280097,1953799400,522133822,1263263126,3183336545,2341176845,2324333839,1886425312,1044267644,3048588401,1718004428,1212733584,50529542,4143317495,235803164,1633788866,892690282,1465383342,3115962473,2256965911,3250673817,488449850,2661202215,3789633753,4177007595,2560144171,286339874,1768537042,3654906025,2391705863,2492770099,2610673197,505291324,2273808917,3924369609,3469625735,1431699370,673740880,3755965093,2358021891,2711746649,2307489801,218961690,3217021541,3873845719,1111672452,1751693520,1094828930,2576986153,757954394,252645662,2964376443,1414855848,3149649517,370555436],Zo=[1374988112,2118214995,437757123,975658646,1001089995,530400753,2902087851,1273168787,540080725,2910219766,2295101073,4110568485,1340463100,3307916247,641025152,3043140495,3736164937,632953703,1172967064,1576976609,3274667266,2169303058,2370213795,1809054150,59727847,361929877,3211623147,2505202138,3569255213,1484005843,1239443753,2395588676,1975683434,4102977912,2572697195,666464733,3202437046,4035489047,3374361702,2110667444,1675577880,3843699074,2538681184,1649639237,2976151520,3144396420,4269907996,4178062228,1883793496,2403728665,2497604743,1383856311,2876494627,1917518562,3810496343,1716890410,3001755655,800440835,2261089178,3543599269,807962610,599762354,33778362,3977675356,2328828971,2809771154,4077384432,1315562145,1708848333,101039829,3509871135,3299278474,875451293,2733856160,92987698,2767645557,193195065,1080094634,1584504582,3178106961,1042385657,2531067453,3711829422,1306967366,2438237621,1908694277,67556463,1615861247,429456164,3602770327,2302690252,1742315127,2968011453,126454664,3877198648,2043211483,2709260871,2084704233,4169408201,0,159417987,841739592,504459436,1817866830,4245618683,260388950,1034867998,908933415,168810852,1750902305,2606453969,607530554,202008497,2472011535,3035535058,463180190,2160117071,1641816226,1517767529,470948374,3801332234,3231722213,1008918595,303765277,235474187,4069246893,766945465,337553864,1475418501,2943682380,4003061179,2743034109,4144047775,1551037884,1147550661,1543208500,2336434550,3408119516,3069049960,3102011747,3610369226,1113818384,328671808,2227573024,2236228733,3535486456,2935566865,3341394285,496906059,3702665459,226906860,2009195472,733156972,2842737049,294930682,1206477858,2835123396,2700099354,1451044056,573804783,2269728455,3644379585,2362090238,2564033334,2801107407,2776292904,3669462566,1068351396,742039012,1350078989,1784663195,1417561698,4136440770,2430122216,775550814,2193862645,2673705150,1775276924,1876241833,3475313331,3366754619,270040487,3902563182,3678124923,3441850377,1851332852,3969562369,2203032232,3868552805,2868897406,566021896,4011190502,3135740889,1248802510,3936291284,699432150,832877231,708780849,3332740144,899835584,1951317047,4236429990,3767586992,866637845,4043610186,1106041591,2144161806,395441711,1984812685,1139781709,3433712980,3835036895,2664543715,1282050075,3240894392,1181045119,2640243204,25965917,4203181171,4211818798,3009879386,2463879762,3910161971,1842759443,2597806476,933301370,1509430414,3943906441,3467192302,3076639029,3776767469,2051518780,2631065433,1441952575,404016761,1942435775,1408749034,1610459739,3745345300,2017778566,3400528769,3110650942,941896748,3265478751,371049330,3168937228,675039627,4279080257,967311729,135050206,3635733660,1683407248,2076935265,3576870512,1215061108,3501741890],el=[1347548327,1400783205,3273267108,2520393566,3409685355,4045380933,2880240216,2471224067,1428173050,4138563181,2441661558,636813900,4233094615,3620022987,2149987652,2411029155,1239331162,1730525723,2554718734,3781033664,46346101,310463728,2743944855,3328955385,3875770207,2501218972,3955191162,3667219033,768917123,3545789473,692707433,1150208456,1786102409,2029293177,1805211710,3710368113,3065962831,401639597,1724457132,3028143674,409198410,2196052529,1620529459,1164071807,3769721975,2226875310,486441376,2499348523,1483753576,428819965,2274680428,3075636216,598438867,3799141122,1474502543,711349675,129166120,53458370,2592523643,2782082824,4063242375,2988687269,3120694122,1559041666,730517276,2460449204,4042459122,2706270690,3446004468,3573941694,533804130,2328143614,2637442643,2695033685,839224033,1973745387,957055980,2856345839,106852767,1371368976,4181598602,1033297158,2933734917,1179510461,3046200461,91341917,1862534868,4284502037,605657339,2547432937,3431546947,2003294622,3182487618,2282195339,954669403,3682191598,1201765386,3917234703,3388507166,0,2198438022,1211247597,2887651696,1315723890,4227665663,1443857720,507358933,657861945,1678381017,560487590,3516619604,975451694,2970356327,261314535,3535072918,2652609425,1333838021,2724322336,1767536459,370938394,182621114,3854606378,1128014560,487725847,185469197,2918353863,3106780840,3356761769,2237133081,1286567175,3152976349,4255350624,2683765030,3160175349,3309594171,878443390,1988838185,3704300486,1756818940,1673061617,3403100636,272786309,1075025698,545572369,2105887268,4174560061,296679730,1841768865,1260232239,4091327024,3960309330,3497509347,1814803222,2578018489,4195456072,575138148,3299409036,446754879,3629546796,4011996048,3347532110,3252238545,4270639778,915985419,3483825537,681933534,651868046,2755636671,3828103837,223377554,2607439820,1649704518,3270937875,3901806776,1580087799,4118987695,3198115200,2087309459,2842678573,3016697106,1003007129,2802849917,1860738147,2077965243,164439672,4100872472,32283319,2827177882,1709610350,2125135846,136428751,3874428392,3652904859,3460984630,3572145929,3593056380,2939266226,824852259,818324884,3224740454,930369212,2801566410,2967507152,355706840,1257309336,4148292826,243256656,790073846,2373340630,1296297904,1422699085,3756299780,3818836405,457992840,3099667487,2135319889,77422314,1560382517,1945798516,788204353,1521706781,1385356242,870912086,325965383,2358957921,2050466060,2388260884,2313884476,4006521127,901210569,3990953189,1014646705,1503449823,1062597235,2031621326,3212035895,3931371469,1533017514,350174575,2256028891,2177544179,1052338372,741876788,1606591296,1914052035,213705253,2334669897,1107234197,1899603969,3725069491,2631447780,2422494913,1635502980,1893020342,1950903388,1120974935],tl=[2807058932,1699970625,2764249623,1586903591,1808481195,1173430173,1487645946,59984867,4199882800,1844882806,1989249228,1277555970,3623636965,3419915562,1149249077,2744104290,1514790577,459744698,244860394,3235995134,1963115311,4027744588,2544078150,4190530515,1608975247,2627016082,2062270317,1507497298,2200818878,567498868,1764313568,3359936201,2305455554,2037970062,1047239e3,1910319033,1337376481,2904027272,2892417312,984907214,1243112415,830661914,861968209,2135253587,2011214180,2927934315,2686254721,731183368,1750626376,4246310725,1820824798,4172763771,3542330227,48394827,2404901663,2871682645,671593195,3254988725,2073724613,145085239,2280796200,2779915199,1790575107,2187128086,472615631,3029510009,4075877127,3802222185,4107101658,3201631749,1646252340,4270507174,1402811438,1436590835,3778151818,3950355702,3963161475,4020912224,2667994737,273792366,2331590177,104699613,95345982,3175501286,2377486676,1560637892,3564045318,369057872,4213447064,3919042237,1137477952,2658625497,1119727848,2340947849,1530455833,4007360968,172466556,266959938,516552836,0,2256734592,3980931627,1890328081,1917742170,4294704398,945164165,3575528878,958871085,3647212047,2787207260,1423022939,775562294,1739656202,3876557655,2530391278,2443058075,3310321856,547512796,1265195639,437656594,3121275539,719700128,3762502690,387781147,218828297,3350065803,2830708150,2848461854,428169201,122466165,3720081049,1627235199,648017665,4122762354,1002783846,2117360635,695634755,3336358691,4234721005,4049844452,3704280881,2232435299,574624663,287343814,612205898,1039717051,840019705,2708326185,793451934,821288114,1391201670,3822090177,376187827,3113855344,1224348052,1679968233,2361698556,1058709744,752375421,2431590963,1321699145,3519142200,2734591178,188127444,2177869557,3727205754,2384911031,3215212461,2648976442,2450346104,3432737375,1180849278,331544205,3102249176,4150144569,2952102595,2159976285,2474404304,766078933,313773861,2570832044,2108100632,1668212892,3145456443,2013908262,418672217,3070356634,2594734927,1852171925,3867060991,3473416636,3907448597,2614737639,919489135,164948639,2094410160,2997825956,590424639,2486224549,1723872674,3157750862,3399941250,3501252752,3625268135,2555048196,3673637356,1343127501,4130281361,3599595085,2957853679,1297403050,81781910,3051593425,2283490410,532201772,1367295589,3926170974,895287692,1953757831,1093597963,492483431,3528626907,1446242576,1192455638,1636604631,209336225,344873464,1015671571,669961897,3375740769,3857572124,2973530695,3747192018,1933530610,3464042516,935293895,3454686199,2858115069,1863638845,3683022916,4085369519,3292445032,875313188,1080017571,3279033885,621591778,1233856572,2504130317,24197544,3017672716,3835484340,3247465558,2220981195,3060847922,1551124588,1463996600],il=[4104605777,1097159550,396673818,660510266,2875968315,2638606623,4200115116,3808662347,821712160,1986918061,3430322568,38544885,3856137295,718002117,893681702,1654886325,2975484382,3122358053,3926825029,4274053469,796197571,1290801793,1184342925,3556361835,2405426947,2459735317,1836772287,1381620373,3196267988,1948373848,3764988233,3385345166,3263785589,2390325492,1480485785,3111247143,3780097726,2293045232,548169417,3459953789,3746175075,439452389,1362321559,1400849762,1685577905,1806599355,2174754046,137073913,1214797936,1174215055,3731654548,2079897426,1943217067,1258480242,529487843,1437280870,3945269170,3049390895,3313212038,923313619,679998e3,3215307299,57326082,377642221,3474729866,2041877159,133361907,1776460110,3673476453,96392454,878845905,2801699524,777231668,4082475170,2330014213,4142626212,2213296395,1626319424,1906247262,1846563261,562755902,3708173718,1040559837,3871163981,1418573201,3294430577,114585348,1343618912,2566595609,3186202582,1078185097,3651041127,3896688048,2307622919,425408743,3371096953,2081048481,1108339068,2216610296,0,2156299017,736970802,292596766,1517440620,251657213,2235061775,2933202493,758720310,265905162,1554391400,1532285339,908999204,174567692,1474760595,4002861748,2610011675,3234156416,3693126241,2001430874,303699484,2478443234,2687165888,585122620,454499602,151849742,2345119218,3064510765,514443284,4044981591,1963412655,2581445614,2137062819,19308535,1928707164,1715193156,4219352155,1126790795,600235211,3992742070,3841024952,836553431,1669664834,2535604243,3323011204,1243905413,3141400786,4180808110,698445255,2653899549,2989552604,2253581325,3252932727,3004591147,1891211689,2487810577,3915653703,4237083816,4030667424,2100090966,865136418,1229899655,953270745,3399679628,3557504664,4118925222,2061379749,3079546586,2915017791,983426092,2022837584,1607244650,2118541908,2366882550,3635996816,972512814,3283088770,1568718495,3499326569,3576539503,621982671,2895723464,410887952,2623762152,1002142683,645401037,1494807662,2595684844,1335535747,2507040230,4293295786,3167684641,367585007,3885750714,1865862730,2668221674,2960971305,2763173681,1059270954,2777952454,2724642869,1320957812,2194319100,2429595872,2815956275,77089521,3973773121,3444575871,2448830231,1305906550,4021308739,2857194700,2516901860,3518358430,1787304780,740276417,1699839814,1592394909,2352307457,2272556026,188821243,1729977011,3687994002,274084841,3594982253,3613494426,2701949495,4162096729,322734571,2837966542,1640576439,484830689,1202797690,3537852828,4067639125,349075736,3342319475,4157467219,4255800159,1030690015,1155237496,2951971274,1757691577,607398968,2738905026,499347990,3794078908,1011452712,227885567,2818666809,213114376,3034881240,1455525988,3414450555,850817237,1817998408,3092726480],rl=[0,235474187,470948374,303765277,941896748,908933415,607530554,708780849,1883793496,2118214995,1817866830,1649639237,1215061108,1181045119,1417561698,1517767529,3767586992,4003061179,4236429990,4069246893,3635733660,3602770327,3299278474,3400528769,2430122216,2664543715,2362090238,2193862645,2835123396,2801107407,3035535058,3135740889,3678124923,3576870512,3341394285,3374361702,3810496343,3977675356,4279080257,4043610186,2876494627,2776292904,3076639029,3110650942,2472011535,2640243204,2403728665,2169303058,1001089995,899835584,666464733,699432150,59727847,226906860,530400753,294930682,1273168787,1172967064,1475418501,1509430414,1942435775,2110667444,1876241833,1641816226,2910219766,2743034109,2976151520,3211623147,2505202138,2606453969,2302690252,2269728455,3711829422,3543599269,3240894392,3475313331,3843699074,3943906441,4178062228,4144047775,1306967366,1139781709,1374988112,1610459739,1975683434,2076935265,1775276924,1742315127,1034867998,866637845,566021896,800440835,92987698,193195065,429456164,395441711,1984812685,2017778566,1784663195,1683407248,1315562145,1080094634,1383856311,1551037884,101039829,135050206,437757123,337553864,1042385657,807962610,573804783,742039012,2531067453,2564033334,2328828971,2227573024,2935566865,2700099354,3001755655,3168937228,3868552805,3902563182,4203181171,4102977912,3736164937,3501741890,3265478751,3433712980,1106041591,1340463100,1576976609,1408749034,2043211483,2009195472,1708848333,1809054150,832877231,1068351396,766945465,599762354,159417987,126454664,361929877,463180190,2709260871,2943682380,3178106961,3009879386,2572697195,2538681184,2236228733,2336434550,3509871135,3745345300,3441850377,3274667266,3910161971,3877198648,4110568485,4211818798,2597806476,2497604743,2261089178,2295101073,2733856160,2902087851,3202437046,2968011453,3936291284,3835036895,4136440770,4169408201,3535486456,3702665459,3467192302,3231722213,2051518780,1951317047,1716890410,1750902305,1113818384,1282050075,1584504582,1350078989,168810852,67556463,371049330,404016761,841739592,1008918595,775550814,540080725,3969562369,3801332234,4035489047,4269907996,3569255213,3669462566,3366754619,3332740144,2631065433,2463879762,2160117071,2395588676,2767645557,2868897406,3102011747,3069049960,202008497,33778362,270040487,504459436,875451293,975658646,675039627,641025152,2084704233,1917518562,1615861247,1851332852,1147550661,1248802510,1484005843,1451044056,933301370,967311729,733156972,632953703,260388950,25965917,328671808,496906059,1206477858,1239443753,1543208500,1441952575,2144161806,1908694277,1675577880,1842759443,3610369226,3644379585,3408119516,3307916247,4011190502,3776767469,4077384432,4245618683,2809771154,2842737049,3144396420,3043140495,2673705150,2438237621,2203032232,2370213795],sl=[0,185469197,370938394,487725847,741876788,657861945,975451694,824852259,1483753576,1400783205,1315723890,1164071807,1950903388,2135319889,1649704518,1767536459,2967507152,3152976349,2801566410,2918353863,2631447780,2547432937,2328143614,2177544179,3901806776,3818836405,4270639778,4118987695,3299409036,3483825537,3535072918,3652904859,2077965243,1893020342,1841768865,1724457132,1474502543,1559041666,1107234197,1257309336,598438867,681933534,901210569,1052338372,261314535,77422314,428819965,310463728,3409685355,3224740454,3710368113,3593056380,3875770207,3960309330,4045380933,4195456072,2471224067,2554718734,2237133081,2388260884,3212035895,3028143674,2842678573,2724322336,4138563181,4255350624,3769721975,3955191162,3667219033,3516619604,3431546947,3347532110,2933734917,2782082824,3099667487,3016697106,2196052529,2313884476,2499348523,2683765030,1179510461,1296297904,1347548327,1533017514,1786102409,1635502980,2087309459,2003294622,507358933,355706840,136428751,53458370,839224033,957055980,605657339,790073846,2373340630,2256028891,2607439820,2422494913,2706270690,2856345839,3075636216,3160175349,3573941694,3725069491,3273267108,3356761769,4181598602,4063242375,4011996048,3828103837,1033297158,915985419,730517276,545572369,296679730,446754879,129166120,213705253,1709610350,1860738147,1945798516,2029293177,1239331162,1120974935,1606591296,1422699085,4148292826,4233094615,3781033664,3931371469,3682191598,3497509347,3446004468,3328955385,2939266226,2755636671,3106780840,2988687269,2198438022,2282195339,2501218972,2652609425,1201765386,1286567175,1371368976,1521706781,1805211710,1620529459,2105887268,1988838185,533804130,350174575,164439672,46346101,870912086,954669403,636813900,788204353,2358957921,2274680428,2592523643,2441661558,2695033685,2880240216,3065962831,3182487618,3572145929,3756299780,3270937875,3388507166,4174560061,4091327024,4006521127,3854606378,1014646705,930369212,711349675,560487590,272786309,457992840,106852767,223377554,1678381017,1862534868,1914052035,2031621326,1211247597,1128014560,1580087799,1428173050,32283319,182621114,401639597,486441376,768917123,651868046,1003007129,818324884,1503449823,1385356242,1333838021,1150208456,1973745387,2125135846,1673061617,1756818940,2970356327,3120694122,2802849917,2887651696,2637442643,2520393566,2334669897,2149987652,3917234703,3799141122,4284502037,4100872472,3309594171,3460984630,3545789473,3629546796,2050466060,1899603969,1814803222,1730525723,1443857720,1560382517,1075025698,1260232239,575138148,692707433,878443390,1062597235,243256656,91341917,409198410,325965383,3403100636,3252238545,3704300486,3620022987,3874428392,3990953189,4042459122,4227665663,2460449204,2578018489,2226875310,2411029155,3198115200,3046200461,2827177882,2743944855],al=[0,218828297,437656594,387781147,875313188,958871085,775562294,590424639,1750626376,1699970625,1917742170,2135253587,1551124588,1367295589,1180849278,1265195639,3501252752,3720081049,3399941250,3350065803,3835484340,3919042237,4270507174,4085369519,3102249176,3051593425,2734591178,2952102595,2361698556,2177869557,2530391278,2614737639,3145456443,3060847922,2708326185,2892417312,2404901663,2187128086,2504130317,2555048196,3542330227,3727205754,3375740769,3292445032,3876557655,3926170974,4246310725,4027744588,1808481195,1723872674,1910319033,2094410160,1608975247,1391201670,1173430173,1224348052,59984867,244860394,428169201,344873464,935293895,984907214,766078933,547512796,1844882806,1627235199,2011214180,2062270317,1507497298,1423022939,1137477952,1321699145,95345982,145085239,532201772,313773861,830661914,1015671571,731183368,648017665,3175501286,2957853679,2807058932,2858115069,2305455554,2220981195,2474404304,2658625497,3575528878,3625268135,3473416636,3254988725,3778151818,3963161475,4213447064,4130281361,3599595085,3683022916,3432737375,3247465558,3802222185,4020912224,4172763771,4122762354,3201631749,3017672716,2764249623,2848461854,2331590177,2280796200,2431590963,2648976442,104699613,188127444,472615631,287343814,840019705,1058709744,671593195,621591778,1852171925,1668212892,1953757831,2037970062,1514790577,1463996600,1080017571,1297403050,3673637356,3623636965,3235995134,3454686199,4007360968,3822090177,4107101658,4190530515,2997825956,3215212461,2830708150,2779915199,2256734592,2340947849,2627016082,2443058075,172466556,122466165,273792366,492483431,1047239e3,861968209,612205898,695634755,1646252340,1863638845,2013908262,1963115311,1446242576,1530455833,1277555970,1093597963,1636604631,1820824798,2073724613,1989249228,1436590835,1487645946,1337376481,1119727848,164948639,81781910,331544205,516552836,1039717051,821288114,669961897,719700128,2973530695,3157750862,2871682645,2787207260,2232435299,2283490410,2667994737,2450346104,3647212047,3564045318,3279033885,3464042516,3980931627,3762502690,4150144569,4199882800,3070356634,3121275539,2904027272,2686254721,2200818878,2384911031,2570832044,2486224549,3747192018,3528626907,3310321856,3359936201,3950355702,3867060991,4049844452,4234721005,1739656202,1790575107,2108100632,1890328081,1402811438,1586903591,1233856572,1149249077,266959938,48394827,369057872,418672217,1002783846,919489135,567498868,752375421,209336225,24197544,376187827,459744698,945164165,895287692,574624663,793451934,1679968233,1764313568,2117360635,1933530610,1343127501,1560637892,1243112415,1192455638,3704280881,3519142200,3336358691,3419915562,3907448597,3857572124,4075877127,4294704398,3029510009,3113855344,2927934315,2744104290,2159976285,2377486676,2594734927,2544078150],nl=[0,151849742,303699484,454499602,607398968,758720310,908999204,1059270954,1214797936,1097159550,1517440620,1400849762,1817998408,1699839814,2118541908,2001430874,2429595872,2581445614,2194319100,2345119218,3034881240,3186202582,2801699524,2951971274,3635996816,3518358430,3399679628,3283088770,4237083816,4118925222,4002861748,3885750714,1002142683,850817237,698445255,548169417,529487843,377642221,227885567,77089521,1943217067,2061379749,1640576439,1757691577,1474760595,1592394909,1174215055,1290801793,2875968315,2724642869,3111247143,2960971305,2405426947,2253581325,2638606623,2487810577,3808662347,3926825029,4044981591,4162096729,3342319475,3459953789,3576539503,3693126241,1986918061,2137062819,1685577905,1836772287,1381620373,1532285339,1078185097,1229899655,1040559837,923313619,740276417,621982671,439452389,322734571,137073913,19308535,3871163981,4021308739,4104605777,4255800159,3263785589,3414450555,3499326569,3651041127,2933202493,2815956275,3167684641,3049390895,2330014213,2213296395,2566595609,2448830231,1305906550,1155237496,1607244650,1455525988,1776460110,1626319424,2079897426,1928707164,96392454,213114376,396673818,514443284,562755902,679998e3,865136418,983426092,3708173718,3557504664,3474729866,3323011204,4180808110,4030667424,3945269170,3794078908,2507040230,2623762152,2272556026,2390325492,2975484382,3092726480,2738905026,2857194700,3973773121,3856137295,4274053469,4157467219,3371096953,3252932727,3673476453,3556361835,2763173681,2915017791,3064510765,3215307299,2156299017,2307622919,2459735317,2610011675,2081048481,1963412655,1846563261,1729977011,1480485785,1362321559,1243905413,1126790795,878845905,1030690015,645401037,796197571,274084841,425408743,38544885,188821243,3613494426,3731654548,3313212038,3430322568,4082475170,4200115116,3780097726,3896688048,2668221674,2516901860,2366882550,2216610296,3141400786,2989552604,2837966542,2687165888,1202797690,1320957812,1437280870,1554391400,1669664834,1787304780,1906247262,2022837584,265905162,114585348,499347990,349075736,736970802,585122620,972512814,821712160,2595684844,2478443234,2293045232,2174754046,3196267988,3079546586,2895723464,2777952454,3537852828,3687994002,3234156416,3385345166,4142626212,4293295786,3841024952,3992742070,174567692,57326082,410887952,292596766,777231668,660510266,1011452712,893681702,1108339068,1258480242,1343618912,1494807662,1715193156,1865862730,1948373848,2100090966,2701949495,2818666809,3004591147,3122358053,2235061775,2352307457,2535604243,2653899549,3915653703,3764988233,4219352155,4067639125,3444575871,3294430577,3746175075,3594982253,836553431,953270745,600235211,718002117,367585007,484830689,133361907,251657213,2041877159,1891211689,1806599355,1654886325,1568718495,1418573201,1335535747,1184342925];function ol(e){for(var t=[],i=0;i>2,this._Ke[i][t%4]=a[t],this._Kd[e-i][t%4]=a[t];for(var n,o=0,l=s;l>16&255]<<24^Ko[n>>8&255]<<16^Ko[255&n]<<8^Ko[n>>24&255]^$o[o]<<24,o+=1,8!=s)for(t=1;t>8&255]<<8^Ko[n>>16&255]<<16^Ko[n>>24&255]<<24;for(t=s/2+1;t>2,h=l%4,this._Ke[d][h]=a[t],this._Kd[e-d][h]=a[t++],l++}for(var d=1;d>24&255]^sl[n>>16&255]^al[n>>8&255]^nl[255&n]},ll.prototype.encrypt=function(e){if(16!=e.length)throw new Error("invalid plaintext size (must be 16 bytes)");for(var t=this._Ke.length-1,i=[0,0,0,0],r=ol(e),s=0;s<4;s++)r[s]^=this._Ke[0][s];for(var a=1;a>24&255]^Qo[r[(s+1)%4]>>16&255]^Xo[r[(s+2)%4]>>8&255]^Jo[255&r[(s+3)%4]]^this._Ke[a][s];r=i.slice()}var n,o=Go(16);for(s=0;s<4;s++)n=this._Ke[t][s],o[4*s]=255&(Ko[r[s]>>24&255]^n>>24),o[4*s+1]=255&(Ko[r[(s+1)%4]>>16&255]^n>>16),o[4*s+2]=255&(Ko[r[(s+2)%4]>>8&255]^n>>8),o[4*s+3]=255&(Ko[255&r[(s+3)%4]]^n);return o},ll.prototype.decrypt=function(e){if(16!=e.length)throw new Error("invalid ciphertext size (must be 16 bytes)");for(var t=this._Kd.length-1,i=[0,0,0,0],r=ol(e),s=0;s<4;s++)r[s]^=this._Kd[0][s];for(var a=1;a>24&255]^el[r[(s+3)%4]>>16&255]^tl[r[(s+2)%4]>>8&255]^il[255&r[(s+1)%4]]^this._Kd[a][s];r=i.slice()}var n,o=Go(16);for(s=0;s<4;s++)n=this._Kd[t][s],o[4*s]=255&(qo[r[s]>>24&255]^n>>24),o[4*s+1]=255&(qo[r[(s+3)%4]>>16&255]^n>>16),o[4*s+2]=255&(qo[r[(s+2)%4]>>8&255]^n>>8),o[4*s+3]=255&(qo[255&r[(s+1)%4]]^n);return o};var dl=function(e){if(!(this instanceof dl))throw Error("AES must be instanitated with `new`");this.description="Electronic Code Block",this.name="ecb",this._aes=new ll(e)};dl.prototype.encrypt=function(e){if((e=No(e)).length%16!=0)throw new Error("invalid plaintext size (must be multiple of 16 bytes)");for(var t=Go(e.length),i=Go(16),r=0;rNumber.MAX_SAFE_INTEGER)throw new Error("integer value out of safe range");for(var t=15;t>=0;--t)this._counter[t]=e%256,e=parseInt(e/256)},pl.prototype.setBytes=function(e){if(16!=(e=No(e,!0)).length)throw new Error("invalid counter bytes size (must be 16 bytes)");this._counter=e},pl.prototype.increment=function(){for(var e=15;e>=0;e--){if(255!==this._counter[e]){this._counter[e]++;break}this._counter[e]=0}};var fl=function(e,t){if(!(this instanceof fl))throw Error("AES must be instanitated with `new`");this.description="Counter",this.name="ctr",t instanceof pl||(t=new pl(t)),this._counter=t,this._remainingCounter=null,this._remainingCounterIndex=16,this._aes=new ll(e)};fl.prototype.encrypt=function(e){for(var t=No(e,!0),i=0;i16)throw new Error("PKCS#7 padding byte out of range");for(var i=e.length-t,r=0;r>>32-i}function Sl(e){return(255&vl[e>>>24&255])<<24|(255&vl[e>>>16&255])<<16|(255&vl[e>>>8&255])<<8|255&vl[255&e]}function wl(e){return e^El(e,2)^El(e,10)^El(e,18)^El(e,24)}function Tl(e){return e^El(e,13)^El(e,23)}function kl(e,t,i){const r=new Array(4),s=new Array(4);for(let t=0;t<4;t++)s[0]=255&e[4*t],s[1]=255&e[4*t+1],s[2]=255&e[4*t+2],s[3]=255&e[4*t+3],r[t]=s[0]<<24|s[1]<<16|s[2]<<8|s[3];for(let e,t=0;t<32;t+=4)e=r[1]^r[2]^r[3]^i[t+0],r[0]^=wl(Sl(e)),e=r[2]^r[3]^r[0]^i[t+1],r[1]^=wl(Sl(e)),e=r[3]^r[0]^r[1]^i[t+2],r[2]^=wl(Sl(e)),e=r[0]^r[1]^r[2]^i[t+3],r[3]^=wl(Sl(e));for(let e=0;e<16;e+=4)t[e]=r[3-e/4]>>>24&255,t[e+1]=r[3-e/4]>>>16&255,t[e+2]=r[3-e/4]>>>8&255,t[e+3]=255&r[3-e/4]}function Cl(e,t,i,{padding:r="pkcs#7",mode:s,iv:a=[],output:n="string"}={}){if("cbc"===s&&("string"==typeof a&&(a=_l(a)),16!==a.length))throw new Error("iv is invalid");if("string"==typeof t&&(t=_l(t)),16!==t.length)throw new Error("key is invalid");if(e="string"==typeof e?i!==yl?function(e){const t=[];for(let i=0,r=e.length;i>>6),t.push(128|63&r);else if(r<=55295||r>=57344&&r<=65535)t.push(224|r>>>12),t.push(128|r>>>6&63),t.push(128|63&r);else{if(!(r>=65536&&r<=1114111))throw t.push(r),new Error("input is not supported");i++,t.push(240|r>>>18&28),t.push(128|r>>>12&63),t.push(128|r>>>6&63),t.push(128|63&r)}}return t}(e):_l(e):[...e],("pkcs#5"===r||"pkcs#7"===r)&&i!==yl){const t=Al-e.length%Al;for(let i=0;i=Al;){const t=e.slice(c,c+16),r=new Array(16);if("cbc"===s)for(let e=0;e1===(e=e.toString(16)).length?"0"+e:e)).join(""):function(e){const t=[];for(let i=0,r=e.length;i=240&&e[i]<=247?(t.push(String.fromCodePoint(((7&e[i])<<18)+((63&e[i+1])<<12)+((63&e[i+2])<<6)+(63&e[i+3]))),i+=3):e[i]>=224&&e[i]<=239?(t.push(String.fromCodePoint(((15&e[i])<<12)+((63&e[i+1])<<6)+(63&e[i+2]))),i+=2):e[i]>=192&&e[i]<=223?(t.push(String.fromCodePoint(((31&e[i])<<6)+(63&e[i+1]))),i++):t.push(String.fromCodePoint(e[i]));return t.join("")}(l):l}function Rl(e,t,i){for(let r=2;re)return this.preDelayTimestamp-e>1e3&&this.player.debug.warn("CommonDemux",`getDelay() and preDelayTimestamp is ${this.preDelayTimestamp} > timestamp is ${e} more than ${this.preDelayTimestamp-e}ms and return ${this.delay}`),this.preDelayTimestamp=e,this.delay;if(this.firstTimestamp){if(e){const t=Date.now()-this.startTimestamp,i=e-this.firstTimestamp;t>=i?(this.isStreamTsMoreThanLocal=!1,this.delay=t-i):(this.isStreamTsMoreThanLocal=!0,this.delay=i-t)}}else this.firstTimestamp=e,this.startTimestamp=Date.now(),this.delay=-1;return this.preDelayTimestamp=e,this.delay}getDelayNotUpdateDelay(e,t){if(!e||!this.player.isDemuxDecodeFirstIIframeInit())return-1;if(t===Fe)return this.pushLatestDelay;if(this.preDelayTimestamp&&this.preDelayTimestamp-e>1e3)return this.player.debug.warn("CommonDemux",`getDelayNotUpdateDelay() and preDelayTimestamp is ${this.preDelayTimestamp} > timestamp is ${e} more than ${this.preDelayTimestamp-e}ms and return -1`),-1;if(this.firstTimestamp){let t=-1;if(e){const i=Date.now()-this.startTimestamp,r=e-this.firstTimestamp;t=i>=r?i-r:r-i}return t}return-1}resetDelay(){this.firstTimestamp=null,this.startTimestamp=null,this.delay=-1,this.dropping=!1}resetAllDelay(){this.resetDelay(),this.preDelayTimestamp=null}initInterval(){this.player.isUseHls265()?this.player.debug.log("CommonDemux","initInterval() and is hls and support hls265 so return"):-1===this.player.getStreamType().indexOf(f)?this.player.isPlaybackCacheBeforeDecodeForFpsRender()?this.player.debug.log("CommonDemux","initInterval() and playback and playbackIsCacheBeforeDecodeForFpsRender is true so return"):(this.player.debug.log("CommonDemux","setInterval()"),this._loop(),this.stopId=setInterval((()=>{let e=(new Date).getTime();this.preLoopTimestamp||(this.preLoopTimestamp=e);const t=e-this.preLoopTimestamp;this.updateHistoryIntervalDiffTimeList(t),t>100&&this.player.debug.warn("CommonDemux",`loop demux diff time is ${t}`),this._loop(),this.preLoopTimestamp=(new Date).getTime()}),20)):this.player.debug.log("CommonDemux","initInterval() and is worker stream so return")}clearStopInterval(){this.stopId&&(clearInterval(this.stopId),this.stopId=null)}updateHistoryIntervalDiffTimeList(e){this.historyIntervalDiffTimeList.length>5&&this.historyIntervalDiffTimeList.shift(),this.historyIntervalDiffTimeList.push(e)}isHistoryIntervalDiffTimeAllLarge(){if(this.historyIntervalDiffTimeList.length<5)return!1;for(let e=0;e{let e=null;this.bufferList.length&&(e=this.bufferList.shift(),this._doDecoderDecode(e))};e();const t=Math.ceil(1e3/(this.playbackStreamFps*this.player.getPlaybackRate()));this.player.debug.log("CommonDemux",`initPlaybackCacheLoop() and fragDuration is ${t}, playbackStreamFps is ${this.playbackStreamFps}, playbackRate is ${this.player.getPlaybackRate()}`),this.stopId=setInterval(e,t)}_loop(){let e;const t=this.player._opt.videoBuffer,i=this.player._opt.videoBufferDelay,r=this.player._opt.playType===g;if(this.bufferList.length){if(this.isPushDropping)return void this.player.debug.warn("CommonDemux",`_loop isPushDropping is true and bufferList length is ${this.bufferList.length}`);if(this.dropping){for(e=this.bufferList.shift(),this.player.debug.warn("CommonDemux",`_loop is dropping and data.ts is ${e.ts}, data.type is ${e.type}, data.isIFrame is ${e.isIFrame}, delay is ${this.delay} ,buffer list is ${this.bufferList.length}`);!e.isIFrame&&this.bufferList.length;)e=this.bufferList.shift();const t=this.getDelayNotUpdateDelay(e.ts,e.type);e.isIFrame&&t<=this.getNotDroppingDelayTs()&&(this.player.debug.log("CommonDemux",`_loop data isIFrame is true and delay is ${this.delay}`),this.dropping=!1,this._doDecoderDecode(e),this._decodeNext(e))}else if(this.player.isPlayback()||this.player.isPlayUseMSE()||0===t)for(;this.bufferList.length;)e=this.bufferList.shift(),this._doDecoderDecode(e);else if(e=this.bufferList[0],-1===this.getDelay(e.ts,e.type))this.player.debug.log("CommonDemux",`delay is -1 and data.ts is ${e.ts} data.type is ${e.type}`),this.bufferList.shift(),this._doDecoderDecode(e),this._decodeNext(e);else if(this.delay>i+t&&r)this.hasIframeInBufferList()?(this.player.debug.warn("CommonDemux",`_loop delay is ${this.delay}, set dropping is true`),this.resetAllDelay(),this.dropping=!0,this.player.updateStats({isDropping:!0})):(this.bufferList.shift(),this._doDecoderDecode(e),this._decodeNext(e));else for(;this.bufferList.length;){if(e=this.bufferList[0],!(this.getDelay(e.ts,e.type)>t)){this.delay<0&&this.player.debug.warn("CommonDemux",`_loop delay is ${this.delay} bufferList is ${this.bufferList}`);break}this.bufferList.shift(),this._doDecoderDecode(e)}}else-1!==this.delay&&this.player.debug.log("CommonDemux","loop() bufferList is empty and reset delay"),this.resetAllDelay()}_doDecode(e,t,i,r,s=0){const a=this.player;let n={ts:i,cts:s,type:t,isIFrame:!1};this.player.isPlayer()?(t===Oe&&a._opt.playType===g&&this.calcNetworkDelay(i),a._opt.useWCS&&!a._opt.useOffscreen||a._opt.useMSE?(t===Oe&&(n.isIFrame=r),this.pushBuffer(e,n)):t===Oe?a.decoderWorker&&a.decoderWorker.decodeVideo(e,i,r):t===Fe&&a._opt.hasAudio&&a.decoderWorker&&a.decoderWorker.decodeAudio(e,i)):this.player.isPlayback()&&(t===Oe&&(n.isIFrame=r),this.player.isPlaybackOnlyDecodeIFrame()?t===Oe&&r&&this.pushBuffer(e,n):this.player.isPlaybackCacheBeforeDecodeForFpsRender()||1===this.player.getPlaybackRate()?this.pushBuffer(e,n):this.pushBuffer(e,n,!1))}_doDecodeByHls(e,t,i,r,s=0){let a=!1;if(t===Fe&&Qr(e)&&(this.player.debug.log("CommonDemux",`hls pushBuffer audio ts is ${i}, isAacCodecPacket is true`),a=!0,this.player.isRecordTypeFlv())){const t=new Uint8Array(e);this.player.recorder.addAACSequenceHeader(t,i)}let n=!1;if(t===Oe&&r&&Aa(e)&&(this.player.debug.log("CommonDemux",`hls pushBuffer video ts is ${i}, isVideoSequenceHeader is true`),n=!0,this.player.isRecordTypeFlv())){const t=new Uint8Array(e);this.player.recorder.addVideoSequenceHeader(t,i)}this.player.recording&&ba(n)&&ba(a)&&this.handleRecording(e,t,i,r,s),t===Oe?this._doDecoderDecode({ts:i,cts:s,payload:e,type:Oe,isIFrame:r}):t===Fe&&this._doDecoderDecode({ts:i,payload:e,type:Fe})}_doDecodeByFmp4(e,t,i,r,s=0){this._doDecode(e,t,i,r,s)}_doDecodeByTs(e,t,i,r,s=0){this._doDecode(e,t,i,r,s)}_decodeNext(e){const t=e.ts;if(0===this.bufferList.length)return;let i=this.bufferList[0];const r=i.ts-t,s=e.type===Oe&&i.type===Fe,a=e.type===Oe&&Aa(e.payload);(r<=20||s||a)&&(this.player.debug.log("CommonDemux",`decode data type is ${e.type} and\n ts is ${t} next data type is ${i.type} ts is ${i.ts}\n diff is ${r} and isVideoAndNextAudio is ${s} and isVideoSqeHeader is ${a}`),this.bufferList.shift(),this._doDecoderDecode(i))}_doDecoderDecode(e){const t=this.player,{webcodecsDecoder:i,mseDecoder:r}=t;this.player.isPlayer()&&this.player.updateStats({buf:this.delay}),e.type===Fe?t._opt.hasAudio&&(t._opt.useMSE&&t._opt.mseDecodeAudio?r.decodeAudio(e.payload,e.ts):t.decoderWorker&&t.decoderWorker.decodeAudio(e.payload,e.ts)):e.type===Oe&&(t._opt.isEmitSEI&&this.findSei(e.payload,e.ts),t._opt.useWCS&&!t._opt.useOffscreen?i.decodeVideo(e.payload,e.ts,e.isIFrame,e.cts):t._opt.useMSE?r.decodeVideo(e.payload,e.ts,e.isIFrame,e.cts):t.decoderWorker&&t.decoderWorker.decodeVideo(e.payload,e.ts,e.isIFrame))}pushBuffer(e,t,i=!0){const r=this.player._opt.videoBuffer,s=this.player._opt.videoBufferDelay,a=this.player.isPlayer();if(t.type===Fe&&Qr(e)){if(this.player.debug.log("CommonDemux",`pushBuffer() audio ts is ${t.ts}, isAacCodecPacket is true`),this.player.isRecordTypeFlv()){const i=new Uint8Array(e);this.player.recorder.addAACSequenceHeader(i,t.ts)}this._doDecoderDecode({ts:t.ts,payload:e,type:Fe})}else if(t.type===Oe&&t.isIFrame&&Aa(e)){if(this.player.debug.log("CommonDemux",`pushBuffer() video ts is ${t.ts}, isVideoSequenceHeader is true`),this.player.isRecordTypeFlv()){const i=new Uint8Array(e);this.player.recorder.addVideoSequenceHeader(i,t.ts)}this._doDecoderDecode({ts:t.ts,payload:e,type:Oe,isIFrame:t.isIFrame,cts:t.cts})}else{if(this.player.recording&&this.handleRecording(e,t.type,t.ts,t.isIFrame,t.cts),a){if(this.preTimestampDuration>0&&this.preTimestamp>0&&t.type===Oe){const e=t.ts-this.preTimestamp,i=this.preTimestampDuration+this.preTimestampDuration/2;e>=i&&this.player.debug.log("CommonDemux",`pushBuffer() video\n ts is ${t.ts}, preTimestamp is ${this.preTimestamp},\n diff is ${e} and preTimestampDuration is ${this.preTimestampDuration} and maxDiff is ${i}\n maybe trigger black screen or flower screen`)}if(this.preTimestamp>0&&t.tsZ&&(this.player.debug.warn("CommonDemux",`pushBuffer() video\n ts is ${t.ts}, preTimestamp is ${this.preTimestamp},\n diff is ${this.preTimestamp-t.ts} more than 3600000\n and resetAllDelay()`),this.resetAllDelay()),t.ts<=this.preTimestamp&&this.preTimestamp>0&&t.type===Oe&&(this.player.debug.warn("CommonDemux",`pushBuffer() video\n ts is ${t.ts} less than (or equal) preTimestamp is ${this.preTimestamp} and\n payloadBufferSize is ${e.byteLength} and prevPayloadBufferSize is ${this.prevPayloadBufferSize}`),this.player._opt.isDropSameTimestampGop&&this.player.isDemuxDecodeFirstIIframeInit())){const e=this.hasIframeInBufferList(),t=ba(this.isPushDropping);return this.player.debug.log("CommonDemux",`pushBuffer(), isDropSameTimestampGop is true and\n hasIframe is ${e} and isNotPushDropping is ${t} and next drop buffer`),void(e&&t?this.dropBuffer$2():this.clearBuffer(!0))}if(this.player.isDemuxDecodeFirstIIframeInit()){let e=this.getDelayNotUpdateDelay(t.ts,t.type);this.pushLatestDelay=e;const i=s+r;this.player._opt.useMSE?e>i&&this.delay0&&this.hasIframeInBufferList()&&!1===this.isPushDropping&&(this.player.debug.warn("CommonDemux",`useMSE, pushLatestDelay is ${e} > ${s+r}, bufferList is ${this.bufferList.length}, delay is ${this.delay} and dropBuffer$2()`),this.dropBuffer$2()):e>i&&this.delay0&&this.hasIframeInBufferList()&&!1===this.isPushDropping&&(this.player.debug.warn("CommonDemux",`useWCS, pushLatestDelay is ${e} > ${s+r},bufferList is ${this.bufferList.length}, delay is ${this.delay} and dropBuffer$2()`),this.dropBuffer$2()),this.isHistoryIntervalDiffTimeAllLarge()&&ba(this.player.visibility)&&(this.player._opt.useMSE?this.hasIframeInBufferList()&&!1===this.isPushDropping&&(this.player.debug.warn("CommonDemux",`useMSE, page visibility is false and\n history interval diff is ${this.historyIntervalDiffTimeList.join(",")} and\n bufferList is ${this.bufferList.length},\n delay is ${this.delay} and dropBuffer$2()`),this.dropBuffer$2()):this.hasIframeInBufferList()&&!1===this.isPushDropping&&(this.player.debug.warn("CommonDemux",`useWCS, page visibility is false and\n history interval diff is ${this.historyIntervalDiffTimeList.join(",")} and\n bufferList is ${this.bufferList.length},\n delay is ${this.delay} and dropBuffer$2()`),this.dropBuffer$2()))}t.type===Oe&&(this.preTimestamp>0&&(this.preTimestampDuration=t.ts-this.preTimestamp),this.prevPayloadBufferSize=e.byteLength,this.preTimestamp=t.ts)}if(i?t.type===Fe?this.bufferList.push({ts:t.ts,payload:e,type:Fe}):t.type===Oe&&this.bufferList.push({ts:t.ts,cts:t.cts,payload:e,type:Oe,isIFrame:t.isIFrame}):t.type===Oe?this._doDecoderDecode({ts:t.ts,cts:t.cts,payload:e,type:Oe,isIFrame:t.isIFrame}):t.type===Fe&&this._doDecoderDecode({ts:t.ts,payload:e,type:Fe}),this.player.isPlaybackCacheBeforeDecodeForFpsRender()&&(Ns(this.playbackStreamVideoFps)||Ns(this.playbackStreamAudioFps))){let e=this.playbackStreamVideoFps,t=this.playbackStreamAudioFps;if(Ns(this.playbackStreamVideoFps)&&(e=ua(this.bufferList,Oe),e>0&&(this.playbackStreamVideoFps=e,this.player.video&&this.player.video.setStreamFps(this.playbackStreamVideoFps),this.playbackStreamFps=t?e+t:e,ba(this.player._opt.hasAudio)&&(this.player.debug.log(this.TAG_NAME,"playbackCacheBeforeDecodeForFpsRender,_opt.hasAudio is false and set streamAudioFps is 0"),this.playbackStreamAudioFps=0),this.initPlaybackCacheLoop())),Ns(this.playbackStreamAudioFps)&&(t=ua(this.bufferList,Fe),t>0&&(this.playbackStreamAudioFps=t,this.playbackStreamFps=e?e+t:t,this.initPlaybackCacheLoop())),Ns(this.playbackStreamVideoFps)&&Ns(this.playbackStreamAudioFps)){const i=this.bufferList.map((e=>({type:e.type,ts:e.ts})));this.player.debug.log("CommonDemux",`playbackCacheBeforeDecodeForFpsRender, calc streamAudioFps is ${t}, streamVideoFps is ${e}, bufferListLength is ${this.bufferList.length} and ts list is ${JSON.stringify(i)}`)}const i=this.getAudioBufferLength()>0,r=i?60:40;this.bufferList.length>=r&&(this.debug.warn("CommonDemux",`playbackCacheBeforeDecodeForFpsRender, bufferListLength is ${this.bufferList.length} more than ${r}, and hasAudio is ${i} an set streamFps is 25`),this.playbackStreamVideoFps=e,this.player.video&&this.player.video.setStreamFps(this.playbackStreamVideoFps),i?(this.playbackStreamAudioFps=25,this.playbackStreamFps=this.playbackStreamVideoFps+this.playbackStreamAudioFps):this.playbackStreamFps=this.playbackStreamVideoFps,this.initPlaybackCacheLoop())}}}dropBuffer$2(){if(this.bufferList.length>0){let e=this.bufferList.findIndex((e=>va(e.isIFrame)&&e.type===Oe));if(this.isAllIframeInBufferList())for(let t=0;t=this.getNotDroppingDelayTs()){this.player.debug.log("CommonDemux",`dropBuffer$2() isAllIframeInBufferList() is true, and index is ${t} and tempDelay is ${r} and notDroppingDelayTs is ${this.getNotDroppingDelayTs()}`),e=t;break}}if(e>=0){this.isPushDropping=!0,this.player.updateStats({isDropping:!0});const t=this.bufferList.length;this.bufferList=this.bufferList.slice(e);const i=this.bufferList.shift();this.resetAllDelay(),this.getDelay(i.ts,i.type),this._doDecoderDecode(i),this.isPushDropping=!1,this.player.debug.log("CommonDemux",`dropBuffer$2() iFrameIndex is ${e},and old bufferList length is ${t} ,and new bufferList length is ${this.bufferList.length} and new delay is ${this.delay} `)}else this.isPushDropping=!1}0===this.bufferList.length&&(this.isPushDropping=!1)}clearBuffer(e=!1){this.player.debug.log("CommonDemux",`clearBuffer,buffer length is ${this.bufferList.length}, need clear is ${e} and _opt.checkFirstIFrame is ${this.player._opt.checkFirstIFrame}`),e&&(this.bufferList=[]),this.player.isPlayer()&&(this.resetAllDelay(),va(this.player._opt.checkFirstIFrame)&&(this.dropping=!0,this.player.updateStats({isDropping:!0}))),this.player.decoderCheckFirstIFrame()}calcNetworkDelay(e){if(!(this.player.isDemuxDecodeFirstIIframeInit()&&e>0))return;null===this.bufferStartDts?(this.bufferStartDts=e,this.bufferStartLocalTs=ps()):et?i-t:0;r>this.player._opt.networkDelay&&this.player._opt.playType===g&&(this.player.debug.warn("CommonDemux",`delay is more than networkDelay and now dts:${e},start dts is ${this.bufferStartDts}, vs start is ${t},local diff is ${i} ,delay is ${r}, _opt.networkDelay is ${this.player._opt.networkDelay}`),this.player.emit(rt.networkDelayTimeout,r)),this.player.updateStats({netBuf:r})}calcIframeIntervalTimestamp(e){if(null===this.preIframeTs)this.preIframeTs=e;else if(this.preIframeTs{t.type===Oe&&(e+=1)})),e}getAudioBufferLength(){let e=0;return this.bufferList.forEach((t=>{t.type===Fe&&(e+=1)})),e}hasIframeInBufferList(){return this.bufferList.some((e=>e.type===Oe&&e.isIFrame))}isAllIframeInBufferList(){const e=this.getVideoBufferLength();let t=0;return this.bufferList.forEach((e=>{e.type===Oe&&e.isIFrame&&(t+=1)})),e===t}getInputByteLength(){return 0}getIsStreamTsMoreThanLocal(){return this.isStreamTsMoreThanLocal}close(){}reset(){}findSei(e,t,i=!1){let r=4;zs(this.nalUnitSize)&&(r=this.nalUnitSize);const s=zn(e.slice(5),r);if(ba(i)){const e=this.player.getVideoInfo();e&&e.encType&&(i=e.encType===At)}s.forEach((e=>{const r=i?e[0]>>>1&63:31&e[0];(i&&(r===xt||r===Dt)||ba(i)&&r===Et.kSliceSEI)&&this.player.emit(rt.videoSEI,{ts:t,data:e})}))}handleRecording(e,t,i,r,s){if(this.player.isRecordTypeFlv()){const r=new Uint8Array(e);t===Oe?this.player.recorder.addVideo(r,i):t===Fe&&this.player.recorder.addAudio(r,i)}else if(this.player.isRecordTypeMp4()){const a=new Uint8Array(e);if(this.player.recorder.isWasmMp4()){if(t===Oe)this.player.recorder.handleAddNaluTrack(a.slice(5),r,i,s);else if(t===Fe){const t=new Uint8Array(e);this.player.recorder.handleAddAudioTrack(Xr(t)?t.slice(2):t.slice(1),i)}}else t===Oe&&this.player.recorder.handleAddNaluTrack(a.slice(5),r,i,s)}}updateNalUnitSize(e){const t=15&e[0];this.player.video.updateVideoInfo({encTypeCode:t});const i=t===yt;this.nalUnitSize=function(e,t){let i=null;return t?e.length>=28&&(i=1+(3&e[26])):e.length>=12&&(i=1+(3&e[9])),i}(e,i),this.player.debug.log(this.TAG_NAME,`demux() isVideoSequenceHeader is true and isHevc is ${i} and nalUnitSize is ${this.nalUnitSize}`)}cryptoPayload(e,t){let i=e,r=this.player;if(r._opt.isM7sCrypto)if(r._opt.cryptoKey&&r._opt.cryptoKey.byteLength>0&&r._opt.cryptoIV&&r._opt.cryptoIV.byteLength>0){const t=this.player.video.getVideoInfo();t.encTypeCode?i=function(e,t,i,r=!1){t=new Uint8Array(t),i=new Uint8Array(i);const s=e.byteLength;let a=5;for(;as)break;let l=e[a+4],d=!1;if(r?(l=l>>>1&63,d=[0,1,2,3,4,5,6,7,8,9,16,17,18,19,20,21].includes(l)):(l&=31,d=1===l||5===l),d){const r=e.slice(a+4+2,a+4+o);let s=new ml.ModeOfOperation.ctr(t,new ml.Counter(i));const n=s.decrypt(r);s=null,e.set(n,a+4+2)}a=a+4+o}var n;return e}(e,r._opt.cryptoKey,r._opt.cryptoIV,t.encTypeCode===yt):r.debug.warn(this.TAG_NAME,`videoInfo.encTypeCode is ${t.encTypeCode}`)}else r.debug.error(this.TAG_NAME,`isM7sCrypto cryptoKey.length is ${r._opt.cryptoKey&&r._opt.cryptoKey.byteLength} or cryptoIV.length is ${r._opt.cryptoIV&&r._opt.cryptoIV.byteLength} null`);else if(r._opt.isSm4Crypto)r._opt.sm4CryptoKey&&t?i=function(e,t,i=!1){const r=e.byteLength;let s=5;for(;sr)break;let o=e[s+4],l=!1;if(i?(o=o>>>1&63,l=[0,1,2,3,4,5,6,7,8,9,16,17,18,19,20,21].includes(o)):(o&=31,l=1===o||5===o),l){const i=Cl(e.slice(s+4+2,s+4+n),t,0,{padding:"none",output:"array"});e.set(i,s+4+2)}s=s+4+n}var a;return e}(e,r._opt.sm4CryptoKey):r._opt.sm4CryptoKey||r.debug.error(this.TAG_NAME,"isSm4Crypto opt.sm4CryptoKey is null");else if(r._opt.isXorCrypto)if(r._opt.cryptoKey&&r._opt.cryptoKey.byteLength>0&&r._opt.cryptoIV&&r._opt.cryptoIV.byteLength>0){const t=this.player.video.getVideoInfo();i=function(e,t,i,r=!1){const s=e.byteLength;let a=5;for(;as)break;let l=e[a+4],d=!1;if(r?(l=l>>>1&63,d=[0,1,2,3,4,5,6,7,8,9,16,17,18,19,20,21].includes(l)):(l&=31,d=1===l||5===l),d){const r=Rl(e.slice(a+4,a+4+o),t,i);e.set(r,a+4)}a=a+4+o}var n;return e}(e,r._opt.cryptoKey,r._opt.cryptoIV,t.encTypeCode===yt)}else r.debug.error(this.TAG_NAME,"isXorCrypto opt.xorCryptoKey is null");return i}cryptoPayloadAudio(e){let t=e,i=this.player;if(i._opt.isM7sCrypto)if(i._opt.cryptoKey&&i._opt.cryptoKey.byteLength>0&&i._opt.cryptoIV&&i._opt.cryptoIV.byteLength>0){e[0]>>4===vt.AAC&&(t=function(e,t,i){if(e.byteLength<=30)return e;const r=e.slice(32);let s=new ml.ModeOfOperation.ctr(t,new ml.Counter(i));const a=s.decrypt(r);return s=null,e.set(a,32),e}(e,i._opt.cryptoKey,i._opt.cryptoIV))}else i.debug.error(this.TAG_NAME,`isM7sCrypto cryptoKey.length is ${i._opt.cryptoKey&&i._opt.cryptoKey.byteLength} or cryptoIV.length is ${i._opt.cryptoIV&&i._opt.cryptoIV.byteLength} null`);return t}_decodeEnhancedH265Video(e,t){const i=e[0],r=48&i,s=15&i,a=e.slice(1,5),n=new ArrayBuffer(4),o=new Uint32Array(n),l="a"==String.fromCharCode(a[0]);if(s===xr){if(r===Pr){const t=e.slice(5);if(l);else{const e=new Uint8Array(5+t.length);e.set([28,0,0,0,0],0),e.set(t,5),this.updateNalUnitSize(e),this.player.debug.log(this.TAG_NAME,`demux() isVideoSequenceHeader(enhancedH265) is true and nalUnitSize is ${this.nalUnitSize}`),this._doDecode(e,Oe,0,!0,0)}}}else if(s===Lr){let i=e,s=0;const a=r===Pr;if(a&&this.calcIframeIntervalTimestamp(t),l);else{o[0]=e[4],o[1]=e[3],o[2]=e[2],o[3]=0,s=o[0];i=Kn(e.slice(8),a),i=this.cryptoPayload(i,a),this._doDecode(i,Oe,t,a,s)}}else if(s===Ir){const i=r===Pr,s=e.slice(5);i&&this.calcIframeIntervalTimestamp(t);let a=Kn(s,i);a=this.cryptoPayload(a,i),this._doDecode(a,Oe,t,i,0)}}_isEnhancedH265Header(e){return!(128&~e)}}var xl=function(e,t,i,r){return new(i||(i=Promise))((function(s,a){function n(e){try{l(r.next(e))}catch(e){a(e)}}function o(e){try{l(r.throw(e))}catch(e){a(e)}}function l(e){var t;e.done?s(e.value):(t=e.value,t instanceof i?t:new i((function(e){e(t)}))).then(n,o)}l((r=r.apply(e,t||[])).next())}))};const Ll=Symbol(32),Il=Symbol(16),Pl=Symbol(8);class Bl{constructor(e){this.g=e,this.consumed=0,e&&(this.need=e.next().value)}setG(e){this.g=e,this.demand(e.next().value,!0)}consume(){this.buffer&&this.consumed&&(this.buffer.copyWithin(0,this.consumed),this.buffer=this.buffer.subarray(0,this.buffer.length-this.consumed),this.consumed=0)}demand(e,t){return t&&this.consume(),this.need=e,this.flush()}read(e){return xl(this,void 0,void 0,(function*(){return this.lastReadPromise&&(yield this.lastReadPromise),this.lastReadPromise=new Promise(((t,i)=>{var r;this.reject=i,this.resolve=e=>{delete this.lastReadPromise,delete this.resolve,delete this.need,t(e)};this.demand(e,!0)||null===(r=this.pull)||void 0===r||r.call(this,e)}))}))}readU32(){return this.read(Ll)}readU16(){return this.read(Il)}readU8(){return this.read(Pl)}close(){var e;this.g&&this.g.return(),this.buffer&&this.buffer.subarray(0,0),null===(e=this.reject)||void 0===e||e.call(this,new Error("EOF")),delete this.lastReadPromise}flush(){if(!this.buffer||!this.need)return;let e=null;const t=this.buffer.subarray(this.consumed);let i=0;const r=e=>t.length<(i=e);if("number"==typeof this.need){if(r(this.need))return;e=t.subarray(0,i)}else if(this.need===Ll){if(r(4))return;e=t[0]<<24|t[1]<<16|t[2]<<8|t[3]}else if(this.need===Il){if(r(2))return;e=t[0]<<8|t[1]}else if(this.need===Pl){if(r(1))return;e=t[0]}else if("buffer"in this.need){if("byteOffset"in this.need){if(r(this.need.byteLength-this.need.byteOffset))return;new Uint8Array(this.need.buffer,this.need.byteOffset).set(t.subarray(0,i)),e=this.need}else if(this.g)return void this.g.throw(new Error("Unsupported type"))}else{if(r(this.need.byteLength))return;new Uint8Array(this.need).set(t.subarray(0,i)),e=this.need}return this.consumed+=i,this.g?this.demand(this.g.next(e).value,!0):this.resolve&&this.resolve(e),e}write(e){if(e instanceof Uint8Array?this.malloc(e.length).set(e):"buffer"in e?this.malloc(e.byteLength).set(new Uint8Array(e.buffer,e.byteOffset,e.byteLength)):this.malloc(e.byteLength).set(new Uint8Array(e)),!this.g&&!this.resolve)return new Promise((e=>this.pull=e));this.flush()}writeU32(e){this.malloc(4).set([e>>24&255,e>>16&255,e>>8&255,255&e]),this.flush()}writeU16(e){this.malloc(2).set([e>>8&255,255&e]),this.flush()}writeU8(e){this.malloc(1)[0]=e,this.flush()}malloc(e){if(this.buffer){const t=this.buffer.length,i=t+e;if(i<=this.buffer.buffer.byteLength-this.buffer.byteOffset)this.buffer=new Uint8Array(this.buffer.buffer,this.buffer.byteOffset,i);else{const e=new Uint8Array(i);e.set(this.buffer),this.buffer=e}return this.buffer.subarray(t,i)}return this.buffer=new Uint8Array(e),this.buffer}}Bl.U32=Ll,Bl.U16=Il,Bl.U8=Pl;class Ml extends Dl{constructor(e){super(e),this.TAG_NAME="FlvDemux",this.input=new Bl(this.demux()),e.debug.log(this.TAG_NAME,"init")}destroy(){super.destroy(),this.input=null,this.player.debug.log(this.TAG_NAME,"destroy")}dispatch(e){this.input?this.input.write(e):this.player&&this.player.debug.warn(this.TAG_NAME,"dispatch() this.input is null")}*demux(){yield 9;const e=new ArrayBuffer(4),t=new Uint8Array(e),i=new Uint32Array(e),r=this.player;for(;;){if(!this.input)return;t[3]=0;const e=yield 15,s=e[4];t[0]=e[7],t[1]=e[6],t[2]=e[5];const a=i[0];t[0]=e[10],t[1]=e[9],t[2]=e[8],t[3]=e[11];let n=i[0];const o=(yield a).slice();if(!r)return;switch(s){case Ne:if(r._opt.hasAudio&&(r.updateStats({abps:o.byteLength}),o.byteLength>0)){let e=o;va(this.player._opt.m7sCryptoAudio)&&(e=this.cryptoPayloadAudio(o)),this._doDecode(e,Fe,n)}break;case Ge:if(r._opt.hasVideo&&o.length>=6){let e=n;r.updateStats({vbps:o.byteLength,dts:e}),r._times.demuxStart||(r._times.demuxStart=ps());const t=o[0];if(this._isEnhancedH265Header(t))this._decodeEnhancedH265Video(o,e);else{const e=15&t,r=(t>>4&15)===rr;if(ba(e===yt||e===mt))return void this.player.debug.warn(this.TAG_NAME,`demux() codecId is ${e} and ignore`);r&&(this.calcIframeIntervalTimestamp(n),null===this.nalUnitSize&&Aa(o)&&this.updateNalUnitSize(o)),i[0]=o[4],i[1]=o[3],i[2]=o[2],i[3]=0;let s=i[0],a=this.cryptoPayload(o,r);this._doDecode(a,Oe,n,r,s)}}else o.length<6&&r.debug.warn(this.TAG_NAME,`payload.length is ${o.length} less than 6 and ignore`);break;case ze:if(this.player.isRecordTypeFlv()){const e=new Uint8Array(o);this.player.recorder.addMetaData(e)}const e=co(o);e&&e.onMetaData&&r.updateMetaData(e.onMetaData);break;default:r.debug.log(this.TAG_NAME,`demux() type is ${s}`)}}}close(){this.input=null}getInputByteLength(){let e=0;return this.input&&this.input.buffer&&(e=this.input.buffer.byteLength),e}hasUnitTypeIDR(e,t){const i=zn(e.slice(5));let r=!1;return i.forEach((e=>{const i=t?e[0]>>>1&63:31&e[0];(t&&(i===St||i===wt)||ba(t)&&i===Et.iFrame)&&(r=!0)})),r}}class Ul extends Dl{constructor(e){super(e),this.TAG_NAME="M7sDemux",e.debug.log(this.TAG_NAME,"init")}destroy(){super.destroy(),this.player.debug.log(this.TAG_NAME,"destroy")}dispatch(e){const t=this.player,i=new DataView(e),r=i.getUint8(0),s=i.getUint32(1,!1),a=new ArrayBuffer(4),n=new Uint32Array(a);switch(r){case Fe:if(t._opt.hasAudio){const i=new Uint8Array(e,5);t.updateStats({abps:i.byteLength}),i.byteLength>0&&this._doDecode(i,r,s)}break;case Oe:if(t._opt.hasVideo)if(t._times.demuxStart||(t._times.demuxStart=ps()),i.byteLength>=11){const a=new Uint8Array(e,5);let o=s;t.updateStats({vbps:a.byteLength,dts:o});const l=a[0];if(this._isEnhancedH265Header(l))this._decodeEnhancedH265Video(a,s);else{const e=i.getUint8(5)>>4==1;e&&this.calcIframeIntervalTimestamp(s),n[0]=a[4],n[1]=a[3],n[2]=a[2],n[3]=0;let t=n[0],o=this.cryptoPayload(a,e);this._doDecode(o,r,s,e,t)}}else this.player.debug.warn(this.TAG_NAME,"dispatch","dv byteLength is",i.byteLength,"and return")}}}class Fl extends Ml{constructor(e){super(e),e.debug.log("WebTransportDemux","init")}destroy(){this.player.debug.log("WebTransportDemux","destroy"),super.destroy()}}class Ol extends Dl{TAG_NAME="NakedFlowDemux";constructor(e){super(e),this.lastBuf=null,this.vps=null,this.sps=null,this.pps=null,this.streamVideoType=null,this.streamAudioType=null,this.tempNaluBufferList=new Uint8Array(0),this.localDts=0,this.isSendSeqHeader=!1,this.isSendAACSeqHeader=!1,e.debug.log(this.TAG_NAME,"init")}destroy(){super.destroy(),this.lastBuf=null,this.vps=null,this.sps=null,this.pps=null,this.streamVideoType=null,this.streamAudioType=null,this.tempNaluBufferList=new Uint8Array(0),this.localDts=0,this.localAudioDts=0,this.isSendSeqHeader=!1,this.isSendAACSeqHeader=!1,this.player.debug.log(this.TAG_NAME,"destroy")}dispatch(e){this.player;const t=new Uint8Array(e);this.extractNALu$2(t)}addNaluToBuffer(e){const t=e.byteLength+this.tempNaluBufferList.byteLength,i=new Uint8Array(t);i.set(this.tempNaluBufferList,0),i.set(e,this.tempNaluBufferList.byteLength),this.tempNaluBufferList=i}downloadNakedFlowFile(){const e=new Blob([this.tempNaluBufferList]);try{const t=document.createElement("a");t.href=window.URL.createObjectURL(e),t.download=Date.now()+".h264",t.click(),window.URL.revokeObjectURL(t.href)}catch(e){console.error("downloadTempNalu",e)}}getNaluDts(){const e=this.player._opt.nakedFlowFps;return this.localDts=this.localDts+parseInt(1e3/e),this.localDts}getNaluAudioDts(){const e=this.player.audio.audioContext.sampleRate,t=this.player.audio.audioBufferSize;return this.localDts+parseInt(t/e*1e3)}extractNALu(e){let t,i,r=0,s=e.byteLength,a=0,n=[];for(;r1)for(let e=0;e>1,i!==Tt&&i!==kt&&i!==Ct||(t=At)),t}(t)),this.streamVideoType===gt){const e=this.handleAddNaluStartCode(t),i=this.extractNALu(e);if(0===i.length)return void this.player.debug.warn(this.TAG_NAME,"handleVideoNalu","naluList.length === 0");const r=[];if(i.forEach((e=>{const t=Bn(e);t===Et.pps||t===Et.sps?this.handleVideoH264Nalu(e):Un(t)&&r.push(e)})),1===r.length)this.handleVideoH264Nalu(r[0]);else{const e=function(e){if(0===e.length)return!1;const t=Bn(e[0]);for(let i=1;i{this.handleVideoH264Nalu(e)}))}}else if(this.streamVideoType===At)if(this.player._opt.nakedFlowH265DemuxUseNew){const e=this.handleAddNaluStartCode(t),i=this.extractNALu(e);if(0===i.length)return void this.player.debug.warn(this.TAG_NAME,"handleVideoNalu","h265 naluList.length === 0");const r=[];if(i.forEach((e=>{const t=qn(e);t===Ct||t===kt||t===Tt?this.handleVideoH265Nalu(e):Yn(t)&&r.push(e)})),1===r.length)this.handleVideoH265Nalu(r[0]);else{const e=function(e){if(0===e.length)return!1;const t=qn(e[0]);for(let i=1;i{this.handleVideoH265Nalu(e)}))}}else{qn(t)===Ct?this.extractH265PPS(t):this.handleVideoH265Nalu(t)}else this.player.debug.error(this.TAG_NAME," this.streamVideoType is null")}extractH264PPS(e){const t=this.handleAddNaluStartCode(e);this.extractNALu(t).forEach((e=>{Mn(Bn(e))?this.extractH264SEI(e):this.handleVideoH264Nalu(e)}))}extractH265PPS(e){const t=this.handleAddNaluStartCode(e);this.extractNALu(t).forEach((e=>{const t=qn(e);t===Rt?this.extractH265SEI(e):this.handleVideoH265Nalu(e)}))}extractH264SEI(e){const t=this.handleAddNaluStartCode(e);this.extractNALu(t).forEach((e=>{this.handleVideoH264Nalu(e)}))}extractH265SEI(e){const t=this.handleAddNaluStartCode(e);this.extractNALu(t).forEach((e=>{this.handleVideoH265Nalu(e)}))}handleAddNaluStartCode(e){const t=[0,0,0,1],i=new Uint8Array(e.length+t.length);return i.set(t),i.set(e,t.length),i}handleAudioAACNalu(e){if(!e||e.byteLength<1)return;this.streamAudioType||(this.streamAudioType=bt.AAC);let t=new Uint8Array(e);const i=t.slice(0,7);if(t=t.slice(7),!this.isSendAACSeqHeader){const e=(192&i[2])>>6,t=(60&i[2])>>2,r=(1&i[2])<<2|(192&i[3])>>6,s=new Uint8Array([175,0,e<<3|(14&t)>>1,(1&t)<<7|r<<3]);this.isSendAACSeqHeader=!0,this._doDecode(s,Fe,0,!1,0)}const r=this.getNaluAudioDts(),s=new Uint8Array(t.length+2);s.set([175,1],0),s.set(t,2),this._doDecode(s,Fe,r,!1,0)}handleAudioG711ANalu(e){if(!e||e.byteLength<1)return;this.streamAudioType||(this.streamAudioType=bt.ALAW);let t=new Uint8Array(e);const i=this.getNaluAudioDts(),r=new Uint8Array(t.length+1);r.set([114],0),r.set(t,1),this._doDecode(r,Fe,i,!1,0)}handleAudioG711UNalu(e){if(!e||e.byteLength<1)return;this.streamAudioType||(this.streamAudioType=bt.MULAW);let t=new Uint8Array(e);const i=this.getNaluAudioDts(),r=new Uint8Array(t.length+1);r.set([130],0),r.set(t,1),this._doDecode(r,Fe,i,!1,0)}handleVideoH264Nalu(e){const t=Bn(e);switch(t){case Et.sps:this.sps=e;break;case Et.pps:this.pps=e}if(this.isSendSeqHeader){if(this.sps&&this.pps){const e=In({sps:this.sps,pps:this.pps}),t=this.getNaluDts();this._doDecode(e,Oe,t,!0,0),this.sps=null,this.pps=null}if(Un(t)){this.player._times.demuxStart||(this.player._times.demuxStart=ps());const i=Fn(t),r=this.getNaluDts(),s=function(e,t){let i=[];i[0]=t?23:39,i[1]=1,i[2]=0,i[3]=0,i[4]=0,i[5]=e.byteLength>>24&255,i[6]=e.byteLength>>16&255,i[7]=e.byteLength>>8&255,i[8]=255&e.byteLength;const r=new Uint8Array(i.length+e.byteLength);return r.set(i,0),r.set(e,i.length),r}(e,i);this._preDoDecode(s,Oe,r,i,0)}else this.player.debug.warn(this.TAG_NAME,`handleVideoH264Nalu is avc seq head nalType is ${t}`)}else if(this.sps&&this.pps){this.isSendSeqHeader=!0;const e=In({sps:this.sps,pps:this.pps});this._doDecode(e,Oe,0,!0,0),this.sps=null,this.pps=null}}handleVideoH264NaluList(e,t,i){if(this.isSendSeqHeader){this.player._times.demuxStart||(this.player._times.demuxStart=ps());const i=this.getNaluDts(),r=Pn(e.reduce(((e,t)=>{const i=Vn(e),r=Vn(t),s=new Uint8Array(i.byteLength+r.byteLength);return s.set(i,0),s.set(r,i.byteLength),s})),t);this._preDoDecode(r,Oe,i,t,0)}else this.player.debug.warn(this.TAG_NAME,"handleVideoH264NaluList isSendSeqHeader is false")}handleVideoH265Nalu(e){const t=qn(e);switch(t){case Tt:this.vps=e;break;case kt:this.sps=e;break;case Ct:this.pps=e}if(this.isSendSeqHeader){if(this.vps&&this.sps&&this.pps){const e=$n({vps:this.vps,sps:this.sps,pps:this.pps}),t=this.getNaluDts();this._doDecode(e,Oe,t,!0,0),this.vps=null,this.sps=null,this.pps=null}if(Yn(t)){this.player._times.demuxStart||(this.player._times.demuxStart=ps());const i=Qn(t),r=this.getNaluDts(),s=function(e,t){let i=[];i[0]=t?28:44,i[1]=1,i[2]=0,i[3]=0,i[4]=0,i[5]=e.byteLength>>24&255,i[6]=e.byteLength>>16&255,i[7]=e.byteLength>>8&255,i[8]=255&e.byteLength;const r=new Uint8Array(i.length+e.byteLength);return r.set(i,0),r.set(e,i.length),r}(e,i);this._preDoDecode(s,Oe,r,i,0)}}else if(this.vps&&this.sps&&this.pps){this.isSendSeqHeader=!0;const e=$n({vps:this.vps,sps:this.sps,pps:this.pps});this._doDecode(e,Oe,0,!0,0),this.vps=null,this.sps=null,this.pps=null}}handleVideoH265NaluList(e,t,i){if(this.isSendSeqHeader){this.player._times.demuxStart||(this.player._times.demuxStart=ps());const i=this.getNaluDts(),r=Kn(e.reduce(((e,t)=>{const i=Vn(e),r=Vn(t),s=new Uint8Array(i.byteLength+r.byteLength);return s.set(i,0),s.set(r,i.byteLength),s})),t);this._preDoDecode(r,Oe,i,t,0)}else this.player.debug.warn(this.TAG_NAME,"handleVideoH265NaluList isSendSeqHeader is false")}_preDoDecode(e,t,i,r,s){this.player.updateStats({vbps:e.byteLength,dts:i}),r&&this.calcIframeIntervalTimestamp(i),this._doDecode(e,Oe,i,r,s)}getInputByteLength(){let e=0;return this.lastBuf&&(e=this.lastBuf.byteLength),e}}class Nl extends Dl{constructor(e){super(e),this.player=e,e.debug.log("EmptyDemux","init")}destroy(){super.destroy(),this.player.debug.log("EmptyDemux","destroy")}}var Gl=Kr((function(e,t){var i,r,s,a=(i=new Date,r=4,s={setLogLevel:function(e){r=e==this.debug?1:e==this.info?2:e==this.warn?3:(this.error,4)},debug:function(e,t){void 0===console.debug&&(console.debug=console.log),1>=r&&console.debug("["+a.getDurationString(new Date-i,1e3)+"]","["+e+"]",t)},log:function(e,t){this.debug(e.msg)},info:function(e,t){2>=r&&console.info("["+a.getDurationString(new Date-i,1e3)+"]","["+e+"]",t)},warn:function(e,t){3>=r&&console.warn("["+a.getDurationString(new Date-i,1e3)+"]","["+e+"]",t)},error:function(e,t){4>=r&&console.error("["+a.getDurationString(new Date-i,1e3)+"]","["+e+"]",t)}},s);a.getDurationString=function(e,t){var i;function r(e,t){for(var i=(""+e).split(".");i[0].length0){for(var i="",r=0;r0&&(i+=","),i+="["+a.getDurationString(e.start(r))+","+a.getDurationString(e.end(r))+"]";return i}return"(empty)"},t.Log=a;var n=function(e){if(!(e instanceof ArrayBuffer))throw"Needs an array buffer";this.buffer=e,this.dataview=new DataView(e),this.position=0};n.prototype.getPosition=function(){return this.position},n.prototype.getEndPosition=function(){return this.buffer.byteLength},n.prototype.getLength=function(){return this.buffer.byteLength},n.prototype.seek=function(e){var t=Math.max(0,Math.min(this.buffer.byteLength,e));return this.position=isNaN(t)||!isFinite(t)?0:t,!0},n.prototype.isEos=function(){return this.getPosition()>=this.getEndPosition()},n.prototype.readAnyInt=function(e,t){var i=0;if(this.position+e<=this.buffer.byteLength){switch(e){case 1:i=t?this.dataview.getInt8(this.position):this.dataview.getUint8(this.position);break;case 2:i=t?this.dataview.getInt16(this.position):this.dataview.getUint16(this.position);break;case 3:if(t)throw"No method for reading signed 24 bits values";i=this.dataview.getUint8(this.position)<<16,i|=this.dataview.getUint8(this.position+1)<<8,i|=this.dataview.getUint8(this.position+2);break;case 4:i=t?this.dataview.getInt32(this.position):this.dataview.getUint32(this.position);break;case 8:if(t)throw"No method for reading signed 64 bits values";i=this.dataview.getUint32(this.position)<<32,i|=this.dataview.getUint32(this.position+4);break;default:throw"readInt method not implemented for size: "+e}return this.position+=e,i}throw"Not enough bytes in buffer"},n.prototype.readUint8=function(){return this.readAnyInt(1,!1)},n.prototype.readUint16=function(){return this.readAnyInt(2,!1)},n.prototype.readUint24=function(){return this.readAnyInt(3,!1)},n.prototype.readUint32=function(){return this.readAnyInt(4,!1)},n.prototype.readUint64=function(){return this.readAnyInt(8,!1)},n.prototype.readString=function(e){if(this.position+e<=this.buffer.byteLength){for(var t="",i=0;ithis._byteLength&&(this._byteLength=t);else{for(i<1&&(i=1);t>i;)i*=2;var r=new ArrayBuffer(i),s=new Uint8Array(this._buffer);new Uint8Array(r,0,s.length).set(s),this.buffer=r,this._byteLength=t}}},o.prototype._trimAlloc=function(){if(this._byteLength!=this._buffer.byteLength){var e=new ArrayBuffer(this._byteLength),t=new Uint8Array(e),i=new Uint8Array(this._buffer,0,t.length);t.set(i),this.buffer=e}},o.BIG_ENDIAN=!1,o.LITTLE_ENDIAN=!0,o.prototype._byteLength=0,Object.defineProperty(o.prototype,"byteLength",{get:function(){return this._byteLength-this._byteOffset}}),Object.defineProperty(o.prototype,"buffer",{get:function(){return this._trimAlloc(),this._buffer},set:function(e){this._buffer=e,this._dataView=new DataView(this._buffer,this._byteOffset),this._byteLength=this._buffer.byteLength}}),Object.defineProperty(o.prototype,"byteOffset",{get:function(){return this._byteOffset},set:function(e){this._byteOffset=e,this._dataView=new DataView(this._buffer,this._byteOffset),this._byteLength=this._buffer.byteLength}}),Object.defineProperty(o.prototype,"dataView",{get:function(){return this._dataView},set:function(e){this._byteOffset=e.byteOffset,this._buffer=e.buffer,this._dataView=new DataView(this._buffer,this._byteOffset),this._byteLength=this._byteOffset+e.byteLength}}),o.prototype.seek=function(e){var t=Math.max(0,Math.min(this.byteLength,e));this.position=isNaN(t)||!isFinite(t)?0:t},o.prototype.isEof=function(){return this.position>=this._byteLength},o.prototype.mapUint8Array=function(e){this._realloc(1*e);var t=new Uint8Array(this._buffer,this.byteOffset+this.position,e);return this.position+=1*e,t},o.prototype.readInt32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var i=new Int32Array(e);return o.memcpy(i.buffer,0,this.buffer,this.byteOffset+this.position,e*i.BYTES_PER_ELEMENT),o.arrayToNative(i,null==t?this.endianness:t),this.position+=i.byteLength,i},o.prototype.readInt16Array=function(e,t){e=null==e?this.byteLength-this.position/2:e;var i=new Int16Array(e);return o.memcpy(i.buffer,0,this.buffer,this.byteOffset+this.position,e*i.BYTES_PER_ELEMENT),o.arrayToNative(i,null==t?this.endianness:t),this.position+=i.byteLength,i},o.prototype.readInt8Array=function(e){e=null==e?this.byteLength-this.position:e;var t=new Int8Array(e);return o.memcpy(t.buffer,0,this.buffer,this.byteOffset+this.position,e*t.BYTES_PER_ELEMENT),this.position+=t.byteLength,t},o.prototype.readUint32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var i=new Uint32Array(e);return o.memcpy(i.buffer,0,this.buffer,this.byteOffset+this.position,e*i.BYTES_PER_ELEMENT),o.arrayToNative(i,null==t?this.endianness:t),this.position+=i.byteLength,i},o.prototype.readUint16Array=function(e,t){e=null==e?this.byteLength-this.position/2:e;var i=new Uint16Array(e);return o.memcpy(i.buffer,0,this.buffer,this.byteOffset+this.position,e*i.BYTES_PER_ELEMENT),o.arrayToNative(i,null==t?this.endianness:t),this.position+=i.byteLength,i},o.prototype.readUint8Array=function(e){e=null==e?this.byteLength-this.position:e;var t=new Uint8Array(e);return o.memcpy(t.buffer,0,this.buffer,this.byteOffset+this.position,e*t.BYTES_PER_ELEMENT),this.position+=t.byteLength,t},o.prototype.readFloat64Array=function(e,t){e=null==e?this.byteLength-this.position/8:e;var i=new Float64Array(e);return o.memcpy(i.buffer,0,this.buffer,this.byteOffset+this.position,e*i.BYTES_PER_ELEMENT),o.arrayToNative(i,null==t?this.endianness:t),this.position+=i.byteLength,i},o.prototype.readFloat32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var i=new Float32Array(e);return o.memcpy(i.buffer,0,this.buffer,this.byteOffset+this.position,e*i.BYTES_PER_ELEMENT),o.arrayToNative(i,null==t?this.endianness:t),this.position+=i.byteLength,i},o.prototype.readInt32=function(e){var t=this._dataView.getInt32(this.position,null==e?this.endianness:e);return this.position+=4,t},o.prototype.readInt16=function(e){var t=this._dataView.getInt16(this.position,null==e?this.endianness:e);return this.position+=2,t},o.prototype.readInt8=function(){var e=this._dataView.getInt8(this.position);return this.position+=1,e},o.prototype.readUint32=function(e){var t=this._dataView.getUint32(this.position,null==e?this.endianness:e);return this.position+=4,t},o.prototype.readUint16=function(e){var t=this._dataView.getUint16(this.position,null==e?this.endianness:e);return this.position+=2,t},o.prototype.readUint8=function(){var e=this._dataView.getUint8(this.position);return this.position+=1,e},o.prototype.readFloat32=function(e){var t=this._dataView.getFloat32(this.position,null==e?this.endianness:e);return this.position+=4,t},o.prototype.readFloat64=function(e){var t=this._dataView.getFloat64(this.position,null==e?this.endianness:e);return this.position+=8,t},o.endianness=new Int8Array(new Int16Array([1]).buffer)[0]>0,o.memcpy=function(e,t,i,r,s){var a=new Uint8Array(e,t,s),n=new Uint8Array(i,r,s);a.set(n)},o.arrayToNative=function(e,t){return t==this.endianness?e:this.flipArrayEndianness(e)},o.nativeToEndian=function(e,t){return this.endianness==t?e:this.flipArrayEndianness(e)},o.flipArrayEndianness=function(e){for(var t=new Uint8Array(e.buffer,e.byteOffset,e.byteLength),i=0;is;r--,s++){var a=t[s];t[s]=t[r],t[r]=a}return e},o.prototype.failurePosition=0,String.fromCharCodeUint8=function(e){for(var t=[],i=0;i>16),this.writeUint8((65280&e)>>8),this.writeUint8(255&e)},o.prototype.adjustUint32=function(e,t){var i=this.position;this.seek(e),this.writeUint32(t),this.seek(i)},o.prototype.mapInt32Array=function(e,t){this._realloc(4*e);var i=new Int32Array(this._buffer,this.byteOffset+this.position,e);return o.arrayToNative(i,null==t?this.endianness:t),this.position+=4*e,i},o.prototype.mapInt16Array=function(e,t){this._realloc(2*e);var i=new Int16Array(this._buffer,this.byteOffset+this.position,e);return o.arrayToNative(i,null==t?this.endianness:t),this.position+=2*e,i},o.prototype.mapInt8Array=function(e){this._realloc(1*e);var t=new Int8Array(this._buffer,this.byteOffset+this.position,e);return this.position+=1*e,t},o.prototype.mapUint32Array=function(e,t){this._realloc(4*e);var i=new Uint32Array(this._buffer,this.byteOffset+this.position,e);return o.arrayToNative(i,null==t?this.endianness:t),this.position+=4*e,i},o.prototype.mapUint16Array=function(e,t){this._realloc(2*e);var i=new Uint16Array(this._buffer,this.byteOffset+this.position,e);return o.arrayToNative(i,null==t?this.endianness:t),this.position+=2*e,i},o.prototype.mapFloat64Array=function(e,t){this._realloc(8*e);var i=new Float64Array(this._buffer,this.byteOffset+this.position,e);return o.arrayToNative(i,null==t?this.endianness:t),this.position+=8*e,i},o.prototype.mapFloat32Array=function(e,t){this._realloc(4*e);var i=new Float32Array(this._buffer,this.byteOffset+this.position,e);return o.arrayToNative(i,null==t?this.endianness:t),this.position+=4*e,i};var d=function(e){this.buffers=[],this.bufferIndex=-1,e&&(this.insertBuffer(e),this.bufferIndex=0)};(d.prototype=new o(new ArrayBuffer,0,o.BIG_ENDIAN)).initialized=function(){var e;return this.bufferIndex>-1||(this.buffers.length>0?0===(e=this.buffers[0]).fileStart?(this.buffer=e,this.bufferIndex=0,a.debug("MultiBufferStream","Stream ready for parsing"),!0):(a.warn("MultiBufferStream","The first buffer should have a fileStart of 0"),this.logBufferLevel(),!1):(a.warn("MultiBufferStream","No buffer to start parsing from"),this.logBufferLevel(),!1))},ArrayBuffer.concat=function(e,t){a.debug("ArrayBuffer","Trying to create a new buffer of size: "+(e.byteLength+t.byteLength));var i=new Uint8Array(e.byteLength+t.byteLength);return i.set(new Uint8Array(e),0),i.set(new Uint8Array(t),e.byteLength),i.buffer},d.prototype.reduceBuffer=function(e,t,i){var r;return(r=new Uint8Array(i)).set(new Uint8Array(e,t,i)),r.buffer.fileStart=e.fileStart+t,r.buffer.usedBytes=0,r.buffer},d.prototype.insertBuffer=function(e){for(var t=!0,i=0;ir.byteLength){this.buffers.splice(i,1),i--;continue}a.warn("MultiBufferStream","Buffer (fileStart: "+e.fileStart+" - Length: "+e.byteLength+") already appended, ignoring")}else e.fileStart+e.byteLength<=r.fileStart||(e=this.reduceBuffer(e,0,r.fileStart-e.fileStart)),a.debug("MultiBufferStream","Appending new buffer (fileStart: "+e.fileStart+" - Length: "+e.byteLength+")"),this.buffers.splice(i,0,e),0===i&&(this.buffer=e);t=!1;break}if(e.fileStart0)){t=!1;break}e=this.reduceBuffer(e,s,n)}}t&&(a.debug("MultiBufferStream","Appending new buffer (fileStart: "+e.fileStart+" - Length: "+e.byteLength+")"),this.buffers.push(e),0===i&&(this.buffer=e))},d.prototype.logBufferLevel=function(e){var t,i,r,s,n,o=[],l="";for(r=0,s=0,t=0;t0&&(l+=n.end-1+"]");var d=e?a.info:a.debug;0===this.buffers.length?d("MultiBufferStream","No more buffer in memory"):d("MultiBufferStream",this.buffers.length+" stored buffer(s) ("+r+"/"+s+" bytes), continuous ranges: "+l)},d.prototype.cleanBuffers=function(){var e,t;for(e=0;e"+this.buffer.byteLength+")"),!0}return!1}return!1},d.prototype.findPosition=function(e,t,i){var r,s=null,n=-1;for(r=!0===e?0:this.bufferIndex;r=t?(a.debug("MultiBufferStream","Found position in existing buffer #"+n),n):-1},d.prototype.findEndContiguousBuf=function(e){var t,i,r,s=void 0!==e?e:this.bufferIndex;if(i=this.buffers[s],this.buffers.length>s+1)for(t=s+1;t>3;return 31===r&&i.data.length>=2&&(r=32+((7&i.data[0])<<3)+((224&i.data[1])>>5)),r}return null},i.DecoderConfigDescriptor=function(e){i.Descriptor.call(this,4,e)},i.DecoderConfigDescriptor.prototype=new i.Descriptor,i.DecoderConfigDescriptor.prototype.parse=function(e){this.oti=e.readUint8(),this.streamType=e.readUint8(),this.bufferSize=e.readUint24(),this.maxBitrate=e.readUint32(),this.avgBitrate=e.readUint32(),this.size-=13,this.parseRemainingDescriptors(e)},i.DecoderSpecificInfo=function(e){i.Descriptor.call(this,5,e)},i.DecoderSpecificInfo.prototype=new i.Descriptor,i.SLConfigDescriptor=function(e){i.Descriptor.call(this,6,e)},i.SLConfigDescriptor.prototype=new i.Descriptor,this};t.MPEG4DescriptorParser=h;var c={ERR_INVALID_DATA:-1,ERR_NOT_ENOUGH_DATA:0,OK:1,BASIC_BOXES:["mdat","idat","free","skip","meco","strk"],FULL_BOXES:["hmhd","nmhd","iods","xml ","bxml","ipro","mere"],CONTAINER_BOXES:[["moov",["trak","pssh"]],["trak"],["edts"],["mdia"],["minf"],["dinf"],["stbl",["sgpd","sbgp"]],["mvex",["trex"]],["moof",["traf"]],["traf",["trun","sgpd","sbgp"]],["vttc"],["tref"],["iref"],["mfra",["tfra"]],["meco"],["hnti"],["hinf"],["strk"],["strd"],["sinf"],["rinf"],["schi"],["trgr"],["udta",["kind"]],["iprp",["ipma"]],["ipco"]],boxCodes:[],fullBoxCodes:[],containerBoxCodes:[],sampleEntryCodes:{},sampleGroupEntryCodes:[],trackGroupTypes:[],UUIDBoxes:{},UUIDs:[],initialize:function(){c.FullBox.prototype=new c.Box,c.ContainerBox.prototype=new c.Box,c.SampleEntry.prototype=new c.Box,c.TrackGroupTypeBox.prototype=new c.FullBox,c.BASIC_BOXES.forEach((function(e){c.createBoxCtor(e)})),c.FULL_BOXES.forEach((function(e){c.createFullBoxCtor(e)})),c.CONTAINER_BOXES.forEach((function(e){c.createContainerBoxCtor(e[0],null,e[1])}))},Box:function(e,t,i){this.type=e,this.size=t,this.uuid=i},FullBox:function(e,t,i){c.Box.call(this,e,t,i),this.flags=0,this.version=0},ContainerBox:function(e,t,i){c.Box.call(this,e,t,i),this.boxes=[]},SampleEntry:function(e,t,i,r){c.ContainerBox.call(this,e,t),this.hdr_size=i,this.start=r},SampleGroupEntry:function(e){this.grouping_type=e},TrackGroupTypeBox:function(e,t){c.FullBox.call(this,e,t)},createBoxCtor:function(e,t){c.boxCodes.push(e),c[e+"Box"]=function(t){c.Box.call(this,e,t)},c[e+"Box"].prototype=new c.Box,t&&(c[e+"Box"].prototype.parse=t)},createFullBoxCtor:function(e,t){c[e+"Box"]=function(t){c.FullBox.call(this,e,t)},c[e+"Box"].prototype=new c.FullBox,c[e+"Box"].prototype.parse=function(e){this.parseFullHeader(e),t&&t.call(this,e)}},addSubBoxArrays:function(e){if(e){this.subBoxNames=e;for(var t=e.length,i=0;ii?(a.error("BoxParser","Box of type '"+h+"' has a size "+d+" greater than its container size "+i),{code:c.ERR_NOT_ENOUGH_DATA,type:h,size:d,hdr_size:l,start:o}):0!==d&&o+d>e.getEndPosition()?(e.seek(o),a.info("BoxParser","Not enough data in stream to parse the entire '"+h+"' box"),{code:c.ERR_NOT_ENOUGH_DATA,type:h,size:d,hdr_size:l,start:o}):t?{code:c.OK,type:h,size:d,hdr_size:l,start:o}:(c[h+"Box"]?r=new c[h+"Box"](d):"uuid"!==h?(a.warn("BoxParser","Unknown box type: '"+h+"'"),(r=new c.Box(h,d)).has_unparsed_data=!0):c.UUIDBoxes[n]?r=new c.UUIDBoxes[n](d):(a.warn("BoxParser","Unknown uuid type: '"+n+"'"),(r=new c.Box(h,d)).uuid=n,r.has_unparsed_data=!0),r.hdr_size=l,r.start=o,r.write===c.Box.prototype.write&&"mdat"!==r.type&&(a.info("BoxParser","'"+u+"' box writing not yet implemented, keeping unparsed data in memory for later write"),r.parseDataAndRewind(e)),r.parse(e),(s=e.getPosition()-(r.start+r.size))<0?(a.warn("BoxParser","Parsing of box '"+u+"' did not read the entire indicated box data size (missing "+-s+" bytes), seeking forward"),e.seek(r.start+r.size)):s>0&&(a.error("BoxParser","Parsing of box '"+u+"' read "+s+" more bytes than the indicated box data size, seeking backwards"),0!==r.size&&e.seek(r.start+r.size)),{code:c.OK,box:r,size:r.size})},c.Box.prototype.parse=function(e){"mdat"!=this.type?this.data=e.readUint8Array(this.size-this.hdr_size):0===this.size?e.seek(e.getEndPosition()):e.seek(this.start+this.size)},c.Box.prototype.parseDataAndRewind=function(e){this.data=e.readUint8Array(this.size-this.hdr_size),e.position-=this.size-this.hdr_size},c.FullBox.prototype.parseDataAndRewind=function(e){this.parseFullHeader(e),this.data=e.readUint8Array(this.size-this.hdr_size),this.hdr_size-=4,e.position-=this.size-this.hdr_size},c.FullBox.prototype.parseFullHeader=function(e){this.version=e.readUint8(),this.flags=e.readUint24(),this.hdr_size+=4},c.FullBox.prototype.parse=function(e){this.parseFullHeader(e),this.data=e.readUint8Array(this.size-this.hdr_size)},c.ContainerBox.prototype.parse=function(e){for(var t,i;e.getPosition()>10&31,t[1]=this.language>>5&31,t[2]=31&this.language,this.languageString=String.fromCharCode(t[0]+96,t[1]+96,t[2]+96)},c.SAMPLE_ENTRY_TYPE_VISUAL="Visual",c.SAMPLE_ENTRY_TYPE_AUDIO="Audio",c.SAMPLE_ENTRY_TYPE_HINT="Hint",c.SAMPLE_ENTRY_TYPE_METADATA="Metadata",c.SAMPLE_ENTRY_TYPE_SUBTITLE="Subtitle",c.SAMPLE_ENTRY_TYPE_SYSTEM="System",c.SAMPLE_ENTRY_TYPE_TEXT="Text",c.SampleEntry.prototype.parseHeader=function(e){e.readUint8Array(6),this.data_reference_index=e.readUint16(),this.hdr_size+=8},c.SampleEntry.prototype.parse=function(e){this.parseHeader(e),this.data=e.readUint8Array(this.size-this.hdr_size)},c.SampleEntry.prototype.parseDataAndRewind=function(e){this.parseHeader(e),this.data=e.readUint8Array(this.size-this.hdr_size),this.hdr_size-=8,e.position-=this.size-this.hdr_size},c.SampleEntry.prototype.parseFooter=function(e){c.ContainerBox.prototype.parse.call(this,e)},c.createMediaSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_HINT),c.createMediaSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_METADATA),c.createMediaSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_SUBTITLE),c.createMediaSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_SYSTEM),c.createMediaSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_TEXT),c.createMediaSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_VISUAL,(function(e){var t;this.parseHeader(e),e.readUint16(),e.readUint16(),e.readUint32Array(3),this.width=e.readUint16(),this.height=e.readUint16(),this.horizresolution=e.readUint32(),this.vertresolution=e.readUint32(),e.readUint32(),this.frame_count=e.readUint16(),t=Math.min(31,e.readUint8()),this.compressorname=e.readString(t),t<31&&e.readString(31-t),this.depth=e.readUint16(),e.readUint16(),this.parseFooter(e)})),c.createMediaSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_AUDIO,(function(e){this.parseHeader(e),e.readUint32Array(2),this.channel_count=e.readUint16(),this.samplesize=e.readUint16(),e.readUint16(),e.readUint16(),this.samplerate=e.readUint32()/65536,this.parseFooter(e)})),c.createSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_VISUAL,"avc1"),c.createSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_VISUAL,"avc2"),c.createSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_VISUAL,"avc3"),c.createSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_VISUAL,"avc4"),c.createSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_VISUAL,"av01"),c.createSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_VISUAL,"hvc1"),c.createSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_VISUAL,"hev1"),c.createSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_VISUAL,"vvc1"),c.createSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_VISUAL,"vvi1"),c.createSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_VISUAL,"vvs1"),c.createSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_VISUAL,"vvcN"),c.createSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_VISUAL,"vp08"),c.createSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_VISUAL,"vp09"),c.createSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_AUDIO,"mp4a"),c.createSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_AUDIO,"ac-3"),c.createSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_AUDIO,"ec-3"),c.createSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_AUDIO,"Opus"),c.createEncryptedSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_VISUAL,"encv"),c.createEncryptedSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_AUDIO,"enca"),c.createEncryptedSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_SUBTITLE,"encu"),c.createEncryptedSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_SYSTEM,"encs"),c.createEncryptedSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_TEXT,"enct"),c.createEncryptedSampleEntryCtor(c.SAMPLE_ENTRY_TYPE_METADATA,"encm"),c.createBoxCtor("a1lx",(function(e){var t=16*(1+(1&(1&e.readUint8())));this.layer_size=[];for(var i=0;i<3;i++)this.layer_size[i]=16==t?e.readUint16():e.readUint32()})),c.createBoxCtor("a1op",(function(e){this.op_index=e.readUint8()})),c.createFullBoxCtor("auxC",(function(e){this.aux_type=e.readCString();var t=this.size-this.hdr_size-(this.aux_type.length+1);this.aux_subtype=e.readUint8Array(t)})),c.createBoxCtor("av1C",(function(e){var t=e.readUint8();if(t>>7&!1)a.error("av1C marker problem");else if(this.version=127&t,1===this.version)if(t=e.readUint8(),this.seq_profile=t>>5&7,this.seq_level_idx_0=31&t,t=e.readUint8(),this.seq_tier_0=t>>7&1,this.high_bitdepth=t>>6&1,this.twelve_bit=t>>5&1,this.monochrome=t>>4&1,this.chroma_subsampling_x=t>>3&1,this.chroma_subsampling_y=t>>2&1,this.chroma_sample_position=3&t,t=e.readUint8(),this.reserved_1=t>>5&7,0===this.reserved_1){if(this.initial_presentation_delay_present=t>>4&1,1===this.initial_presentation_delay_present)this.initial_presentation_delay_minus_one=15&t;else if(this.reserved_2=15&t,0!==this.reserved_2)return void a.error("av1C reserved_2 parsing problem");var i=this.size-this.hdr_size-4;this.configOBUs=e.readUint8Array(i)}else a.error("av1C reserved_1 parsing problem");else a.error("av1C version "+this.version+" not supported")})),c.createBoxCtor("avcC",(function(e){var t,i;for(this.configurationVersion=e.readUint8(),this.AVCProfileIndication=e.readUint8(),this.profile_compatibility=e.readUint8(),this.AVCLevelIndication=e.readUint8(),this.lengthSizeMinusOne=3&e.readUint8(),this.nb_SPS_nalus=31&e.readUint8(),i=this.size-this.hdr_size-6,this.SPS=[],t=0;t0&&(this.ext=e.readUint8Array(i))})),c.createBoxCtor("btrt",(function(e){this.bufferSizeDB=e.readUint32(),this.maxBitrate=e.readUint32(),this.avgBitrate=e.readUint32()})),c.createBoxCtor("clap",(function(e){this.cleanApertureWidthN=e.readUint32(),this.cleanApertureWidthD=e.readUint32(),this.cleanApertureHeightN=e.readUint32(),this.cleanApertureHeightD=e.readUint32(),this.horizOffN=e.readUint32(),this.horizOffD=e.readUint32(),this.vertOffN=e.readUint32(),this.vertOffD=e.readUint32()})),c.createBoxCtor("clli",(function(e){this.max_content_light_level=e.readUint16(),this.max_pic_average_light_level=e.readUint16()})),c.createFullBoxCtor("co64",(function(e){var t,i;if(t=e.readUint32(),this.chunk_offsets=[],0===this.version)for(i=0;i>7}else("rICC"===this.colour_type||"prof"===this.colour_type)&&(this.ICC_profile=e.readUint8Array(this.size-4))})),c.createFullBoxCtor("cprt",(function(e){this.parseLanguage(e),this.notice=e.readCString()})),c.createFullBoxCtor("cslg",(function(e){0===this.version&&(this.compositionToDTSShift=e.readInt32(),this.leastDecodeToDisplayDelta=e.readInt32(),this.greatestDecodeToDisplayDelta=e.readInt32(),this.compositionStartTime=e.readInt32(),this.compositionEndTime=e.readInt32())})),c.createFullBoxCtor("ctts",(function(e){var t,i;if(t=e.readUint32(),this.sample_counts=[],this.sample_offsets=[],0===this.version)for(i=0;i>6,this.bsid=t>>1&31,this.bsmod=(1&t)<<2|i>>6&3,this.acmod=i>>3&7,this.lfeon=i>>2&1,this.bit_rate_code=3&i|r>>5&7})),c.createBoxCtor("dec3",(function(e){var t=e.readUint16();this.data_rate=t>>3,this.num_ind_sub=7&t,this.ind_subs=[];for(var i=0;i>6,r.bsid=s>>1&31,r.bsmod=(1&s)<<4|a>>4&15,r.acmod=a>>1&7,r.lfeon=1&a,r.num_dep_sub=n>>1&15,r.num_dep_sub>0&&(r.chan_loc=(1&n)<<8|e.readUint8())}})),c.createFullBoxCtor("dfLa",(function(e){var t=[],i=["STREAMINFO","PADDING","APPLICATION","SEEKTABLE","VORBIS_COMMENT","CUESHEET","PICTURE","RESERVED"];for(this.parseFullHeader(e);;){var r=e.readUint8(),s=Math.min(127&r,i.length-1);if(s?e.readUint8Array(e.readUint24()):(e.readUint8Array(13),this.samplerate=e.readUint32()>>12,e.readUint8Array(20)),t.push(i[s]),128&r)break}this.numMetadataBlocks=t.length+" ("+t.join(", ")+")"})),c.createBoxCtor("dimm",(function(e){this.bytessent=e.readUint64()})),c.createBoxCtor("dmax",(function(e){this.time=e.readUint32()})),c.createBoxCtor("dmed",(function(e){this.bytessent=e.readUint64()})),c.createBoxCtor("dOps",(function(e){if(this.Version=e.readUint8(),this.OutputChannelCount=e.readUint8(),this.PreSkip=e.readUint16(),this.InputSampleRate=e.readUint32(),this.OutputGain=e.readInt16(),this.ChannelMappingFamily=e.readUint8(),0!==this.ChannelMappingFamily){this.StreamCount=e.readUint8(),this.CoupledCount=e.readUint8(),this.ChannelMapping=[];for(var t=0;t=4;)this.compatible_brands[i]=e.readString(4),t-=4,i++})),c.createFullBoxCtor("hdlr",(function(e){0===this.version&&(e.readUint32(),this.handler=e.readString(4),e.readUint32Array(3),this.name=e.readString(this.size-this.hdr_size-20),"\0"===this.name[this.name.length-1]&&(this.name=this.name.slice(0,-1)))})),c.createBoxCtor("hvcC",(function(e){var t,i,r,s;this.configurationVersion=e.readUint8(),s=e.readUint8(),this.general_profile_space=s>>6,this.general_tier_flag=(32&s)>>5,this.general_profile_idc=31&s,this.general_profile_compatibility=e.readUint32(),this.general_constraint_indicator=e.readUint8Array(6),this.general_level_idc=e.readUint8(),this.min_spatial_segmentation_idc=4095&e.readUint16(),this.parallelismType=3&e.readUint8(),this.chroma_format_idc=3&e.readUint8(),this.bit_depth_luma_minus8=7&e.readUint8(),this.bit_depth_chroma_minus8=7&e.readUint8(),this.avgFrameRate=e.readUint16(),s=e.readUint8(),this.constantFrameRate=s>>6,this.numTemporalLayers=(13&s)>>3,this.temporalIdNested=(4&s)>>2,this.lengthSizeMinusOne=3&s,this.nalu_arrays=[];var a=e.readUint8();for(t=0;t>7,n.nalu_type=63&s;var o=e.readUint16();for(i=0;i>4&15,this.length_size=15&t,t=e.readUint8(),this.base_offset_size=t>>4&15,1===this.version||2===this.version?this.index_size=15&t:this.index_size=0,this.items=[];var i=0;if(this.version<2)i=e.readUint16();else{if(2!==this.version)throw"version of iloc box not supported";i=e.readUint32()}for(var r=0;r>7,this.axis=1&t})),c.createFullBoxCtor("infe",(function(e){if(0!==this.version&&1!==this.version||(this.item_ID=e.readUint16(),this.item_protection_index=e.readUint16(),this.item_name=e.readCString(),this.content_type=e.readCString(),this.content_encoding=e.readCString()),1===this.version)return this.extension_type=e.readString(4),a.warn("BoxParser","Cannot parse extension type"),void e.seek(this.start+this.size);this.version>=2&&(2===this.version?this.item_ID=e.readUint16():3===this.version&&(this.item_ID=e.readUint32()),this.item_protection_index=e.readUint16(),this.item_type=e.readString(4),this.item_name=e.readCString(),"mime"===this.item_type?(this.content_type=e.readCString(),this.content_encoding=e.readCString()):"uri "===this.item_type&&(this.item_uri_type=e.readCString()))})),c.createFullBoxCtor("ipma",(function(e){var t,i;for(entry_count=e.readUint32(),this.associations=[],t=0;t>7==1,1&this.flags?n.property_index=(127&a)<<8|e.readUint8():n.property_index=127&a}}})),c.createFullBoxCtor("iref",(function(e){var t,i;for(this.references=[];e.getPosition()>7,r.assignment_type=127&s,r.assignment_type){case 0:r.grouping_type=e.readString(4);break;case 1:r.grouping_type=e.readString(4),r.grouping_type_parameter=e.readUint32();break;case 2:case 3:break;case 4:r.sub_track_id=e.readUint32();break;default:a.warn("BoxParser","Unknown leva assignement type")}}})),c.createBoxCtor("lsel",(function(e){this.layer_id=e.readUint16()})),c.createBoxCtor("maxr",(function(e){this.period=e.readUint32(),this.bytes=e.readUint32()})),c.createBoxCtor("mdcv",(function(e){this.display_primaries=[],this.display_primaries[0]={},this.display_primaries[0].x=e.readUint16(),this.display_primaries[0].y=e.readUint16(),this.display_primaries[1]={},this.display_primaries[1].x=e.readUint16(),this.display_primaries[1].y=e.readUint16(),this.display_primaries[2]={},this.display_primaries[2].x=e.readUint16(),this.display_primaries[2].y=e.readUint16(),this.white_point={},this.white_point.x=e.readUint16(),this.white_point.y=e.readUint16(),this.max_display_mastering_luminance=e.readUint32(),this.min_display_mastering_luminance=e.readUint32()})),c.createFullBoxCtor("mdhd",(function(e){1==this.version?(this.creation_time=e.readUint64(),this.modification_time=e.readUint64(),this.timescale=e.readUint32(),this.duration=e.readUint64()):(this.creation_time=e.readUint32(),this.modification_time=e.readUint32(),this.timescale=e.readUint32(),this.duration=e.readUint32()),this.parseLanguage(e),e.readUint16()})),c.createFullBoxCtor("mehd",(function(e){1&this.flags&&(a.warn("BoxParser","mehd box incorrectly uses flags set to 1, converting version to 1"),this.version=1),1==this.version?this.fragment_duration=e.readUint64():this.fragment_duration=e.readUint32()})),c.createFullBoxCtor("meta",(function(e){this.boxes=[],c.ContainerBox.prototype.parse.call(this,e)})),c.createFullBoxCtor("mfhd",(function(e){this.sequence_number=e.readUint32()})),c.createFullBoxCtor("mfro",(function(e){this._size=e.readUint32()})),c.createFullBoxCtor("mvhd",(function(e){1==this.version?(this.creation_time=e.readUint64(),this.modification_time=e.readUint64(),this.timescale=e.readUint32(),this.duration=e.readUint64()):(this.creation_time=e.readUint32(),this.modification_time=e.readUint32(),this.timescale=e.readUint32(),this.duration=e.readUint32()),this.rate=e.readUint32(),this.volume=e.readUint16()>>8,e.readUint16(),e.readUint32Array(2),this.matrix=e.readUint32Array(9),e.readUint32Array(6),this.next_track_id=e.readUint32()})),c.createBoxCtor("npck",(function(e){this.packetssent=e.readUint32()})),c.createBoxCtor("nump",(function(e){this.packetssent=e.readUint64()})),c.createFullBoxCtor("padb",(function(e){var t=e.readUint32();this.padbits=[];for(var i=0;i0){var t=e.readUint32();this.kid=[];for(var i=0;i0&&(this.data=e.readUint8Array(r))})),c.createFullBoxCtor("clef",(function(e){this.width=e.readUint32(),this.height=e.readUint32()})),c.createFullBoxCtor("enof",(function(e){this.width=e.readUint32(),this.height=e.readUint32()})),c.createFullBoxCtor("prof",(function(e){this.width=e.readUint32(),this.height=e.readUint32()})),c.createContainerBoxCtor("tapt",null,["clef","prof","enof"]),c.createBoxCtor("rtp ",(function(e){this.descriptionformat=e.readString(4),this.sdptext=e.readString(this.size-this.hdr_size-4)})),c.createFullBoxCtor("saio",(function(e){1&this.flags&&(this.aux_info_type=e.readUint32(),this.aux_info_type_parameter=e.readUint32());var t=e.readUint32();this.offset=[];for(var i=0;i>7,this.avgRateFlag=t>>6&1,this.durationFlag&&(this.duration=e.readUint32()),this.avgRateFlag&&(this.accurateStatisticsFlag=e.readUint8(),this.avgBitRate=e.readUint16(),this.avgFrameRate=e.readUint16()),this.dependency=[];for(var i=e.readUint8(),r=0;r>7,this.num_leading_samples=127&t})),c.createSampleGroupCtor("rash",(function(e){if(this.operation_point_count=e.readUint16(),this.description_length!==2+(1===this.operation_point_count?2:6*this.operation_point_count)+9)a.warn("BoxParser","Mismatch in "+this.grouping_type+" sample group length"),this.data=e.readUint8Array(this.description_length-2);else{if(1===this.operation_point_count)this.target_rate_share=e.readUint16();else{this.target_rate_share=[],this.available_bitrate=[];for(var t=0;t>4,this.skip_byte_block=15&t,this.isProtected=e.readUint8(),this.Per_Sample_IV_Size=e.readUint8(),this.KID=c.parseHex16(e),this.constant_IV_size=0,this.constant_IV=0,1===this.isProtected&&0===this.Per_Sample_IV_Size&&(this.constant_IV_size=e.readUint8(),this.constant_IV=e.readUint8Array(this.constant_IV_size))})),c.createSampleGroupCtor("stsa",(function(e){a.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),c.createSampleGroupCtor("sync",(function(e){var t=e.readUint8();this.NAL_unit_type=63&t})),c.createSampleGroupCtor("tele",(function(e){var t=e.readUint8();this.level_independently_decodable=t>>7})),c.createSampleGroupCtor("tsas",(function(e){a.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),c.createSampleGroupCtor("tscl",(function(e){a.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),c.createSampleGroupCtor("vipr",(function(e){a.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),c.createFullBoxCtor("sbgp",(function(e){this.grouping_type=e.readString(4),1===this.version?this.grouping_type_parameter=e.readUint32():this.grouping_type_parameter=0,this.entries=[];for(var t=e.readUint32(),i=0;i>6,this.sample_depends_on[r]=t>>4&3,this.sample_is_depended_on[r]=t>>2&3,this.sample_has_redundancy[r]=3&t})),c.createFullBoxCtor("senc"),c.createFullBoxCtor("sgpd",(function(e){this.grouping_type=e.readString(4),a.debug("BoxParser","Found Sample Groups of type "+this.grouping_type),1===this.version?this.default_length=e.readUint32():this.default_length=0,this.version>=2&&(this.default_group_description_index=e.readUint32()),this.entries=[];for(var t=e.readUint32(),i=0;i>31&1,r.referenced_size=2147483647&s,r.subsegment_duration=e.readUint32(),s=e.readUint32(),r.starts_with_SAP=s>>31&1,r.SAP_type=s>>28&7,r.SAP_delta_time=268435455&s}})),c.SingleItemTypeReferenceBox=function(e,t,i,r){c.Box.call(this,e,t),this.hdr_size=i,this.start=r},c.SingleItemTypeReferenceBox.prototype=new c.Box,c.SingleItemTypeReferenceBox.prototype.parse=function(e){this.from_item_ID=e.readUint16();var t=e.readUint16();this.references=[];for(var i=0;i>4&15,this.sample_sizes[t+1]=15&r}else if(8===this.field_size)for(t=0;t0)for(i=0;i>4&15,this.default_skip_byte_block=15&t}this.default_isProtected=e.readUint8(),this.default_Per_Sample_IV_Size=e.readUint8(),this.default_KID=c.parseHex16(e),1===this.default_isProtected&&0===this.default_Per_Sample_IV_Size&&(this.default_constant_IV_size=e.readUint8(),this.default_constant_IV=e.readUint8Array(this.default_constant_IV_size))})),c.createFullBoxCtor("tfdt",(function(e){1==this.version?this.baseMediaDecodeTime=e.readUint64():this.baseMediaDecodeTime=e.readUint32()})),c.createFullBoxCtor("tfhd",(function(e){var t=0;this.track_id=e.readUint32(),this.size-this.hdr_size>t&&this.flags&c.TFHD_FLAG_BASE_DATA_OFFSET?(this.base_data_offset=e.readUint64(),t+=8):this.base_data_offset=0,this.size-this.hdr_size>t&&this.flags&c.TFHD_FLAG_SAMPLE_DESC?(this.default_sample_description_index=e.readUint32(),t+=4):this.default_sample_description_index=0,this.size-this.hdr_size>t&&this.flags&c.TFHD_FLAG_SAMPLE_DUR?(this.default_sample_duration=e.readUint32(),t+=4):this.default_sample_duration=0,this.size-this.hdr_size>t&&this.flags&c.TFHD_FLAG_SAMPLE_SIZE?(this.default_sample_size=e.readUint32(),t+=4):this.default_sample_size=0,this.size-this.hdr_size>t&&this.flags&c.TFHD_FLAG_SAMPLE_FLAGS?(this.default_sample_flags=e.readUint32(),t+=4):this.default_sample_flags=0})),c.createFullBoxCtor("tfra",(function(e){this.track_ID=e.readUint32(),e.readUint24();var t=e.readUint8();this.length_size_of_traf_num=t>>4&3,this.length_size_of_trun_num=t>>2&3,this.length_size_of_sample_num=3&t,this.entries=[];for(var i=e.readUint32(),r=0;r>8,e.readUint16(),this.matrix=e.readInt32Array(9),this.width=e.readUint32(),this.height=e.readUint32()})),c.createBoxCtor("tmax",(function(e){this.time=e.readUint32()})),c.createBoxCtor("tmin",(function(e){this.time=e.readUint32()})),c.createBoxCtor("totl",(function(e){this.bytessent=e.readUint32()})),c.createBoxCtor("tpay",(function(e){this.bytessent=e.readUint32()})),c.createBoxCtor("tpyl",(function(e){this.bytessent=e.readUint64()})),c.TrackGroupTypeBox.prototype.parse=function(e){this.parseFullHeader(e),this.track_group_id=e.readUint32()},c.createTrackGroupCtor("msrc"),c.TrackReferenceTypeBox=function(e,t,i,r){c.Box.call(this,e,t),this.hdr_size=i,this.start=r},c.TrackReferenceTypeBox.prototype=new c.Box,c.TrackReferenceTypeBox.prototype.parse=function(e){this.track_ids=e.readUint32Array((this.size-this.hdr_size)/4)},c.trefBox.prototype.parse=function(e){for(var t,i;e.getPosition()t&&this.flags&c.TRUN_FLAGS_DATA_OFFSET?(this.data_offset=e.readInt32(),t+=4):this.data_offset=0,this.size-this.hdr_size>t&&this.flags&c.TRUN_FLAGS_FIRST_FLAG?(this.first_sample_flags=e.readUint32(),t+=4):this.first_sample_flags=0,this.sample_duration=[],this.sample_size=[],this.sample_flags=[],this.sample_composition_time_offset=[],this.size-this.hdr_size>t)for(var i=0;i0&&(this.location=e.readCString())})),c.createUUIDBox("a5d40b30e81411ddba2f0800200c9a66",!0,!1,(function(e){this.LiveServerManifest=e.readString(this.size-this.hdr_size).replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")})),c.createUUIDBox("d08a4f1810f34a82b6c832d8aba183d3",!0,!1,(function(e){this.system_id=c.parseHex16(e);var t=e.readUint32();t>0&&(this.data=e.readUint8Array(t))})),c.createUUIDBox("a2394f525a9b4f14a2446c427c648df4",!0,!1),c.createUUIDBox("8974dbce7be74c5184f97148f9882554",!0,!1,(function(e){this.default_AlgorithmID=e.readUint24(),this.default_IV_size=e.readUint8(),this.default_KID=c.parseHex16(e)})),c.createUUIDBox("d4807ef2ca3946958e5426cb9e46a79f",!0,!1,(function(e){this.fragment_count=e.readUint8(),this.entries=[];for(var t=0;t>4,this.chromaSubsampling=t>>1&7,this.videoFullRangeFlag=1&t,this.colourPrimaries=e.readUint8(),this.transferCharacteristics=e.readUint8(),this.matrixCoefficients=e.readUint8(),this.codecIntializationDataSize=e.readUint16(),this.codecIntializationData=e.readUint8Array(this.codecIntializationDataSize)):(this.profile=e.readUint8(),this.level=e.readUint8(),t=e.readUint8(),this.bitDepth=t>>4&15,this.colorSpace=15&t,t=e.readUint8(),this.chromaSubsampling=t>>4&15,this.transferFunction=t>>1&7,this.videoFullRangeFlag=1&t,this.codecIntializationDataSize=e.readUint16(),this.codecIntializationData=e.readUint8Array(this.codecIntializationDataSize))})),c.createBoxCtor("vttC",(function(e){this.text=e.readString(this.size-this.hdr_size)})),c.createFullBoxCtor("vvcC",(function(e){var t,i,r={held_bits:void 0,num_held_bits:0,stream_read_1_bytes:function(e){this.held_bits=e.readUint8(),this.num_held_bits=8},stream_read_2_bytes:function(e){this.held_bits=e.readUint16(),this.num_held_bits=16},extract_bits:function(e){var t=this.held_bits>>this.num_held_bits-e&(1<=0;--i){var n=r.extract_bits(1);this.ptl_sublayer_present_mask|=n<1;++i)r.extract_bits(1);for(i=this.num_sublayers-2;i>=0;--i)this.ptl_sublayer_present_mask&1<>=1;t+=c.decimalToHex(r,0),t+=".",0===this.hvcC.general_tier_flag?t+="L":t+="H",t+=this.hvcC.general_level_idc;var s=!1,a="";for(e=5;e>=0;e--)(this.hvcC.general_constraint_indicator[e]||s)&&(a="."+c.decimalToHex(this.hvcC.general_constraint_indicator[e],0)+a,s=!0);t+=a}return t},c.vvc1SampleEntry.prototype.getCodec=c.vvi1SampleEntry.prototype.getCodec=function(){var e,t=c.SampleEntry.prototype.getCodec.call(this);if(this.vvcC){t+="."+this.vvcC.general_profile_idc,this.vvcC.general_tier_flag?t+=".H":t+=".L",t+=this.vvcC.general_level_idc;var i="";if(this.vvcC.general_constraint_info){var r,s=[],a=0;for(a|=this.vvcC.ptl_frame_only_constraint<<7,a|=this.vvcC.ptl_multilayer_enabled<<6,e=0;e>2&63,s.push(a),a&&(r=e),a=this.vvcC.general_constraint_info[e]>>2&3;if(void 0===r)i=".CA";else{i=".C";var n="ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",o=0,l=0;for(e=0;e<=r;++e)for(o=o<<8|s[e],l+=8;l>=5;){i+=n[o>>l-5&31],o&=(1<<(l-=5))-1}l&&(i+=n[31&(o<<=5-l)])}}t+=i}return t},c.mp4aSampleEntry.prototype.getCodec=function(){var e=c.SampleEntry.prototype.getCodec.call(this);if(this.esds&&this.esds.esd){var t=this.esds.esd.getOTI(),i=this.esds.esd.getAudioConfig();return e+"."+c.decimalToHex(t)+(i?"."+i:"")}return e},c.stxtSampleEntry.prototype.getCodec=function(){var e=c.SampleEntry.prototype.getCodec.call(this);return this.mime_format?e+"."+this.mime_format:e},c.vp08SampleEntry.prototype.getCodec=c.vp09SampleEntry.prototype.getCodec=function(){var e=c.SampleEntry.prototype.getCodec.call(this),t=this.vpcC.level;0==t&&(t="00");var i=this.vpcC.bitDepth;return 8==i&&(i="08"),e+".0"+this.vpcC.profile+"."+t+"."+i},c.av01SampleEntry.prototype.getCodec=function(){var e,t=c.SampleEntry.prototype.getCodec.call(this),i=this.av1C.seq_level_idx_0;return i<10&&(i="0"+i),2===this.av1C.seq_profile&&1===this.av1C.high_bitdepth?e=1===this.av1C.twelve_bit?"12":"10":this.av1C.seq_profile<=2&&(e=1===this.av1C.high_bitdepth?"10":"08"),t+"."+this.av1C.seq_profile+"."+i+(this.av1C.seq_tier_0?"H":"M")+"."+e},c.Box.prototype.writeHeader=function(e,t){this.size+=8,this.size>l&&(this.size+=8),"uuid"===this.type&&(this.size+=16),a.debug("BoxWriter","Writing box "+this.type+" of size: "+this.size+" at position "+e.getPosition()+(t||"")),this.size>l?e.writeUint32(1):(this.sizePosition=e.getPosition(),e.writeUint32(this.size)),e.writeString(this.type,null,4),"uuid"===this.type&&e.writeUint8Array(this.uuid),this.size>l&&e.writeUint64(this.size)},c.FullBox.prototype.writeHeader=function(e){this.size+=4,c.Box.prototype.writeHeader.call(this,e," v="+this.version+" f="+this.flags),e.writeUint8(this.version),e.writeUint24(this.flags)},c.Box.prototype.write=function(e){"mdat"===this.type?this.data&&(this.size=this.data.length,this.writeHeader(e),e.writeUint8Array(this.data)):(this.size=this.data?this.data.length:0,this.writeHeader(e),this.data&&e.writeUint8Array(this.data))},c.ContainerBox.prototype.write=function(e){this.size=0,this.writeHeader(e);for(var t=0;t=2&&e.writeUint32(this.default_sample_description_index),e.writeUint32(this.entries.length),t=0;t0)for(t=0;t+1t?1:0,this.flags=0,this.size=4,1===this.version&&(this.size+=4),this.writeHeader(e),1===this.version?e.writeUint64(this.baseMediaDecodeTime):e.writeUint32(this.baseMediaDecodeTime)},c.tfhdBox.prototype.write=function(e){this.version=0,this.size=4,this.flags&c.TFHD_FLAG_BASE_DATA_OFFSET&&(this.size+=8),this.flags&c.TFHD_FLAG_SAMPLE_DESC&&(this.size+=4),this.flags&c.TFHD_FLAG_SAMPLE_DUR&&(this.size+=4),this.flags&c.TFHD_FLAG_SAMPLE_SIZE&&(this.size+=4),this.flags&c.TFHD_FLAG_SAMPLE_FLAGS&&(this.size+=4),this.writeHeader(e),e.writeUint32(this.track_id),this.flags&c.TFHD_FLAG_BASE_DATA_OFFSET&&e.writeUint64(this.base_data_offset),this.flags&c.TFHD_FLAG_SAMPLE_DESC&&e.writeUint32(this.default_sample_description_index),this.flags&c.TFHD_FLAG_SAMPLE_DUR&&e.writeUint32(this.default_sample_duration),this.flags&c.TFHD_FLAG_SAMPLE_SIZE&&e.writeUint32(this.default_sample_size),this.flags&c.TFHD_FLAG_SAMPLE_FLAGS&&e.writeUint32(this.default_sample_flags)},c.tkhdBox.prototype.write=function(e){this.version=0,this.size=80,this.writeHeader(e),e.writeUint32(this.creation_time),e.writeUint32(this.modification_time),e.writeUint32(this.track_id),e.writeUint32(0),e.writeUint32(this.duration),e.writeUint32(0),e.writeUint32(0),e.writeInt16(this.layer),e.writeInt16(this.alternate_group),e.writeInt16(this.volume<<8),e.writeUint16(0),e.writeInt32Array(this.matrix),e.writeUint32(this.width),e.writeUint32(this.height)},c.trexBox.prototype.write=function(e){this.version=0,this.flags=0,this.size=20,this.writeHeader(e),e.writeUint32(this.track_id),e.writeUint32(this.default_sample_description_index),e.writeUint32(this.default_sample_duration),e.writeUint32(this.default_sample_size),e.writeUint32(this.default_sample_flags)},c.trunBox.prototype.write=function(e){this.version=0,this.size=4,this.flags&c.TRUN_FLAGS_DATA_OFFSET&&(this.size+=4),this.flags&c.TRUN_FLAGS_FIRST_FLAG&&(this.size+=4),this.flags&c.TRUN_FLAGS_DURATION&&(this.size+=4*this.sample_duration.length),this.flags&c.TRUN_FLAGS_SIZE&&(this.size+=4*this.sample_size.length),this.flags&c.TRUN_FLAGS_FLAGS&&(this.size+=4*this.sample_flags.length),this.flags&c.TRUN_FLAGS_CTS_OFFSET&&(this.size+=4*this.sample_composition_time_offset.length),this.writeHeader(e),e.writeUint32(this.sample_count),this.flags&c.TRUN_FLAGS_DATA_OFFSET&&(this.data_offset_position=e.getPosition(),e.writeInt32(this.data_offset)),this.flags&c.TRUN_FLAGS_FIRST_FLAG&&e.writeUint32(this.first_sample_flags);for(var t=0;t-1||e[i]instanceof c.Box||t[i]instanceof c.Box||void 0===e[i]||void 0===t[i]||"function"==typeof e[i]||"function"==typeof t[i]||e.subBoxNames&&e.subBoxNames.indexOf(i.slice(0,4))>-1||t.subBoxNames&&t.subBoxNames.indexOf(i.slice(0,4))>-1||"data"===i||"start"===i||"size"===i||"creation_time"===i||"modification_time"===i||c.DIFF_PRIMITIVE_ARRAY_PROP_NAMES.indexOf(i)>-1||e[i]===t[i]))return!1;return!0},c.boxEqual=function(e,t){if(!c.boxEqualFields(e,t))return!1;for(var i=0;i1)for(t=1;t-1&&this.fragmentedTracks.splice(t,1)},f.prototype.setExtractionOptions=function(e,t,i){var r=this.getTrackById(e);if(r){var s={};this.extractedTracks.push(s),s.id=e,s.user=t,s.trak=r,r.nextSample=0,s.nb_samples=1e3,s.samples=[],i&&i.nbSamples&&(s.nb_samples=i.nbSamples)}},f.prototype.unsetExtractionOptions=function(e){for(var t=-1,i=0;i-1&&this.extractedTracks.splice(t,1)},f.prototype.parse=function(){var e,t;if(!this.restoreParsePosition||this.restoreParsePosition())for(;;){if(this.hasIncompleteMdat&&this.hasIncompleteMdat()){if(this.processIncompleteMdat())continue;return}if(this.saveParsePosition&&this.saveParsePosition(),(e=c.parseOneBox(this.stream,false)).code===c.ERR_NOT_ENOUGH_DATA){if(this.processIncompleteBox){if(this.processIncompleteBox(e))continue;return}return}var i;switch(i="uuid"!==(t=e.box).type?t.type:t.uuid,this.boxes.push(t),i){case"mdat":this.mdats.push(t);break;case"moof":this.moofs.push(t);break;case"moov":this.moovStartFound=!0,0===this.mdats.length&&(this.isProgressive=!0);default:void 0!==this[i]&&a.warn("ISOFile","Duplicate Box of type: "+i+", overriding previous occurrence"),this[i]=t}this.updateUsedBytes&&this.updateUsedBytes(t,e)}},f.prototype.checkBuffer=function(e){if(null==e)throw"Buffer must be defined and non empty";if(void 0===e.fileStart)throw"Buffer must have a fileStart property";return 0===e.byteLength?(a.warn("ISOFile","Ignoring empty buffer (fileStart: "+e.fileStart+")"),this.stream.logBufferLevel(),!1):(a.info("ISOFile","Processing buffer (fileStart: "+e.fileStart+")"),e.usedBytes=0,this.stream.insertBuffer(e),this.stream.logBufferLevel(),!!this.stream.initialized()||(a.warn("ISOFile","Not ready to start parsing"),!1))},f.prototype.appendBuffer=function(e,t){var i;if(this.checkBuffer(e))return this.parse(),this.moovStartFound&&!this.moovStartSent&&(this.moovStartSent=!0,this.onMoovStart&&this.onMoovStart()),this.moov?(this.sampleListBuilt||(this.buildSampleLists(),this.sampleListBuilt=!0),this.updateSampleLists(),this.onReady&&!this.readySent&&(this.readySent=!0,this.onReady(this.getInfo())),this.processSamples(t),this.nextSeekPosition?(i=this.nextSeekPosition,this.nextSeekPosition=void 0):i=this.nextParsePosition,this.stream.getEndFilePositionAfter&&(i=this.stream.getEndFilePositionAfter(i))):i=this.nextParsePosition?this.nextParsePosition:0,this.sidx&&this.onSidx&&!this.sidxSent&&(this.onSidx(this.sidx),this.sidxSent=!0),this.meta&&(this.flattenItemInfo&&!this.itemListBuilt&&(this.flattenItemInfo(),this.itemListBuilt=!0),this.processItems&&this.processItems(this.onItem)),this.stream.cleanBuffers&&(a.info("ISOFile","Done processing buffer (fileStart: "+e.fileStart+") - next buffer to fetch should have a fileStart position of "+i),this.stream.logBufferLevel(),this.stream.cleanBuffers(),this.stream.logBufferLevel(!0),a.info("ISOFile","Sample data size in memory: "+this.getAllocatedSampleDataSize())),i},f.prototype.getInfo=function(){var e,t,i,r,s,a,n={},o=new Date("1904-01-01T00:00:00Z").getTime();if(this.moov)for(n.hasMoov=!0,n.duration=this.moov.mvhd.duration,n.timescale=this.moov.mvhd.timescale,n.isFragmented=null!=this.moov.mvex,n.isFragmented&&this.moov.mvex.mehd&&(n.fragment_duration=this.moov.mvex.mehd.fragment_duration),n.isProgressive=this.isProgressive,n.hasIOD=null!=this.moov.iods,n.brands=[],n.brands.push(this.ftyp.major_brand),n.brands=n.brands.concat(this.ftyp.compatible_brands),n.created=new Date(o+1e3*this.moov.mvhd.creation_time),n.modified=new Date(o+1e3*this.moov.mvhd.modification_time),n.tracks=[],n.audioTracks=[],n.videoTracks=[],n.subtitleTracks=[],n.metadataTracks=[],n.hintTracks=[],n.otherTracks=[],e=0;e0?n.mime+='video/mp4; codecs="':n.audioTracks&&n.audioTracks.length>0?n.mime+='audio/mp4; codecs="':n.mime+='application/mp4; codecs="',e=0;e=i.samples.length)&&(a.info("ISOFile","Sending fragmented data on track #"+r.id+" for samples ["+Math.max(0,i.nextSample-r.nb_samples)+","+(i.nextSample-1)+"]"),a.info("ISOFile","Sample data size in memory: "+this.getAllocatedSampleDataSize()),this.onSegment&&this.onSegment(r.id,r.user,r.segmentStream.buffer,i.nextSample,e||i.nextSample>=i.samples.length),r.segmentStream=null,r!==this.fragmentedTracks[t]))break}}if(null!==this.onSamples)for(t=0;t=i.samples.length)&&(a.debug("ISOFile","Sending samples on track #"+n.id+" for sample "+i.nextSample),this.onSamples&&this.onSamples(n.id,n.user,n.samples),n.samples=[],n!==this.extractedTracks[t]))break}}}},f.prototype.getBox=function(e){var t=this.getBoxes(e,!0);return t.length?t[0]:null},f.prototype.getBoxes=function(e,t){var i=[];return f._sweep.call(this,e,i,t),i},f._sweep=function(e,t,i){for(var r in this.type&&this.type==e&&t.push(this),this.boxes){if(t.length&&i)return;f._sweep.call(this.boxes[r],e,t,i)}},f.prototype.getTrackSamplesInfo=function(e){var t=this.getTrackById(e);return t?t.samples:void 0},f.prototype.getTrackSample=function(e,t){var i=this.getTrackById(e);return this.getSample(i,t)},f.prototype.releaseUsedSamples=function(e,t){var i=0,r=this.getTrackById(e);r.lastValidSample||(r.lastValidSample=0);for(var s=r.lastValidSample;se*s.timescale){d=r-1;break}t&&s.is_sync&&(l=r)}for(t&&(d=l),e=i.samples[d].cts,i.nextSample=d;i.samples[d].alreadyRead===i.samples[d].size&&i.samples[d+1];)d++;return n=i.samples[d].offset+i.samples[d].alreadyRead,a.info("ISOFile","Seeking to "+(t?"RAP":"")+" sample #"+i.nextSample+" on track "+i.tkhd.track_id+", time "+a.getDurationString(e,o)+" and offset: "+n),{offset:n,time:e/o}},f.prototype.seek=function(e,t){var i,r,s,n=this.moov,o={offset:1/0,time:1/0};if(this.moov){for(s=0;s-1){o=l;break}switch(o){case"Visual":if(s.add("vmhd").set("graphicsmode",0).set("opcolor",[0,0,0]),a.set("width",t.width).set("height",t.height).set("horizresolution",72<<16).set("vertresolution",72<<16).set("frame_count",1).set("compressorname",t.type+" Compressor").set("depth",24),t.avcDecoderConfigRecord){var u=new c.avcCBox,p=new n(t.avcDecoderConfigRecord);u.parse(p),a.addBox(u)}break;case"Audio":s.add("smhd").set("balance",t.balance||0),a.set("channel_count",t.channel_count||2).set("samplesize",t.samplesize||16).set("samplerate",t.samplerate||65536);break;case"Hint":s.add("hmhd");break;case"Subtitle":if(s.add("sthd"),"stpp"===t.type)a.set("namespace",t.namespace||"nonamespace").set("schema_location",t.schema_location||"").set("auxiliary_mime_types",t.auxiliary_mime_types||"");break;default:s.add("nmhd")}t.description&&a.addBox(t.description),t.description_boxes&&t.description_boxes.forEach((function(e){a.addBox(e)})),s.add("dinf").add("dref").addEntry((new c["url Box"]).set("flags",1));var f=s.add("stbl");return f.add("stsd").addEntry(a),f.add("stts").set("sample_counts",[]).set("sample_deltas",[]),f.add("stsc").set("first_chunk",[]).set("samples_per_chunk",[]).set("sample_description_index",[]),f.add("stco").set("chunk_offsets",[]),f.add("stsz").set("sample_sizes",[]),this.moov.mvex.add("trex").set("track_id",t.id).set("default_sample_description_index",t.default_sample_description_index||1).set("default_sample_duration",t.default_sample_duration||0).set("default_sample_size",t.default_sample_size||0).set("default_sample_flags",t.default_sample_flags||0),this.buildTrakSampleLists(i),t.id}},c.Box.prototype.computeSize=function(e){var t=e||new o;t.endianness=o.BIG_ENDIAN,this.write(t)},f.prototype.addSample=function(e,t,i){var r=i||{},s={},a=this.getTrackById(e);if(null!==a){s.number=a.samples.length,s.track_id=a.tkhd.track_id,s.timescale=a.mdia.mdhd.timescale,s.description_index=r.sample_description_index?r.sample_description_index-1:0,s.description=a.mdia.minf.stbl.stsd.entries[s.description_index],s.data=t,s.size=t.byteLength,s.alreadyRead=s.size,s.duration=r.duration||1,s.cts=r.cts||0,s.dts=r.dts||0,s.is_sync=r.is_sync||!1,s.is_leading=r.is_leading||0,s.depends_on=r.depends_on||0,s.is_depended_on=r.is_depended_on||0,s.has_redundancy=r.has_redundancy||0,s.degradation_priority=r.degradation_priority||0,s.offset=0,s.subsamples=r.subsamples,a.samples.push(s),a.samples_size+=s.size,a.samples_duration+=s.duration,a.first_dts||(a.first_dts=r.dts),this.processSamples();var n=this.createSingleSampleMoof(s);return this.addBox(n),n.computeSize(),n.trafs[0].truns[0].data_offset=n.size+8,this.add("mdat").data=new Uint8Array(t),s}},f.prototype.createSingleSampleMoof=function(e){var t=0;t=e.is_sync?1<<25:65536;var i=new c.moofBox;i.add("mfhd").set("sequence_number",this.nextMoofNumber),this.nextMoofNumber++;var r=i.add("traf"),s=this.getTrackById(e.track_id);return r.add("tfhd").set("track_id",e.track_id).set("flags",c.TFHD_FLAG_DEFAULT_BASE_IS_MOOF),r.add("tfdt").set("baseMediaDecodeTime",e.dts-(s.first_dts||0)),r.add("trun").set("flags",c.TRUN_FLAGS_DATA_OFFSET|c.TRUN_FLAGS_DURATION|c.TRUN_FLAGS_SIZE|c.TRUN_FLAGS_FLAGS|c.TRUN_FLAGS_CTS_OFFSET).set("data_offset",0).set("first_sample_flags",0).set("sample_count",1).set("sample_duration",[e.duration]).set("sample_size",[e.size]).set("sample_flags",[t]).set("sample_composition_time_offset",[e.cts-e.dts]),i},f.prototype.lastMoofIndex=0,f.prototype.samplesDataSize=0,f.prototype.resetTables=function(){var e,t,i,r,s,a;for(this.initial_duration=this.moov.mvhd.duration,this.moov.mvhd.duration=0,e=0;e=2&&(l=s[n].grouping_type+"/0",(o=new d(s[n].grouping_type,0)).is_fragment=!0,t.sample_groups_info[l]||(t.sample_groups_info[l]=o))}else for(n=0;n=2&&(l=r[n].grouping_type+"/0",o=new d(r[n].grouping_type,0),e.sample_groups_info[l]||(e.sample_groups_info[l]=o))},f.setSampleGroupProperties=function(e,t,i,r){var s,a;for(s in t.sample_groups=[],r){var n;if(t.sample_groups[s]={},t.sample_groups[s].grouping_type=r[s].grouping_type,t.sample_groups[s].grouping_type_parameter=r[s].grouping_type_parameter,i>=r[s].last_sample_in_run&&(r[s].last_sample_in_run<0&&(r[s].last_sample_in_run=0),r[s].entry_index++,r[s].entry_index<=r[s].sbgp.entries.length-1&&(r[s].last_sample_in_run+=r[s].sbgp.entries[r[s].entry_index].sample_count)),r[s].entry_index<=r[s].sbgp.entries.length-1?t.sample_groups[s].group_description_index=r[s].sbgp.entries[r[s].entry_index].group_description_index:t.sample_groups[s].group_description_index=-1,0!==t.sample_groups[s].group_description_index)n=r[s].fragment_description?r[s].fragment_description:r[s].description,t.sample_groups[s].group_description_index>0?(a=t.sample_groups[s].group_description_index>65535?(t.sample_groups[s].group_description_index>>16)-1:t.sample_groups[s].group_description_index-1,n&&a>=0&&(t.sample_groups[s].description=n.entries[a])):n&&n.version>=2&&n.default_group_description_index>0&&(t.sample_groups[s].description=n.entries[n.default_group_description_index-1])}},f.process_sdtp=function(e,t,i){t&&(e?(t.is_leading=e.is_leading[i],t.depends_on=e.sample_depends_on[i],t.is_depended_on=e.sample_is_depended_on[i],t.has_redundancy=e.sample_has_redundancy[i]):(t.is_leading=0,t.depends_on=0,t.is_depended_on=0,t.has_redundancy=0))},f.prototype.buildSampleLists=function(){var e,t;for(e=0;ev&&(b++,v<0&&(v=0),v+=a.sample_counts[b]),t>0?(e.samples[t-1].duration=a.sample_deltas[b],e.samples_duration+=e.samples[t-1].duration,k.dts=e.samples[t-1].dts+e.samples[t-1].duration):k.dts=0,n?(t>=_&&(E++,_<0&&(_=0),_+=n.sample_counts[E]),k.cts=e.samples[t].dts+n.sample_offsets[E]):k.cts=k.dts,o?(t==o.sample_numbers[S]-1?(k.is_sync=!0,S++):(k.is_sync=!1,k.degradation_priority=0),d&&d.entries[w].sample_delta+T==t+1&&(k.subsamples=d.entries[w].subsamples,T+=d.entries[w].sample_delta,w++)):k.is_sync=!0,f.process_sdtp(e.mdia.minf.stbl.sdtp,k,k.number),k.degradation_priority=u?u.priority[t]:0,d&&d.entries[w].sample_delta+T==t&&(k.subsamples=d.entries[w].subsamples,T+=d.entries[w].sample_delta),(h.length>0||c.length>0)&&f.setSampleGroupProperties(e,k,t,e.sample_groups_info)}t>0&&(e.samples[t-1].duration=Math.max(e.mdia.mdhd.duration-e.samples[t-1].dts,0),e.samples_duration+=e.samples[t-1].duration)}},f.prototype.updateSampleLists=function(){var e,t,i,r,s,a,n,o,l,d,h,u,p,m,y;if(void 0!==this.moov)for(;this.lastMoofIndex0&&f.initSampleGroups(u,h,h.sbgps,u.mdia.minf.stbl.sgpds,h.sgpds),t=0;t0?m.dts=u.samples[u.samples.length-2].dts+u.samples[u.samples.length-2].duration:(h.tfdt?m.dts=h.tfdt.baseMediaDecodeTime:m.dts=0,u.first_traf_merged=!0),m.cts=m.dts,g.flags&c.TRUN_FLAGS_CTS_OFFSET&&(m.cts=m.dts+g.sample_composition_time_offset[i]),y=n,g.flags&c.TRUN_FLAGS_FLAGS?y=g.sample_flags[i]:0===i&&g.flags&c.TRUN_FLAGS_FIRST_FLAG&&(y=g.first_sample_flags),m.is_sync=!(y>>16&1),m.is_leading=y>>26&3,m.depends_on=y>>24&3,m.is_depended_on=y>>22&3,m.has_redundancy=y>>20&3,m.degradation_priority=65535&y;var A=!!(h.tfhd.flags&c.TFHD_FLAG_BASE_DATA_OFFSET),v=!!(h.tfhd.flags&c.TFHD_FLAG_DEFAULT_BASE_IS_MOOF),b=!!(g.flags&c.TRUN_FLAGS_DATA_OFFSET),_=0;_=A?h.tfhd.base_data_offset:v||0===t?d.start:o,m.offset=0===t&&0===i?b?_+g.data_offset:_:o,o=m.offset+m.size,(h.sbgps.length>0||h.sgpds.length>0||u.mdia.minf.stbl.sbgps.length>0||u.mdia.minf.stbl.sgpds.length>0)&&f.setSampleGroupProperties(u,m,m.number_in_traf,h.sample_groups_info)}}if(h.subs){u.has_fragment_subsamples=!0;var E=h.first_sample_index;for(t=0;t-1))return null;var n=(i=this.stream.buffers[s]).byteLength-(r.offset+r.alreadyRead-i.fileStart);if(r.size-r.alreadyRead<=n)return a.debug("ISOFile","Getting sample #"+t+" data (alreadyRead: "+r.alreadyRead+" offset: "+(r.offset+r.alreadyRead-i.fileStart)+" read size: "+(r.size-r.alreadyRead)+" full size: "+r.size+")"),o.memcpy(r.data.buffer,r.alreadyRead,i,r.offset+r.alreadyRead-i.fileStart,r.size-r.alreadyRead),i.usedBytes+=r.size-r.alreadyRead,this.stream.logBufferLevel(),r.alreadyRead=r.size,r;if(0===n)return null;a.debug("ISOFile","Getting sample #"+t+" partial data (alreadyRead: "+r.alreadyRead+" offset: "+(r.offset+r.alreadyRead-i.fileStart)+" read size: "+n+" full size: "+r.size+")"),o.memcpy(r.data.buffer,r.alreadyRead,i,r.offset+r.alreadyRead-i.fileStart,n),r.alreadyRead+=n,i.usedBytes+=n,this.stream.logBufferLevel()}},f.prototype.releaseSample=function(e,t){var i=e.samples[t];return i.data?(this.samplesDataSize-=i.size,i.data=null,i.alreadyRead=0,i.size):0},f.prototype.getAllocatedSampleDataSize=function(){return this.samplesDataSize},f.prototype.getCodecs=function(){var e,t="";for(e=0;e0&&(t+=","),t+=this.moov.traks[e].mdia.minf.stbl.stsd.entries[0].getCodec()}return t},f.prototype.getTrexById=function(e){var t;if(!this.moov||!this.moov.mvex)return null;for(t=0;t0&&(i.protection=s.ipro.protections[s.iinf.item_infos[e].protection_index-1]),s.iinf.item_infos[e].item_type?i.type=s.iinf.item_infos[e].item_type:i.type="mime",i.content_type=s.iinf.item_infos[e].content_type,i.content_encoding=s.iinf.item_infos[e].content_encoding;if(s.iloc)for(e=0;e0&&c.property_index-1-1))return null;var l=(t=this.stream.buffers[n]).byteLength-(s.offset+s.alreadyRead-t.fileStart);if(!(s.length-s.alreadyRead<=l))return a.debug("ISOFile","Getting item #"+e+" extent #"+r+" partial data (alreadyRead: "+s.alreadyRead+" offset: "+(s.offset+s.alreadyRead-t.fileStart)+" read size: "+l+" full extent size: "+s.length+" full item size: "+i.size+")"),o.memcpy(i.data.buffer,i.alreadyRead,t,s.offset+s.alreadyRead-t.fileStart,l),s.alreadyRead+=l,i.alreadyRead+=l,t.usedBytes+=l,this.stream.logBufferLevel(),null;a.debug("ISOFile","Getting item #"+e+" extent #"+r+" data (alreadyRead: "+s.alreadyRead+" offset: "+(s.offset+s.alreadyRead-t.fileStart)+" read size: "+(s.length-s.alreadyRead)+" full extent size: "+s.length+" full item size: "+i.size+")"),o.memcpy(i.data.buffer,i.alreadyRead,t,s.offset+s.alreadyRead-t.fileStart,s.length-s.alreadyRead),t.usedBytes+=s.length-s.alreadyRead,this.stream.logBufferLevel(),i.alreadyRead+=s.length-s.alreadyRead,s.alreadyRead=s.length}}return i.alreadyRead===i.size?i:null},f.prototype.releaseItem=function(e){var t=this.items[e];if(t.data){this.itemsDataSize-=t.size,t.data=null,t.alreadyRead=0;for(var i=0;i0?this.moov.traks[e].samples[0].duration:0),t.push(r)}return t},c.Box.prototype.printHeader=function(e){this.size+=8,this.size>l&&(this.size+=8),"uuid"===this.type&&(this.size+=16),e.log(e.indent+"size:"+this.size),e.log(e.indent+"type:"+this.type)},c.FullBox.prototype.printHeader=function(e){this.size+=4,c.Box.prototype.printHeader.call(this,e),e.log(e.indent+"version:"+this.version),e.log(e.indent+"flags:"+this.flags)},c.Box.prototype.print=function(e){this.printHeader(e)},c.ContainerBox.prototype.print=function(e){this.printHeader(e);for(var t=0;t>8)),e.log(e.indent+"matrix: "+this.matrix.join(", ")),e.log(e.indent+"next_track_id: "+this.next_track_id)},c.tkhdBox.prototype.print=function(e){c.FullBox.prototype.printHeader.call(this,e),e.log(e.indent+"creation_time: "+this.creation_time),e.log(e.indent+"modification_time: "+this.modification_time),e.log(e.indent+"track_id: "+this.track_id),e.log(e.indent+"duration: "+this.duration),e.log(e.indent+"volume: "+(this.volume>>8)),e.log(e.indent+"matrix: "+this.matrix.join(", ")),e.log(e.indent+"layer: "+this.layer),e.log(e.indent+"alternate_group: "+this.alternate_group),e.log(e.indent+"width: "+this.width),e.log(e.indent+"height: "+this.height)};var m={createFile:function(e,t){var i=void 0===e||e,r=new f(t);return r.discardMdatData=!i,r}};t.createFile=m.createFile}));function zl(e){return e.reduce(((e,t)=>256*e+t))}function Vl(e){const t=[101,103,119,99],i=e.length-28,r=e.slice(i,i+t.length);return t.every(((e,t)=>e===r[t]))}Gl.Log,Gl.MP4BoxStream,Gl.DataStream,Gl.MultiBufferStream,Gl.MPEG4DescriptorParser,Gl.BoxParser,Gl.XMLSubtitlein4Parser,Gl.Textin4Parser,Gl.ISOFile,Gl.createFile;class Hl{constructor(){this.s=null,this.a=null,this.l=0,this.c=0,this.u=1/0,this.A=!1,this.d=!1,this.r=4194304,this.n=new Uint8Array([30,158,90,33,244,57,83,165,2,70,35,87,215,231,226,108]),this.t=this.n.slice().reverse()}destroy(){this.s=null,this.a=null,this.l=0,this.c=0,this.u=1/0,this.A=!1,this.d=!1,this.r=4194304,this.n=null,this.t=null}transport(e){if(!this.s&&this.l>50)return e;if(this.l++,this.d)return e;const t=new Uint8Array(e);if(this.A){if(!(this.c~e))}(e.slice(i+32,i+32+t))]}return null}(t,this.t);if(!i)return e;const r=function(e){try{if("object"!=typeof WebAssembly||"function"!=typeof WebAssembly.instantiate)throw null;{const e=new WebAssembly.Module(Uint8Array.of(0,97,115,109,1,0,0,0));if(!(e instanceof WebAssembly.Module&&new WebAssembly.Instance(e)instanceof WebAssembly.Instance))throw null}}catch(e){return new Error("video_error_4")}let t;try{t={env:{__handle_stack_overflow:()=>e(new Error("video_error_1")),memory:new WebAssembly.Memory({initial:256,maximum:256})}}}catch(e){return new Error("video_error_5")}return t}(e);if(r instanceof Error)return console.error(r.message),this.d=!0,e;this.A=!0,this.u=i[1],Vl(t)&&this.c++,WebAssembly.instantiate(i[2],r).then((e=>{if(!function(e){return"function"==typeof e.parse&&"object"==typeof e.memory}(e.instance.exports))return this.d=!0,void console.error("video_error_3");this.s=e.instance.exports,this.a=new Uint8Array(this.s.memory.buffer)})).catch((e=>{this.d=!0,console.error("video_error_6")}))}return e}}class Wl extends Dl{constructor(e){super(e),this.TAG_NAME="Fmp4Loader",this.player=e,this.mp4Box=Gl.createFile(),this.tempFmp4List=[],this.offset=0,this.videoTrackId=null,this.audioTrackId=null,this.isHevc=!1,this.transportDescarmber=null,this.player._opt.isFmp4Private&&(this.transportDescarmber=new Hl),this._listenMp4Box(),e.debug.log(this.TAG_NAME,"init")}destroy(){this.mp4Box&&(this.mp4Box.flush(),this.mp4Box=null),this.transportDescarmber&&(this.transportDescarmber.destroy(),this.transportDescarmber=null),this.tempFmp4List=[],this.offset=0,this.videoTrackId=null,this.audioTrackId=null,this.isHevc=!1,this.player.debug.log(this.TAG_NAME,"destroy")}_listenMp4Box(){this.mp4Box.onReady=this.onReady.bind(this),this.mp4Box.onError=this.onError.bind(this),this.mp4Box.onSamples=this.onSamples.bind(this)}onReady(e){this.player.debug.log(this.TAG_NAME,"onReady",e);const t=e.videoTracks[0],i=e.audioTracks[0];if(t){this.videoTrackId=t.id;const e=this.getSeqHeader(t);e&&(this.player.debug.log(this.TAG_NAME,"seqHeader",e),this._doDecodeByFmp4(e,Oe,0,!0,0)),this.mp4Box.setExtractionOptions(t.id)}if(i&&this.player._opt.hasAudio){this.audioTrackId=i.id;const e=i.audio||{},t=Zr.indexOf(e.sample_rate),r=i.codec.replace("mp4a.40.","");this.mp4Box.setExtractionOptions(i.id);const s={profile:parseInt(r,10),sampleRate:t,channel:e.channel_count},a=Yr(s);this.player.debug.log(this.TAG_NAME,"aacADTSHeader",a,"config",s),this._doDecodeByFmp4(a,Fe,0,!1,0)}this.mp4Box.start()}onError(e){this.player.debug.error(this.TAG_NAME,"mp4Box onError",e)}onSamples(e,t,i){if(e===this.videoTrackId)for(const e of i){const t=e.data,i=e.is_sync,r=1e3*e.cts/e.timescale;e.duration,e.timescale,this.player.updateStats({vbps:t.byteLength,dts:r}),i&&this.calcIframeIntervalTimestamp(r);let s=null;s=this.isHevc?Kn(t,i):Pn(t,i),this._doDecodeByFmp4(s,Oe,r,i,0)}else if(e===this.audioTrackId){if(this.player._opt.hasAudio)for(const e of i){const t=e.data;this.player.updateStats({abps:t.byteLength});const i=1e3*e.cts/e.timescale;e.duration,e.timescale;const r=new Uint8Array(t.byteLength+2);r.set([175,1],0),r.set(t,2),this._doDecodeByFmp4(r,Fe,i,!1,0)}}else this.player.debug.warn(this.TAG_NAME,"onSamples() trackId error",e)}getSeqHeader(e){const t=this.mp4Box.getTrackById(e.id);for(const e of t.mdia.minf.stbl.stsd.entries)if(e.avcC||e.hvcC){const t=new Gl.DataStream(void 0,0,Gl.DataStream.BIG_ENDIAN);let i=[];e.avcC?(e.avcC.write(t),i=[23,0,0,0,0]):(this.isHevc=!0,e.hvcC.write(t),i=[28,0,0,0,0]);const r=new Uint8Array(t.buffer,8),s=new Uint8Array(i.length+r.length);return s.set(i,0),s.set(r,i.length),s}return null}dispatch(e){let t=new Uint8Array(e);"string"!=typeof e?"object"==typeof e?(this.transportDescarmber&&(t=this.transportDescarmber.transport(t)),t.buffer.fileStart=this.offset,this.offset+=t.byteLength,this.mp4Box.appendBuffer(t.buffer)):this.player.debug.warn(this.TAG_NAME,"dispatch()","data is not object",e):this.player.debug.warn(this.TAG_NAME,"dispatch()","data is string",e)}downloadFmp4File(){const e=new Blob(this.tempFmp4List,{type:'video/mp4; codecs="avc1.640028,mp4a.40.2"'}),t=URL.createObjectURL(e),i=document.createElement("a");i.href=t,i.download=ps()+".fmp4",i.click(),URL.revokeObjectURL(t)}}class jl extends Dl{LOG_NAME="Mpeg4Loader";constructor(e){super(e),this.player=e,this.player.debug.log(this.LOG_NAME,"init")}destroy(){super.destroy(),this.player.debug.log(this.LOG_NAME,"destroy")}}function $l(...e){if((e=e.filter(Boolean)).length<2)return e[0];const t=new Uint8Array(e.reduce(((e,t)=>e+t.byteLength),0));let i=0;return e.forEach((e=>{t.set(e,i),i+=e.byteLength})),t}class Kl extends Dl{constructor(e){super(e),this.player=e,this._pmtId=-1,this._remainingPacketData=null,this._videoPesData=[],this._audioPesData=[],this._gopId=0,this._videoPid=-1,this._audioPid=-1,this._codecType=mt,this._audioCodecType=vt.AAC,this._vps=null,this._sps=null,this._pps=null,this.TAG_NAME="HlsTsLoader",this._isForHls=!0,this.videoTrack=Kl.initVideoTrack(),this.audioTrack=Kl.initAudioTrack(),this._baseDts=-1,this._baseDtsInited=!1,this._basefps=25,this._baseFpsInterval=null,this._tempSampleTsList=[],this._hasAudio=!1,this._hasVideo=!1,this._audioNextPts=void 0,this._videoNextDts=void 0,this._audioTimestampBreak=!1,this._videoTimestampBreak=!1,this._lastAudioExceptionGapDot=0,this._lastAudioExceptionOverlapDot=0,this._lastAudioExceptionLargeGapDot=0,this._isSendAACSeqHeader=!1,this.workerClearTimeout=null,this.workerUrl=null,this.loopWorker=null,this.tempSampleListInfo={},this._isUseWorker()&&this._initLoopWorker(),this.player.debug.log(this.TAG_NAME,"init")}destroy(){super.destroy(),this.workerUrl&&(URL.revokeObjectURL(this.workerUrl),this.workerUrl=null),this.workerClearTimeout&&(clearTimeout(this.workerClearTimeout),this.workerClearTimeout=null),this.loopWorker&&(this.loopWorker.postMessage({cmd:"destroy"}),this.loopWorker.terminate(),this.loopWorker=null),this._stopDecodeLoopInterval(),this.videoTrack=null,this.audioTrack=null,this.tempSampleListInfo={},this._baseDts=-1,this._baseDtsInited=!1,this._basefps=50,this._hasCalcFps=!1,this._audioNextPts=void 0,this._videoNextDts=void 0,this._audioTimestampBreak=!1,this._videoTimestampBreak=!1,this._lastAudioExceptionGapDot=0,this._lastAudioExceptionOverlapDot=0,this._lastAudioExceptionLargeGapDot=0,this._isForHls=!0,this._isSendAACSeqHeader=!1,this.player.debug.log(this.TAG_NAME,"destroy")}static initVideoTrack(){return{samples:[]}}static initAudioTrack(){return{samples:[]}}static probe(e){return!!e.length&&(71===e[0]&&71===e[188]&&71===e[376])}static _parsePES(e){const t=e[8];if(null==t||e.lengthe.length-6)return;let r,s;const a=e[7];return 192&a&&(r=536870912*(14&e[9])+4194304*(255&e[10])+16384*(254&e[11])+128*(255&e[12])+(254&e[13])/2,64&a?(s=536870912*(14&e[14])+4194304*(255&e[15])+16384*(254&e[16])+128*(255&e[17])+(254&e[18])/2,r-s>54e5&&(r=s)):s=r),{data:e.subarray(9+t),pts:r,dts:s,originalPts:r,originalDts:s}}_demux(e,t=!1,i=!0){t&&(this._pmtId=-1,this.videoTrack=Kl.initVideoTrack(),this.audioTrack=Kl.initAudioTrack()),!i||t?(this._remainingPacketData=null,this._videoPesData=[],this._audioPesData=[]):(this.videoTrack.samples=[],this.audioTrack.samples=[],this._remainingPacketData&&(e=$l(this._remainingPacketData,e),this._remainingPacketData=null));let r=e.length;const s=r%188;s&&(this._remainingPacketData=e.subarray(r-s),r-=s);for(let t=0;t>4>1){if(s=t+5+e[t+4],s===t+188)continue}else s=t+4;switch(r){case 0:i&&(s+=e[s]+1),this._pmtId=(31&e[s+10])<<8|e[s+11];break;case this._pmtId:{i&&(s+=e[s]+1);const t=s+3+((15&e[s+1])<<8|e[s+2])-4;for(s+=12+((15&e[s+10])<<8|e[s+11]);s=t)return[];const s=[];for(;r{const t=r?e[0]>>>1&63:31&e[0];switch(t){case 5:case 16:case 17:case 18:case 19:case 20:case 21:case 22:case 23:if(!r&&5!==t||r&&5===t)break;s.isIFrame=!0,this._gopId++;break;case 6:case 39:case 40:if(!r&&6!==t||r&&6===t)break;return void function(e,t){const i=e.length;let r=t?2:1,s=0,a=0,n="";for(;255===e[r];)s+=255,r++;for(s+=e[r++];255===e[r];)a+=255,r++;if(a+=e[r++],5===s&&i>r+16)for(let t=0;t<16;t++)n+=e[r].toString(16),r++;e.subarray(r)}(function(e){const t=e.byteLength,i=[];let r=1;for(;r=i)return;const s=r,a=[],n=(60&e[r+2])>>>2,o=Jr[n];if(!o)throw new Error(`Invalid sampling index: ${n}`);const l=1+((192&e[r+2])>>>6),d=(1&e[r+2])<<2|(192&e[r+3])>>>6;let h,c,u=0;const p=ts(o);for(;r+7>5,i-r=i?void 0:e.subarray(r),frames:a,samplingFrequencyIndex:n,sampleRate:o,objectType:l,channelCount:d,originCodec:`mp4a.40.${l}`}}(e.data,e.originalPts);if(t){if(this.audioTrack.codec=t.codec,this.audioTrack.sampleRate=t.sampleRate,this.audioTrack.channelCount=t.channelCount,!this._isSendAACSeqHeader){const e=Yr({profile:t.objectType,sampleRate:t.samplingFrequencyIndex,channel:t.channelCount});this._isSendAACSeqHeader=!0,this.player.debug.log(this.TAG_NAME,"aac seq header",`profile: ${t.objectType}, sampleRate:${t.sampleRate},sampleRateIndex: ${t.samplingFrequencyIndex}, channel: ${t.channelCount}`),this._doDecodeByHls(e,Fe,0,!1,0)}if(this._isSendAACSeqHeader){const e=[];t.frames.forEach((t=>{const i=t.pts,r=new Uint8Array(t.data.length+2);r.set([175,1],0),r.set(t.data,2);const s={type:Fe,pts:i,dts:i,payload:r};e.push(s)})),this.audioTrack.samples=this.audioTrack.samples.concat(e)}else this.player.debug.warn(this.TAG_NAME,"aac seq header not send")}else this.player.debug.warn(this.TAG_NAME,"aac parseADTS error")}this._audioPesData=[]}}else this.player.debug.warn(this.TAG_NAME,"Cannot parse audio pes",this._audioPesData)}_fix(e=0,t=!1,i=!0){e=Math.round(9e4*e);const r=this.videoTrack,s=this.audioTrack,a=r.samples,n=s.samples;if(!a.length&&!n.length)return;const o=a[0],l=n[0];let d=0;if(a.length&&n.length&&(d=o.dts-l.pts),this._baseDtsInited||this._calculateBaseDts(),t&&(this._calculateBaseDts(),this._baseDts-=e),!i){this._videoNextDts=d>0?e+d:e,this._audioNextPts=d>0?e:e-d;const t=o?o.dts-this._baseDts-this._videoNextDts:0,i=l?l.pts-this._baseDts-this._audioNextPts:0;Math.abs(t||i)>Wr&&(this._calculateBaseDts(this.audioTrack,this.videoTrack),this._baseDts-=e)}this._resetBaseDtsWhenStreamBreaked(),this._fixAudio(s),this._fixVideo(r);let h=r.samples.concat(s.samples);h=h.map((e=>(e.dts=Math.round(e.dts/90),e.pts=Math.round(e.pts/90),e.cts=e.pts-e.dts,e))).sort(((e,t)=>e.dts-t.dts)),h.forEach((e=>{const t=new Uint8Array(e.payload);delete e.payload,this._isUseWorker()?this.loopWorker.postMessage({...e,payload:t,cmd:"sample"},[t.buffer]):e.type===Oe?this._doDecodeVideo({...e,payload:t}):e.type===Fe&&this._doDecodeAudio({...e,payload:t})})),ba(this._hasCalcFps)&&this._isUseWorker()&&(this._hasCalcFps=!0,this._calcDecodeFps(h))}_isUseWorker(){return!this.player.isUseMSE()&&this.isForHls()}_calculateBaseDts(){const e=this.audioTrack,t=this.videoTrack,i=e.samples,r=t.samples;if(!i.length&&!r.length)return!1;let s=1/0,a=1/0;i.length&&(e.baseDts=s=i[0].pts),r.length&&(t.baseDts=a=r[0].dts),this._baseDts=Math.min(s,a);const n=a-s;return Number.isFinite(n)&&Math.abs(n)>45e3&&this.player.debug.warn(this.TAG_NAME,`large av first frame gap,\n video pts: ${a},\n audio pts: ${s},\n base dts: ${this._baseDts},\n detect is: ${n}`),this._baseDtsInited=!0,!0}_resetBaseDtsWhenStreamBreaked(){if(this._baseDtsInited&&this._videoTimestampBreak&&this._audioTimestampBreak){if(!this._calculateBaseDts(this.audioTrack,this.videoTrack))return;this._baseDts-=Math.min(this._audioNextPts,this._videoNextDts),this._audioLastSample=null,this._videoLastSample=null,this._videoTimestampBreak=!1,this._audioTimestampBreak=!1}}_fixAudio(e){const t=e.samples;t.length&&(t.forEach((e=>{e.pts-=this._baseDts,e.dts=e.pts})),this._doFixAudioInternal(e,t,9e4))}_fixVideo(e){const t=e.samples;if(!t.length)return;if(t.forEach((e=>{e.dts-=this._baseDts,e.pts-=this._baseDts})),void 0===this._videoNextDts){const e=t[0];this._videoNextDts=e.dts}const i=t.length;let r=0;const s=t[0],a=t[1],n=this._videoNextDts-s.dts;let o;Math.abs(n)>45e3&&(s.dts+=n,s.pts+=n,this.player.debug.warn(this.TAG_NAME,`large video gap between chunk,\n next dts is ${this._videoNextDts},\n first dts is ${s.dts},\n next dts is ${a.dts},\n duration is ${n}`),a&&Math.abs(a.dts-s.dts)>Wr&&(this._videoTimestampBreak=!0,t.forEach(((e,t)=>{0!==t&&(e.dts+=n,e.pts+=n)}))));const l=e.samples[0],d=e.samples[i-1];o=1===i?9e3:Math.floor((d.dts-l.dts)/(i-1));for(let s=0;sWr||r<0){this._videoTimestampBreak=!0,r=this._audioTimestampBreak?o:Math.max(r,2700);const i=this._audioNextPts||0;n&&n.dts>i&&(r=o),this.player.debug.warn(this.TAG_NAME,`large video gap between frames,\n time is ${a/e.timescale},\n dts is ${a},\n origin dts is ${t[s].originalDts},\n next dts is ${this._videoNextDts},\n sample Duration is ${r} ,\n ref Sample DurationInt is ${o}`)}t[s].duration=r,this._videoNextDts+=r}}_doFixAudioInternal(e,t,i){e.sampleDuration||(e.sampleDuration=ts(e.timescale,i));const r=e.sampleDuration;if(void 0===this._audioNextPts){const e=t[0];this._audioNextPts=e.pts}for(let i=0;i=3*r&&n<=Vr&&!ks()){es(e.codec,e.channelCount)||t[0].data.subarray();const o=Math.floor(n/r);Math.abs(a.pts-this._lastAudioExceptionGapDot)>Hr&&(this._lastAudioExceptionGapDot=a.pts),this.player.debug.warn(this.TAG_NAME,`audio gap detected,\n pts is ${t.pts},\n originPts is ${t.originalPts},\n count is ${o},\n nextPts is ${s},\n ref sample duration is ${r}`);for(let e=0;e=-9e4?(Math.abs(a.pts-this._lastAudioExceptionOverlapDot)>Hr&&(this._lastAudioExceptionOverlapDot=a.pts,this.player.debug.warn(this.TAG_NAME,`audio overlap detected,\n pts is ${a.pts},\n originPts is ${a.originalPts},\n nextPts is ${s},\n ref sample duration is ${r}`)),t.splice(i,1),i--):(Math.abs(n)>=Vr&&(this._audioTimestampBreak=!0,Math.abs(a.pts-this._lastAudioExceptionLargeGapDot)>Hr&&(this._lastAudioExceptionLargeGapDot=a.pts,this.player.debug.warn(this.TAG_NAME,`large audio gap detected,\n time is ${a.pts/1e3}\n pts is ${a.pts},\n originPts is ${a.originalPts},\n nextPts is ${s},\n sample duration is ${n}\n ref sample duration is ${r}`))),a.dts=a.pts=s,this._audioNextPts+=r)}}_calcDecodeFps(e){const t=ua(e.map((e=>({ts:e.dts||e.pts,type:e.type}))),Oe);t&&(this._basefps=t,this._postMessageToLoopWorker("updateBaseFps",{baseFps:this._basefps}),this.player.debug.log(this.TAG_NAME,`_calcDecodeFps() video fps is ${t}, update base fps is ${this._basefps}`))}_initLoopWorker(){this.player.debug.log(this.TAG_NAME,"_initLoopWorker()");const e=wa(function(){const e=1,t=2;let i=new class{constructor(){this.baseFps=0,this.fpsInterval=null,this.preLoopTimestamp=null,this.startBpsTime=null,this.allSampleList=[]}destroy(){this._clearInterval(),this.baseFps=0,this.allSampleList=[],this.preLoopTimestamp=null,this.startBpsTime=null}updateBaseFps(e){this.baseFps=e,this._clearInterval(),this._startInterval()}pushSample(e){delete e.cmd,this.allSampleList.push(e)}_startInterval(){const e=Math.ceil(1e3/this.baseFps);this.fpsInterval=setInterval((()=>{let t=(new Date).getTime();this.preLoopTimestamp||(this.preLoopTimestamp=t),this.startBpsTime||(this.startBpsTime=t);const i=t-this.preLoopTimestamp;if(i>2*e&&console.warn(`EasyPro:[TsLoader LoopWorker] loop interval is ${i}ms, more than ${e} * 2ms`),this._loop(),this.preLoopTimestamp=(new Date).getTime(),this.startBpsTime){t-this.startBpsTime>=1e3&&(this._calcSampleList(),this.startBpsTime=t)}}),e)}_clearInterval(){this.fpsInterval&&(clearInterval(this.fpsInterval),this.fpsInterval=null)}_calcSampleList(){const i={buferredDuration:0,allListLength:this.allSampleList.length,audioListLength:0,videoListLength:0};this.allSampleList.forEach((r=>{r.type===t?(i.videoListLength++,r.duration&&(i.buferredDuration+=Math.round(r.duration/90))):r.type===e&&i.audioListLength++})),postMessage({cmd:"sampleListInfo",...i})}_loop(){let i=null;if(this.allSampleList.length)if(i=this.allSampleList.shift(),i.type===t){postMessage({cmd:"decodeVideo",...i},[i.payload.buffer]);let t=this.allSampleList[0];for(;t&&t.type===e;)i=this.allSampleList.shift(),postMessage({cmd:"decodeAudio",...i},[i.payload.buffer]),t=this.allSampleList[0]}else i.type===e&&(postMessage({cmd:"decodeAudio",...i},[i.payload.buffer]),this.allSampleList.length&&this.allSampleList[0].type===t&&(i=this.allSampleList.shift(),postMessage({cmd:"decodeVideo",...i},[i.payload.buffer])))}};self.onmessage=e=>{const t=e.data;switch(t.cmd){case"updateBaseFps":i.updateBaseFps(t.baseFps);break;case"sample":i.pushSample(t);break;case"destroy":i.destroy(),i=null}}}.toString()),t=new Blob([e],{type:"text/javascript"}),i=URL.createObjectURL(t);let r=new Worker(i);this.workerUrl=i,this.workerClearTimeout=setTimeout((()=>{window.URL.revokeObjectURL(this.workerUrl),this.workerUrl=null,this.workerClearTimeout=null}),ie),r.onmessage=e=>{const t=e.data;switch(t.cmd){case"decodeVideo":this._doDecodeVideo(t);break;case"decodeAudio":this._doDecodeAudio(t);break;case"sampleListInfo":this.tempSampleListInfo=t}},this.loopWorker=r}_postMessageToLoopWorker(e,t){this._isUseWorker()&&(this.loopWorker?this.loopWorker.postMessage({cmd:e,...t}):this.player.debug.warn(this.TAG_NAME,"loop worker is not init, can not post message"))}_doDecodeAudio(e){const t=new Uint8Array(e.payload);this.player.updateStats({abps:t.byteLength});let i=t;va(this.player._opt.m7sCryptoAudio)&&(i=this.cryptoPayloadAudio(t)),this.isForHls()?this._doDecodeByHls(i,Fe,e.dts,!1,0):this._doDecodeByTs(i,Fe,e.dts,!1,0)}_doDecodeVideo(e){const t=new Uint8Array(e.payload);let i=null;i=e.isHevc?Kn(t,e.isIFrame):Pn(t,e.isIFrame),this.player.updateStats({dts:e.dts,vbps:i.byteLength});const r=e.pts-e.dts;let s=this.cryptoPayload(i,e.isIFrame);this.isForHls()?this._doDecodeByHls(s,Oe,e.dts,e.isIFrame,r):this._doDecodeByTs(s,Oe,e.dts,e.isIFrame,r)}_stopDecodeLoopInterval(){this._baseFpsInterval&&(clearInterval(this._baseFpsInterval),this._baseFpsInterval=null)}getBuferredDuration(){return this.tempSampleListInfo.buferredDuration||0}getSampleListLength(){return this.tempSampleListInfo.allListLength||0}getSampleAudioListLength(){return this.tempSampleListInfo.audioListLength||0}getSampleVideoListLength(){return this.tempSampleListInfo.videoListLength||0}isForHls(){return this._isForHls}}class ql extends Kl{constructor(e){super(e),this.player=e,this.TAG_NAME="TsLoader",this.isFirstDispatch=!0,this._isForHls=!1,this.player.debug.log(this.TAG_NAME,"init")}destroy(){super.destroy(),this.isFirstDispatch=!0,this._isForHls=!1}dispatch(e){this.demuxAndFix(e,this.isFirstDispatch,!0,0),this.isFirstDispatch&&(this.isFirstDispatch=!1)}}class Yl{constructor(e){return new(Yl.getLoaderFactory(e))(e)}static getLoaderFactory(e){const t=e._opt.demuxType;return t===T?Ul:t===w||e.isWebrtcH265()?Ml:t===R?Fl:t===D?Ol:t===x?Wl:t===L?jl:t===P?ql:Nl}}const Ql=[44100,48e3,32e3,0],Xl=[22050,24e3,16e3,0],Jl=[11025,12e3,8e3,0],Zl=[0,32,64,96,128,160,192,224,256,288,320,352,384,416,448,-1],ed=[0,32,48,56,64,80,96,112,128,160,192,224,256,320,384,-1],td=[0,32,40,48,56,64,80,96,112,128,160,192,224,256,320,-1];function id(e){if(e.length<4)return void console.error("Invalid MP3 packet, header missing!");let t=new Uint8Array(e.buffer),i=null;if(255!==t[0])return void console.error("Invalid MP3 packet, first byte != 0xFF ");let r=t[1]>>>3&3,s=(6&t[1])>>1,a=(240&t[2])>>>4,n=(12&t[2])>>>2,o=3!==(t[3]>>>6&3)?2:1,l=0,d=0;switch(r){case 0:l=Jl[n];break;case 2:l=Xl[n];break;case 3:l=Ql[n]}switch(s){case 1:a{this._clearAudioSourceBufferCheckTimeout(),this.player.emit(nt.webcodecsAudioInitTimeout)}),1e3)):this.player.isPlayer()?(this.player.updateStats({dfps:!0}),this.player._times.videoStart||(this.player._times.videoStart=ps(),this.player.handlePlayToRenderTimes()),this.player.video.render({videoFrame:e,ts:e.timestamp}),this.player.handleRender()):this.player.isPlayback()&&(this.player.updateStats({dfps:!0}),ba(this.player.playbackPause)?(this.player.playback.isUseLocalCalculateTime&&this.player.playback.increaseLocalTimestamp(),this.player.playback.isUseFpsRender?this.player.video.pushData({videoFrame:e,ts:e.timestamp}):this.player.video.render$2({videoFrame:e,ts:e.timestamp})):ba(this.player.playback.isPlaybackPauseClearCache)&&this.player.playback.isCacheBeforeDecodeForFpsRender&&this.player.playback.isUseFpsRender&&this.player.video.pushData({videoFrame:e,ts:e.timestamp})))}handleError(e){this.player.debug.error(this.TAG_NAME,"VideoDecoder handleError:",e.code,e);const t=e.toString();-1!==t.indexOf(Ri)?this.player.emitError(nt.webcodecsUnsupportedConfigurationError,t):-1!==t.indexOf(Di)||-1!==t.indexOf(xi)||-1!==t.indexOf(Li)?this.player.emitError(nt.webcodecsDecodeError,t):-1!==t.indexOf(Ii)&&this.player.emitError(nt.webcodecsH265NotSupport,t)}handleDecodeAudio(e){this.player.isPlayer()?this.player.audio.play(e,e.timestamp):this.player.isPlayback()}handleErrorAudio(e){this.player.debug.error(this.TAG_NAME,"AudioDecoder handleError:",e.code,e)}decodeVideo(e,t,i,r){if(this.player)if(this.player.isDestroyedOrClosed())this.player.debug&&this.player.debug.warn(this.TAG_NAME,"decodeVideo() player is destroyed");else if(this.hasInit)if(!this.isDecodeFirstIIframe&&i&&(this.isDecodeFirstIIframe=!0),this.isDecodeFirstIIframe){if(this.isDecodeStateClosed())return void this.player.debug.warn(this.TAG_NAME,"VideoDecoder isDecodeStateClosed true");if(i&&0===e[1]){const t=15&e[0];let i={};if(t===mt){i=Ln(e.slice(5))}else t===yt&&(i=Wn(e));const r=this.player.video.videoInfo;r&&r.width&&r.height&&i&&i.codecWidth&&i.codecHeight&&(i.codecWidth!==r.width||i.codecHeight!==r.height)&&(this.player.debug.warn(this.TAG_NAME,`decodeVideo: video width or height is changed,\n old width is ${r.width}, old height is ${r.height},\n new width is ${i.codecWidth}, new height is ${i.codecHeight},\n and emit change event`),this.isWidthOrHeightChanged=!0,this.player.emitError(nt.wcsWidthOrHeightChange,`width ${r.width}->${r.height} height ${i.codecWidth}->${i.codecHeight}`))}if(this.isWidthOrHeightChanged)return void this.player.debug.warn(this.TAG_NAME,"decodeVideo: video width or height is changed, and return");if(Aa(e))return void this.player.debug.log(this.TAG_NAME,"decodeVideo and payload is video sequence header so drop this frame");if(e.byteLength<12)return void this.player.debug.warn(this.TAG_NAME,`decodeVideo and payload is too small , payload length is ${e.byteLength}`);let r=!1,s=(new Date).getTime();this.prevTimestamp||(this.prevTimestamp=s,r=!0);const a=s-this.prevTimestamp;this.decodeDiffTimestamp=a,a>500&&!r&&this.player.isPlayer()&&this.player.debug.warn(this.TAG_NAME,"decodeVideo diff time is ",a);const n=e.slice(5),o=new EncodedVideoChunk({data:n,timestamp:t,type:i?Ht:Wt});this.player.emit(rt.timeUpdate,t);try{this.decoder.decode(o)}catch(e){this.player.debug.error(this.TAG_NAME,"VideoDecoder",e);const t=e.toString();(-1!==t.indexOf(ki)||-1!==t.indexOf(Ci))&&this.player.emitError(nt.webcodecsDecodeError,t)}this.prevTimestamp=(new Date).getTime()}else this.player.debug.log(this.TAG_NAME,"VideoDecoder first frame is not iFrame");else if(i&&e[1]===Fi){const t=15&e[0];if(this.player.video.updateVideoInfo({encTypeCode:t}),t===yt&&!Ms()){const e=ws();return this.player.debug.warn(this.TAG_NAME,"WebcodecsDecoder not support hevc decode",e.type,e.version),void this.player.emitError(nt.webcodecsH265NotSupport)}this.player._times.decodeStart||(this.player._times.decodeStart=ps());let i=null,r=null;const s=e.slice(5);if(t===mt?(r=Ln(s),i={codec:r.codec,description:s}):t===yt&&(r=parseHEVCDecoderConfigurationRecord$4(s),i={codec:r.codec,description:s}),!i||i&&!i.codec||r&&0===r.codecWidth&&0===r.codecHeight)return this.player.debug.warn(this.TAG_NAME,"decodeVideo and webcodecs configure is",JSON.stringify(i)),void this.player.emitError(nt.webcodecsDecodeConfigureError,"configure or configure.code is null");i.codedHeight=r.codecHeight,i.codedWidth=r.codecWidth,this.isInitInfo||(this.player.debug.log(this.TAG_NAME,`updateVideoInfo: ${r.codecWidth},${r.codecHeight}`),this.player.video.updateVideoInfo({width:r.codecWidth,height:r.codecHeight}),this.player.video.initCanvasViewSize(),this.isInitInfo=!0),this.player.recorder&&this.player._opt.recordType===b&&this.player.recorder.initMetaData(e,t),this.player.debug.log(this.TAG_NAME,`decoder.configure() and codec is ${i.codec}`);try{this.decoder.configure(i),this.hasInit=!0}catch(e){this.player.debug.error(this.TAG_NAME,"configure error",e.code,e);const t=e.toString();-1!==t.indexOf(Ii)?this.player.emitError(nt.webcodecsH265NotSupport,t):this.player.emitError(nt.webcodecsDecodeConfigureError,t)}}else this.player.debug.warn(this.TAG_NAME,`decodeVideo has not init , isIframe is ${i} , payload is ${e[1]} so drop this frame`)}decodeAudio(e,t){if(this.player)if(this.player.isDestroyedOrClosed())this.player.debug&&this.player.debug.warn(this.TAG_NAME,"decodeAudio() player is destroyed");else if(this.hasAudioInit){if(Qr(e))return void this.player.debug.log(this.TAG_NAME,"decodeAudio and has already initialized and payload is aac codec packet so drop this frame");if(this._clearAudioNoDataCheckTimeout(),this.isDecodeFirstIIframe){if(this.isAudioDecodeStateClosed())return void this.player.debug.warn(this.TAG_NAME,"AudioDecoder isDecodeStateClosed true");const i=this.isAAC?e.slice(2):e.slice(1),r=i.length/this.player.audio.audioInfo.sampleRate*1e3,s=new EncodedAudioChunk({type:"key",data:i,timestamp:t,duration:parseInt(r,10)});try{this.decoderAudio.decode(s)}catch(e){this.player.debug.error(this.TAG_NAME,"AudioDecoder",e),e.toString()}}}else{const t=e[0]>>4,i=e[0]>>1&1,r=t===vt.MP3,s=t===vt.AAC,a=t===vt.ALAW;let n="";n=s?i?16:8:0===i?8:16;const o={codec:"",numberOfChannels:"",sampleRate:""};let l=null;if(s||r){let t=null;if(Qr(e)){const i=e.slice(2);t=rs(i),t&&(o.codec=t.originalCodec,o.numberOfChannels=t.channelCount,o.sampleRate=t.sampleRate),l=i,this.isAAC=s}else r&&(t=id(e),t&&(o.codec=zr,o.numberOfChannels=t.channelCount,o.sampleRate=t.samplingRate))}else o.codec=a?Gr:Nr,o.numberOfChannels=1,o.sampleRate=8e3;if(o.codec&&o.numberOfChannels&&o.sampleRate){this.isAudioInitInfo||(this.player.audio.updateAudioInfo({encTypeCode:t,channels:o.numberOfChannels,sampleRate:o.sampleRate,depth:n}),this.isAudioInitInfo=!0),this.player.recorder&&this.player._opt.recordType===b&&l&&this.player.recorder.initAudioAacExtraData(l),this.player.debug.log(this.TAG_NAME,`decoderAudio.configure() and codec is ${o.codec}`);try{this.decoderAudio.configure(o),this._clearAudioSourceBufferCheckTimeout(),this.hasAudioInit=!0,null===this.audioSourceNoDataCheckTimeout&&(this.audioSourceNoDataCheckTimeout=setTimeout((()=>{this._clearAudioNoDataCheckTimeout(),this.player.emit(nt.webcodecsAudioNoDataTimeout)}),1e3))}catch(e){this.player.debug.error(this.TAG_NAME,"configure audio error",e.code,e),e.toString()}}}}_clearAudioSourceBufferCheckTimeout(){this.audioSourceBufferCheckTimeout&&(clearTimeout(this.audioSourceBufferCheckTimeout),this.audioSourceBufferCheckTimeout=null)}_clearAudioNoDataCheckTimeout(){this.audioSourceNoDataCheckTimeout&&(clearTimeout(this.audioSourceNoDataCheckTimeout),this.audioSourceNoDataCheckTimeout=null)}getDecodeDiffTimes(){return this.decodeDiffTimestamp}isDecodeStateClosed(){return"closed"===this.decoder.state}isDecodeStateConfigured(){return"configured"===this.decoder.state}isDecodeStateUnConfigured(){return"unconfigured"===this.decoder.state}isAudioDecodeStateClosed(){return"closed"===this.decoderAudio.state}isAudioDecodeStateConfigured(){return"configured"===this.decoderAudio.state}isAudioDecodeStateUnConfigured(){return"unconfigured"===this.decoderAudio.state}}const sd={play:"播放",pause:"暂停",audio:"",mute:"",screenshot:"截图",loading:"",fullscreen:"全屏",fullscreenExit:"退出全屏",record:"录制",recordStop:"停止录制",narrow:"缩小",expand:"放大",ptz:"操作盘",ptzActive:"操作盘激活",zoom:"电子放大",zoomStop:"关闭电子放大",close:"关闭",performance:"性能面板",performanceActive:"性能面板激活",face:"人脸识别",faceActive:"人脸识别激活",object:"物品识别",objectActive:"物品识别激活",occlusion:"遮挡物检查",occlusionActive:"遮挡物检查激活",logSave:"保存日志"};var ad=Object.keys(sd).reduce(((e,t)=>(e[t]=`\n \n ${sd[t]?`${sd[t]}`:""}\n`,e)),{});function nd(e,t){let i=!1;return e.forEach((e=>{i||e.startTimestamp<=t&&e.endTimestamp>t&&(i=!0)})),i}function od(e=[],t=[],i){const r=e.length,s=t.length,a=Math.max(r,s),n=Qt,o=Math.ceil(a/n);let l=0,d=0;!function s(){let a="",h="";for(let i=0;i\n ${i.title}\n \n `);const s=t[d];s&&(h+=`\n
${s.title}
\n `),d+=1}a&&i.$playbackTimeListOne.insertAdjacentHTML("beforeend",a),h&&i.$playbackTimeListSecond.insertAdjacentHTML("beforeend",h),l+=1,l0?[t,i,r]:[i,r]).map((e=>e<10?`0${e}`:String(e))).join(":")}function pd(e,t,i){const r=e.$playbackProgress,{left:s}=r.getBoundingClientRect(),a=fs((bs()?i.touches[0].clientX:i.pageX)-s,0,r.clientWidth),n=parseInt(a/r.clientWidth*t,10);return{second:n,time:ud(n),width:a,percentage:fs(a/r.clientWidth,0,1)}}function fd(e,t){return t instanceof Element?e.appendChild(t):e.insertAdjacentHTML("beforeend",String(t)),e.lastElementChild||e.lastChild}function md(e,t,i){return e&&e.style&&zs(t)&&(e.style[t]=i),e}function yd(e,t){return e.composedPath&&e.composedPath().indexOf(t)>-1}function gd(e){let t=!1;return e&&e.parentNode&&(e.parentNode.removeChild(e),t=!0),t}var Ad=(e,t)=>{const{events:{proxy:i}}=e,r=document.createElement("object");r.setAttribute("aria-hidden","true"),r.setAttribute("tabindex",-1),r.type="text/html",r.data="about:blank",ms(r,{display:"block",position:"absolute",top:"0",left:"0",height:"100%",width:"100%",overflow:"hidden",pointerEvents:"none",zIndex:"-1"});let s=e.width,a=e.height;const n=Ls((()=>{e.width===s&&e.height===a||(s=e.width,a=e.height,e.emit(rt.resize),c())}),500);i(r,"load",(()=>{i(r.contentDocument.defaultView,"resize",(()=>{n()}))})),e.$container.appendChild(r),e.on(rt.destroy,(()=>{e.$container.removeChild(r)})),e.on(rt.volumechange,(()=>{!function(e){if(0===e)ms(t.$volumeOn,"display","none"),ms(t.$volumeOff,"display","flex"),ms(t.$volumeHandle,"top","48px");else if(t.$volumeHandle&&t.$volumePanel){const i=ys(t.$volumePanel,"height")||60,r=ys(t.$volumeHandle,"height"),s=i-(i-r)*e-r;ms(t.$volumeHandle,"top",`${s}px`),ms(t.$volumeOn,"display","flex"),ms(t.$volumeOff,"display","none")}t.$volumePanelText&&(t.$volumePanelText.innerHTML=parseInt(100*e))}(e.volume)})),e.on(rt.loading,(i=>{ms(t.$loading,"display",i?"flex":"none"),(ba(e._opt.backgroundLoadingShow)&&va(i)||ba(i))&&ms(t.$poster,"display","none"),i&&(ms(t.$playBig,"display","none"),ms(t.$tipsMessage,"display","none")),i||e._opt.extendDomConfig.showAfterLoading&&t.$extendDom&&ms(t.$extendDom,"display","block"),bs()||i||e.getRenderType()===$&&ba(e._opt.useMSE)&&o()})),e.on(rt.removeLoadingBgImage,(()=>{bs()||o()}));const o=()=>{t.$loadingBgImage&&t.$loadingBg&&t.$loadingBgImage.src&&(e.debug&&e.debug.log("Control","remove loading bg image"),t.$loadingBgImage.width=0,t.$loadingBgImage.height=0,t.$loadingBgImage.src="",ms(t.$loadingBg,"display","none"))},l=t=>{e.fullscreen?ia(t)===e.$container&&d():d()},d=i=>{let r=Gs(i)?i:e.fullscreen;ms(t.$fullscreenExit,"display",r?"flex":"none"),ms(t.$fullscreen,"display",r?"none":"flex")},h=()=>e._opt.playType===v&&e._opt.playbackConfig.showControl,c=i=>{bs()&&t.$controls&&e._opt.useWebFullScreen&&setTimeout((()=>{if(e.fullscreen){const i=h()?Lt:0;let r=e.height/2-e.width+i/2,s=e.height/2-i/2;if(t.$controls.style.transform=`translateX(${-r}px) translateY(-${s}px) rotate(-90deg)`,t.$zoomControls){const i=156,r=30,s=e.width/2+i/2-r/2;t.$zoomControls.style.transform=`translateX(${-s}px) translateY(${e.height/2}px) rotate(-90deg)`}if(t.$recording){const i=101,r=20,s=e.width/2+i/2-r/2;t.$recording.style.transform=`translateX(${-s}px) translateY(${e.height/2}px) rotate(-90deg)`}}else t.$controls.style.transform="translateX(0) translateY(0) rotate(0)",t.$zoomControls&&(t.$zoomControls.style.transform="translateX(-50%) translateY(0) rotate(0)"),t.$recording&&(t.$recording.style.transform="translateX(-50%) translateY(0) rotate(0)");i&&i()}),10)};try{qr.on("change",l),e.events.destroys.push((()=>{qr.off("change",l)}))}catch(e){}e.on(rt.webFullscreen,(e=>{bs()&&(d(e),c((()=>{p()})))})),e.on(rt.recording,(()=>{e.playing&&(ms(t.$record,"display",e.recording?"none":"flex"),ms(t.$recordStop,"display",e.recording?"flex":"none"),(e._opt.hasControl||e._opt.isShowRecordingUI)&&(ms(t.$recording,"display",e.recording?"flex":"none"),ba(e.recording)&&t.$recordingTime&&(t.$recordingTime.innerHTML=js(0))))})),e.on(rt.recordingTimestamp,(e=>{t.$recordingTime&&(t.$recordingTime.innerHTML=js(e))})),e.on(rt.zooming,(()=>{e.playing&&(ms(t.$zoom,"display",e.zooming?"none":"flex"),ms(t.$zoomStop,"display",e.zooming?"flex":"none"),(e._opt.hasControl||e._opt.isShowZoomingUI)&&ms(t.$zoomControls,"display",e.zooming?"flex":"none"))})),e.on(rt.playing,(e=>{u(e)}));const u=i=>{ms(t.$play,"display",i?"none":"flex"),ms(t.$playBig,"display",i?"none":"block"),ms(t.$pause,"display",i?"flex":"none"),ms(t.$screenshot,"display",i?"flex":"none"),ms(t.$record,"display",i?"flex":"none"),ms(t.$qualityMenu,"display",i?"flex":"none"),ms(t.$volume,"display",i?"flex":"none"),ms(t.$ptz,"display",i?"flex":"none"),ms(t.$zoom,"display",i?"flex":"none"),ms(t.$scaleMenu,"display",i?"flex":"none"),ms(t.$faceDetect,"display",i?"flex":"none"),ms(t.$objectDetect,"display",i?"flex":"none"),ms(t.$occlusionDetect,"display",i?"flex":"none"),ms(t.$controlHtml,"display",i?"flex":"none"),e.isPlayback()&&ms(t.$speedMenu,"display",i?"flex":"none"),d(),t.extendBtnList.forEach((e=>{e.$iconWrap&&ms(e.$iconWrap,"display",i?"flex":"none"),e.$activeIconWrap&&ms(e.$activeIconWrap,"display","none")})),e._opt.showPerformance?ms(t.$performanceActive,"display",i?"flex":"none"):(ms(t.$performance,"display",i?"flex":"none"),ms(t.$performanceActive,"display","none")),ms(t.$poster,"display","none"),ms(t.$ptzActive,"display","none"),ms(t.$recordStop,"display","none"),ms(t.$zoomStop,"display","none"),ms(t.$faceDetectActive,"display","none"),ms(t.$objectDetectActive,"display","none"),i||(t.$speed&&(t.$speed.innerHTML=function(e){if(null==e||""===e)return"0 KB/s";let t=parseFloat(e);return t=t.toFixed(2),t+"KB/s"}("")),ms(t.$zoomControls,"display","none"),ms(t.$recording,"display","none"),t.$ptzControl&&t.$ptzControl.classList.remove("easyplayer-ptz-controls-show")),p(),i&&f()};e.on(rt.playbackPause,(e=>{u(!e)})),e.on(rt.kBps,(i=>{const r=function(e){if(null==e||""===e||0===parseFloat(e)||"NaN"===e)return"0 KB/s";const t=["KB/s","MB/s","GB/s","TB/s","PB/s","EB/s","ZB/s","YB/s"];let i=0;const r=parseFloat(e);i=Math.floor(Math.log(r)/Math.log(1024));let s=r/Math.pow(1024,i);return s=s.toFixed(2),s+(t[i]||t[0])}(i);t.kbpsShow=r,e._opt.showBandwidth&&(t.$speed&&(t.$speed.innerHTML=r),p())}));const p=()=>{if(h()&&e._opt.playbackConfig.controlType===J.normal){let i=t.controlsInnerRect.width-t.controlsLeftRect.width-t.controlsRightRect.width-t.controlsPlaybackBtnsRect.width;bs()&&e.webFullscreen&&(i=t.controlsInnerRect.height-t.controlsLeftRect.height-t.controlsRightRect.height-t.controlsPlaybackBtnsRect.height),t.$playbackTimeInner.style.width=i+"px"}},f=()=>{if(!h()||e._opt.playbackConfig.controlType!==J.normal)return;const i=t.$playbackCurrentTime.style.left;let r=parseInt(i,10);const s=t.controlsPlaybackTimeInner.width;r=r-s/2>0?parseInt(r-s/2,10):0,t.$playbackTimeInner.scrollLeft=r};if(h()){const i=()=>{if(h()){let i=0;const r=e.playback&&e.playback.playingTimestamp;if(r){const s=new Date(r),a=s.getHours(),n=s.getMinutes(),o=s.getSeconds();e.playback.is60Min?i=60*a+n:e.playback.is30Min?i=2*(60*a+n)+parseInt(o/30,10):e.playback.is10Min?i=6*(60*a+n)+parseInt(o/10,10):e.playback.is5Min?i=12*(60*a+n)+parseInt(o/5,10):e.playback.is1Min&&(i=60*(60*a+n)+parseInt(o,10)),t.$playbackCurrentTime.style.left=i+"px"}}},r=e=>{t.$playbackNarrow.classList.remove("disabled"),t.$playbackExpand.classList.remove("disabled"),e===ei&&t.$playbackNarrow.classList.add("disabled"),e===ri&&t.$playbackExpand.classList.add("disabled")};e.on(rt.playbackTime,(r=>{if(e._opt.playbackConfig.controlType===J.normal)t.$playbackCurrentTimeText&&(t.$playbackCurrentTimeText.innerText=Cs(r,"{h}:{i}:{s}")),i();else if(e._opt.playbackConfig.controlType===J.simple){const i=(s=r,a=e.playback.totalDuration,fs(s/a,0,1));t.$playbackProgressPlayed.style.width=100*i+"%",t.$playbackProgressIndicator.style.left=`calc(${100*i}% - 7px)`,t.$playbackProgressTime.innerText=`${ud(r)} / ${ud(e.playback.totalDuration)}`}var s,a})),e.on(rt.playbackPrecision,((s,a)=>{h()&&e._opt.playbackConfig.controlType===J.normal&&(t.$playbackTimeScroll.classList.remove(si.oneHour,si.halfHour,si.fiveMin,si.tenMin),t.$playbackTimeScroll.classList.add(si[s]),t.rafId&&(window.cancelAnimationFrame(t.rafId),t.rafId=null),t.changePercisitionInterval&&(clearTimeout(t.changePercisitionInterval),t.changePercisitionInterval=null),t.$playbackTimeListOne.innerHTML="",t.$playbackTimeListSecond.innerHTML="",t.changePercisitionInterval=setTimeout((()=>{switch(t.$playbackTimeListOne.innerHTML="",t.$playbackTimeListSecond.innerHTML="",s){case ei:ld(a,t);break;case ti:dd(a,t);break;case ii:hd(a,t);break;case ri:cd(a,t)}i(),e._opt.playbackConfig.showPrecisionBtn&&r(s),f()}),16))})),e.on(rt.resize,(()=>{p()})),e.on(rt.playbackTimeScroll,(()=>{f()})),p()}if(e._opt.operateBtns.quality&&e._opt.qualityConfig.length>0){e.on(rt.streamQualityChange,(e=>{i(e)}));const i=e=>{t.$qualityText.innerText=e,t.$qualityMenuItems.forEach((t=>{const i=t.dataset.quality;t.classList.remove("easyplayer-quality-menu-item-active"),i===e&&t.classList.add("easyplayer-quality-menu-item-active")}))};(()=>{const i=e._opt.qualityConfig||[];let r="";i.forEach((e=>{r+=`\n
${e}
\n `})),r&&(t.$qualityMenuList.insertAdjacentHTML("beforeend",r),Object.defineProperty(t,"$qualityMenuItems",{value:e.$container.querySelectorAll(".easyplayer-quality-menu-item")}))})(),e.streamQuality&&i(e.streamQuality)}if(e._opt.operateBtns.scale&&e._opt.scaleConfig.length>0){e.on(rt.viewResizeChange,(e=>{i(e)}));const i=i=>{const r=e._opt.scaleConfig[i];t.$scaleText.innerText=r,t.$scaleMenuItems.forEach((e=>{const t=e.dataset.scale;e.classList.remove("easyplayer-scale-menu-item-active"),Ds(t)===Ds(i)&&e.classList.add("easyplayer-scale-menu-item-active")}))};(()=>{const i=e._opt.scaleConfig||[];let r="";i.forEach(((e,t)=>{r+=`\n
${e}
\n `})),r&&(t.$scaleMenuList.insertAdjacentHTML("beforeend",r),Object.defineProperty(t,"$scaleMenuItems",{value:e.$container.querySelectorAll(".easyplayer-scale-menu-item")}))})(),i(e.scaleType)}if(e.isPlayback()&&e._opt.playbackConfig.showRateBtn&&e._opt.playbackConfig.rateConfig.length>0){e.on(rt.playbackRateChange,(e=>{i(e)}));const i=i=>{const r=e._opt.playbackConfig.rateConfig.find((e=>Ds(e.value)===Ds(i)));r&&(t.$speedText.innerText=r.label,t.$speedMenuItems.forEach((e=>{const t=e.dataset.speed;e.classList.remove("easyplayer-speed-menu-item-active"),Ds(t)===Ds(i)&&e.classList.add("easyplayer-speed-menu-item-active")})))};(()=>{const i=e._opt.playbackConfig.rateConfig;let r="";i.forEach(((e,t)=>{r+=`\n
${e.label}
\n `})),r&&(t.$speedMenuList.insertAdjacentHTML("beforeend",r),Object.defineProperty(t,"$speedMenuItems",{value:e.$container.querySelectorAll(".easyplayer-speed-menu-item")}))})();const r=e.playback?e.playback.playbackRate:1;i(r)}e.on(rt.stats,((i={})=>{if(e._opt.showPerformance){ms(t.$performancePanel,"display","block"),t.$performancePanel.innerHTML="";const r=vs,s=window.performance&&window.performance.memory?window.performance.memory:null,a=e.getCpuLevel(),n=zs(a)&&-1!==a?`${Tr[a]}`:"",o=e.video&&e.video.videoInfo||{},l=e.audio&&e.audio.audioInfo||{},d=e._times||{},h=e.getRenderType(),c=e.getCanvasRenderType(),u=e.getDecodeType(),p=e.getDemuxType(),f=e.getStreamType(),m=e.getAudioEngineType();let y=e.getRecordingDuration(),g=e.getRecordingByteLength();const A=e.isAudioPlaybackRateSpeed(),v=e.videoIframeIntervalTs;y=js(y),g=Is(g);const b=e.isPlayback()?"录播":"直播";let _=i.isDropping;const E=e._opt.useMSE&&e._opt.mseDecodeAudio,S=e.control?e.control.kbpsShow:"0 KB/s",w=e.getVideoPlaybackQuality(),T=`\n
\n 版本 ${r}\n
\n ${e._opt.isMulti?`\n
\n UUid ${e._opt.debugUuid}\n
\n `:""}\n ${e.isInMulti()?`\n
\n 窗口下标 ${e._opt.multiIndex}\n
\n `:""}\n ${s?`\n
\n 内存大小限制 ${Is(s.jsHeapSizeLimit)}\n
\n
\n 可使用的内存 ${Is(s.totalJSHeapSize)}\n
\n
\n 已使用的内存 ${Is(s.usedJSHeapSize)}\n
\n `:""}\n ${n?`\n
\n CPU压力情况 ${n}\n
\n `:""}\n\n ${s&&s.usedJSHeapSize>s.totalJSHeapSize?'\n
\n 可能内存泄漏 是}\n
\n ':""}\n
\n 播放模式 ${b}\n
\n ${e.isPlayback()?`\n
\n 播放倍率 ${e.playback.rate}倍\n
\n
\n 播放模式 ${e.playback.isUseFpsRender?"固定FPS":"动态FPS"}\n
\n ${e.playback.isUseFpsRender?`\n
\n 固定FPS ${e.video.getStreamFps()}\n
\n `:""}\n `:""}\n
\n 解封装模式 ${M[p]}\n
\n
\n 解码模式 ${u}\n
\n
\n 渲染组件 ${h}\n
\n ${h===$?`\n
\n 渲染引擎 ${c}\n
\n `:""}\n
\n 网络请求组件 ${f}\n
\n
\n 视频格式 ${o.encType||"-"}\n
\n
\n 视频(宽x高) ${o.width||"-"}x${o.height||"-"}\n
\n ${e.isPlayer()?`\n
\n 视频GOP(ms) ${v||"-"}\n
\n `:""}\n
\n 音频格式 ${bt[l.encType]||"-"}\n
\n
\n 音频引擎 ${m||"-"}\n
\n
\n 音频通道 ${l.channels||"-"}\n
\n
\n 音频采样率 ${l.sampleRate||"-"}\n
\n ${e.isPlayer()?`\n
\n 播放器初始化(ms) ${d.playTimestamp}\n
\n
\n 开始请求地址(ms) ${d.streamTimestamp}\n
\n
\n 请求响应(ms) ${d.streamResponseTimestamp}\n
\n
\n 解封装(ms) ${d.demuxTimestamp}\n
\n
\n 解码(ms) ${d.decodeTimestamp}\n
\n
\n 页面开始渲染(ms) ${d.videoTimestamp}\n
\n
\n 初始化到页面渲染(ms) ${d.allTimestamp}\n
\n ${e.recording?`\n
\n 视频录制时间 ${y}\n
\n
\n 视频录制大小 ${g}\n
\n `:""}\n `:""}\n
\n 音频码率(bit) ${i.abps}\n
\n
\n 视频码率(bit) ${i.vbps}\n
\n
\n 视频帧率(fps) ${i.fps}\n
\n
\n 视频峰值帧率(fps) ${i.maxFps}\n
\n
\n 解码帧率(fps) ${i.dfps}\n
\n
\n 音频缓冲帧 ${i.audioBuffer}\n
\n
\n 音频缓冲时长(ms) ${i.audioBufferDelayTs}\n
\n ${e.isPlayer()?`\n
\n 视频待解码帧 ${i.demuxBuffer}\n
\n `:`\n
\n 缓存时长(ms) ${i.playbackCacheDataDuration}\n
\n
\n 视频待渲染帧 ${i.playbackVideoBuffer}\n
\n
\n 视频待解码帧 ${i.demuxBuffer}\n
\n
\n 音频待解码帧 ${i.audioDemuxBuffer}\n
\n `}\n
\n 待解封装数据(byte) ${i.flvBuffer}\n
\n ${e._opt.useMSE?`\n
\n MSE缓冲时长(ms) ${i.mseDelay}\n
\n
\n MSE待解码帧 ${i.msePendingBuffer}\n
\n
\n MSE缓存时长(s) ${i.mseStore}\n
\n
\n MSE解码间隔(ms) ${i.mseDecodeDiffTimes}\n
\n
\n MSE解码时间(ms) ${i.mseTs}\n
\n
\n MSE播放模式 ${i.mseDecodePlaybackRate>1?"加速":"正常"}\n
\n `:""}\n ${e._opt.useWCS?`\n
\n WCS解码间隔(ms) ${i.wcsDecodeDiffTimes}\n
\n `:""}\n ${e.isOldHls()?`
\n HLS缓冲时长(ms) ${i.hlsDelay}\n
\n `:""}\n ${e.isUseHls265()?`
\n HLS缓冲时长(ms) ${i.hlsDelay}\n
\n
\n HLS待解码帧 ${i.hlsDemuxLength}\n
\n
\n HLS待解码视频帧 ${i.hlsDemuxVideoLength}\n
\n
\n HLS待解码音频帧 ${i.hlsDemuxAudioLength}\n
\n `:""}\n ${e.isPlayer()&&w?`\n
\n Video已渲染帧 ${w.renderedVideoFrames}\n
\n
\n Video已丢弃帧 ${w.droppedVideoFrames}\n
\n `:""}\n ${e.isPlayer()?`\n
\n 网络延迟(ms) ${i.netBuf}\n
\n
\n 缓冲时长(ms) ${i.buf}\n
\n
\n 最新缓冲时长(ms) ${i.pushLatestDelay}\n
\n `:""}\n ${e._opt.useMSE||e.isWebrtcH264()||e.isAliyunRtc()?`\n
\n video显示时间(s) ${i.videoCurrentTime}\n
\n
\n video间隔时间(s) ${i.videoCurrentTimeDiff}\n
\n
\n videoBuffer缓存时间(ms) ${i.mseVideoBufferDelayTime}\n
\n `:""}\n
\n 视频显示时间(ms) ${i.currentPts||i.ts}\n
\n ${e._opt.hasAudio&&e.isAudioNotMute()&&ba(E)?`\n
\n 音频显示时间(ms) ${i.audioTs}\n
\n ${e._opt.hasVideo?`\n
\n 音视频同步时间戳(ms) ${i.audioSyncVideo}\n
\n `:""}\n
\n 音频播放模式 ${A?"加速":"正常"}\n
\n `:""}\n
\n 视频解码时间(ms) ${i.dts}\n
\n ${e.isPlayer()?`\n
\n 解码前-解码后延迟(ms) ${i.delayTs}\n
\n
\n 总延迟(网络+解码)(ms) ${i.totalDelayTs}\n
\n `:""}\n ${e.isPlayer()&&i.isStreamTsMoreThanLocal?'
\n 是否超过一倍率推流 是\n
\n ':""}\n ${e.isPlayer()?`\n
\n 是否播放流畅 ${i.videoSmooth}\n
\n `:""}\n ${e.isPlayer()?`\n
\n 是否在丢帧 ${_}\n
\n `:""}\n
\n 网速 ${S}\n
\n
\n 播放时长(s) ${js(i.pTs)}\n
\n
\n `;t.$performancePanel.insertAdjacentHTML("beforeend",T)}else t.$performancePanel.innerHTML="",ms(t.$performancePanel,"display","none")})),e.on(rt.togglePerformancePanel,(e=>{ms(t.$performance,"display",e?"none":"flex"),ms(t.$performanceActive,"display",e?"flex":"none")})),e.on(rt.faceDetectActive,(e=>{ms(t.$faceDetect,"display",e?"none":"flex"),ms(t.$faceDetectActive,"display",e?"flex":"none")})),e.on(rt.objectDetectActive,(e=>{ms(t.$objectDetect,"display",e?"none":"flex"),ms(t.$objectDetectActive,"display",e?"flex":"none")})),e.on(rt.occlusionDetectActive,(e=>{ms(t.$occlusionDetect,"display",e?"none":"flex"),ms(t.$occlusionDetectActive,"display",e?"flex":"none")}))};function vd(e,t){void 0===t&&(t={});var i=t.insertAt;if(e&&"undefined"!=typeof document){var r=document.head||document.getElementsByTagName("head")[0],s=document.createElement("style");s.type="text/css","top"===i&&r.firstChild?r.insertBefore(s,r.firstChild):r.appendChild(s),s.styleSheet?s.styleSheet.cssText=e:s.appendChild(document.createTextNode(e))}}vd('@keyframes rotation{0%{-webkit-transform:rotate(0deg)}to{-webkit-transform:rotate(1turn)}}@keyframes magentaPulse{0%{background-color:#630030;-webkit-box-shadow:0 0 9px #333}50%{background-color:#a9014b;-webkit-box-shadow:0 0 18px #a9014b}to{background-color:#630030;-webkit-box-shadow:0 0 9px #333}}.easyplayer-container video::-webkit-media-controls{display:none!important}.easyplayer-container .easyplayer-icon{cursor:pointer;width:16px;height:16px;display:inline-block}.easyplayer-container .easyplayer-ptz-controls{position:absolute;width:156px;height:156px;visibility:hidden;opacity:0;border-radius:78px;background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAATgAAAE4BAMAAAA9UfJZAAAAMFBMVEUAAABHcEy0tLRZWVmysrKoqKi1tbWvr6+2traBgYG1tbWWlpa1tbW1tbVUVFS1tbVGCHqkAAAAD3RSTlMzAO9U3LSWySp3aZcVRDUDw823AAAJYUlEQVR42u3d32sbVxYH8EPHxgg/lBsa7SBkukmpSbwLI2KbEPpgZ5MQtwmM0wRMmgdhP6RgEuwlSVnYlmGMYaEvMU1KKX4QNq0pocVmm7CYfRBaQguFpbgPKRSC/4V2LGliO+bulWKrkvVrftyZ+WbxeTRG+nDnnnNmRjP3EpMR6tMH18du/0Xj1tGz5+9cf/DUlPKx5PsTkr8s3eZ1cX7ym1zkuI/f1wTFunNt9fP+FIno7/98/tFY+Y8ffBUlLrmkl2Cr96guTv27BMxP5iLCqUvi68+tpqhJKPNXBH3SjACnfimm/7Wmsl3fI/FP75lh457oPH+1Da3M+1T8481QcT0T7UetevR618LDPdH4hTlyHLGH3LoZEk6d4PlvyVW8pfNeMwzcDwa/kCKXoTzk9tfB455o1mXyEIOa+0PrFvcFt+fIU8QM/k6guOQifzNFHkN5l/flgsOJVHibfMR9l2nhBqem+VXyFZ/xghkMTp3il8lnDPKiGQROhs2lzjEuKcVW1uWk4ybk2Eq63pxk3CK/RZLiJO+Ti/vZXw3ZX1E+kon7jv+JJMY/+Q15uIRWIKmRthZk4VTDTsnFKYZtSsItWiskObq1Pjm4f8gqIrUF5W8ycAl+nAKIT/iCf1zSKFAgkW4/7drifrLmgsHF2k87alvhblFAcbJttWuDU/VtCiyyedMXbjGfCg6n6H1+cHE+TQFGFx/3jksa2xRoZO2cZ9xsUJn6e8aOeMX1aGco4Biw1jzilm0KPNJb3nBxvhI8rrtVTlCLK5ptCiEyBS+474POhr2c+NA9Lqm/QaHEiXzONW42yN5Q2ydG3OLU4MvI7+XEdImbCWvgSkN3zB1O1YYptOhoNnRNcDM2hRjGMTc4VZsOE9fVZOioyYyjUKPJrKPGNW44XFxX41rXEPc4vFTdS9iLTnFJ4wyFHAO2U1zcSoWNU7RLDnFTb1DocaLoDJfgc+HjYo3uTjTArW9TBJHdcYJTtdEocJ0NCnE97nGBIon0RQc4YzgaXIfdHhdBHdmrJuNtceubFFFkdtrhVG0lKlx3XUrsxz22KbIwLrbBTQ1Hhxsotsb18FR0OIWvtcT9Z5sijOyfW+KM6ShxXXYrXMJKRYlTtIUWuLubFGlknrXAGaPR4jrt5riERRFH7XGtwc1sRo3LHGuKi/qo7j+uhJOr9flKMBW4QR2uxk1NR4/rKjbGRdpXG/bXKtxrAEdVHNfTDXHLf0TAvbLVCJfU5hBwMSvXABfPE0To4w1wP25i4DLPG+CmRjFwncV6nIpQSF4UE7MOd7hAIJG+VIe7u4GCG3pWh0uPouA6C/txMFOuetIR3JSrmnQEN+WqJh2BVbmaSreLS+JMudKky9Xg4jYBRXq8BndoEwmXOVKDWx5GwnVs1eD0OSRcLF+N67EIKrS1Klx8GwuXHa/C/biBhRt6XoVbnsbCdW1V4bDyoZIRZZwKlg8iI8wKLl5Aw73oEWXcoQ003NCRCm59GA3XsVPBTa2g4bqLFZyWQsMp1h6uJ09woa/t4tCaV6WBEWSy7qYrQSbrbroS2MVNzUUOAXbWSnel0sU+AUbpsl/gEjYizlgo4w5vI+Kyl8o4xEryopYI3N1hRFzHszJueRQR17lVxqXnEHGxQhmHd06yd15CgBcQlcsIYokCJi69IHDxbUycOGki9toGJm7otMC9/ism7tXfBA6zBperMIHW4HIVJsDrwsrVIYE2CNEibIHDbBDlFkFJ0AYhWkSOemxUnLFGqN2r1L8ItXuV+hfFN1FxmXH6wwYqbuivdAgXd4RQ+36p8xNq3y91flqfRsV17dD6KCquc4eWcXFbtLyCiusu0hQ0bg4VFytSGhdXICOFilNs0nFx+QOcZ5xGsGEd4DzjOC6OH+A847QD3P9jtuJ2CGjcQeP3gYM+2YQ+TYe+wMG+NETGQd+OgL6RA30LDPrm4eu/ouJe/Q37hjX0rX7oH0mgf16C/mEO+idN6B+DoX9Gx34AAfrRDeiHXqAfF0Lt/OUHrVAfUcucRn+4D/qxSOgHSqEfxcV+iBn68W/EV3AqD85Dv3IA/bIG9GsumC8IaSb+q1XYL6VBv84H/SIk9Cuk0C/fQr+2jP3CN/Sr8tCLDEAvzwC9sAX0kiDYi6lAL0MDvYAP9NJH0ItGYS+3Bb1QGVaP2LfEG/TieNDLCmIvyAi9lCX0IqDQy6diLzwLvWQv9GLH0MtER76rRqWxPgdemtwYf9kWdYdeDh97IwHoLRigN6/A3vYDesMU6K1msDfpgd7eiOmjSEf1ZdpSC3ozMuht3LA3wIPeOjDSTRdfKb7M21VCb/QJvUUq9uay0NvyYm9oHFFKdDvaChp6E23s7cehN25nh5G3vE8aZ8LGDdjMIY49zoc9dPpFx7ikHnIh7sjnHOPYTMj36oxjzDlO1UI9Xe9oUICb49iMDTBwzXCqFuKsG2gycM1wYtaFlrCK3mTgmuJU7UzkA9cUx2bDGjpFH2FucUk9pA57onGNa4lj31uhnJzEtA+ZexxLh3KpkykwL7g4D+GUuJuPe8Kx5RCuJtJbzBuuJ/hyMmCtecSx2aBzIqaNMK+4pBHwtU7WznnGiZwI9Oykq1U2tMWxxSD7hKL3MT84VQ/wwGbzpi8c+47fCsp2kt9g/nDsp6AyNqb1Mb+4pBFQKU7bpm8cS/DjQdg+aXT/wTWOzfLL8m2DfITJwLFFS/oZQHf7CecQpxq25GqnGO0nnEMcS2iSq13WWmCycKLaHZebDDeYPBz7mb8tz3aff8Rk4tiivJQd5H1MLo5NyNIN8t6cbJw6ZV2WYys6tTnHCZ2MsRM2k8nHSdG5srnBMTXNr/qzfcYLLmyucEyd8FdR7vNeNzZ3OJZc5G967mTKu7wvx4LDMfYFtz2efMYM/o7LL3OLY080byVlULNusqBx7AeDX3B9aJWH3P6aBY8rpUX+W3e2t3SXqeAZVzq0/JyLmRe7wt0fUs849t8Jzv/u8Ngq/+K8d42FhxODp/P8VQc85VPxjzc9folXHFO/1Lh1rc3BjT0S//SeycLGCd6Sxvm51abDp8xf4dyaNL1/gw+caBhLuvj6O6v36mWn5scEPe+H5hMn4uP3hUEAr63e6y+PYX//qflHY+U/fvCVzw/3ixPD98vSbV4X5ye/yfn+aP+4MvDpg+tjZ4+K8bKOnr1z/cFTU8rH/g92biFxn2S73AAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%;transition:visibility .3s,opacity .3s;right:43px;bottom:135px}.easyplayer-container .easyplayer-ptz-controls.easyplayer-ptz-controls-show{visibility:visible;opacity:1}.easyplayer-container .easyplayer-ptz-bg-active{visibility:hidden;opacity:0;width:156px;height:156px;background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAATgAAAE4CAMAAAD4oR9YAAAAM1BMVEX///////////////////////////9HcEz///////////////////////////////////85yRS0AAAAEXRSTlO5DCgVgZBxAK2fQDRkBR5XTPLKM/gAABnnSURBVHja7F0Jkqs6DGQPO9z/tD8Jq6WWbCCvIjKfzAGmulrW3ooedr6ui+M4TdP++SXPr1l/SdL3aRrHhv7ZyA5qb9xe0L3Am+DrkzeCL/BeX908MezTuPsfOArdgl3KsZuhq99fk/Tx3waum+ByAHua5QbYilkzY1aP728YhrH5InrfBa57OLAtVjpRbYaumex04dq4APeC7vnVSfo/45bXLe33jGscMx3f0A1vyg3t69e2dRL/NeA6wrgdcCvjyPM2U25mXDt9xVD3f/qN0yi3Mm6P20S54vlXtGPS/R3GPSbYOsC4ZAvmJtiaGiL3Zlzx/Ht+Y/KXTJXbqmaqe9za1VYn3N7YpX/OVGev2qduOLIiB7xqOzGuWCiXFVmWtU3368A5lkqeOJI21I5XXaORxVRnxmUTdNnY/4U3riNvHMJts9XRtdXVUttipdzrK/4x7UyY6sK4Gbo+nU21T1zKcd9AGJetlMvyLKvj3zXVfeqQElMljINx3MK4xVQ3xj2Ry7N/6CiMOIfYyVUXWxUyBx7HuZRbcHt9bf/Lb9zsHlzKzabauJaK47iVcC7jJujS33/joKkmxDnM4QiJ4xDjZuT+DXQW3jgxV012qcPuiePhCGfchlv1/P0D6Czmqmuq2gPGkbIS8Q4ZsNU3dGP3Y2+cW1RyKpkrbAnwqhi3iXHFHrU3bFVV5c3vBsCsOALjkXErAW85F3rjFvBm5Kos+TngCOXYG7fA1ojFER7GPUHbmer0tfGPANeROM6pjvDMQSkrsWQ1d564Fbr61964TvSqDa6O0ELmAtvGuc2rrpQrn/aa/qCpYq+6mSpOVhnjWBy38u2JXFl9yL8acg6CV3Ur5yxVZfW4AsRxG+XKssz6n3njVMYR4Eg8sj1yi3tgtroxrpyhG38gc+h8PYddPQ551dVQW5jju2/cG7kXdB946Uy9cbDnQOpxuCCHcq5dHDcht8D2/K67VxPNGtLJd7qDTcgb1zLGbXEcY9z0Fd39GReTzIH1B/2lcxrGTYxj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") no-repeat 50%;background-size:100% 100%}.easyplayer-container .easyplayer-ptz-bg-active.easyplayer-ptz-bg-active-up{transform:rotate(-90deg)}.easyplayer-container .easyplayer-ptz-bg-active.easyplayer-ptz-bg-active-left{transform:rotate(180deg)}.easyplayer-container .easyplayer-ptz-bg-active.easyplayer-ptz-bg-active-down{transform:rotate(90deg)}.easyplayer-container .easyplayer-ptz-bg-active.easyplayer-ptz-bg-active-left-up{transform:rotate(-135deg)}.easyplayer-container .easyplayer-ptz-bg-active.easyplayer-ptz-bg-active-right-up{transform:rotate(-45deg)}.easyplayer-container .easyplayer-ptz-bg-active.easyplayer-ptz-bg-active-left-down{transform:rotate(135deg)}.easyplayer-container .easyplayer-ptz-bg-active.easyplayer-ptz-bg-active-right-down{transform:rotate(45deg)}.easyplayer-container .easyplayer-ptz-bg-active.easyplayer-ptz-bg-active-show{visibility:visible;opacity:1}.easyplayer-container .easyplayer-ptz-control{position:absolute;left:53px;top:53px;width:50px;height:50px;background:#fff;border-radius:50%;transition:left .3s,top .3s}.easyplayer-container .easyplayer-ptz-control.easyplayer-ptz-control-left{left:33px}.easyplayer-container .easyplayer-ptz-control.easyplayer-ptz-control-up{top:33px}.easyplayer-container .easyplayer-ptz-control.easyplayer-ptz-control-right{left:73px}.easyplayer-container .easyplayer-ptz-control.easyplayer-ptz-control-down{top:73px}.easyplayer-container .easyplayer-ptz-control.easyplayer-ptz-control-left-up{top:39px;left:39px}.easyplayer-container .easyplayer-ptz-control.easyplayer-ptz-control-left-down{left:39px;top:67px}.easyplayer-container .easyplayer-ptz-control.easyplayer-ptz-control-right-up{top:39px;left:67px}.easyplayer-container .easyplayer-ptz-control.easyplayer-ptz-control-right-down{top:67px;left:67px}.easyplayer-container .easyplayer-ptz-icon{position:relative}.easyplayer-container .easyplayer-ptz-icon:hover .icon-title-tips{visibility:visible;opacity:1}.easyplayer-container .easyplayer-ptz-btns{display:block;position:absolute;left:0;top:156px;width:156px;box-sizing:border-box;padding:0 30px}.easyplayer-container .easyplayer-ptz-btns .easyplayer-ptz-btn{display:flex;justify-content:space-between}.easyplayer-container .easyplayer-ptz-expand .easyplayer-ptz-expand-icon{display:inline-block;width:28px;height:28px;cursor:pointer;background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAMAAABF0y+mAAAANlBMVEVfX19fX19fX19fX19fX19fX19fX19HcExfX19fX19fX1/////Pz8+oqKjCwsKhoaHn5+eWlpaOqTaDAAAAC3RSTlP/3CaKxwJiAELtp4ri/s4AAACuSURBVCjPfZPREoUgCERXBdPRyv7/Z6/Z1aQp9oWJMyYLiKUrOIpAJBdGCldgbzBkPM/QEoTI3jBEPBRDhwEvChe08Q1Ge0ImvIq4Qj8ljrLdH77CyQPWlCdHC0Q1e9rmmuC+oQN9Q4LwcQg40L6eyqm0uEpXSUqe3fKpkkqL+Y/o+07SrahNEO0T0LBsvOitf4xsLqiNTB32wtqaVKosGLO2mhUrS93+PZ4D99wPqzMJVcbEyA8AAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.easyplayer-container .easyplayer-ptz-expand:hover .easyplayer-ptz-expand-icon{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAMAAABF0y+mAAAAM1BMVEVHcEyZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZn////i4uLZ2dnIyMjExMS8vLy+iXNeAAAACnRSTlMAYomLxwEm9+NCLo6DKwAAALNJREFUKM99k9kWgyAMRIMmEMLm/39tKaVKFJkXl3sYJ4sAXeQ3ZOcYd0+gRYblFBuFLYoS2ot5lpvYn8zJQ65TO2GVNmdCmQq/qczw4gjpejD14BgmhziEIvCjVRlPioftHW6A7xBB1a8CCUMvsuSqEkPM7eZX6h8GrQ67bYpNIbRL6rb4/k2EfVXKsgmqfQrW9qnGq96a28jGQG1ky2HXpVysyYyeDIhWq7le6ua9P36HD6+2GRi8iBZBAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.easyplayer-container .easyplayer-ptz-narrow .easyplayer-ptz-narrow-icon{display:inline-block;width:28px;height:28px;background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAMAAABF0y+mAAAAM1BMVEVHcExfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX1/9/f2/v7/y8vLUObqxAAAADXRSTlMA3IrE6SZi9wI+y0gNXAn3CgAAAI5JREFUKM+Fk1kOwyAMBQ04bJHT3P+0JVUMNMWv8zvSk1cipfjAKXHwhR7k6KTjYp7dVuWLug1XWB5wz96T/JD2O3Phmv0k5ypL6lVVFIPYpLOka5WKSSFvS0/BloHYlkza5HkMzrvVLo8ZlRr7mtFYWBBsBQ4BjC//GTxcGVw2PpOVHQ6fJj7qS4936OoN2K4e5yE6N1UAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%;cursor:pointer}.easyplayer-container .easyplayer-ptz-narrow:hover .easyplayer-ptz-narrow-icon{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcBAMAAACAI8KnAAAAJ1BMVEVHcEyZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZn+/v7X19ckk9ihAAAACnRSTlMA9+NCAsuKJsRiPv/2GwAAAJlJREFUGNNjYAAC5gxFoTYDBijw1FoFBIumQHjsUavAYGkBmGu0CgqUwRqlYNyFIO2Fq+BAnIGBJQrBXerAwLkKCUxgYELmKjBYIXMXM2Qhc5cxdCFzVzBoIXMXMYAcsRsMdgEdgs4FKT4DBqdAitGMQrMIzRkojlRB9wKaB9G8z+CMGjgshjCuMCjoWNxRAxYt2KGRYgJiAQAnZcjElaB/xwAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.easyplayer-container .easyplayer-ptz-aperture-far .easyplayer-ptz-aperture-icon{display:inline-block;width:28px;height:28px;background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAMAAABF0y+mAAAASFBMVEVHcExfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX1////9fX1+kpKRzc3ODg4PFxcW1tbXW1tbk5OT29vaVlZVmZmZ8vCMFAAAADHRSTlMAxGJ5Mssm9+NCiYtiH91SAAABAklEQVQoz41T7Q6DIAyEJQooUL55/zddhVazzZjdHyqXXo8DhWCYTWqltNyN+MZLuxP69UGti/vAsl6c0e4L+tQ2yv1AEbvecMhO5cXdYhk+6aO3WGrNAMwentlMz/ZAKIlNoRsqY2wtFWu9t8wasc0iYVN0LkQfrG1zbxNyrIBcntOQrH1Ukkb60QcxYF1xMA2dh8zWj6ZDsLCsIrL4Ds5Hm9FMbCEROWUB0COaLXEIZJKV7CKybGO7UuxjxY2C/TkMbxboKBQCxgMN6MCJQ6Ch/QjOZg/B13LGx8FDTe3IFvl+Bc9XBi3UWoex68qeL/vxmdyxyvz3NJ8f9dDef36HN7koIK2LjxB0AAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%;cursor:pointer}.easyplayer-container .easyplayer-ptz-aperture-far:hover .easyplayer-ptz-aperture-icon{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAMAAABF0y+mAAAAOVBMVEVHcEyZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZn+/v6cnJzr6+u/v7+xsbGlpaXNzc3b29vqh7uRAAAAC3RSTlMAyRjKA59J/3PzPhe1wxwAAAD2SURBVCjPjZPrssMgCIR1mkYtisD7P+zBCyZpM5mzv5hs0M8VnZvaok9BlXzc3FXbO5z0vtifFC5Kn8OL4UfxwVvuHm61d5Z0b6ZGZZwZpQAUosWsjVZntVS1sH3ZFo1IRVYfGXgx+VGwNkkIVbhq9/jm3cAhaNv1Uk3IA8mNn7D3kbQeWK3TLH2jCthrDFcTMwUWaKiClc9mJtJWhS3SF5BpJqMQW1b3xwnkDahMoHYomkeJRgSENA/MFsKML7fgoCBVbGvM+Cx4JcKWbWHKK/h1ZYS1Jy/nK3u8bB3KhzG5deMxtfv3aO7/Heq+9ms8h9fxHP4AHzAWU9zlWNgAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.easyplayer-container .easyplayer-ptz-aperture-near .easyplayer-ptz-aperture-icon{display:inline-block;width:28px;height:28px;background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAMAAABF0y+mAAAAQlBMVEVHcExfX19fX19fX19fX19fX19fX19fX19fX19fX19fX1////9fX1+FhYWbm5vz8/Nzc3OwsLDi4uLDw8PW1tZmZmYgm6a+AAAAC3RSTlMAYmOLx4kn9+NCIVJiPGAAAAD+SURBVCjPjVPttoMgDMOJAqOU8uH7v+qKFN2c597lF5LTJg1VqQG3aGuM1bNTV0wWDtjpg3pq+IB+npyzcIE9ejsDXzDCrjccs+tOariF3n2OLyw5xko0vh9MDjNb9Q0hp2GK3cixlIApe4/JD9appR8SFxWAUFLg6n63iB1irnY1Jv0mlrok7nUdcZRa1YeshxBA9iijChlxI6iZEaBgSEL2tkRcymPGGJpqlbZ6uDg0WR/F0DwuMpxDkYwiIXA8hO2uMJdGCCK6teB8RQoY8xGfevQjxYQt25qoRwDT25MRBjZ7GtP/P/afa3LHmrflXa+ruf661Hvv+et3eAF6Fh3v+sSUGgAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%;cursor:pointer}.easyplayer-container .easyplayer-ptz-aperture-near:hover .easyplayer-ptz-aperture-icon{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAMAAABF0y+mAAAAM1BMVEWZmZmZmZmZmZmZmZmZmZmZmZmZmZlHcEyZmZmZmZn///+qqqq9vb3z8/PMzMzo6Oja2tpXGg+mAAAACnRSTlP/JomLxwJiAONCr+rW2wAAAOtJREFUKM99U9sWhCAInEpLBS///7WLEWy7p9O8qEzCMBIOQ15DAlLYsoegS9yFMKQ93skl4Adh+ZI54Q8pG5nxgKzkgkcsk4zhmQxRyN1OPHqtncjOu5AuppcJ6s1EHTA1YzC3Wgq3YmzGqpsmlwZAo7F8oLEVKoeE6+TbSxK0JJ/3FLOwFnUxzXuoltYDDMLoAlmYXLAWIrkqbdZKs+q4KBfkNV1uwGaBim9TdLWS3R7iGRvCNTPB7JvGlc5EXK8cKbrxooint73RzXh7Msl6Oj/uT/b62O9j8sj6gMXX0Xwf6jP3Zr9DtNAHTYMMXrXSK0YAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.easyplayer-container .easyplayer-ptz-focus-far .easyplayer-ptz-focus-icon{display:inline-block;width:28px;height:28px;background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAMAAABF0y+mAAAAPFBMVEVHcExfX19fX19fX19fX19fX19fX19fX19fX19fX19fX1////92dnbs7OyFhYWjo6Pe3t7Ly8uxsbG8vLyG+Q0EAAAAC3RSTlMAiWJjx9wm/0Lti7mfpe0AAADaSURBVCjPfVMJDoQgDERFC/bg8P9/XUSO6CqTqA0TptNDpSrMpC2A1btRT8wrNKzzjdo03KC3zhkLD9imbeAFhd3sG2kvZQ2v0NknfGBJZKkhBM9MxOxDKBV1N4iHi0TRHYjN01Qi7/kK2PtyNDU7DAEJgDAAN0u1jsQEFEkcVVmrqjeXrkWRmC67eqbgG7bJyvkQSQkvUvec7szpek6t9ubWJSK/uJVSm+APzHKCh++DWWuH4plQKNYOpfappcjy2VvJn9744cjGwx6uyXjBxqs5Xuqsvf/9Dj8rLhRg+bQ5VAAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%;cursor:pointer}.easyplayer-container .easyplayer-ptz-focus-far:hover .easyplayer-ptz-focus-icon{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAMAAABF0y+mAAAAOVBMVEWZmZmZmZmZmZmZmZmZmZmZmZmZmZlHcEyZmZmZmZmZmZn///+xsbGoqKjt7e309PTExMTQ0NDe3t774OlGAAAAC3RSTlP/itxixwImAELtp8B2gZgAAADmSURBVCjPjZMLjsUgCEVpq60G8Lf/xQ62gvNeOmZuUiWeKHC1cKnC5iJAdFuwJXgmf+xg2g//G54OPuTOCUOEL8WgMMCLwgPP+Abj2aF38CrnBR7whw6Bo4fWUk7MMrQ2OrpAq0GspTLLgKg1wTailNITZA0EaTkZGjIAY5NwlATah5CGRMJYj50tFtlWiapsLvAPRdtL/WOmET7QzZyl5ywzp7NWsjBJ1odsragJqeJ9HGFNZoLaJw71hMTm0O7NeDE1Z6YsU5rGL69sedmXXz0ToW8PzA/oV09T8OJR32fb7+B17Qe3WwtC9PVbHAAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.easyplayer-container .easyplayer-ptz-focus-near .easyplayer-ptz-focus-icon{display:inline-block;width:28px;height:28px;background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAMAAABF0y+mAAAARVBMVEVHcExfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX1/////t7e2dnZ3W1tbGxsa3t7eDg4Oqqqri4uKTk5NImu/5AAAADXRSTlMAYieJ3MvE/0Lti4oh87zNagAAAOtJREFUKM+NU1sOwyAMY30FtoWS8Lj/UZe2gWpVh2aJH1wcO0mNqbDj4gDc8rLmiscEDdPji3rP8IX5fXLWwQWuaVu4gbKDuyPdsJMz3GLefcIPbJ6PDCEAFDlUAJiORM3NigQFAXAFlqOeRhWJyFFIHxNGvRrN0mp470U++3axGM2RAmXcXqKnkDSN0a9WIk5Sa01MpDXBQAdVtrA8lBhFnnKpsmoo5VBrhszV0KuJ5N2tP92O50iQjpzcctravoihdoi0Q1NrfN56m0VWzFBoje+OrD/s7pr0F0yUr6s5/LvUu/bz+B2ep+IHdMIV2SUZfCsAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%;cursor:pointer}.easyplayer-container .easyplayer-ptz-focus-near:hover .easyplayer-ptz-focus-icon{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAMAAABF0y+mAAAAQlBMVEVHcEyZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZn////c3Nz09PTp6enR0dHFxcW7u7uwsLAUKT0cAAAADXRSTlMA3IrE6WIm9wI+y0gNQZpqdwAAAOdJREFUKM99U9GShCAMQ8BF3Cmlpfz/r15dAe88l8zwQiQkoRrTEa3zIXhno7lhWxcYWNbtN/fa4Q/218VFDzf4of0O8A/h3TQfOGU/ytsOj9gPVyt8warkmYEQQAgABYDxTKROz88koS6AVIB1fRCNbSI1cVUy15Jq27LGjTtyzipPeWw40/IXQkrHyZSRmqw3LaQgctFNKYzYyGACfEXossLMojFEj7J0WfdwJ3dD9uY2X25tL0Hj45mTR87Y66u9IQFsDS1bL57o7JbUDNIofvpk08eej8kTe3Hz0ZwP9UFfv8OgfgBUByCEUZhYtAAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.easyplayer-container .easyplayer-ptz-arrow{cursor:pointer;position:absolute;width:0;height:0}.easyplayer-container .easyplayer-ptz-arrow-up{left:71px;top:15px;border:7px solid transparent;border-bottom:10px solid #fff}.easyplayer-container .easyplayer-ptz-arrow-right{top:71px;right:15px;border:7px solid transparent;border-left:10px solid #fff}.easyplayer-container .easyplayer-ptz-arrow-left{left:15px;top:71px;border:7px solid transparent;border-right:10px solid #fff}.easyplayer-container .easyplayer-ptz-arrow-down{left:71px;bottom:15px;border:7px solid transparent;border-top:10px solid #fff}.easyplayer-container .easyplayer-ptz-arrow-left-up{transform:rotate(45deg);left:32px;top:33px;border:7px solid transparent;border-right:10px solid #fff}.easyplayer-container .easyplayer-ptz-arrow-right-up{transform:rotate(-45deg);right:32px;top:33px;border:7px solid transparent;border-left:10px solid #fff}.easyplayer-container .easyplayer-ptz-arrow-left-down{transform:rotate(45deg);left:32px;bottom:33px;border:7px solid transparent;border-top:10px solid #fff}.easyplayer-container .easyplayer-ptz-arrow-right-down{transform:rotate(-45deg);right:32px;bottom:33px;border:7px solid transparent;border-top:10px solid #fff}.easyplayer-container .easyplayer-loading-bg{display:none}.easyplayer-container .easyplayer-loading-bg,.easyplayer-container .easyplayer-poster{position:absolute;z-index:10;left:0;top:0;right:0;bottom:0;height:100%;width:100%;background-position:50%;background-repeat:no-repeat;background-size:contain;pointer-events:none}.easyplayer-container .easyplayer-play-big{position:absolute;display:none;height:100%;width:100%;z-index:1;background:rgba(0,0,0,.4)}.easyplayer-container .easyplayer-play-big:after{cursor:pointer;content:"";position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);display:block;width:48px;height:48px;background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAIVBMVEVHcEzMzMzMzMzNzc3MzMzPz8/Nzc3MzMzMzMzMzMzMzMzLVn6fAAAACnRSTlMA+duduRUwSGSD8toSsAAAAI9JREFUOMvV07ENgzAQhWG3lLSp6MwCViYIRSpG8AiM4FWMaPymDBKESMF/cQ0S136F353vnLuo3gp1kOYEoCXW4LFKIZAnqAXYICeASoAdzgG+cApwgF4EfwF+oDkCqIwA6gnyAKA8AaizQhsBAjzuqUHofInGIQbjRxXjMrTJuHDestR4Bng4eGrN0929PqNfzC6h06weAAAAAElFTkSuQmCC");background-repeat:no-repeat;background-position:50%}.easyplayer-container .easyplayer-play-big:hover:after{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAJFBMVEVHcEz///////////////////////////////////////////8Uel1nAAAAC3RSTlMA+rbVFUecgC7rYhEEz+4AAACbSURBVDjL1dMhDsJAEIXhdeiGpKYWQVKDWc8ReojFc4ReAlPFFQazad7lIGkb0jK/WEPSsZ+YN5mZEP5UrZIP0vgE0Kv3oPlIJlAk8AJM4ASYwAkww2+ABfQg0ImgugPYsfNBVl99kA0AsjOArAPQpRTGHiBB8whxM0y+3skXNltsvMYriIWrpWPA80mFJ5qL3gAfB1/tcAt7rzdiV+HEgs1oBgAAAABJRU5ErkJggg==")}.easyplayer-container .easyplayer-recording{display:none;position:absolute;box-sizing:border-box;left:50%;top:0;padding:0 3px;transform:translateX(-50%);justify-content:space-around;align-items:center;width:101px;height:20px;background:#000;opacity:1;border-radius:0 0 8px 8px;z-index:1}.easyplayer-container .easyplayer-recording .easyplayer-recording-red-point{width:8px;height:8px;background:#ff1f1f;border-radius:50%;animation:magentaPulse 1s linear infinite}.easyplayer-container .easyplayer-recording .easyplayer-recording-time{font-size:14px;font-weight:500;color:#ddd}.easyplayer-container .easyplayer-recording .easyplayer-recording-stop{height:100%}.easyplayer-container .easyplayer-recording .easyplayer-icon-recordStop{width:16px;height:16px;cursor:pointer}.easyplayer-container .easyplayer-zoom-controls{display:none;position:absolute;box-sizing:border-box;left:50%;top:0;padding:0 3px;transform:translateX(-50%);justify-content:space-around;align-items:center;width:156px;height:30px;background:#000;opacity:1;border-radius:0 0 8px 8px;z-index:1}.easyplayer-container .easyplayer-zoom-controls .easyplayer-icon{vertical-align:top}.easyplayer-container .easyplayer-zoom-controls .easyplayer-zoom-narrow{width:16px;height:16px;cursor:pointer}.easyplayer-container .easyplayer-zoom-controls .easyplayer-zoom-tips{font-size:14px;font-weight:500;color:#ddd}.easyplayer-container .easyplayer-zoom-controls .easyplayer-zoom-expand,.easyplayer-container .easyplayer-zoom-controls .easyplayer-zoom-stop2{width:16px;height:16px;cursor:pointer}.easyplayer-container .easyplayer-loading{display:none;flex-direction:column;justify-content:center;align-items:center;position:absolute;z-index:20;left:0;top:0;right:0;bottom:0;width:100%;height:100%;pointer-events:none}.easyplayer-container .easyplayer-loading-text{line-height:20px;font-size:13px;color:#fff;margin-top:10px}.easyplayer-container .easyplayer-controls{background-image:linear-gradient(180deg,transparent,rgba(0,0,0,.37),rgba(0,0,0,.75),rgba(0,0,0,.75));box-sizing:border-box;display:flex;flex-direction:column;justify-content:flex-end;position:absolute;z-index:40;left:0;right:0;bottom:0;height:48px;width:100%;padding-left:13px;padding-right:13px;font-size:14px;color:#fff;opacity:0;visibility:hidden;transition:all .2s ease-in-out;-webkit-user-select:none;-moz-user-select:none;user-select:none;transition:width .5s ease-in}.easyplayer-container .easyplayer-controls .easyplayer-controls-item{position:relative;display:flex;justify-content:center;padding:0 8px}.easyplayer-container .easyplayer-controls .easyplayer-controls-item:hover .icon-title-tips{visibility:visible;opacity:1}.easyplayer-container .easyplayer-controls .easyplayer-controls-item.easyplayer-face,.easyplayer-container .easyplayer-controls .easyplayer-controls-item.easyplayer-face-active,.easyplayer-container .easyplayer-controls .easyplayer-controls-item.easyplayer-fullscreen,.easyplayer-container .easyplayer-controls .easyplayer-controls-item.easyplayer-fullscreen-exit,.easyplayer-container .easyplayer-controls .easyplayer-controls-item.easyplayer-icon-audio,.easyplayer-container .easyplayer-controls .easyplayer-controls-item.easyplayer-microphone-close,.easyplayer-container .easyplayer-controls .easyplayer-controls-item.easyplayer-object,.easyplayer-container .easyplayer-controls .easyplayer-controls-item.easyplayer-object-active,.easyplayer-container .easyplayer-controls .easyplayer-controls-item.easyplayer-occlusion,.easyplayer-container .easyplayer-controls .easyplayer-controls-item.easyplayer-occlusion-active,.easyplayer-container .easyplayer-controls .easyplayer-controls-item.easyplayer-pause,.easyplayer-container .easyplayer-controls .easyplayer-controls-item.easyplayer-performance,.easyplayer-container .easyplayer-controls .easyplayer-controls-item.easyplayer-performance-active,.easyplayer-container .easyplayer-controls .easyplayer-controls-item.easyplayer-play,.easyplayer-container .easyplayer-controls .easyplayer-controls-item.easyplayer-ptz,.easyplayer-container .easyplayer-controls .easyplayer-controls-item.easyplayer-ptz-active,.easyplayer-container .easyplayer-controls .easyplayer-controls-item.easyplayer-quality-menu,.easyplayer-container .easyplayer-controls .easyplayer-controls-item.easyplayer-record,.easyplayer-container .easyplayer-controls .easyplayer-controls-item.easyplayer-record-stop,.easyplayer-container .easyplayer-controls .easyplayer-controls-item.easyplayer-scale-menu,.easyplayer-container .easyplayer-controls .easyplayer-controls-item.easyplayer-screenshot,.easyplayer-container .easyplayer-controls .easyplayer-controls-item.easyplayer-speed-menu,.easyplayer-container .easyplayer-controls .easyplayer-controls-item.easyplayer-template-menu,.easyplayer-container .easyplayer-controls .easyplayer-controls-item.easyplayer-volume,.easyplayer-container .easyplayer-controls .easyplayer-controls-item.easyplayer-zoom,.easyplayer-container .easyplayer-controls .easyplayer-controls-item.easyplayer-zoom-stop{display:none}.easyplayer-container .easyplayer-controls .easyplayer-controls-item.easyplayer-speed{padding:0}.easyplayer-container .easyplayer-controls .easyplayer-controls-item-html{position:relative;display:none;justify-content:center}.easyplayer-container .easyplayer-controls .easyplayer-playback-control-time{position:relative;justify-content:center;padding:0 8px}.easyplayer-container .easyplayer-controls .easyplayer-icon-audio,.easyplayer-container .easyplayer-controls .easyplayer-icon-mute{z-index:1}.easyplayer-container .easyplayer-controls .easyplayer-controls-bottom{display:flex;justify-content:space-between;height:100%}.easyplayer-container .easyplayer-controls .easyplayer-controls-bottom .easyplayer-controls-left,.easyplayer-container .easyplayer-controls .easyplayer-controls-bottom .easyplayer-controls-right{display:flex;align-items:center}.easyplayer-container.easyplayer-controls-show .easyplayer-controls{opacity:1;visibility:visible}.easyplayer-container.easyplayer-controls-show-auto-hide .easyplayer-controls{opacity:.8;visibility:visible;display:none}.easyplayer-container.easyplayer-hide-cursor *{cursor:none!important}.easyplayer-container .easyplayer-icon-loading{width:50px;height:50px;background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8BAMAAADI0sRBAAAAIVBMVEVHcEx4eHh4eHh4eHh4eHh3d3d4eHh4eHh4eHh4eHh4eHiqaCaRAAAACnRSTlMAikwX3CxpwZ7zIGi5xgAAAZ9JREFUOMt9lb9Lw0AUx2Njqm4iGEqmEnBxslKUdhJctFMVcW5wKZ0CLpJJQRw6iVqQbg3FtPdX+l5+XHJ3796bQj557773fe8ujtOI+6jz5p84dHjTkYD4+RhT9CIRZWRPJr1bChnbY532GhT4oUpbI6HEuqvgIH9544dh9J4/rpr0Ms8oV3zMNT7X1MXSmaznzfHjM4n72moe5n8ryYrW9rKRvgf0S93JA7yKa9lbzUg3keJb8OVCtwkrFmoO4MnsAuj5rGqnZg+GZXUXkl9NjEui9n3YA9XgpMgakLXz6ujMTIgrCkPVv0Jil8KgKQN/wRN69hLcb1vrbR2nQkxwiZTGQ5Teb7TO8PUaS8Q03sE+zkjP8qbjzgJtEhRbV4gnlkOFeM7hDYNdxPbiYFvKSHN6L2NmY5WzMYPtplZdTxncRvn2sI+DHIoug22jWMaA12Y7BrXzrG8BX32XPMDKWVzw1bdMOnH1KNqNi8toqn7JGumZnStXLi0e4tcP6R3I635Nc/mzsMxl9aux9b78UVmn2pve8u6eR50j9c0/ywzyVl5+z84AAAAASUVORK5CYII=");background-position:50%;background-repeat:no-repeat;background-size:100% 100%;animation-name:rotation;animation-duration:1s;animation-timing-function:linear;animation-iteration-count:infinite}.easyplayer-container .easyplayer-icon-screenshot{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAJFBMVEVHcEzMzMzMzMzMzMzMzMzNzc3MzMzMzMzNzc3Nzc3MzMzMzMwv5ahDAAAAC3RSTlMAW+8S2UGVwyyZnOTRhEMAAAEfSURBVDjLzZKxbsJADIYdBQpsSCyVMlXAdEuQYGKpWFk6dWHJgsQ7sMDSpUv3PgITAQT0f7ly57ucQ45KXRAZot+/89k+X4ju9KzL4XOhlm3pR0enYrWViSRPXQIQSASkRSkIJEFRimYCuQAHSW89IOv6SH5TCsuAj68Ab1wDzqkAzqoC7AUAPtgsABgkBBgkCJiNHehGok//KRVsHqd+3Dj1/vukt3AH/Jj05s5/AmyZhFVWXDls44iVvfQWkCvgxU6g9ZdJfCLvjJbYaT3GvjOY4mQSG3SJGjhr/Y1Xohp+TGKqqzexZ/1GVGdNCitt6R8zVvb9d+JmKdl8o5sPWbtxT6zFuJcDQtk92MNmYiXHquYlZlVt1j4P6cd7fgHFW7Nhqu29TwAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.easyplayer-container .easyplayer-icon-screenshot:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAALVBMVEVHcEz////////////////////////////////////////////////////////NXt0CAAAADnRSTlMAWe+X2TINXUYZvctoYyuS2NgAAAEVSURBVDjLzZKhDsJADIZLCAsEg8WgEGCWGSwCgZxB4MgEAonB8wQEXoBH4BEWXgPJgEBG0mdgR3u77raRYAgnlq+9+/t3TQF+dKbZcJXSYSnzlViT457lRScKmBqILSFA3GoO8S4E+Ex5JiSJ4CbVdyOQdZNomX9D4dl+ko3NC8vFFmhPy8FIsi0ZlwLBW/LY5BxYYreUSgoFAEmhB5Rc9OCbUoXmTmDadQKTn4y6A/XTaoSKdb6KyGU6RJ7eHgpb3ABinAoil303xB6vQnRahNhXvMdre+fzOgxVrokX4jHAnBh8PALU8Eq8BqgTg/vePF8tpuPy9/NFaalSc273RizarYqfkswjifNMQ/TyTGMv4v87L+ks5gqDbc9OAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.easyplayer-container .easyplayer-icon-play{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAIVBMVEVHcEzMzMzMzMzNzc3MzMzPz8/Nzc3MzMzMzMzMzMzMzMzLVn6fAAAACnRSTlMA+duduRUwSGSD8toSsAAAAI9JREFUOMvV07ENgzAQhWG3lLSp6MwCViYIRSpG8AiM4FWMaPymDBKESMF/cQ0S136F353vnLuo3gp1kOYEoCXW4LFKIZAnqAXYICeASoAdzgG+cApwgF4EfwF+oDkCqIwA6gnyAKA8AaizQhsBAjzuqUHofInGIQbjRxXjMrTJuHDestR4Bng4eGrN0929PqNfzC6h06weAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.easyplayer-container .easyplayer-icon-play:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAJFBMVEVHcEz///////////////////////////////////////////8Uel1nAAAAC3RSTlMA+rbVFUecgC7rYhEEz+4AAACbSURBVDjL1dMhDsJAEIXhdeiGpKYWQVKDWc8ReojFc4ReAlPFFQazad7lIGkb0jK/WEPSsZ+YN5mZEP5UrZIP0vgE0Kv3oPlIJlAk8AJM4ASYwAkww2+ABfQg0ImgugPYsfNBVl99kA0AsjOArAPQpRTGHiBB8whxM0y+3skXNltsvMYriIWrpWPA80mFJ5qL3gAfB1/tcAt7rzdiV+HEgs1oBgAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.easyplayer-container .easyplayer-icon-pause{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAFVBMVEVHcEzMzMzHx8fMzMzMzMzOzs7MzMz4IlKVAAAABnRSTlMA6xIU1hVqIuOVAAAAMUlEQVQ4y2NgGFYgLS3RAEQziQFZoxKjEqMSaBJpEAkgIw1ZQlBQRAEs4QhkDeIMDgAWx1gMHyIL4wAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.easyplayer-container .easyplayer-icon-pause:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAFVBMVEVHcEz///////////////////////+3ygHaAAAABnRSTlMA7OgSFBXMmAA4AAAAM0lEQVQ4y2NgGFYgLS3JAUQzi6WlJY5KjEqMSqBJpEEkgIw0ZAklJSUDsISikpLQIM7gAJjhWp6XcaOxAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.easyplayer-container .easyplayer-icon-record{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAHlBMVEVHcEzGxsbMzMzMzMzLy8vMzMzMzMzNzc3MzMzMzMxEZ/aQAAAACXRSTlMADPKKKeBxlV6neZ4mAAAArUlEQVQ4y2NgGDZgJhpowCURAJeYpIQENJEkCgWRgCeShAGyjfgl2EqwS7BFToZJiLg4ICTEImdOh0pwRM6cDJcIjpw5E6aDFeh8B5gECBCUYAkKCoMbNXNSOlyCgUEQ4apJJmxIEkjOVWFgxi4RgEsikGQJnEYp4pLA6VxUDyJLIAUJcRLIwY7qXKSIQvOHWCQODzKIleBPPjgTHM4kijNR48oGkajiYUMykwMAAfmZhUjBISQAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.easyplayer-container .easyplayer-icon-record:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAJ1BMVEVHcEz///////////////////////////////////////////////8NopmKAAAADHRSTlMA8gyMLeRw1x2DBpWGN2QDAAAAt0lEQVQ4y2NgGDbgDBpIwCVRAJc4KIgEZM4EwCU2KSEBHySJCcg29iBJGCBLgHUs24FdYlnNYZiESksDXKJALebMaagES8yZw3CJypgzZ2A6WIHOd4BJgABMgh2XBEtpaBjcqDMHs+ESDFyLEK46aMGGkEB2rgQDJ3aJAFwSUSRL4DQKp+VHcTkXxYMoEkhBQpwEcrCjSCBHFJo/1GIO408MOJMPzgSHM4niTNS4skENqnjYkMzkAEgzyFpeX6L3AAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.easyplayer-container .easyplayer-icon-recordStop{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAMAAABg3Am1AAAAOVBMVEVHcEz///////////////////////////////////////////////////////////////////////99PJZNAAAAEnRSTlMAMPndsnZj1CSYPcmL6wsdoU80pOJLAAABu0lEQVRIx5VV26KEIAhMA++p9f8fezatFDPr8LSrjMxwiWlqzRuMYKW0ENH46c3WuGyVLXEduuO83UyK59fl1jX5EEUXD9DOaSh43XEP5zUIdZ4pAecTofVnWSt3ip4rx7N61vjnY1D30CpH4QQR8vsP+RA5Rs3KpjfMU/pMim/LgbvH7DF2F8sU0owqapKLqgnhuGWwImUagn2zhUX6WQQoYkXG9WxSAJd700/ygsCpAoliaDsPiG48GM1X5Ft/06sfp8DrDE+3DpekWjxM6366fgEcnklC+AIIWYQmPEeAaUmjFOnhCLDfxZRH+w1gU5b/DYjfNcyJ0p7dxX8B+FwxQVtvAGB5ig0d5gFA5KbzS91hI8CenvlHflfN/XvzJQnxbBEko1gbvVnPii+FadSVRUEaYylQfJtpLB+aRG4LY/80yKdUbCraM0lozGR4ewZ0Wtnj1iC7hjWKNnjYmR62W15cLlL3+2pyMR09jccyuyUrHKsvthc5xsY1iWJ0Xk3t+2XP7AnWwrAQmBH6asXubmL1Z5Lz6o992jWiu9lnMSiQsK27FS9NxhCumZgB2fTBPFsFolhZr5B/D3o9sJAI6skAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.easyplayer-container .easyplayer-icon-recordStop:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAMFBMVEVHcEwimP0imPwimP8imPwimP0imPsimP0imfsimPwimP0imPwimf8imPwimPwimPxLmg1rAAAAD3RSTlMA15sisGUvdz3szYwMT8H+hDJEAAABx0lEQVQ4y3WUO08CQRCADxBQchBiMDE24KswFlw0Wtig/oHzUWglJBZWio3GDjUxlhhrEzT+ABMrO2iptLLVRluDggI+xtmdXW73LkxxNzvfzuzszNwZhhDzdOxqaPGgYrgkOgFczh90ezAJQmpL2v6OHYnqk2aWxOTtAnu/O/Y5XNZXmTZjo3ot7aESwLdFeqAM0MoJkMf9ltwVQJ9PcQN0UFIJogvdJgLQVFMsAlxyBaPmVBDCE8W7qd+2SDsx0q4OwhSrCG134W54jDfKLjDNxaL8/9AAMM/solptRnoALBbwEPWYrOEzLnrZsTGoMW+fBHG2SiLPUNI6KMOH8QS/XsCMBYQekIEv7NGZF/Rht2yqmA4i3UG9O0iTqgMfhirDhRdU8XJZqqEO8tDAqje8IIt1r+I5HmBjfD9AxQ1MgJQRpc6GJRALHOAS1WRlhMs4VaSFzwIWzCUF3op71kdNsNs/FDCuA58YqCQl7IhN3WbDnlLtfjnuON515WM17c7w41QPOuBIzDT5wqi0T4ESGV3gjtTjkuPATwHoX9+cPRlmmvJ57YAir2qKy459QL/UhrS/uAu3xf8KiX3DI+b22t6jc9F/qfaum9E1pJ4AAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.easyplayer-container .easyplayer-icon-fullscreen{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAALVBMVEVHcEzMzMzOzs7Pz8/MzMzMzMzNzc3MzMzMzMzMzMzMzMzMzMzNzc3MzMzMzMxdHBitAAAADnRSTlMA8AwGYt0aUcg+til5kgmZywUAAAGWSURBVDjL1VM9SwNBEB12IcGkMagxNktQSZFCYimIJAqKpZ3Vco3YBYs0NkKQgBg4ECtLFSFVCGgQrERBsLayPE0Ip7n5De73BdKLTrE3ezPvze6+GYDfsAQKy/Rz0i/OZJjY9XREuohTKulS+ZFGiADfyZXU5uHktI44VH5apDx554aXwJqloiIwiEsStAjCAsRNF1jCmGqa4Vc+BvS4JkjwzyPE6xiwzsxxeTbZxqjkANSWZFkoIj5bQBl4aBDfkPDNpeRRialB+SRAFz8UU1sAaEUjSCDoJ7iukZJ1V+c01bFczM1pWaa+a0Rp7MHn4V8Z1R9vLLCv9WjKdVFfk77JP+bZdz35YAfKXx6KhKp93abUYVbrj49g9aAYSuFCLbPUwzdCsYEWTloXgw1oGwQbENeuKwxzXhxwAADRMFd+zzRc6AAASY6RH8VjUHaXTrlOpDgCUP3gelc01e2d+f16cWbnQ46BGCRNVsWAWQJVw2xGfUXVv2k1OsLfazXqblzS99u1FwKFvBJioXBY2+r82U75Ab7O0ypVV0wKAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.easyplayer-container .easyplayer-icon-fullscreen:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAMAAABg3Am1AAAANlBMVEVHcEz///////////////////////////////////////////////////////////////////+GUsxbAAAAEXRSTlMA3clDHfdfDQbsVG00u4Cqkr04dRsAAAGaSURBVEjH7VXLdsQgCPUBAROdjP//s1UTDUxsz3TRTc+wC94bHsLVmP9hkE8LIdvgupt2tFhcpy2CMZyVxNePEoqDp4hwEGz5PTqWoZNzLrmD9riltBEYzzpZQ8bweXy56Qy6Tivsp5JQYtawuMH3eJlSxIJtdSSa4xer4lMB89pK23mKrwjZVpsRzLq35vEE3+r26h6w5EKppcp3fP2lIpTPWJvoXoobeNI1sM3haHvx56tu2sdElJ54GbnPQ7RZ1sCpl8qPEMXBNQ8vN82jNbzLCPzGSDOZj/2Bqd19R1rELIEbDFrUJfKYdlALbDuDMko/hz7t8DqtCfr8h1Vt4rn7eh/6Ph37ch20aW8McsfGCOXzcr+GOlQG1rJ2HSHUDO/4Mu01qVAqTCpCJfgZ3phTS2pKm5aZOMUbs7Q6nk6L8UzRh6W78jH+gD/VRxHokPuNgUGTaPPR+zDR1mrlvcGgwkAVacSbeoN4Z0rb5/6XLrW/2GTLk2NhXHRKzrqAt9cD4rr4ddvae0NAYgOICdZyvPj4UYRf2BdfbB8iWvnTUwAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.easyplayer-container .easyplayer-icon-fullscreenExit{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAG1BMVEVHcEzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMxi4XDRAAAACHRSTlMAf3WqJmy+7azWNnMAAADNSURBVDjLxZQ9E4IwDIaLfMzCOTDSOz07OjLir5CR0dmJFVHIzzZtnMzbOzcyZHnuaXpJWmO2ji4GhpAzzZeQzw8FKCj1pMHss9OgpwsGOS0YGOcVUMPsfBVkmJoVCBJW0FFB6SFIaMKAlRGDnEiDkuM00lP3SmL6H5QSh+iIr9ZWVWntUV9Z4qWbHAWrhcUYNLC4Wwm3xb1r2mOQYoVn2EKFAVb81KHiQQq6L3vSUoMBUmSzgCKbVeiL3eTp3Odf8H1sxRAZZNZt/Vt8AHcPQbiQQVF+AAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.easyplayer-container .easyplayer-icon-fullscreenExit:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAJ1BMVEVHcEz///////////////////////////////////////////////8NopmKAAAADHRSTlMAe4Fzh7MZbKPtN8gpX19xAAAA3klEQVQ4y8XUIQ7CQBAF0CWhKQHDGtQKQFcURUgqEARBED0Aoqp3IKnoATAEW8MNOACmhQYKcyi6uyjmr+aLqXj56bSbVoh/J3HBxcw0ZfA2c3FiQLGeQcWh1lOVDDJTAeCbCgAR6QqCDj0xCEU5Bl2BIALKMwhdKjGILRUYfCIOEynlvABANk64M5jabJxHfJY2I76yzYu/ZCc0s1WbNYAQ3jxqwMoGHoqWGHpUQajEgcYYcKWFtjLE4FGJQewoxODRDQOqKPPcHl9sfzSXa/0L349tEDsOsp/8+2/xAY+BZBY9KhM5AAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.easyplayer-container .easyplayer-icon-audio{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAIVBMVEVHcEzKysrMzMzMzMzMzMzMzMzMzMzMzMzMzMzNzc3MzMz8gU00AAAACnRSTlMAL0jMZKt96hGJsSKv1QAAAJ9JREFUOMvN078KQFAYBfCbJEw2q6SUyWxTnsJT2JTJ6D38Gb6n5PpT6BwbuaNfTnz3fEp9fZwAP7czD0MsGCzBYJcEYsGwBEHQQRB0EII1CMAWdAOzyJUvJ4jyDVyZVHKGpj9guEI2IuhaDFadYnCkIm9I+kPgn8t+kI7kOsT72HcwQnJR9Gofy8DrwwtHK8pLzdeALg5fNb6cdJ1fOjOGYrl5CLFcggAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.easyplayer-container .easyplayer-icon-audio:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAJ1BMVEVHcEz///////////////////////////////////////////////8NopmKAAAADHRSTlMAL0TQf2frEaZYt8E+idL4AAAAnUlEQVQ4y2NgoDdgUcAuzr4Hh4TaGQHsBp3BLsG+BoeE2hnsEkCDsEqADMIqATIImwTYICwSEIPQJFhnBjKInUGSUA2CSPCcOcIwB1ki5xRM4iiDDrKEzQlsEuUF2CVY0jbgkDhjMLQkEkj0IM4gQQ1EHMHOOXMiakRpTiQQtXgTA+7kgzvB4UyiuBM17myAM+Pgzmq4MyfO7EwjAAAEf+BAxqI/agAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.easyplayer-container .easyplayer-icon-mute{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAMFBMVEVHcEzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMztXryaAAAAD3RSTlMAHd4P7ztyiy1OnKhdx7uY2gyAAAAB8ElEQVQ4y72Uu0vDQBzHE45C3SJFaSGjUEiRpJRCBifXokkpSv0DfOBrEKxUUSoFH9ClFAUfU7c4OARRCs5WjThIsJuDlLo4ldvPe8SYxGyCt1zgw+dev+8vHPcvYybvfCR2OgUv2CoLdI62bUn3gq5UJxOomZofXPUNrIChJRklfcDSiKK2bYQ6PiCaREk0EQoYPFYa3F73F+DGsBJLmAjBAMBKakG15KAxqIhd2KuK5reRccBDNbqGJhfSlnNc/kBh4OY+vaoR5QrRC0afKgxMrKdXNKI8yxRENpyd+i0VA6wMm5IOBmORCwfAFjGwolofevbuPrvpGhRgpVaqiJflrLuUQQFRToS9l894EMDe7q6yL7/G5wMATc5mQCiAvQo3HAbwLtyYHQZgTxhohgGUa/CP12EA16W2/Ou4ZEj1dNG9oPMkZGiwJWQ8j+huPoJy9Z/XHTfUFSbAURveCtE5px5vs7hQDKS25FSDn2KR5Up1/lRmIHne7BvKd82LMRJbSjr5M40lmaYZ5/PRpiCpizjJyk+CwOGOzACLpSdz02QxkiuRhd8dNOwkV7zl2YX1mcySKJrQiPkXY9klSt6rkJPRwIlmzrcWSGyzHuTb11V/N0y/S6SdwdCR4m/47OIN7XOQCfwJwHGp8IcfyRdBLEZK4Uxp6wAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.easyplayer-container .easyplayer-icon-mute:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAMAAABg3Am1AAAAP1BMVEVHcEz///////////////////////////////////////////////////////////////////////////////9KjZoYAAAAFHRSTlMAbk2o8o0P5TsGnVojFi/XHcV9urLaq0oAAAIQSURBVEjH3ZZZkqswDEXxLM8T+1/rkw0BuwM0f131+IvDyZVk6SrL8p88QCHp8UAnWmoWoG8AwQRN4/vOiqwUuwWqiob646MMhEW+KnMLMIXffgiZoODBusb7kCzjByF7OOszkOyp4amJ7fWVPwCN6BpyWRypvANPCvi7u4aTXe13YI+KkYA5bMRTSMlLnSyGwisSH40B0FJOrKVB6iAw2U7sGgPgQ/DTPQjitCOZT4Q6gWCtGwGFbSM34ENUNSpAKTACmC31rnRgJwjDdkFAJpfkAsZcAJvCSVQB2FaWWKdB/ATMAHwIUYL21lRBZRDiC5AnsBHBUqxEyaraFMoz0AnvHNa6xDWS34FGgNf6PYAEZoCt+BroUWFVbeb5HbCqSvB2cToyca+Adjlycdawt0C/HeyScl1W/w3gsU3aAd7JF8AuAN6isr7NAogXAFeq59Ec7ifAm49hF8wCMWfVNXAeCAkjEGuBr6R5ZGJzBrl4gGniBME+w8aMMyCsNZtfaemnmYaAQ6I3Rz0fnDhHJxc93Vrr7sHWjP3XRtTba2L3EkdFVaPC6YmXxKI9DGF1YPLdiwfD2r37cL5nDVw+uKzU5K27hsXCXPtyC2uyyl0D0p2TY7VaIvFYWU0Dm8TdOXmrVp52HG4lU4K/N38PpS/Kw70dbmb/sC0WCcQwNNzzjrzUj7veUyIIyL/4m/EP8V829O8zh5EAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.easyplayer-container .easyplayer-icon-ptz{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAMAAABg3Am1AAAAM1BMVEVHcEzMzMzMzMzMzMzMzMzMzMzNzc3MzMzNzc3MzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMxDm1AzAAAAEXRSTlMAHqw+E8It/gjxc03jhGDTlgAjE2kAAAI6SURBVEjHpVbZkoQgDBwg3Of/f+12gtfMbK1Yy4NampCju4Ov1y8ruNyyo9fyCibVlNW6vUu29GpWQwTVdPTernqwffHex0WP4Nro3k+PrMKCvew/PcZ95aoNsY9yua+cGxTZsnf2K7ch4CAdGnWwYx/5LgKZCgxGdrhH3BeqNmnwviFXPZbQJmcM25HJ5n7/Pczr2QqksMJfO7BJOHLKLWFdMiL1QXYRwFagMklb4GB1zS7s8Le3fqH7Q28tVLkKdIzeaOJB2OKtY8KfTQCUa4++dNsLbrqpTR7xguHGt8hfg8P+seuaEkNdBjahzOD7g1cHP21SL2LtMNBKMdTRJjffTX1wVgrsEb1ITJU6QknwYJAcQky2cE02NbzPp70KyKggtpu9xM7Ik+CBIqY+8FrYyRUkrs+MEm1TG6tG9LZxNDNFGDue63TYGgIHqUUcuNhvhyZtn5LnlDq3Juxa4noCuX0scErOpNMDCrVcHPCS5rFGuQR9KZpxnB6CQ0ZO+AIBcTPk3UdbTx1L7jLEEHsMW7ZYm8NlIFyxn8+xdL7MURYEhzd5k2N2TabxIAORwC2r00QQfNSgrnqTJfh7cDmDu9ggtV0EZFr7kGu4KAxtNDln406TLwF9iZCIwn9EfjPuncRHYm5x3NfK3cFAS5kWxljSnTFlPHBAUFg5HsCCVOd9cdwXq+027un2QJlMjqISJutCDceRtTTuT4+1Q3HWHR8cu0fh9sGvADTYH9iLah/9nPz5+/MDJnQfoIVoAnQAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.easyplayer-container .easyplayer-icon-ptz:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAMAAABg3Am1AAAAQlBMVEVHcEz////////////////////////////////////////////////////////////////////////////////////1bZCPAAAAFXRSTlMAeVoYDS1pBiPv4/g6lkzO2qSxvoixscijAAACi0lEQVRIx51W2ZLcIAwcLnPf+P9/NS2wp5xkq0ziF3ZRC3R0i/l8fvi04oxx89n+RBi1sqB38TKw7lw7lNzDa3U0e57bHhJ4d567HlqGC08eLAj9Gv8XD4/OwtsdhlfCW2s9LfWtuNrMhG1uLWP17Xh14LF4m8dx1OJ9jkm85YCYch5JzDVy81on3MFYkpTNYGmHHloYI+aqlNhlh5ZSvmH1AyBUwPcMX+u/clW3XYvA2YgRGXyZIZX6PXv0l3GlV9Jp9FKcK7mytJIg8xEeBdaBtV4P8tAixexnp73tY7ZBkrk9WEL8t7ZUDqtIA3jXa8sODSeUVqw5aztT+g4QeNAgM0PGTA0+EmfVeUvU0CEW4hX+lt/zseE7jJKDSmi0EUKBhr7EAMKPvNjOA9Fz4Yk/CFgcGRSdkYOHCLRxQfzKRN5SB/b5Ot8SzzQiKqcb6ipFdCfi1JI84OBdxzarhJ8RkpxHOQszl7bpn0GpmnXq6R4OfTkwwlyUWzeQg7rSLNhNUzEUEqJF3DMHeeXgqRIaYwHimLKipK8hMZOYVfJ5oKtIFSgXk5z4KcNx3GOIPGYfPigh9YGHBNQKVKbZhxMnqq+OHfWBHARZfWm1dnfSXfJuXInplse8wy39zkisdQ5kuLY+Bpc5hwGiH8Mx1rE24DFaLqXkfrNVkjk+8JPTPF0bUw+R9MCVuA8ks/xDyF/9orMqpBQeiob5RbIbmv7/TxvoX1Oqa914TsYg7QUWx8Y7R89JQY8mY6Dat1G5GARuMOgYHY9cbL1vNvc++fk67olLk4nrQSl7457OPqdeKn+vEwm4LPzW87DyXvqIyei9znHS+cZz9SxV+Qf8nNbjn37NkDx4+PmCXzHOLUMtjgmUAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.easyplayer-container .easyplayer-icon-ptzActive{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAMAAABg3Am1AAAANlBMVEVHcEwgmv8imPwimPwhmP8imP8imPwimPwmmf8imPwimPwhmP0imPwimPwimPwimPsimP0imPoLqfILAAAAEnRSTlMADprCJBnU/gXwh3LiUKxAXjJ/ELXKAAACbklEQVRIx5VW2bbjIAwLa1jM9v8/O7Iht+09MwPlpS2VwLZkJ9f1lxVG1joPdZ0u1ZIxurhv8DH6dMpQI5t439GAEc7xYPgTRnAtV7plReRhd5kDP8+fd+wzt70yPhIJzWT7/6DCJCAYLReZPMIuJC4pClSktHqbNpJO1aTmmAme3cvtWs9NSfq52CPhnJNjlbVHwgmWSWGHeQHcKFjj7fygwidf2fa4mbVOuladcnsoDn9/CKKAWf6HEtpANiJvUp9Fgr0SvocPP/sqjOCK9ktpyCAo4Kt/d4n4/6baseNKAt5XrauPN1A4ZLAd30RUI4kNfELVx+yd3lrXYIg1Bp/B/dGs5N8mPsJoVyiwkofQSlm+K9aiwmoQMDoI4wefoK/rhkESrSuV+BR2i6HZH9juLzxCtBmn6rFmB66gNJQwBOSxncT/N3FAlxAoLQfJDy2+6rMLI3aznl9fhOcGSdZzoNhex2K3TXJEVe3M4Zb6QhHuJc5BWakYIqqietcPw6FK+EHofUHRqtLEQ5X8dKVENXXgEpLOpcjwkFI30YFVHE8fyx2ShZJ/ydTKlZwZ4BCOv/af9uMi0DILe4kieynScgPbhai+DRDckTT6N6zJpI3HMghM3BMg+q9pHmwrbR0Q0D5wc0JHPy0E5Ur7Nf3Rk68LnR0NHfO28/T5P4cNr+uLFR7eEdiNxvMRbd5Onlqsis4iIVdme4di3akWOz+3T0aUnFWHa8QZrO51NO69MeLPafrNuBenxel/3d21j8k/jyxf+75OQabFxOtuT94G3Lpjzb0zBn2Dl0ep/waPidQ/p/XB60Dp7e8F/QO7WSJg4zEzdwAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.easyplayer-container .easyplayer-icon-ptzActive:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAMAAABg3Am1AAAANlBMVEVHcExru/9ru/9qu/9ru/9ru/9ru/9ru/9svP9ruv9ru/9ru/9ru/9ru/9ru/9ru/9ru/9ru/+3uxEqAAAAEnRSTlMA5q0cR/PC/ggSKtN5OIhaa5izIOiAAAACV0lEQVRIx5VW2ZLjMAiMToNu/f/PboNsJ5PaKWv8kKRkWkDTQF6v/zyUfO+JX9sP1dKKd/v2acQcm992kbo1R4il7iHIif0BRNtCUOozH4cikAdt2YfjRLTnzN15/8I85wFCI2xDzlnyMLO7R0aFoTzbFGB+jIkYLkyePvmW8d2fs2ZfZuv8It9s6zvV5uSr2LmKb9oVh37QvpjYOcf8fcO3Cb1jGqOU0SvTTd6X2KUBLgKdLzaiDtE2n+isTh8/+AX7E6/Vh/NNSyfVm10RXIe1nxXRapmsDQB7SMnkmE0IxgqvUn0jteEf1T2CHXgr0gjZllGk1HoJL7lD7fRpD20CgJcwQ6EdSh3lLK0zVfuqz2WvPlPJh7HqnCQ4MysxoAYQE0vHub/toRuqzRy5pEUvbg62MzlJQn1MHBe1x7WSAddpNDSN1c9wRMhKfi2jrICwAIsQvHkD7Al41bOrBNC1Y7QdmSg15LDokGETJB/imxYJKfmFMDqI3FjUkDS3NSEDjBaxknRYSb+4nj4kC43W2OKrkqGB8jV2Fq03YiWbhHQTpUV1mMHXWYf8HlNX7ZUQRC6iwBAIK0r0ILr1UxqKsPattAkhwSIiMl76bT/Ft/TbTy2jHQoM7Cz9isHVMb6GILl0H4DGivbw7xNc8rAtiJn3O/qvD6JT/wgs7Y370ZSdWmbZWEKiG1lXImldW7Q1jGMbZW9tUVKZmGjjGvf+EXAqzWiX5OfFSHVp/zjbfGPc3whdcbTF67V2N1e79qYMru2/AnzVYFsdWFt/+nOypv8vQvoHou4gOtSrG5EAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.easyplayer-container .easyplayer-icon-performance{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAnUExURUdwTM7OzszMzM3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3NzW8hQDoAAAAMdFJOUwC/gO8ra6tUQNmVEKtAA1gAAAE4SURBVDjLzZMhT8RAEIWnpS3tXcWdQ6wgOJIKfFdUICv6AyruB5w4EuSJCwRXgUBWkGArLsEi6JVuaZkfxawguSWz/p7azLdtdt97C3ASagp+PpeXPDjHVx7McMWDCBc8qPCZB4m44YFIeOBh+ckCf9z+sCCYqi8WvA/5Nwu26cfA+JRBs4h7WmX/tr9AXcQHAPdgzEPZh5idTQBOZ3zyiModISKQGxZ7dd85E0SKfMGjM7vXeI/5AE5LvrwpcK9IOrQYB5BlCsFIvjzgrkaSjsBZbmC9XsGsAxfn8gKXpL9sSlnQFBwFTTuaKWXgI5Ar+sfHTrW6DUDO+2jEEtCNQ9wL6gNujMvvdFS3eugxGT51fBXxTvF1wLLngbT0BGphKalAy0MQ3Z4Ha2V7UoMFJKkFVAWcvH4B0OJfd9YsTl0AAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.easyplayer-container .easyplayer-icon-performance:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAMAAABg3Am1AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAzUExURUdwTP///////////////////////////////////////////////////////////////8/RimEAAAAQdFJOUwD2qdfrViyAwW2XORBGtSCsD6SyAAABN0lEQVRIx+2VzQ7DIAyDYfxToH7/p10CbQ+T2s33Rb1MijM3/qDG/EurolD9zSNRggBU0hFelMABmenfADhGkJDhGUFGgiX6I1AAQlDgZK/td8ELtQORiTmIq42I2bYdCD8NjzPmYQxO+rbn2S5qzEUF6YjkgcJude56X3s0SoL7LRAeylyaVPiFq0Jyx230mpeXmXVOHssRbhackhCq25Sny++xcBW1n6Snqw6BTgrqRP6kzfDcgmRLGonDWSf2OecwB491dOrEVZpNsxiyiHzWJ0Z+BbBwzaoWVb49HrqVfSkxHen7WNznLhzl8xpQlT3E9oHUtYaufB+7NY9g9ctbjFfj/h1DwXUrzDltMn1Ql9M814EQWPLmEBg4R7JSzpFQxTmSBMkLvJKOhFHfKEEnv3L/+qw3DuMPzAFH9pIAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.easyplayer-container .easyplayer-icon-performanceActive{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAtUExURUdwTBGW2xKV2hKW3BKW2xGW3BKW2xGW3BGW2xKW2xKV3RGW2xGW2xGW3BKW2+P2IvgAAAAOdFJOUwC/gCvzq1RAleURc9VmrA9rXAAAAT9JREFUOMvNkzFLw1AUhU+SxtTahnZyC+IsIeAenDuE/oJQcS/FTYTi6hKcHYpDZ/EXBME95BeURpM0Me39Db4Mgk/u23umcL8kvHfOucBBKEr5eW95xoMjeuBBlyY86NOQBwt654HrPPHAca/YuUHrDQsG9eybBWa1+GLBqvS3LJiNX0vGJw/R0N6LJ+/f6x9I3uwG0D+luRU0FnmdCtBy6ZM7KvQdjgXwJYuNZVNrFfqF8IX+nFm/oBvyS2iZ8OWxgH4u1IZmU4kgfoa5E77c0jwhoTYCbTRFGE7QrXFCveCURkK/2cRBCp2gFYiyWk7Jw4AgXOmQZMAqa9uAeCP+JsViihtb9OKIPtBUuvy8jeqyHRpMhvc5X0W6Lvg60HrPg0DREySOoqQJKRbByRWbExaqlSoVwB0rwCLFwesHquttxhcsa64AAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.easyplayer-container .easyplayer-icon-performanceActive:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAnUExURUdwTH3G63zE6n3G7H3F633G7H3F633G633F7H3F7HvG7H3G7H3F6xOzy+EAAAAMdFJOUwC/hKbvK0BT2XURZct0z00AAAE3SURBVDjLzZMhU8NAEIX3LiSUNqI1qBMMChFRgYxAd07E4CI6HQwzEUXgKjC4CH5ABAKJyA+oaHqBJO3+KPaYYSZh9nyfyuyXu7l77x3ASSgu+flYX/HgHOc8kC4wwikPMnzhQaTueKAiHvi43bFg0m4OLPBM9sWCjyb9ZsHm8NkwPiUQT8MjfSX/fn+F/C3syJf9YB7oLsDkjIaiHix5QCNbGBmAFPve+3lXi/0viLB3ZnmDz5g2ICry5daAvCbZhSE2oIsFeC35ssJljiQbgZitIY7nIGu4wLG+xBnpL5tClxQhCANR1Q5TSmCCQK7YjftOVbYNUOxot0EsHl0uwHdFfcD14PJLG9W9HfpMho81X0V8MnwdcHvkgS4cBcqVo6QKHQ9B1a6XY1zAcSiIFg6QlXDy+gEd714RcAqEowAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.easyplayer-container .easyplayer-icon-face{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAeUExURUdwTL+/v76+vsDAwL+/v7+/v7+/v8DAwL+/v7+/v96T4QgAAAAJdFJOUwBAgSCbs9hZap+hQJoAAADvSURBVDjLY2AYRkAJCAygbEZBQUEBKJtpJhDAOJpA9kSYxESgKphuIaBuhASqyYzESjC2hDRilQBZ64BFgm2qMLPYNCwSkQpAwlMBWYIRzJsKYrKCxZSRncKSDFYzBSNY2MD2MqRhSFgqgClPAwwJBxwSbAk4jGKZDCKZp2JIsEOcOx0ztjQDYL5ENwsYJKrTsMSvGSgepzVg2pE5qSikPRPT8sopBuDod0ATZ54JsbZyBrJgAVAp1Ax2oPXMykjxYQaLA2CMoERUZQDMrgBUCc8CKIdzAvHJhyQJpLQLSu0TCaV2lPwBSu0KQy+LAwBuJj5UbruNggAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.easyplayer-container .easyplayer-icon-face:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAnUExURUdwTP///////////////////////////////////////////////w2imYoAAAAMdFJOUwBAgBvfrFmcw4wrbtGliFoAAAD2SURBVDjLY2AYRkAJCAygbEZBQUEBKJvpDBDAODpA9kGYxEGgKphuIaBuhASqyYzESjBu79yIVWIP0NoCLBIsR4WZJY5gkYiZACRqFJAlGMG8EyAmK1hMGdkp7M4gkus4RrCwBIApFwwJmwlgqsYAQ6IAIrEAwygHHEaxngJbfhRDgg0sxHoMM7Z0AmC+RAPsJ4S5NE5gid8VoHg8sgHTDh/PzM60HkzLc44bgKMf3RKuMwoQ+dNIgswJDAycUDPYjhgwMCsjxYcJLA6AMYISUTkBMLsaUCVqEqAcngPEJx+SJJDSLii1HySU2lHyByi1Kwy9LA4AqflRBKNSA88AAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.easyplayer-container .easyplayer-icon-faceActive{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAhUExURUdwTBCT2xKV2hGY2hKW2xGW2xGW2xGW2xKX3BGX3BKW23povfoAAAAKdFJOUwBAgRybs9hZLG6hrV9tAAAA80lEQVQ4y2NgGEZACQgMoGxGQUFBASibaRUQwDhaQPZCmMRCoCqYbiGgboQEqsmMxEowTgmZiFViFtBaBywSbEuFmcWWYZGIUgASXgrIEoxg3lIQkxUspozsFJZkEMmxBCNY2MD2MqRhSFgpgCkvAwwJBxwSbAk4jGJZAbZ8KYYEO8S5yzFjSysA5kt0s5YKc6guwxK/baB4XDYB045Vi4pCyrMwLa9aYgCOfgc0cY5VEGurViIJMhcAlULNYF9mwMCsjBQfZrA4AMYISkRVBcDsCkCV8CqAcrgWEJ98SJJASrug1L6QUGpHyR+g1K4w9LI4ALk0RHtSETFcAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.easyplayer-container .easyplayer-icon-faceActive:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAhUExURUdwTHzD63zE6n7H7H3F7H3F633G63zF7H3G7H3F7H3F68TinBIAAAAKdFJOUwBAgR+Z31ipwW4yAjb9AAAA+UlEQVQ4y2NgGEZACQgMoGxGQUFBASibaRUQwDhaQPZCmMRCoCqYbiGgboQEqsmMxEowTmmZiFViFtBaBywSrMuFmSWWYpGoUgASXgrIEowgHtsKEJMDLKaM7BSWYLCaJRjBwloAploxJKwUwJSXAYYE2KUMVRgSrAFgKhTDKPbFIJJ5OYYEG1iIfRlmbGkVwHyJBlhWCDNrrMASvxageFw6AdOOqKCklrQuTMuzlhiAo98BTZx5FcTarJXIgglApVBr2ZYaMDArI8WHKSwOgDGCElFZBTC7GlAlvBKgHK4FxCcfkiSQ0i4otS8klNpR8gcotSsMvSwOAIs+RIlIrewIAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.easyplayer-container .easyplayer-icon-object{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAA51JREFUaEPtmT1oFEEUx9/bnRALGxE70btkZjcR7QMiRisRbCzEQvxCLGyEhCDRBC/RoNaWFgYLFUSwUBAUDKKFFqIQ3OzNJpfCyspS8HaejNyG87J7t7N3l03gttydefP/vbcz8+YNwhZ/cIvrhx5A3hFMjEAQBDwMwzOmAi3LWhBCLDTr5/t+ycSubdtLnPOncX1iAfQAlmXdNBmkru2RVgBSSspg+5kQ4lRjv1iAIAgqRFTIMIju0i2AWNvrAKSUowDwLqP4tACm9rWmbABCiFxXKimlhu0BtPFHtdc19wj4vn/Wtu3XnPOfWVByA5BSngCAuwCwryb8Hud8EhGNltANB/B9/5BlWXcA4GCMx/8g4jjn/H7aaGwYgOd5BxhjcwCgPd/0QcRVAJhM2l3rO3cdQEq5GxFvEdH5VsLX7aKIH8MwLLmu+zapb9cAFhcXt/f3988AwJip8Jj2L2zbLg0MDHxr/NY1gCAIpohIJ2V2BwC0iUd9fX2lQqFQ6cQvtJbICSGOxHhlVOdKjuPMl8vlqzrxI6IdWUAQ8Um1Wp0ZGhryiYghYrUtgDQionxJT0al1IwGkVJeBAANvieNDQB4joglzvmilHIXAIwrpX67rmuUamfKcxoTvnoQ3/dP27Z9g4j2J4C81KBCiC9LS0suY2yMiC7rttoZuQBEQhsiopfT6wAwUvv+hjE2XSwWP0kpRxBxgohO1kPmDhAHEgTBUaVU1XGc98vLy8eVUhoqbpPLPwIx6/wqEV2ovX8AALzZ/Ng0EWgQGa1iLQ8xPYCUyx8YHjt7EWjm2I7sAy0it7ERqNWEDkeiklIJg8pFWwC1ZC6SM9NYc1oXgcaiVlxVYmVlZW8YhlMAcCnFvOkEQPqqRBqASLTneTsZY3pjapZSpwF4Y1nW7ODg4Ie202kTgGiwSqWyrVqtXgOA6Zj0OhGAiF4R0azrup87dqDJAlA/eLlcnkDESQCI0us4gOdEdNtxnK+tfkHjA027AJEgKeUVANBROVd7p3fixwAwJ4T43kp4nR2zylynAOoE/JuAiPiDcx6kFb5pAEwF5zKJ2xXZrH9uc6BTUD0AAGh639Xo6bjUI+G/NglS+p3Y87wCY+y/2ozJSGkuRDLekQFjbEexWPxVryfpjuxhllKhNtwtAESc55xHx9M1hsR0WlcOlFLHTLyv26Ypi5hesyql5oeHh3VBeN2T6TxgCtXN9j2Abno3je0tH4G/KbtRT7VUKs8AAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.easyplayer-container .easyplayer-icon-object:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAwdJREFUaEPtmTuIFTEUhv8fLSxsFrET3UIQRHtBRNdKBBsLsRBfiIWNoIisD1xfqLWlhYuFCiJYKAgKLqKFFqIgoiBoYWVlKbjwy4HMJXs3M5Nk7tzZCzfdvZPk/F9OHicnxIgXjrh+jAG69mCpByStB3AgQ+AcybmqdpJmEvv9SvJhqE0QwBm4lGikqD4VAaCMvh+R3NffrgzgB4DJDCPWpC2AYN+LACTtAPAqU3wsQGr/pikPgGSnO5Ukgx0DNJhRzZp27gFJBwE8J/k7B6UzAEl7ANwEsNEJvwVgmmTSFjp0AEnbANwAsDUw4v8AnCZ5O9YbQwOQtBnAdQA28nXlp/NG8HT1G7cOIGkNgKsADtepDnx/C2CG5Muytq0BSFoJ4DKAUxnC+5s8cSCf+j+0CXDBjAJYNgAA6+Keg7AwpldyAXqBHMmpwKjYyThJclbSSQBWfyIT5IF5kuQ3SctJzjcCiBHhxUu2GM24gRx1IGtj+gDw2I34Z0mrbXcC8JdkUqidFecEAj4fZD+A8wA2lYA8NVCSHyRtcGvouKtrg9EJQKHVB7Ht9ByALe7jCwAXSb6TZP+dAbC3D7JzgBDITgDzJF9L2u2gQoectV0yAD7IEffjDgC7plaVJQdgYotdLOYSMwaI2gETr51jD1SN6qDOgSobw/WAywltLxRVhBIxi7LxInaxUCHHFvmCpFkorWInoR8LheqsA2DB3LGIRdPIAznBXC1AIVrSKncwVYXUMQB2Sl8h+SYQOCanVaIBPJAVAM5aqBAIr6sAnjnh78s82aoHQkYlWYwz7YXXIQCLRK+R/Fg3BYcO4HnlhPPKIfefTYX7dm8m+aVOuNdP+1OoSow79KzKL5LfY4UvGYBUwZ0s4qYiazzY7RRqCtfZIm4qfGBrAEDle1e/0FDoUTKvUxiT3gfsaWlBbibFUsyDiKSkBK9nf4LkH19P2RvZ3cxUIVoEmCVZXE97DFXPrJY52JUy+lY3Ji2S8cxq4i3jsahk3QdSodqsPwZoc3Rj+h55D/wH5CHfQHNA9EUAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.easyplayer-container .easyplayer-icon-objectActive{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAA9JJREFUaEPtmU+IE1ccx7+/N7O0BwUn24UeRKOd7LalvS+I6HoSwYsH8SCtLf1jEqWoyLJVMfEP6nlNIgi6eFChCB4UChaU0h7aQ1GQrnFSdw9e/JNs9LTFzPvJZI27m8xk5k02m13I3sK+33vfz/u9N+/7fo+wzP9ometHF6DTGfTMQF+mYNqwd6sKlFLcK++P3WsWF8nkUyr9stAeTcXN624xrgDVAUgcVxmk1lbaGPIFyFocou9fSonYzvo4d4BsYQLgaIhB0EYA174bAFaNWpuFhrthxDsxQQCMrKXUPwGbvfr2BSglYh39UjmwXYCwy2kh4jqegd5M/itdaL8+i5vPwwB1DMDIWNuJcBbA545wAs4V4+YIiJQ+oYsOYGTzGwniDIANLjP+hkCHiglzNGg2Fg3AGB3/Ugj9NBO2+4ujSSaMeJ2uc+PbDhC5aK1GhU6CeY+/8IZz9E+CnSomBn7zim0bQF/m4QqbPkgDOKgufH4EAzdZaKny3vUP6vtqG0BvtnCUwY4p01oFcOIZuCJ7elKvvo9OtLyESMN7IzeViA3VC3TshiY4Wkz2j0Uyj3+aMX5shAIhuia4kn6Z+DSPu6xjiCotAQQRMeuXaJJYpqsgOetbcBV8TZA+ANxgotRU3Hz48SWr7800DjHL6VJyQMlqh/I5jYZvFsTI5XcRa0cA/sLDv98iieMv98X++Sj7aEBCPwjwD9W2LNMdAqhJnQMyc5D9DGBwRhzukK4fK/647q9I1hoE6DDAO+ZBdh6gEaQ3V9hi27JS3tf/u3Hhv20kpQPldsgthQw0fOcnpc3fVK2EhosEmE33x9LJwKxM54Lj/Ap0SeoCBPz+qVw7uxnwmdQFOge8R1n0DDg1ISaxqSbJy0oE2pTvqhStbOK5FQy2ka6vOTVkoL6o5VaVWHX+yVoh7KMAvvPbNq1mQNmNBgGoiV55fry3R+jOweRpqQMBMO4wxImp5Cd/tGynVQBqg0UvT3z4eroyDMaxenvdHIBvE/GJYnzgb69MtjUDboMa2ceHCTQCoGqvPQBuSOZT5WT/fb8luOgANUFGxkoQYVja+Lq2iQm4ygKnS3tj//oJf9+PamUuzBJqJsY59Jz/9wh6+iJpFoIKXzIAqoI7solbFdksvmN7YKGgugAMNH3vqp9pN+vhtq5VMqT2PpAbjwrW59VmVAYL8iASCfdGBvm/bpQPrCvP1eP+RpYrXA5XKgTaBkA0Voqb1eupL4DToFo5YLlVZfadtkHKIqrPrFLIsXL8s0k3LaHuA6pQ7WzfBWjn7Abpe9ln4C11Qo9Pmb2aMgAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.easyplayer-container .easyplayer-icon-objectActive:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAA8hJREFUaEPtmU1oU1kUx//nvthx4cJqX3RgGLsQBNG1tq8Z7axkwM0sxIX4hbhwIygibfPMeyapunY5iymzGAURZjEDAwoVm8SPhSiIKAjtQtAmiooLiyb3yEtNm76+5L37kjQp5C2Te879/+65H+eeS1jlH61y/egCtDuCNSOQyH3cWirNHVIXKO6kYvqdenbxqVlLxS8J8Txp6Ne9bDwBnA5IiIRKJ5W2LDHsB2BmC6zqmxk3UkP6AbedJ4CZfTsNcL9qJ077VgHU8r0MID5V2EsCk2HEBwbIFdT8M/aGBkgaelt3KtOB7QKEnU9NsGt7BMyp2cOa4P8tY3M+DE/bAC7cK+xnxmUwtjvCCXzFHtRHiEhpC11xADOTjwG4BCLDY8S/MvhsyoheDRqNFQMwc292QmppEPb7i6MZgEdqna7V9i0HSNx/95MscRLgo/7CXS0IWS6VrFRs8+1ati0DSEzm18kesgGcURa+3OAfSGklY5ueuP9qGYCZzceZySKC1gQAgPkvXtNjpXatn258CmlYSOSSg/qwW+B8usH9SSM6Ec/lTxM7iR/3hgEh4Jpk2Kkh/UVikiP2MBUbAggiYjFfchajtB0QM/fuOFg64D8H8QHQTQ3CsowNT8cffdLnPn8+KyXPpWKb1FLtYJ0tbbU84asCyRYOEmiMwTtq+P63JJAYH9AfxTOFbUTlNXRyPlmTdpsAKlIXQZyDDJJGGbx7/l++BSHM5EDfg7HMm91CRM6B+fdqyA4AWA5iZd/++hWymDaid+OZ/G8EGgXB65DrhAi4Jw3NsORj5VRC4A8AW+tN2Q6KwKJM54b2HcD3EtMFCLojqVw7uxHwGdVQ992OjkC5JqSJPRXw2qlEsMpFo1OonMx9/7gE211z8iirLC1qeVUlxrLvtwgU4wBO+K2bpgCoVSX8ASqiRx682hgp/jBaL6UOBsC3pMTFdCyaaUI6HRyg0llicnptqWfdeTBMd3pdH4D/kyQupgf7HtaKZIj7gDpAdefxzOw5IjECoJxeewEQ6CZBpmwj+thvCq44QEWQmZ09BYjzLHFk4SQm/C2KIm3/svGZn/AFP+qVucYi4BbmbLnOb5rGr+zB6MugwjsGQFVwWxZxoyLr2bdtDTQLqgsAQt33LvdIe6UenvNaJUQqJ3Hi3ut+KSNLajMqfQV5EAnzRuZoEF8ivfZw74dqPbXeyP4MVSoE0DoAmkgafeXrqS+A08CpHBDTPpXRd9oGKYuoPrNqETlhD/w446Ul1H1AFaqV7bsArRzdIL5XfQS+AaeCtE+rbksUAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.easyplayer-container .easyplayer-icon-occlusion{background:url("data:image/png;base64,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") no-repeat 50%;background-size:100% 100%}.easyplayer-container .easyplayer-icon-occlusion:hover{background:url("data:image/png;base64,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") no-repeat 50%;background-size:100% 100%}.easyplayer-container .easyplayer-icon-occlusionActive{background:url("data:image/png;base64,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") no-repeat 50%;background-size:100% 100%}.easyplayer-container .easyplayer-icon-occlusionActive:hover{background:url("data:image/png;base64,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") no-repeat 50%;background-size:100% 100%}.easyplayer-container .easyplayer-icon-logSave{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAA1RJREFUaEPtmT1oFEEUx9/bFLFKJzG2WiknZObFxlO8RtFC8SuFWlrYGBtRRNCghV9YmFQWgoVaaAS1ULRRRKvbmYBBQezVYBOIGFMkT0ZuYXPufOxdspuDO7jibmfe/H/z3sy8eYvQ4R/scP3QBSjbg8EemJyc3La4uHgUETcx82YAWNum+N8A8IWZrxLR41ZtBQForUeY+Xarg/j6MfMVIrroa5f13AuglOJWDLfQ56aU8mzefk4ApdR9ADiW12ir7RFxXAgxkqe/FUBrvYeZXzQbY+bh3t7ed5VKZTrPQM2eNHYQ8VGGjTtSypOhtq0AcRyPIeKptCEppTfkbAM3AxhbcRwfyYJg5nEiCvKEVZBS6hUA7EoEIeJ+IcTz0JlpbpcFYNrYIBDxlhDijG88lwd+IGJ/YoCZ1xPRd5/BUA/Mzc31VavVWRcEM18jovOuMV0eWLL7tBM+RoBS6isAbEzERFFUHRwc/JD8dnjishDikg2iSIAJADiU8uhdIjqRFuZYEweI6Gmuc8AWs6EhVK/XR3t6eg4zMyKiEQ/MvOSwQsS3iHhhZmbmY61W++UIp/dSyu2FAmit3zDzTjMoItaFEFuVUt8AYCB0ElLtZqWUfYUCZHlQKXUQAJ60AAC2Nbhia8AWglprAoB7jYQwmGXVACSKzRqJomgLAJjvBh/JqgPwCQ7dRAoPIZ/w5HkXIHQGQlOHvCd56PjdEOpoD6TShT/MfD19OXeFQCPnOYeIaxYWFiaGhoZGQ9Pv5nZthVA6XWjkOsMJRGj+b/IhIURtVQCkIUJvYKUCONLf/+67tjuw+T+rLlTYLmSDCDmwbOIbF6CgC1Vba8B3m3JBuMQXDuC4iGQy+MSXAhAKESK+NAAfRKj4UgFsEHnElw5gBGit9wFAUqy9kbco1vY2Gsfxsha2QrbV1K42gIimAPDvw8zTRLQuy0ZhpcU8AMZ7zPws1ee1lHJ3LoDlLu7mAcioZFuLvYWV130AU1NT/fPz8zuyqtWIuFcI8TKXBxo7QaEvOCyQD6SUx20T4K33F/iKKVOj7yrqBWhsiSv6ki8zNBBPCyHGfKEXBGCMrMBr1mZtPxHxEzN/jqLoYbr07oIIBvDNRFnPuwBlzXwybsd74C95KWhPrxIhsgAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.easyplayer-container .easyplayer-icon-logSave:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAthJREFUaEPtmTuMTUEYx3//TrWdeLRUJCrReISGUBCvLVAqNGiEiASh8IoClUKyBQqPBAWhsREqnYRE9NgoV0T3yci5m9mzc2bmnHvvOXuTO8ktbs7MN//ffPP45hsx4kUjrp8xQNcezPaAmW0EDgFrgLXA0j7F/wG+AlckPW5qKwvAzE4At5p2ktHusqTzGfUWVEkCmJk1MdygzQ1Jp+u2iwKY2X3gcF2jfdS/I8l5O7tUApjZTuBlwNIk8E7STHYvQMCTzs6jgI27ko7l2o4B3AaO+4YkJadcVcdlAGfLzA5WQGR7IgbwGtjuCdoj6UXuyJTrhQBcnQjETUmnUv3FAH4CyzwDKyX9SBnM9QAwIWk2AXFV0tlYnzGAebtPP9OnEPkNWO2J2STpQ+9/xBOXJF2ogmgT4Amw3xNyT9JRX1gEYq+kZyGIoQGY2UXgAPyPt5x4V8qH1TRwDvgk6XdkOr2XtLltgLfA1qLTj5I2mNl3YEWDdTQraaJtgAVryMz2AU8bAFC1Boc5hYKbgJmtB6aKgDCbZdEAeLuOWyPrit+qFMmiA0gJrjr4yu1an0Ip4Z6Hss6hMUBu6FD3JB9PodwRGGkPeOHCX+CafzmPDUAR85wBlrgwQ5LbUueV3AHsaxGbmR8uOAGTPYga8f+0pG2LBWAOosYNrFOAqith6L5bdQee81optG7nHIjE8DlnVlB8EVa3AxCJ4VMAleJbB2gAERXfCUANiKT4zgAyILLEdwoQgcgW3zlAIWA30EvWXq+bFBvESTzQxFZqSyqdAe7i7xIAvTIjaXnIRmupxZoAznvPvTZvJO2oCzDQ5G5NgPKbRGWyt7X0egrAzFwedktFtnqXpFe1PFAsxLYfOEIaH0g6UjUAyXx/i09MQY2pq2gSoPDEsB/5QuJPSnLrMFqyAAqIQT+zloX9Aj4DX4CHfuo9RpANkBqJrr6PAboa+V6/I++Bf0in3kCazcMZAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.easyplayer-container .easyplayer-icon-zoom{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAkUExURUdwTMDAwL+/v7+/v7+/v76+vr+/v7+/v7+/v7+/v7+/v7+/vxtcv/AAAAALdFJOUwBVdZCpGdZE7C3B0wnY6AAAAV9JREFUOMt1lDtPwzAQx20ghGwVsHVJhQRDlsywWKqEULsw8FhRJ2iWiglGGJvFCw8xIVVCSEwkKU25L4ftpOHs2Cclsu7v370smxCLecRh+xOH8Ja5kGEs/6dtYf1XONcWZurbwwRCQjYZ9l7uHAPAOBHpI1QC/QSY9g84ldmnAn7Z3htwsfZnvSe54eJd5hlcC7gccxTwSETZEr5+714vLRdfkFraVNtetXLpR7ha+mkHCV1Y/q8ZOW8AgDkecsIaAEIcGbIGyLUq4KcBYl0o7QAB4FZACBMrQKpaJOCZQqyAIhgayYEpgD1DZghXCvBTNJFKmCvgzmhcCEsBwMjSRx6BslYftRX0JLYKrAsLqzDC54EFMwvy58QhMM8hFNq0UpwET+sLC9/4BmEBTytyRCIbDoAEiR1Qp1dbRxfoyv9g3ogaKVuXhVZZbtqX6Ez6H23PxG4CM259QDwt/h8ABfK8nDqSAAAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.easyplayer-container .easyplayer-icon-zoom:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAMAAABg3Am1AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAzUExURUdwTP///////////////////////////////////////////////////////////////8/RimEAAAAQdFJOUwCCyreU7KZVRCDaZnETLwj6WaYVAAABUUlEQVRIx5WV2Q6EIAxFoVBWxf7/184AOnGUsvTBqDmXrqRCzNou1kwGtyZIQNuiD0P6evWTURFUMtIoPO+iVoGIZPkMqkdKA0jZgoJ6suQc2EoiGBldOoQ9HSDk5+GTs1Fqo9IlcEpvNv3qv0MBhSalIFSv3+MCJCY8fUaCxasycrMu9dp5VTUhubXZ6CqsAvn66ZAsx+e8fON37oT3bZ4aiRU0kDlavGSrQI95HPBZACt8FuCL16IruBVkzBeBW+CLYHvyfiDQd96IpHpOMqP++fAq9VMQ7rwrM5+6gjwG/3y/D/m8ylPYpvpAeqO7DfvwMPO9D6jnBabG56YFZx77fEjD+9AyLdYEhp8nxoNh5wmJtfY8AS+wzIZZrJNcC4h3wV8IH1p87Iyfnc6XVaAd7ICHAsebw97zgDSxZ/yvViiPuYUfTe650knM2+7Ywz9yOCklzohLOwAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.easyplayer-container .easyplayer-icon-zoomStop{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAMAAABg3Am1AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAzUExURUdwTP///////////////////////////////////////////////////////////////8/RimEAAAAQdFJOUwDjmTC6Y0KBVakX8s8iC3JYR1wyAAABVUlEQVRIx62V2baFIAiGcwJRS97/aU/Zbtht0VzrcJOuvl/AAabpXy1RF0F/m2h2PX5mzucEuO9gMon1MY7KlG8w4LImC1XFQmxDGVkm1DYpXi0qS1gXTEGzKoqNS1ajAxPqJDikFLcFS+aukYJffRfXnAj9kYUXFVi86wzzPjuCFRXBwS3KaC/Pt02Ww7uf1jz3BVYtX/OsyDQFDn7yswPXb+Ovs39eJJWwxrOXV4thgC+//QBf/uMAXwAa4AuRBvgdWR58CB2B+eaRG5e8QO7Jn2sIAvzhbdsDnXzev8q0BengGXv8EciH3y1CY5++yI/BRNx82g/La7lc7b0Am/tUC6n3HoZ4SbDyy5BgzSNivV6wbPXeIPOpHlOU+CjkTQKvQOpXdRdJvn+5xttWQa4EZUOzluonT6+q72X6Zb0+T/lNhQd7hg9vm8LWUhW5gT4iN7c/0ZUo8Q3AttYAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.easyplayer-container .easyplayer-icon-zoomStop:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAqUExURUdwTBKV2hGW2xKW2xKW2xKW2xGV3BGW2xGW3BGX2xKW3BKW2xCX2xKW2yDN61kAAAANdFJOUwCAVKxm3T/DmhrxKw97YQBGAAABaklEQVQ4y2NgIA6wGqCLMCqAqV4HdIm9F0Ek22UMM9hiG4AkVzQDA+cmx+YyJJnDlw8wMNQaNpfevbu0QgxJgrN3JQPD3VvhjU57kESnOZqvvXuJgcEXxVFMEkDt1w11gZYwoVgue3d5SzaQSgCydZG1TMkBU8vBuq9guBcqNBNDgj0GQrMEb0CVYEmA2ViANRQZ795tQPZduADciXcVUNSthGu4hGrAJawagBIXsWoAClzGqgEocRWrBqDIrQNQDTPRXZ8A0cB41wBNQgGiQfbubTQJAagGDB0GIA0OsnevbkCTCADiu4J374ahW34JqAEIbiXMRJOAgkvMKJYgJBx6717AKiF4F4eOu+jxgQCXGHBIKPDgkBC8JYCURJDtQHYWN4oEcvpZiyR+C9lZtkgSKKG1CyGOGrxItleixjrcLFBWRAYcMIkG9NQMiY67N7AlcxAQwMwA6SBxM2xZQ3jtVRPsRQ83sg8ACMIUxzzE8wsAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.easyplayer-container .easyplayer-icon-close{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAeUExURUdwTM3Nzc7Ozs7Ozs3Nzc3NzcrKys3Nzc3Nzc3NzePZJxkAAAAJdFJOUwCtKdPBGAmNTt3jdDcAAADfSURBVDjL1dOxDoIwEADQgwR07GTCZtI/IGHgAzBhM9EPkMTB0Y3V0ZXIcn/rtRR6pefgSKeSu3ellyvA9lZ/5F9p/3K7PZY8oPG5BD6MpPUSgIITzdIStifAshjRQV1PCFT8TxaicTzzwEwINOEdHVmDmcTAkRhMhMAp7iQRjcMtDhCp8SA1v0ARGIIK/gnkv0p1OBTS4QRUIpE7DiYYXTBrzcld3JIrAarXrps4AVNwRSZgExoJmIyAaAdsShUMn/JF2fh4YEkpAcgvnuwYCIb6EbbbP4PsDfLD2dD6Av1qTvAQlzUTAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.easyplayer-container .easyplayer-icon-close:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAeUExURUdwTP///////////////////////////////////8kBMKEAAAAJdFJOUwCt0igUwJdJePGbgLgAAADcSURBVDjL1ZMxEoIwFESTCaOWFDapqeicnAALTiANnaWlnVewDTMW/7b+aCAb8jkAVIHN2/lsNkrt73lf8M08nnF1pAYFR/dFmAAx7SIoi4iDbRrWDMAuQFzmmxAGbjjJgjj6dCjMCAND/o8RWQMzUgIRKYE/wsC5TJIRR74rBUZaqqXwLZEXT0WTDGwLW1aavJWQir9qadw++NgykWoMNtcykh8Q5EECgr5C+jjpGjHjPGhPU5eVzyfPJitfnUyhPg6ywMKZ7BygcYcsPCj1Kc8uXYPqpeSLs6PnC4w8S+8OJ9MLAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.easyplayer-container .easyplayer-icon-narrow{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAABm1JREFUaEPVWWuIVVUUXmvfYRosHzUZUUqKjkSXSe5Z+5qJhfawLELCR5ohPhKjjB4EWgkpkopRSWEPS1Mqy7Gkd0iPGaKy6ey9Z3z0opwEQytSMiS5NZ4Ve7j3dubMOfecO96buf/cx17rW+vba52919oH4RQfeIr7DxUjoLW+BhHHAsAAZh5gPwGghpl/TKVSHZ7n7T9+/Ph+ANg/atQo+1mRcUIEtNYzAWAiM09ExLPK8KgNADYw8wYp5Z9l6PUQ7RWBvON3AMClJ2Kcmb9DxAKR33qDVRYBrfUNzLwQESf0xliUDjPvR8T1RLSsXNzEBIwxc5l5fYSBnxGxxfO8bQCwN5VKHc7lcofr6+tzR44cGcTMg4UQgxDRfp8IAJdH4KwlooXlkEhEQGv9EAAsDQF+GwDWEdE75Rg1xlwFADcx83QAOCOg29SvX79ZDQ0NuSSYsQS01h8BwBUBsF45HnTIGHMBM9uFmR2Ya0bEWxzHORBHoiQBY8xmZp4RAFlNRIvigMuZN8asYOb7Azq7hBCTMpnMvlJYkQSMMUuYeblf2fO8ZdlsNiyVyvE3VNZ13XFCiGb/JCK+6DjOrLIJ2N0GAN4KKG4hIpuzVRtKqf6I+HvAwAIiWhdlNDQCSqntga3yUyK6rGqe+4Db2tqu8zzv3cJfiPiLfQYdx/k6zH4PAvlD6iWf8B7P8yZls9mO/4KAtaG1fhgAHvCReN1xnClJCXweOGFLhrAapJqamlLDhg372H9eMPNMKeXmoL1uEVBKTUXEJp+QJiJZDSfjMIOZgIibHMcJbrfdq1Gt9WMAcI8P/D9f/YJtpVQfW7n6isSDRHReyQhorXcCwMV5oWN1dXWD0un04bjVqta81to+i7bi7RpCiAmZTOYDv71iCu3cuXNQZ2env07fRkSTq+VcEtyQ7XwNEfkz5N8Ucl13khDiDR/b+ZlM5vkkhqopo5Q65Euj74loRGgElFJ3IuIThUnP8xqz2eyeajqXBFtrvR0AiuU7EXXbeIo/tNaPAMB9BVBmrpVS/l3KiDFmBjNPKbMbK0A+6zjOq3EktNavAUAxlUsR2AIA0ywgM3dIKYfFgRtjmph5apxc2Dwz/ySlHBynq7V+wV+tliLwPgBcmwdsJaLRceDGmD3MnI6Ti5j/g4j6x+lqrZ8EgGKTE0nAGPM0M9+Wj8BhKWV9HLjrukuFEPMBoMf+HKdrm3oimhcnFyy1IwkopRYj4soCYF1dXf3JPAMKfiilNiFisaSOJOC67nQhxCu+h3i0lLI1boWqPW+M6WDmoXk7+4io8L3rr+IuZIwZycztPocWEdHqajtYCl8pdSEifuOT2UhEc/w63fZUrfWvADCwixlii+M4408mAa31AgB4xufDHCLaGElAKbUZEf09cAMR/XCySGit7TXO3IJ9IcTQYI8cLKfvQsQ1BYVq9sBxi9La2jqipqbmMwA4Oy8bWtoHCTiIaBua0/JKB5hZSikPxhms9LxSah0i2i26MHoUct0eYt+2tRIRF5/MKGit7YFqD9auYU9tRBwfls49emJjzEBm3gEAxVKCmadJKbdWepWj8LTWHwLAlb75hUS0Nkw+6lbidkTspoCI6aibgUoSU0otR8QlBUxE3Oo4TleNlpiAFQwWUfa/XC7XZ8yYMccq6bAfS2v9OADcHUidqUT0RdkE8iS+BIBsQHkkEe2qNAml1HOIeGsA914isqQiR5LL3aMAcHoAYTIR2av0Ex7t7e3ne563mplvDoIh4le2xC+VurEE8pGwh1m3/sBec3ie96iUcndvWLS3t4/o7OycK4SYw8znRKZIDIlEBPIk7IrfGDB01JIAgJZsNtuShIjruplUKmWdtidsMLK2lFmFiPP8fUapSCQmYJ2L6cDsNfh7iLiXme1VjG3GOwFguOd5DYg4HAAa7O/Q3QTRXiavchxnhzHmIgCw3V6xWYoiURYBa9h13atTqdTssJxNEoEImQeJaIV/LimJsgkUjCilLrGXToho33mFrmoMod2I+LLneW9KKb8Nk01CotcE/AaVUmOFENcz8zgAGAIA54Y4dAgADiCifejtjcQnSSIWRgIAniIi+5q3cm/q/c40NzfX9e3bd4gQ4kxEPFhbW3sgnU7/lcThJJHwV8kViUBvHStHz0aCme2qe7W1tasbGxu7rkFPGQKR50Q5q/B/lP0HjgOoT/ydvaYAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.easyplayer-container .easyplayer-icon-narrow:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAABS1JREFUaEPVmgmoVVUUhr+fosKC5ogGSsqIpKQwMqjIBpsICdMGQ7ISo4wGApugJCoxLClssElpNEuaI5okKjOI5onKhEQrSiKiaKA/Vu3zOu+8c88593qvj7fgcO99e6/h33udtdda+4khThri9tM1ALaPAQ4Btso9GwNfAyuBb7JHUnzvCq0XANuTgePSs00bFr0L3BuPpF/b4BswtSMAyfDzgYPXRznweQ7ID53IaguA7ROBGcC4TpRV8IRL3SNpVrtyGwOwfVYoaaHgW2AZsBT4CliXnt+BXYBd02d8D5c7rIWc+ZJigRpTIwC2rwauKZH6NLBA0jONNQK2jwJOAU4FtijwPgpMkRTga6kWgO2XgSMKkjoyvGiN7d3SwpxZGHsVOEPSmjoElQBsPwScVhAyR9LMOsHtjNu+Hri8wPMBMF7SqipZLQHYvgq4tsA8S1KZK7Vjb+lc24cDsfJ5ul/SlLYBpGjzVIFxsaTw2Z6R7S2BnwoKpkta0Epp6Q7YfqEQKl+XdGjPLM8Jtn088GzuT9/FOyjpkzL9AwCkQ+qB3OSPki9GOrBByPZ1wBU5ZY9LOrkpgDcLJ2zlFvYCke2NgFcK58VkSRFU+lG/HbA9EYg4nNE7kkb3wsg6mSWesEhSMdz2z0Zt3wRcnBO+wVc/0217WMpesyRxraSd6nbgfWC/NOm3OP4lRVowKGQ73sXIeDMaJ+nFvDF9LmQ78pR8nr5U0oRBsTwpLQnn8yTlPeR/F7I9HngiZ/A0SXcPJoDQbftHIHOjLyTt1WoHLgBuyQ3uKylC6KBS8UyS1C/w5F3oRuDSnLWbSPqzynrbkSdFfG6nGstE3inpkbrVsf0Y0OfKVQAWA5OSwJWS9mggPEJuhN5OaLWkqBMqyfZ9QF/4rALwPHBskrZC0pgGwsPFRtbNazH+s6TIfeoA3JqqwH/nVQG4HTg3SVsnadsGwiMznQYMiM91vKmgP7tuXjHVrgJwGXBDTuC2g3kGZHbYXhQVWva7CkCkyg/nAIyRtKJuhXo9bjuSyOFJzypJ2ff/XCqHdBTwXs6gmZLm9NrAKvm29wY+zc1ZKGlqnqeYzH0PbJ8mLJM0dpABTAfuyNkwVdLCKgDFGniEpC8HC4TtaONEOyej4cUaubgDFwLzcgw9q4HrFsV2pAxvANuluaWpfRHAAUAUNJsmpmhrjJa0tk5ht8dtRx0cITqjAYlcv5c49zJHKI2QmtEG3wXbcaDGwZrRamBsmTuX1cTxEi8H8qnEJElLur3KreTZfgk4Mjc+Q9L8svmtuhLnAUWGka06A90EZjt6UdGTymiJpCxHG6CqqrHVL4lKnMMkRaXWE7J9M3BRwXUmSnqrlcK61uLbwIEF5lGSou3XVbJ9F3BOQeglkgJUS2rS3P0F2LwgYYKkaKWvN9neGYgT//QSYR9Hil/lurUAQqjtOMyK9UEkWXMlfdgJihTn45CK1GCHChmVIBoBSCBixU8qKIrdmRuXG5LigqOWbO+fjA7jizsbqcxsINLsfJ3REkRjAAlEVQUWbfDncjc0UYz/BewJjCh8lgGNZvJsSctt75MabLUg2gKQQBydSrwyn63dgRYTrpQUdwR91BRE2wAyDbYPSk2nuPOKVW6X4t15EHhS0mdlzE1AdAygsFpxwX0CEJcUuwM7lhgULhW5VRgeHYnXmiBuAeI2SXHN272b+gKgzRKQrYFIBNdI+qOJwQ13oi8/68oOdGpYO3xpJ2LV/45zI/t3hSEDoBXYIQ/gH99H3EBePlczAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.easyplayer-container .easyplayer-icon-expand{background:url("data:image/png;base64,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") no-repeat 50%;background-size:100% 100%}.easyplayer-container .easyplayer-icon-expand:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAABYZJREFUaEPVmXmoVVUUxn8f0WRzVkJlIWVGUmIJWWADTVaUldFclCnSQBQYNv1RSCWGVFRSlkRh0GBS2YBmJWGJUBHNNJiYWQSZfwTRxBfrce5jv/3Ovefc++4z3oKLD/fea61v7bXXdMQQJw1x/ekKANs7AOcA44Ddkt/2wJbk9z2wTNIP3TLcgADYvhw4q/gFiLq0ClgBLJf0Ud1DZfs6AmD7UuA64JiBCAf+BR4GHpH0TSe82gJgO6x9PXBqJ8JanPktQABzJP3VDu/aAGzfADzYhPnPQLjFUuA7YHPx+xPYHxhZ/Bt/nw4c14TP+8CFkjbWBVELgO2ngfD3nJYBCyW9Wldg7LN9cigKXATsnJ39HTi+7tuoBGDb3VI852P7QOBO4MoSGaMlfVtlmJYAbL8HHJsxmSdpdhXjdtZt3wPcWnJmhKRfWvFqCsD2PODm7PBdksJiXSfbJwDvZIzfAM6VFG+plEoBFNHmlezEc5LCZweNbEcSjMSX0iJJ09sFsDwLlaslTRo0zRPGts8AXstkTZYUOvWjfjdQJKnFyc7PgCmS1m0NACHD9t3AbYm8yNiT6wKIWJxm2JmSFm4t5QsA2wBvZ/liuqRFuR59bsD2JcAzyaYPJU1oV3nbF8fjAw4DlnTy8Es8YYWk06oAPJnF5I6sb/tF4LxC2CZJ+3VghGFAVK17JmdHSVqf8uq9AdtR+kZNsmOx4Y9I/5KiLGiLbEc4jLDYQ5IqE2aZANvxFqNwbNBNkh5oBiAsFpZr0FJJU9vSvNjcRQBRPKbhfJWkE5sBuBe4JVmcIemJ/xNAyLb9a+JGGyRF+dFLqQstAK5J1g6XFCG0berWDRQA8py0raR/et2z8YftiD4RhRq0naS/W2lv+2wgIkNEm5x630BRaufrj0l6tso6tpcAqSuPkfR1GYAoic8sFtZJOqgG8w+Ao6r2NVnfKCn6hJZkO4+MkyStLgPwJhB1etBaSRNrMA8XG1u1r8n6Fkl7VJ21/VDRBTa29nHt9A28AJxf7NosaXgN5lGZzgD2rdpbsh6N0MyqcyWl9si0Y0sBPA6kVd/wTnJAKNTlR/wUcEUCdBdJ0bX1UArgPmBWsnGipLVVFipb7zKAKCJHFXL6uV0K4NpiMtDQabakaGrapm4BsH0o8GWiwEuSosbqpRRARIQNyVq/rFcXSRcBxBt5NJHbvJQo812gVmOdA+sigCifpyX8x0v6uPQGCgDRWEeD3aCOemDb0XrGm9q1KKevrnt7jX22DwFiqLBX8X8rJZ2S88n7gSOBaGiiMg3aBEyQ9FO7Cgx0v+1ooiJEN2iapEhqfaispcyLuo5uYSAAbEf7GBOJBkXpcETZdKIMwN7AGiAtJS6QFIluq5DtlcBJdVy52VglD6nBa6ykLwYbge05wB2JnLckNUqcfuJbDbbS0qJxcJik6NQGhWzfD9yYMI9ucKqkGByXUtVo8ceSOmecpE+6jcB2XsqEiFmS5reSVQVgNNBbeyeMwioxSh8w2Y6GPzJ+2os0+H4OxPtr6rqVzbbtMcBXJZpGkTVf0qedoCjifCSpq4B9WvBoCaISQDC2PQKIN5GPF6MqjCuOsqOpn6bK2R5fKB3K75QpHpPouUAkvrTPaAqiFoACRMxpwuqNniE3WsxrXk++0EQzHr3rwVGSZP+WGTymD3MlrbEdLerzdUDUBtCQaDvSeXyQKPPZTrwpztwuKS1h4tZrgWgbQALkaOCy4hNrn1FHTRTxdmKQ8LKksjdWC0THADK/jtQ/BQhQBwBl7Wi4VNRWoXhMJN6tA7TJTSyQFJ95u/OlPlfEdjzOALI7EIVgzEfb+nyaGSh3p4h+Pd1jV26gjiUHuqe4ibD6eklRqvfQkAHQzABDHsB/7aMVT352GH8AAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.easyplayer-container .easyplayer-menu-icon-text,.easyplayer-container .easyplayer-quality-icon-text,.easyplayer-container .easyplayer-scale-icon-text,.easyplayer-container .easyplayer-speed-icon-text{font-size:14px;min-width:30px;height:20px;line-height:20px;cursor:pointer;text-align:center}.easyplayer-container .easyplayer-speed{box-sizing:border-box;text-align:center;font-size:14px;color:#fff;width:90px}.easyplayer-container .easyplayer-menu-list,.easyplayer-container .easyplayer-quality-menu-list,.easyplayer-container .easyplayer-scale-menu-list,.easyplayer-container .easyplayer-speed-menu-list{position:absolute;left:50%;bottom:100%;visibility:hidden;opacity:0;transform:translateX(-50%);transition:visibility .3s,opacity .3s;border-radius:4px;overflow:hidden;width:-moz-max-content;width:max-content}.easyplayer-container .easyplayer-menu-list.easyplayer-menu-shown,.easyplayer-container .easyplayer-menu-list.easyplayer-quality-menu-shown,.easyplayer-container .easyplayer-menu-list.easyplayer-scale-menu-shown,.easyplayer-container .easyplayer-menu-list.easyplayer-speed-menu-shown,.easyplayer-container .easyplayer-quality-menu-list.easyplayer-menu-shown,.easyplayer-container .easyplayer-quality-menu-list.easyplayer-quality-menu-shown,.easyplayer-container .easyplayer-quality-menu-list.easyplayer-scale-menu-shown,.easyplayer-container .easyplayer-quality-menu-list.easyplayer-speed-menu-shown,.easyplayer-container .easyplayer-scale-menu-list.easyplayer-menu-shown,.easyplayer-container .easyplayer-scale-menu-list.easyplayer-quality-menu-shown,.easyplayer-container .easyplayer-scale-menu-list.easyplayer-scale-menu-shown,.easyplayer-container .easyplayer-scale-menu-list.easyplayer-speed-menu-shown,.easyplayer-container .easyplayer-speed-menu-list.easyplayer-menu-shown,.easyplayer-container .easyplayer-speed-menu-list.easyplayer-quality-menu-shown,.easyplayer-container .easyplayer-speed-menu-list.easyplayer-scale-menu-shown,.easyplayer-container .easyplayer-speed-menu-list.easyplayer-speed-menu-shown{visibility:visible;opacity:1}.easyplayer-container .icon-title-tips{pointer-events:none;position:absolute;left:50%;bottom:100%;visibility:hidden;opacity:0;transform:translateX(-50%);transition:visibility .3s ease 0s,opacity .3s ease 0s;background-color:rgba(0,0,0,.5);border-radius:4px}.easyplayer-container .icon-title{display:inline-block;padding:5px 10px;font-size:12px;white-space:nowrap;color:#fff}.easyplayer-container .easyplayer-quality-menu{padding:8px 0}.easyplayer-container .easyplayer-menu-item,.easyplayer-container .easyplayer-quality-menu-item,.easyplayer-container .easyplayer-scale-menu-item,.easyplayer-container .easyplayer-speed-menu-item{display:block;height:25px;line-height:25px;margin:0;padding:0 10px;cursor:pointer;font-size:14px;text-align:center;width:50px;color:hsla(0,0%,100%,.5);transition:color .3s,background-color .3s}.easyplayer-container .easyplayer-menu-item:hover,.easyplayer-container .easyplayer-quality-menu-item:hover,.easyplayer-container .easyplayer-scale-menu-item:hover,.easyplayer-container .easyplayer-speed-menu-item:hover{background-color:hsla(0,0%,100%,.2)}.easyplayer-container .easyplayer-menu-item:focus,.easyplayer-container .easyplayer-quality-menu-item:focus,.easyplayer-container .easyplayer-scale-menu-item:focus,.easyplayer-container .easyplayer-speed-menu-item:focus{outline:none}.easyplayer-container .easyplayer-menu-item.easyplayer-menu-item-active,.easyplayer-container .easyplayer-menu-item.easyplayer-quality-menu-item-active,.easyplayer-container .easyplayer-menu-item.easyplayer-scale-menu-item-active,.easyplayer-container .easyplayer-menu-item.easyplayer-speed-menu-item-active,.easyplayer-container .easyplayer-quality-menu-item.easyplayer-menu-item-active,.easyplayer-container .easyplayer-quality-menu-item.easyplayer-quality-menu-item-active,.easyplayer-container .easyplayer-quality-menu-item.easyplayer-scale-menu-item-active,.easyplayer-container .easyplayer-quality-menu-item.easyplayer-speed-menu-item-active,.easyplayer-container .easyplayer-scale-menu-item.easyplayer-menu-item-active,.easyplayer-container .easyplayer-scale-menu-item.easyplayer-quality-menu-item-active,.easyplayer-container .easyplayer-scale-menu-item.easyplayer-scale-menu-item-active,.easyplayer-container .easyplayer-scale-menu-item.easyplayer-speed-menu-item-active,.easyplayer-container .easyplayer-speed-menu-item.easyplayer-menu-item-active,.easyplayer-container .easyplayer-speed-menu-item.easyplayer-quality-menu-item-active,.easyplayer-container .easyplayer-speed-menu-item.easyplayer-scale-menu-item-active,.easyplayer-container .easyplayer-speed-menu-item.easyplayer-speed-menu-item-active{color:#2298fc}.easyplayer-container .easyplayer-volume-panel-wrap{position:absolute;left:50%;bottom:100%;visibility:hidden;opacity:0;transform:translateX(-50%) translateY(22%);transition:visibility .3s,opacity .3s;background-color:rgba(0,0,0,.5);border-radius:4px;height:120px;width:50px;overflow:hidden}.easyplayer-container .easyplayer-volume-panel-wrap.easyplayer-volume-panel-wrap-show{visibility:visible;opacity:1}.easyplayer-container .easyplayer-volume-panel{cursor:pointer;position:absolute;top:21px;height:60px;width:50px;overflow:hidden}.easyplayer-container .easyplayer-volume-panel-text{position:absolute;left:0;top:0;width:50px;height:20px;line-height:20px;text-align:center;color:#fff;font-size:12px}.easyplayer-container .easyplayer-volume-panel-handle{position:absolute;top:48px;left:50%;width:12px;height:12px;border-radius:12px;margin-left:-6px;background:#fff}.easyplayer-container .easyplayer-volume-panel-handle:before{bottom:-54px;background:#fff}.easyplayer-container .easyplayer-volume-panel-handle:after{bottom:6px;background:hsla(0,0%,100%,.2)}.easyplayer-container .easyplayer-volume-panel-handle:after,.easyplayer-container .easyplayer-volume-panel-handle:before{content:"";position:absolute;display:block;left:50%;width:3px;margin-left:-1px;height:60px}.easyplayer-container.easyplayer-fullscreen-web .easyplayer-controls{width:100vh}.easyplayer-container.easyplayer-fullscreen-web .easyplayer-play-big:after{transform:translate(-50%,-50%) rotate(270deg)}.easyplayer-container.easyplayer-fullscreen-web .easyplayer-loading{flex-direction:row}.easyplayer-container.easyplayer-fullscreen-web .easyplayer-loading-text{transform:rotate(270deg)}.easyplayer-container .easyplayer-contextmenus{display:none;flex-direction:column;position:absolute;z-index:120;left:10px;top:10px;min-width:200px;padding:5px 0;background-color:rgba(0,0,0,.9);border-radius:3px}.easyplayer-container .easyplayer-contextmenus .easyplayer-contextmenu{cursor:pointer;font-size:12px;display:block;color:#fff;padding:10px 15px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-shadow:0 0 2px rgba(0,0,0,.5);border-bottom:1px solid hsla(0,0%,100%,.1)}.easyplayer-container .easyplayer-contextmenus .easyplayer-contextmenu a{color:#fff;text-decoration:none}.easyplayer-container .easyplayer-contextmenus .easyplayer-contextmenu span{display:inline-block;padding:0 7px}.easyplayer-container .easyplayer-contextmenus .easyplayer-contextmenu span.art-current,.easyplayer-container .easyplayer-contextmenus .easyplayer-contextmenu span:hover{color:var(--theme)}.easyplayer-container .easyplayer-contextmenus .easyplayer-contextmenu:hover{background-color:hsla(0,0%,100%,.1)}.easyplayer-container .easyplayer-contextmenus .easyplayer-contextmenu:last-child{border-bottom:none}.easyplayer-container.easyplayer-contextmenus-show .easyplayer-contextmenus{display:flex}.easyplayer-container .easyplayer-extend-dom{display:block;position:relative;width:100%;height:100%;display:none}.easyplayer-container-playback .easyplayer-controls{height:48px}.easyplayer-container-playback .easyplayer-controls .easyplayer-controls-bottom .easyplayer-controls-center{flex:1;display:flex;box-sizing:border-box;justify-content:space-between;font-size:12px}.easyplayer-container-playback .easyplayer-controls .easyplayer-controls-bottom .easyplayer-controls-center .easyplayer-controls-playback-time{box-sizing:border-box;flex:1;position:relative;height:100%}.easyplayer-container-playback .easyplayer-controls .easyplayer-controls-bottom .easyplayer-controls-center .easyplayer-controls-playback-time-inner{width:300px;height:100%;overflow-y:hidden;overflow-x:auto}.easyplayer-container-playback .easyplayer-controls .easyplayer-controls-bottom .easyplayer-controls-center .easyplayer-controls-playback-current-time{position:absolute;left:0;top:0;height:15px;width:1px;background-color:red;text-align:center;z-index:1}.easyplayer-container-playback .easyplayer-controls .easyplayer-controls-bottom .easyplayer-controls-center .easyplayer-controls-playback-current-time-text{position:absolute;box-sizing:border-box;padding:0 5px;width:60px;left:-25px;top:15px;border:1px solid red;height:15px;line-height:15px;cursor:move;background-color:#fff;color:#000;-webkit-user-select:none;-moz-user-select:none;user-select:none}.easyplayer-container-playback .easyplayer-controls .easyplayer-controls-bottom .easyplayer-controls-center .easyplayer-controls-playback-time-scroll{position:relative;width:1440px;margin:0 auto}.easyplayer-container-playback .easyplayer-controls .easyplayer-controls-bottom .easyplayer-controls-center .easyplayer-controls-playback-time-scroll.one-hour{width:1440px}.easyplayer-container-playback .easyplayer-controls .easyplayer-controls-bottom .easyplayer-controls-center .easyplayer-controls-playback-time-scroll.half-hour{width:2880px}.easyplayer-container-playback .easyplayer-controls .easyplayer-controls-bottom .easyplayer-controls-center .easyplayer-controls-playback-time-scroll.ten-min{width:8640px}.easyplayer-container-playback .easyplayer-controls .easyplayer-controls-bottom .easyplayer-controls-center .easyplayer-controls-playback-time-scroll.five-min{width:17280px}.easyplayer-container-playback .easyplayer-controls .easyplayer-controls-bottom .easyplayer-controls-center .easyplayer-controls-playback-time-scroll.one-min{width:86400px}.easyplayer-container-playback .easyplayer-controls .easyplayer-controls-bottom .easyplayer-controls-center .easyplayer-controls-playback-time-list{position:relative;background-color:#ccc;height:48px}.easyplayer-container-playback .easyplayer-controls .easyplayer-controls-bottom .easyplayer-controls-center .easyplayer-playback-time-day{height:100%;overflow:hidden}.easyplayer-container-playback .easyplayer-controls .easyplayer-controls-bottom .easyplayer-controls-center .easyplayer-playback-time-one-wrap{height:8px;z-index:1}.easyplayer-container-playback .easyplayer-controls .easyplayer-controls-bottom .easyplayer-controls-center .easyplayer-playback-time-second-wrap{height:25px}.easyplayer-container-playback .easyplayer-controls .easyplayer-controls-bottom .easyplayer-controls-center .easyplayer-controls-playback-btns{display:flex;align-items:center}.easyplayer-container-playback .easyplayer-controls .easyplayer-controls-bottom .easyplayer-controls-center .easyplayer-playback-time-minute-one,.easyplayer-container-playback .easyplayer-controls .easyplayer-controls-bottom .easyplayer-controls-center .easyplayer-playback-time-second-one{float:left;width:1px;height:8px;margin:0;cursor:default;position:relative;z-index:1}.easyplayer-container-playback .easyplayer-controls .easyplayer-controls-bottom .easyplayer-controls-center .easyplayer-playback-time-minute-one.active,.easyplayer-container-playback .easyplayer-controls .easyplayer-controls-bottom .easyplayer-controls-center .easyplayer-playback-time-second-one.active{background-color:orange;cursor:pointer}.easyplayer-container-playback .easyplayer-controls .easyplayer-controls-bottom .easyplayer-controls-center .easyplayer-playback-time-minute-one.start,.easyplayer-container-playback .easyplayer-controls .easyplayer-controls-bottom .easyplayer-controls-center .easyplayer-playback-time-second-one.start{background-color:#999}.easyplayer-container-playback .easyplayer-controls .easyplayer-controls-bottom .easyplayer-controls-center .easyplayer-playback-time-minute-one:hover .easyplayer-playback-time-title-tips,.easyplayer-container-playback .easyplayer-controls .easyplayer-controls-bottom .easyplayer-controls-center .easyplayer-playback-time-second-one:hover .easyplayer-playback-time-title-tips{visibility:visible;opacity:1}.easyplayer-container-playback .easyplayer-controls .easyplayer-controls-bottom .easyplayer-controls-center .easyplayer-playback-time-title-tips{pointer-events:none;position:absolute;left:0;top:100%;visibility:hidden;opacity:0;transform:translateX(13%);transition:visibility .3s ease 0s,opacity .3s ease 0s;background-color:#000;border-radius:4px;z-index:1}.easyplayer-container-playback .easyplayer-controls .easyplayer-controls-bottom .easyplayer-controls-center .easyplayer-playback-time-title-tips.easyplayer-playback-time-title-tips-left{transform:translateX(-100%)}.easyplayer-container-playback .easyplayer-controls .easyplayer-controls-bottom .easyplayer-controls-center .easyplayer-playback-time-title-tips .easyplayer-playback-time-title{display:inline-block;padding:2px 5px;font-size:12px;white-space:nowrap;color:#fff}.easyplayer-container-playback .easyplayer-controls .easyplayer-controls-bottom .easyplayer-controls-center .easyplayer-playback-time-hour,.easyplayer-container-playback .easyplayer-controls .easyplayer-controls-bottom .easyplayer-controls-center .easyplayer-playback-time-minute{float:left;position:relative;width:60px;box-sizing:border-box;border-top:1px solid #999;-webkit-user-select:none;-moz-user-select:none;user-select:none;text-align:left;height:25px;line-height:25px}.easyplayer-container-playback .easyplayer-controls .easyplayer-controls-bottom .easyplayer-controls-center .easyplayer-playback-time-hour:first-child,.easyplayer-container-playback .easyplayer-controls .easyplayer-controls-bottom .easyplayer-controls-center .easyplayer-playback-time-minute:first-child{border-left:0}.easyplayer-container-playback .easyplayer-controls .easyplayer-controls-bottom .easyplayer-controls-center .easyplayer-playback-time-hour:first-child .easyplayer-playback-time-hour-text,.easyplayer-container-playback .easyplayer-controls .easyplayer-controls-bottom .easyplayer-controls-center .easyplayer-playback-time-minute:first-child .easyplayer-playback-time-hour-text{left:0}.easyplayer-container-playback .easyplayer-controls .easyplayer-controls-bottom .easyplayer-controls-center .easyplayer-playback-time-hour:after,.easyplayer-container-playback .easyplayer-controls .easyplayer-controls-bottom .easyplayer-controls-center .easyplayer-playback-time-minute:after{content:"";position:absolute;left:0;top:-8px;width:1px;height:14px;background-color:#999}.easyplayer-container-playback .easyplayer-controls .easyplayer-controls-bottom .easyplayer-controls-center .easyplayer-playback-time-hour-text,.easyplayer-container-playback .easyplayer-controls .easyplayer-controls-bottom .easyplayer-controls-center .easyplayer-playback-time-minute-text{position:absolute;left:-13px}.easyplayer-container-playback .easyplayer-playback-expand.disabled .easyplayer-icon-expand,.easyplayer-container-playback .easyplayer-playback-narrow.disabled .easyplayer-icon-narrow{cursor:no-drop}.easyplayer-container-playback .easyplayer-control-progress-simple{position:absolute;box-sizing:border-box;left:0;top:-2px;width:100%;display:flex;flex-direction:row;align-items:center;height:8px;cursor:pointer}.easyplayer-container-playback .easyplayer-control-progress-simple:hover{top:0;align-items:flex-start}.easyplayer-container-playback .easyplayer-control-progress-simple:hover .easyplayer-control-progress-inner{height:100%}.easyplayer-container-playback .easyplayer-control-progress-simple:hover .easyplayer-control-progress-inner .easyplayer-progress-indicator{transform:scale(1);visibility:visible}.easyplayer-container-playback .easyplayer-control-progress-inner{display:flex;align-items:center;position:relative;height:50%;width:100%;transition:all .2s ease;background:hsla(0,0%,100%,.5)}.easyplayer-container-playback .easyplayer-progress-hover{display:none;width:0}.easyplayer-container-playback .easyplayer-progress-played{position:absolute;left:0;top:0;right:0;bottom:0;height:100%;width:0;background-color:orange}.easyplayer-container-playback .easyplayer-progress-indicator{visibility:hidden;align-items:center;justify-content:center;position:absolute;z-index:40;border-radius:50%;transform:scale(.1);transition:transform .1s ease-in-out}.easyplayer-container-playback .easyplayer-progress-indicator .easyplayer-icon{width:100%;height:100%;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.easyplayer-container-playback .easyplayer-progress-indicator:hover{transform:scale(1.2)!important}.easyplayer-container-playback .easyplayer-progress-tip{display:none;position:absolute;z-index:50;top:-25px;left:0;height:20px;padding:0 5px;line-height:20px;color:#fff;font-size:12px;text-align:center;background:rgba(0,0,0,.7);border-radius:3px;font-weight:700;white-space:nowrap}.easyplayer-container-playback.easyplayer-fullscreen-web .easyplayer-controls .easyplayer-controls-bottom .easyplayer-controls-playback-time-inner{overflow-y:auto}.easyplayer-zoom-control{cursor:grab}.easyplayer-performance-panel{position:absolute;box-sizing:border-box;z-index:10000;left:0;top:0;padding:5px;font-size:10px;background:rgba(0,0,0,.2);color:#fff;max-height:100%;overflow-y:auto;display:none}.easyplayer-performance-panel .easyplayer-performance-item{display:flex;align-items:center;margin-top:3px;color:#fff}.easyplayer-performance-panel .easyplayer-performance-item-block{height:10px}.easyplayer-tips-message{position:absolute;top:0;left:0;width:100%;height:100%;background:linear-gradient(180deg,rgba(0,0,0,.8),hsla(0,0%,100%,0));overflow:auto;box-sizing:content-box;display:none}.easyplayer-tips-message:before{color:hsla(0,0%,100%,.3);content:"X";font-family:Arial,Helvetica,sans-serif;font-size:40px;left:0;line-height:1;margin-top:-20px;position:absolute;text-shadow:2em 2em 4em #000;text-align:center;top:50%;vertical-align:middle;width:100%}.easyplayer-tips-message .easyplayer-tips-message-close{position:absolute;z-index:99999;right:0;top:0;width:40px;height:40px;display:flex;align-items:center;justify-content:center}.easyplayer-tips-message .easyplayer-tips-message-close .easyplayer-tips-message-close-icon{width:20px;height:20px;border-radius:10px;cursor:pointer;background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAeUExURUdwTM3Nzc7Ozs7Ozs3Nzc3NzcrKys3Nzc3Nzc3NzePZJxkAAAAJdFJOUwCtKdPBGAmNTt3jdDcAAADfSURBVDjL1dOxDoIwEADQgwR07GTCZtI/IGHgAzBhM9EPkMTB0Y3V0ZXIcn/rtRR6pefgSKeSu3ellyvA9lZ/5F9p/3K7PZY8oPG5BD6MpPUSgIITzdIStifAshjRQV1PCFT8TxaicTzzwEwINOEdHVmDmcTAkRhMhMAp7iQRjcMtDhCp8SA1v0ARGIIK/gnkv0p1OBTS4QRUIpE7DiYYXTBrzcld3JIrAarXrps4AVNwRSZgExoJmIyAaAdsShUMn/JF2fh4YEkpAcgvnuwYCIb6EbbbP4PsDfLD2dD6Av1qTvAQlzUTAAAAAElFTkSuQmCC") no-repeat 50%;background-color:#fff;background-size:100% 100%}.easyplayer-tips-message .easyplayer-tips-message-content{overflow:auto;padding:35px;box-sizing:border-box;width:100%;height:100%}.easyplayer-tips-message .easyplayer-tips-message-content .easyplayer-tips-message-content-item{font-size:14px;color:#fff;text-align:center;line-height:1.5}');class bd{constructor(e){var t;this.player=e,this.TAG_NAME="Control",this.extendBtnList=[],((e,t)=>{e._opt.hasControl&&e._opt.controlAutoHide?e.$container.classList.add("easyplayer-controls-show-auto-hide"):e.$container.classList.add("easyplayer-controls-show");const i=e._opt,r=i.operateBtns,s=`\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
00:00:00
\n
\n
\n
\n
\n ${i.playbackConfig.showPrecisionBtn?`\n
\n
${ad.narrow}
\n
${ad.expand}
\n
\n `:""}\n
\n `;e.$container.insertAdjacentHTML("beforeend",`\n ${i.background?`
`:""}\n
\n \n
\n ${i.loadingIcon?`\n
\n ${ad.loading}\n
${i.loadingText}
\n
\n `:""}\n ${i.hasControl&&r.play?'
':""}\n ${i.hasControl&&r.ptz?`\n
\n
\n
\n
\n
\n
\n ${i.ptzMoreArrowShow?'\n
\n
\n
\n
\n ':""}\n
\n
\n ${i.ptzZoomShow?'\n
\n
\n \n \n 缩放+\n \n
\n
\n \n \n 缩放-\n \n
\n
\n ':""}\n ${i.ptzApertureShow?'\n
\n
\n \n \n 光圈+\n \n
\n
\n \n \n 光圈-\n \n
\n
\n ':""}\n ${i.ptzFocusShow?'\n
\n
\n \n \n 聚焦+\n \n
\n
\n \n \n 聚焦-\n \n
\n
\n ':""}\n
\n
\n `:""}\n ${i.hasVideo?`\n
\n
${ad.narrow}
\n
电子放大
\n
${ad.expand}
\n
${ad.zoomStop}
\n
\n
\n
\n
00:00:00
\n
${ad.recordStop}
\n
\n `:""}\n\n ${i.hasControl?`\n
\n
\n
\n ${i.showBandwidth?'
':""}\n
\n
${i.controlHtml}
\n
\n ${i.playType===v&&i.playbackConfig.showControl&&i.playbackConfig.controlType===J.normal?s:""}\n ${i.playType===v&&i.playbackConfig.showControl&&i.playbackConfig.controlType===J.simple?'\n
\n
\n
\n
\n
\n
00:00
\n
\n
\n ':""}\n
\n ${i.playType===v&&i.playbackConfig.showRateBtn?'\n
\n
\n
\n
\n
\n
\n ':""}\n ${r.close?`
${ad.close}
`:""}\n ${r.logSave?`
${ad.logSave}
`:""}\n ${r.performance?`
${ad.performance}
${ad.performanceActive}
`:""}\n ${r.aiFace?`
${ad.face}
${ad.faceActive}
`:""}\n ${r.aiObject?`
${ad.object}
${ad.objectActive}
`:""}\n ${r.aiOcclusion?`
${ad.occlusion}
${ad.occlusionActive}
`:""}\n ${r.quality?'\n
\n
\n
\n
\n
\n
\n ':""}\n ${r.scale?'\n
\n
\n
\n
\n
\n
\n ':""}\n ${r.audio?`\n
\n
\n ${ad.audio}\n ${ad.mute}\n
\n
\n
\n
\n
\n
\n
\n
\n `:""}\n ${r.play?`
${ad.play}
${ad.pause}
`:""}\n ${r.screenshot?`
${ad.screenshot}
`:""}\n ${r.record?`
${ad.record}
${ad.recordStop}
`:""}\n ${r.ptz?`
${ad.ptz}
${ad.ptzActive}
`:""}\n ${r.zoom?`
${ad.zoom}
${ad.zoomStop}
`:""}\n ${r.fullscreen?`
${ad.fullscreen}
${ad.fullscreenExit}
`:""}\n
\n
\n
\n `:""}\n
\n
\n
\n
\n
\n
\n
\n
\n `),Object.defineProperty(t,"$poster",{value:e.$container.querySelector(".easyplayer-poster")}),Object.defineProperty(t,"$loadingBg",{value:e.$container.querySelector(".easyplayer-loading-bg")}),Object.defineProperty(t,"$loadingBgImage",{value:e.$container.querySelector(".easyplayer-loading-bg-image")}),Object.defineProperty(t,"$loading",{value:e.$container.querySelector(".easyplayer-loading")}),Object.defineProperty(t,"$loadingText",{value:e.$container.querySelector(".easyplayer-loading-text")}),Object.defineProperty(t,"$play",{value:e.$container.querySelector(".easyplayer-play")}),Object.defineProperty(t,"$playBig",{value:e.$container.querySelector(".easyplayer-play-big")}),Object.defineProperty(t,"$recording",{value:e.$container.querySelector(".easyplayer-recording")}),Object.defineProperty(t,"$recordingTime",{value:e.$container.querySelector(".easyplayer-recording-time")}),Object.defineProperty(t,"$recordingStop",{value:e.$container.querySelector(".easyplayer-recording-stop")}),Object.defineProperty(t,"$pause",{value:e.$container.querySelector(".easyplayer-pause")}),Object.defineProperty(t,"$controls",{value:e.$container.querySelector(".easyplayer-controls")}),Object.defineProperty(t,"$controlsInner",{value:e.$container.querySelector(".easyplayer-controls-bottom")}),Object.defineProperty(t,"$controlsLeft",{value:e.$container.querySelector(".easyplayer-controls-left")}),Object.defineProperty(t,"$controlsRight",{value:e.$container.querySelector(".easyplayer-controls-right")}),Object.defineProperty(t,"$volume",{value:e.$container.querySelector(".easyplayer-volume")}),Object.defineProperty(t,"$volumePanelWrap",{value:e.$container.querySelector(".easyplayer-volume-panel-wrap")}),Object.defineProperty(t,"$volumePanelText",{value:e.$container.querySelector(".easyplayer-volume-panel-text")}),Object.defineProperty(t,"$volumePanel",{value:e.$container.querySelector(".easyplayer-volume-panel")}),Object.defineProperty(t,"$volumeHandle",{value:e.$container.querySelector(".easyplayer-volume-panel-handle")}),Object.defineProperty(t,"$volumeOn",{value:e.$container.querySelector(".easyplayer-icon-audio")}),Object.defineProperty(t,"$volumeOff",{value:e.$container.querySelector(".easyplayer-icon-mute")}),Object.defineProperty(t,"$fullscreen",{value:e.$container.querySelector(".easyplayer-fullscreen")}),Object.defineProperty(t,"$fullscreenExit",{value:e.$container.querySelector(".easyplayer-fullscreen-exit")}),Object.defineProperty(t,"$record",{value:e.$container.querySelector(".easyplayer-record")}),Object.defineProperty(t,"$recordStop",{value:e.$container.querySelector(".easyplayer-record-stop")}),Object.defineProperty(t,"$screenshot",{value:e.$container.querySelector(".easyplayer-screenshot")}),Object.defineProperty(t,"$speed",{value:e.$container.querySelector(".easyplayer-speed")}),Object.defineProperty(t,"$controlHtml",{value:e.$container.querySelector(".easyplayer-controls-item-html")}),Object.defineProperty(t,"$playbackTime",{value:e.$container.querySelector(".easyplayer-controls-playback-time")}),Object.defineProperty(t,"$playbackTimeInner",{value:e.$container.querySelector(".easyplayer-controls-playback-time-inner")}),Object.defineProperty(t,"$playbackTimeScroll",{value:e.$container.querySelector(".easyplayer-controls-playback-time-scroll")}),Object.defineProperty(t,"$playbackTimeList",{value:e.$container.querySelector(".easyplayer-controls-playback-time-list")}),Object.defineProperty(t,"$playbackTimeListOne",{value:e.$container.querySelector(".easyplayer-playback-time-one-wrap")}),Object.defineProperty(t,"$playbackTimeListSecond",{value:e.$container.querySelector(".easyplayer-playback-time-second-wrap")}),Object.defineProperty(t,"$playbackCurrentTime",{value:e.$container.querySelector(".easyplayer-controls-playback-current-time")}),Object.defineProperty(t,"$playbackCurrentTimeText",{value:e.$container.querySelector(".easyplayer-controls-playback-current-time-text")}),Object.defineProperty(t,"$controlsPlaybackBtns",{value:e.$container.querySelector(".easyplayer-controls-playback-btns")}),Object.defineProperty(t,"$playbackNarrow",{value:e.$container.querySelector(".easyplayer-playback-narrow")}),Object.defineProperty(t,"$playbackExpand",{value:e.$container.querySelector(".easyplayer-playback-expand")}),Object.defineProperty(t,"$ptz",{value:e.$container.querySelector(".easyplayer-ptz")}),Object.defineProperty(t,"$ptzActive",{value:e.$container.querySelector(".easyplayer-ptz-active")}),Object.defineProperty(t,"$ptzControl",{value:e.$container.querySelector(".easyplayer-ptz-controls")}),Object.defineProperty(t,"$ptzBgActive",{value:e.$container.querySelector(".easyplayer-ptz-bg-active")}),Object.defineProperty(t,"$ptzControlCircular",{value:e.$container.querySelector(".easyplayer-ptz-control")}),Object.defineProperty(t,"$ptzArrows",{value:e.$container.querySelectorAll(".easyplayer-ptz-arrow")}),Object.defineProperty(t,"$ptzExpand",{value:e.$container.querySelector(".easyplayer-ptz-expand")}),Object.defineProperty(t,"$ptzNarrow",{value:e.$container.querySelector(".easyplayer-ptz-narrow")}),Object.defineProperty(t,"$ptzApertureFar",{value:e.$container.querySelector(".easyplayer-ptz-aperture-far")}),Object.defineProperty(t,"$ptzApertureNear",{value:e.$container.querySelector(".easyplayer-ptz-aperture-near")}),Object.defineProperty(t,"$ptzFocusFar",{value:e.$container.querySelector(".easyplayer-ptz-focus-far")}),Object.defineProperty(t,"$ptzFocusNear",{value:e.$container.querySelector(".easyplayer-ptz-focus-near")}),Object.defineProperty(t,"$qualityText",{value:e.$container.querySelector(".easyplayer-quality-icon-text")}),Object.defineProperty(t,"$qualityMenu",{value:e.$container.querySelector(".easyplayer-quality-menu")}),Object.defineProperty(t,"$qualityMenuList",{value:e.$container.querySelector(".easyplayer-quality-menu-list")}),Object.defineProperty(t,"$scaleText",{value:e.$container.querySelector(".easyplayer-scale-icon-text")}),Object.defineProperty(t,"$scaleMenu",{value:e.$container.querySelector(".easyplayer-scale-menu")}),Object.defineProperty(t,"$scaleMenuList",{value:e.$container.querySelector(".easyplayer-scale-menu-list")}),Object.defineProperty(t,"$zoom",{value:e.$container.querySelector(".easyplayer-zoom")}),Object.defineProperty(t,"$zoomStop",{value:e.$container.querySelector(".easyplayer-zoom-stop")}),Object.defineProperty(t,"$zoomNarrow",{value:e.$container.querySelector(".easyplayer-zoom-narrow")}),Object.defineProperty(t,"$zoomExpand",{value:e.$container.querySelector(".easyplayer-zoom-expand")}),Object.defineProperty(t,"$zoomStop2",{value:e.$container.querySelector(".easyplayer-zoom-stop2")}),Object.defineProperty(t,"$close",{value:e.$container.querySelector(".easyplayer-close")}),Object.defineProperty(t,"$zoomControls",{value:e.$container.querySelector(".easyplayer-zoom-controls")}),Object.defineProperty(t,"$performancePanel",{value:e.$container.querySelector(".easyplayer-performance-panel")}),Object.defineProperty(t,"$performance",{value:e.$container.querySelector(".easyplayer-performance")}),Object.defineProperty(t,"$performanceActive",{value:e.$container.querySelector(".easyplayer-performance-active")}),Object.defineProperty(t,"$faceDetect",{value:e.$container.querySelector(".easyplayer-face")}),Object.defineProperty(t,"$faceDetectActive",{value:e.$container.querySelector(".easyplayer-face-active")}),Object.defineProperty(t,"$objectDetect",{value:e.$container.querySelector(".easyplayer-object")}),Object.defineProperty(t,"$objectDetectActive",{value:e.$container.querySelector(".easyplayer-object-active")}),Object.defineProperty(t,"$occlusionDetect",{value:e.$container.querySelector(".easyplayer-occlusion")}),Object.defineProperty(t,"$occlusionDetectActive",{value:e.$container.querySelector(".easyplayer-occlusion-active")}),Object.defineProperty(t,"$contextmenus",{value:e.$container.querySelector(".easyplayer-contextmenus")}),Object.defineProperty(t,"$speedText",{value:e.$container.querySelector(".easyplayer-speed-icon-text")}),Object.defineProperty(t,"$speedMenu",{value:e.$container.querySelector(".easyplayer-speed-menu")}),Object.defineProperty(t,"$speedMenuList",{value:e.$container.querySelector(".easyplayer-speed-menu-list")}),Object.defineProperty(t,"$logSave",{value:e.$container.querySelector(".easyplayer-logSave")}),Object.defineProperty(t,"$playbackProgress",{value:e.$container.querySelector(".easyplayer-control-progress-simple")}),Object.defineProperty(t,"$playbackProgressTip",{value:e.$container.querySelector(".easyplayer-progress-tip")}),Object.defineProperty(t,"$playbackProgressHover",{value:e.$container.querySelector(".easyplayer-progress-hover")}),Object.defineProperty(t,"$playbackProgressPlayed",{value:e.$container.querySelector(".easyplayer-progress-played")}),Object.defineProperty(t,"$playbackProgressIndicator",{value:e.$container.querySelector(".easyplayer-progress-indicator")}),Object.defineProperty(t,"$playbackProgressTime",{value:e.$container.querySelector(".easyplayer-playback-control-time")}),Object.defineProperty(t,"$tipsMessage",{value:e.$container.querySelector(".easyplayer-tips-message")}),Object.defineProperty(t,"$tipsMessageClose",{value:e.$container.querySelector(".easyplayer-tips-message-close")}),Object.defineProperty(t,"$tipsMessageContent",{value:e.$container.querySelector(".easyplayer-tips-message-content")})})(e,this),e._opt.extendOperateBtns.length>0&&e._opt.extendOperateBtns.forEach((e=>{this.addExtendBtn(e)})),e._opt.extendDomConfig&&e._opt.extendDomConfig.html&&this.addExtendDom(e._opt.extendDomConfig),t=this,Object.defineProperty(t,"controlsRect",{get:()=>t.$controls.getBoundingClientRect()}),Object.defineProperty(t,"controlsInnerRect",{get:()=>t.$controlsInner.getBoundingClientRect()}),Object.defineProperty(t,"controlsLeftRect",{get:()=>t.$controlsLeft.getBoundingClientRect()}),Object.defineProperty(t,"controlsRightRect",{get:()=>t.$controlsRight.getBoundingClientRect()}),Object.defineProperty(t,"controlsPlaybackTimeInner",{get:()=>t.$playbackTimeInner&&t.$playbackTimeInner.getBoundingClientRect()||{}}),Object.defineProperty(t,"controlsPlaybackBtnsRect",{get:()=>t.$controlsPlaybackBtns&&t.$controlsPlaybackBtns.getBoundingClientRect()||{width:0}}),Ad(e,this),((e,t)=>{const{events:{proxy:i},debug:r}=e,s=e._opt,a=s.operateBtns;function n(e){const{bottom:i,height:r}=t.$volumePanel.getBoundingClientRect(),{height:s}=t.$volumeHandle.getBoundingClientRect();return fs(i-e.y-s/2,0,r-s/2)/(r-s)}if(_s()&&i(window,["click","contextmenu"],(i=>{i.composedPath().indexOf(e.$container)>-1?t.isFocus=!0:t.isFocus=!1})),i(t.$controls,"click",(e=>{e.stopPropagation()})),a.play&&(i(t.$pause,"click",(t=>{s.playType===v&&s.playbackConfig.uiUsePlaybackPause?e.playbackPause=!0:sa(a.pauseFn)?a.pauseFn():e.pauseForControl()})),i(t.$play,"click",(t=>{s.playType===v&&e.playbackPause?e.playbackPause=!1:sa(a.playFn)?a.playFn():e.playForControl().then((()=>{e.resumeAudioAfterPause()}))}))),i(t.$playBig,"click",(t=>{s.playType===v&&e.playbackPause?e.playbackPause=!1:sa(a.playFn)?a.playFn():e.playForControl().then((()=>{e.resumeAudioAfterPause()}))})),a.screenshot&&i(t.$screenshot,"click",(t=>{e.emit(rt.screenshot,!0),t.stopPropagation(),sa(a.screenshotFn)?a.screenshotFn():e.video.screenshot()})),a.audio&&(_s()&&(i(t.$volume,"mouseover",(()=>{t.$volumePanelWrap.classList.add("easyplayer-volume-panel-wrap-show")})),i(t.$volume,"mouseout",(()=>{t.$volumePanelWrap.classList.remove("easyplayer-volume-panel-wrap-show")})),i(t.$volumePanel,"click",(t=>{e.emit(rt.mute,e.volume>0),t.stopPropagation(),e.volume=n(t)})),i(t.$volumeHandle,"mousedown",(e=>{e.stopPropagation(),t.isVolumeDroging=!0})),i(t.$volumeHandle,"mousemove",(i=>{t.isVolumeDroging&&(e.volume=n(i))})),i(document,"mouseup",(()=>{t.isVolumeDroging&&(t.isVolumeDroging=!1)}))),i(t.$volumeOn,"click",(i=>{i.stopPropagation(),ms(t.$volumeOn,"display","none"),ms(t.$volumeOff,"display","block");const r=e.volume;e.volume=0,e._lastVolume=_s()?r:1})),i(t.$volumeOff,"click",(i=>{i.stopPropagation(),ms(t.$volumeOn,"display","block"),ms(t.$volumeOff,"display","none"),e.volume=_s()?e.lastVolume||.5:1}))),a.record&&(i(t.$record,"click",(t=>{t.stopPropagation(),sa(a.recordFn)?a.recordFn():e.recording=!0})),i(t.$recordStop,"click",(t=>{t.stopPropagation(),sa(a.recordStopFn)?a.recordStopFn():e.recording=!1}))),i(t.$recordingStop,"click",(t=>{t.stopPropagation(),sa(a.recordStopFn)?a.recordStopFn():e.recording=!1})),a.fullscreen&&(i(t.$fullscreen,"click",(t=>{t.stopPropagation(),sa(a.fullscreenFn)?a.fullscreenFn():e.fullscreen=!0})),i(t.$fullscreenExit,"click",(t=>{t.stopPropagation(),sa(a.fullscreenExitFn)?a.fullscreenExitFn():e.fullscreen=!1}))),a.ptz){if(i(t.$ptz,"click",(e=>{e.stopPropagation(),ms(t.$ptzActive,"display","flex"),ms(t.$ptz,"display","none"),t.$ptzControl.classList.add("easyplayer-ptz-controls-show")})),i(t.$ptzActive,"click",(e=>{e.stopPropagation(),ms(t.$ptz,"display","flex"),ms(t.$ptzActive,"display","none"),t.$ptzControl.classList.remove("easyplayer-ptz-controls-show")})),t.$ptzArrows.forEach((r=>{if(s.ptzClickType===Q)i(r,"click",(i=>{i.stopPropagation();const r=i.currentTarget.dataset.arrow;t.$ptzBgActive.classList.add("easyplayer-ptz-bg-active-show"),t.$ptzBgActive.classList.add(`easyplayer-ptz-bg-active-${r}`),t.$ptzControlCircular.classList.add(`easyplayer-ptz-control-${r}`),e.emit(rt.ptz,_a(r)),setTimeout((()=>{t.$ptzBgActive.classList.remove("easyplayer-ptz-bg-active-show"),ni.forEach((e=>{t.$ptzBgActive.classList.remove(`easyplayer-ptz-bg-active-${e}`),t.$ptzControlCircular.classList.remove(`easyplayer-ptz-control-${e}`)})),e.emit(rt.ptz,oi)}),1e3*s.ptzStopEmitDelay)}));else if(s.ptzClickType===X){let s=!1;i(r,"mousedown",(i=>{i.stopPropagation(),s=!0;const r=i.currentTarget.dataset.arrow;t.$ptzBgActive.classList.add("easyplayer-ptz-bg-active-show"),t.$ptzBgActive.classList.add(`easyplayer-ptz-bg-active-${r}`),t.$ptzControlCircular.classList.add(`easyplayer-ptz-control-${r}`),e.emit(rt.ptz,_a(r))}));const a=()=>{s=!1,t.$ptzBgActive.classList.remove("easyplayer-ptz-bg-active-show"),ni.forEach((e=>{t.$ptzBgActive.classList.remove(`easyplayer-ptz-bg-active-${e}`),t.$ptzControlCircular.classList.remove(`easyplayer-ptz-control-${e}`)})),e.emit(rt.ptz,oi)};i(r,"mouseup",(e=>{e.stopPropagation(),s&&a()})),i(window,"mouseup",(e=>{e.stopPropagation(),s&&a()}))}})),s.ptzZoomShow)if(s.ptzClickType===Q)i(t.$ptzExpand,"click",(t=>{t.stopPropagation(),e.emit(rt.ptz,di),setTimeout((()=>{e.emit(rt.ptz,oi)}),1e3*s.ptzStopEmitDelay)})),i(t.$ptzNarrow,"click",(t=>{t.stopPropagation(),e.emit(rt.ptz,hi),setTimeout((()=>{e.emit(rt.ptz,oi)}),1e3*s.ptzStopEmitDelay)}));else if(s.ptzClickType===X){let r=!1,s=!1;i(t.$ptzExpand,"mousedown",(t=>{t.stopPropagation(),r=!0,e.emit(rt.ptz,di)})),i(t.$ptzNarrow,"mousedown",(t=>{t.stopPropagation(),s=!0,e.emit(rt.ptz,hi)}));const a=()=>{r=!1,s=!1,e.emit(rt.ptz,oi)};i(t.$ptzExpand,"mouseup",(e=>{e.stopPropagation(),r&&a()})),i(t.$ptzNarrow,"mouseup",(e=>{e.stopPropagation(),s&&a()})),i(window,"mouseup",(e=>{e.stopPropagation(),(r||s)&&a()}))}if(s.ptzApertureShow)if(s.ptzClickType===Q)i(t.$ptzApertureFar,"click",(t=>{t.stopPropagation(),e.emit(rt.ptz,ci),setTimeout((()=>{e.emit(rt.ptz,li)}),1e3*s.ptzStopEmitDelay)})),i(t.$ptzApertureNear,"click",(t=>{t.stopPropagation(),e.emit(rt.ptz,ui),setTimeout((()=>{e.emit(rt.ptz,li)}),1e3*s.ptzStopEmitDelay)}));else if(s.ptzClickType===X){let r=!1,s=!1;i(t.$ptzApertureFar,"mousedown",(t=>{t.stopPropagation(),r=!0,e.emit(rt.ptz,ci)})),i(t.$ptzApertureNear,"mousedown",(t=>{t.stopPropagation(),s=!0,e.emit(rt.ptz,ui)}));const a=()=>{r=!1,s=!1,e.emit(rt.ptz,li)};i(t.$ptzApertureFar,"mouseup",(e=>{e.stopPropagation(),r&&a()})),i(t.$ptzApertureNear,"mouseup",(e=>{e.stopPropagation(),s&&a()})),i(window,"mouseup",(e=>{e.stopPropagation(),(r||s)&&a()}))}if(s.ptzFocusShow)if(s.ptzClickType===Q)i(t.$ptzFocusFar,"click",(t=>{t.stopPropagation(),e.emit(rt.ptz,pi),setTimeout((()=>{e.emit(rt.ptz,li)}),1e3*s.ptzStopEmitDelay)})),i(t.$ptzFocusNear,"click",(t=>{t.stopPropagation(),e.emit(rt.ptz,fi),setTimeout((()=>{e.emit(rt.ptz,li)}),1e3*s.ptzStopEmitDelay)}));else if(s.ptzClickType===X){let r=!1,s=!1;i(t.$ptzFocusFar,"mousedown",(t=>{t.stopPropagation(),r=!0,e.emit(rt.ptz,pi)})),i(t.$ptzFocusNear,"mousedown",(t=>{t.stopPropagation(),s=!0,e.emit(rt.ptz,fi)}));const a=()=>{r=!1,s=!1,e.emit(rt.ptz,li)};i(t.$ptzFocusFar,"mouseup",(e=>{e.stopPropagation(),r&&a()})),i(t.$ptzFocusNear,"mouseup",(e=>{e.stopPropagation(),s&&a()})),i(window,"mouseup",(e=>{e.stopPropagation(),(r||s)&&a()}))}}if(a.performance&&(i(t.$performance,"click",(t=>{t.stopPropagation(),e.togglePerformancePanel(!0)})),i(t.$performanceActive,"click",(t=>{t.stopPropagation(),e.togglePerformancePanel(!1)}))),a.logSave&&i(t.$logSave,"click",(t=>{t.stopPropagation(),e.downloadMemoryLog()})),a.aiFace&&(i(t.$faceDetect,"click",(t=>{t.stopPropagation(),e.faceDetect(!0)})),i(t.$faceDetectActive,"click",(t=>{t.stopPropagation(),e.faceDetect(!1)}))),a.aiObject&&(i(t.$objectDetect,"click",(t=>{t.stopPropagation(),e.objectDetect(!0)})),i(t.$objectDetectActive,"click",(t=>{t.stopPropagation(),e.objectDetect(!1)}))),a.aiOcclusion&&(i(t.$occlusionDetect,"click",(t=>{t.stopPropagation(),e.occlusionDetect(!0)})),i(t.$occlusionDetectActive,"click",(t=>{t.stopPropagation(),e.occlusionDetect(!1)}))),e._opt.hasControl&&e._opt.controlAutoHide){i(e.$container,"mouseover",(()=>{e.fullscreen||(ms(t.$controls,"display","block"),s())})),i(e.$container,"mousemove",(()=>{e.$container&&t.$controls&&(e.fullscreen,"none"===t.$controls.style.display&&(ms(t.$controls,"display","block"),s()))})),i(e.$container,"mouseout",(()=>{a(),ms(t.$controls,"display","none")}));let r=null;const s=()=>{a(),r=setTimeout((()=>{ms(t.$controls,"display","none")}),5e3)},a=()=>{r&&(clearTimeout(r),r=null)}}if(e._opt.playType===v){let r=e._opt.playbackConfig.controlType;e._opt.playbackConfig.showRateBtn&&(i(t.$speedMenu,"mouseover",(()=>{t.$speedMenuList.classList.add("easyplayer-speed-menu-shown")})),i(t.$speedMenu,"mouseout",(()=>{t.$speedMenuList.classList.remove("easyplayer-speed-menu-shown")})),i(t.$speedMenuList,"click",(t=>{const i=ia(t);if(i.matches("div.easyplayer-speed-menu-item")){const t=i.dataset;e.emit(rt.playbackPreRateChange,t.speed)}}))),r===J.normal?(i(t.$playbackNarrow,"click",(t=>{t.stopPropagation(),e.playback&&e.playback.narrowPrecision()})),i(t.$playbackExpand,"click",(t=>{t.stopPropagation(),e.playback&&e.playback.expandPrecision()})),i(t.$playbackTimeList,"click",(t=>{const i=ia(t);i.matches("div.easyplayer-playback-time-minute-one")&&e.playback&&e.playback.seek(i.dataset)})),e._opt.playbackConfig.supportWheel&&i(t.$playbackTimeInner,"wheel",(t=>{t.preventDefault(),(t.wheelDelta?t.wheelDelta/120:-(t.detail||0)/3)>0?e.playback&&e.playback.expandPrecision():e.playback&&e.playback.narrowPrecision()}))):r===J.simple&&(t.isDroging=!1,i(t.$playbackProgress,"click",(i=>{if(i.target!==t.$playbackProgressIndicator){let r=0,s=0;if(e.isInWebFullscreen())r=i.touches[0].clientY/e.height,s=r*e.playback.totalDuration;else{const a=pd(t,e.playback.totalDuration,i);r=a.percentage,s=a.second}e.playback&&e.playback.seek({time:s})}})),i(t.$playbackProgress,"mousemove",(i=>{ms(t.$playbackProgressTip,"display","block");const{width:r,time:s}=pd(t,e.playback.totalDuration,i);t.$playbackProgressTip.innerHTML=s;const a=t.$playbackProgressTip.clientWidth;r<=a/2?ms(t.$playbackProgressTip,"left",0):r>t.$playbackProgress.clientWidth-a/2?ms(t.$playbackProgressTip,"left",t.$playbackProgress-a+"px"):ms(t.$playbackProgressTip,"left",r-a/2+"px")})),i(t.$playbackProgress,"mouseout",(()=>{ms(t.$playbackProgressTip,"display","none")})),i(t.$playbackProgressIndicator,"mousedown",(e=>{t.isDroging=!0})),i(t.$playbackProgress,"mousemove",(i=>{if(t.isDroging){const{second:r,percentage:s}=pd(t,e.playback.totalDuration,i);e.playback&&e.playback.seek({time:r})}})),i(t.$playbackProgress,"mouseup",(e=>{t.isDroging&&(t.isDroging=!1)})))}a.quality&&(i(t.$qualityMenu,"mouseover",(()=>{t.$qualityMenuList.classList.add("easyplayer-quality-menu-shown")})),i(t.$qualityMenu,"mouseout",(()=>{t.$qualityMenuList.classList.remove("easyplayer-quality-menu-shown")})),i(t.$qualityMenuList,"click",(t=>{const i=ia(t);if(i.matches("div.easyplayer-quality-menu-item")){const t=i.dataset;e.streamQuality=t.quality}}))),a.scale&&(i(t.$scaleMenu,"mouseover",(()=>{t.$scaleMenuList.classList.add("easyplayer-scale-menu-shown")})),i(t.$scaleMenu,"mouseout",(()=>{t.$scaleMenuList.classList.remove("easyplayer-scale-menu-shown")})),i(t.$scaleMenuList,"click",(t=>{const i=ia(t);if(i.matches("div.easyplayer-scale-menu-item")){const t=i.dataset;e.setScaleMode(t.scale)}}))),a.zoom&&(i(t.$zoom,"click",(t=>{t.stopPropagation(),e.zooming=!0})),i(t.$zoomStop,"click",(t=>{t.stopPropagation(),e.zooming=!1}))),i(t.$zoomExpand,"click",(t=>{t.stopPropagation(),e.zoom&&e.zoom.expandPrecision()})),i(t.$zoomNarrow,"click",(t=>{t.stopPropagation(),e.zoom&&e.zoom.narrowPrecision()})),i(t.$zoomStop2,"click",(t=>{t.stopPropagation(),e.zooming=!1})),a.close&&i(t.$close,"click",(t=>{t.stopPropagation(),e.doDestroy()})),i(t.$tipsMessageClose,"click",(e=>{e.stopPropagation(),t.$tipsMessageContent.innerHTML="",ms(t.$tipsMessage,"display","none")}))})(e,this),e._opt.hotKey&&((e,t)=>{const{events:{proxy:i}}=e,r={};function s(e,t){r[e]?r[e].push(t):r[e]=[t]}s(Xt,(()=>{e.fullscreen&&(e.fullscreen=!1)})),s(Jt,(()=>{e.volume+=.05})),s(Zt,(()=>{e.volume-=.05})),i(window,"keydown",(e=>{if(t.isFocus){const t=document.activeElement.tagName.toUpperCase(),i=document.activeElement.getAttribute("contenteditable");if("INPUT"!==t&&"TEXTAREA"!==t&&""!==i&&"true"!==i){const t=r[e.keyCode];t&&(e.preventDefault(),t.forEach((e=>e())))}}}))})(e,this),this.btnIndex=0,this.initLoadingBackground(),Js(e._opt.loadingIconStyle)&&this.initLoadingIconStyle(e._opt.loadingIconStyle),this.kbpsShow="0 KB/s",this.player.debug.log("Control","init")}destroy(){if(this.$performancePanel){this.$performancePanel.innerHTML="";if(!gd(this.$performancePanel)){const e=this.player.$container.querySelector(".easyplayer-performance-panel");e&&this.player.$container&&this.player.$container.removeChild(e)}}if(this.$poster){if(!gd(this.$poster)){const e=this.player.$container.querySelector(".easyplayer-poster");e&&this.player.$container&&this.player.$container.removeChild(e)}}if(this.$loading){if(!gd(this.$loading)){const e=this.player.$container.querySelector(".easyplayer-loading");e&&this.player.$container&&this.player.$container.removeChild(e)}}if(this.$loadingBg){if(!gd(this.$loadingBg)){const e=this.player.$container.querySelector(".easyplayer-loading-bg");e&&this.player.$container&&this.player.$container.removeChild(e)}}if(this.$controls){if(!gd(this.$controls)){const e=this.player.$container.querySelector(".easyplayer-controls");e&&this.player.$container&&this.player.$container.removeChild(e)}}if(this.$playBig){if(!gd(this.$playBig)){const e=this.player.$container.querySelector(".easyplayer-play-big");e&&this.player.$container&&this.player.$container.removeChild(e)}}if(this.$recording){if(!gd(this.$recording)){const e=this.player.$container.querySelector(".easyplayer-recording");e&&this.player.$container&&this.player.$container.removeChild(e)}}if(this.$ptzControl){if(!gd(this.$ptzControl)){const e=this.player.$container.querySelector(".easyplayer-ptz-controls");e&&this.player.$container&&this.player.$container.removeChild(e)}}if(this.$zoomControls){if(!gd(this.$zoomControls)){const e=this.player.$container.querySelector(".easyplayer-zoom-controls");e&&this.player.$container&&this.player.$container.removeChild(e)}}if(this.$contextmenus){this.$contextmenus.innerHTML="";if(!gd(this.$contextmenus)){const e=this.player.$container.querySelector(".easyplayer-contextmenus");e&&this.player.$container&&this.player.$container.removeChild(e)}}if(this.$tipsMessage){if(!gd(this.$tipsMessage)){const e=this.player.$container.querySelector(".easyplayer-tips-message");e&&this.player.$container&&this.player.$container.removeChild(e)}}if(this.$extendDom){if(!gd(this.$extendDom)){const e=this.player.$container.querySelector(".easyplayer-extend-dom");e&&this.player.$container&&this.player.$container.removeChild(e)}}this.btnIndex=0,this.extendBtnList=[],this.kbpsShow="0 KB/s",this.player.$container&&(this.player.$container.classList.remove("easyplayer-controls-show-auto-hide"),this.player.$container.classList.remove("easyplayer-controls-show")),this.player.debug.log("Control","destroy")}getBtnIndex(){return this.btnIndex++}autoSize(){const e=this.player;e.$container.style.padding="0 0";const t=e.width,i=e.height,r=t/i,s=e.video.$videoElement.width/e.video.$videoElement.height;if(r>s){const r=(t-i*s)/2;e.$container.style.padding=`0 ${r}px`}else{const r=(i-t/s)/2;e.$container.style.padding=`${r}px 0`}}initLoadingBackground(){const e=this.player;e._opt.loadingBackground&&e._opt.loadingBackgroundWidth&&e._opt.loadingBackgroundHeight&&(e.debug.log("Control","initLoadingBackground()"),"default"===this.player._opt.aspectRatio||bs()?(e.getRenderType()===$||e.getRenderType()===K)&&this._initLoadingBackground():this._initLoadingBackgroundForRatio(),md(this.$loadingBg,"display","block"),e._opt.loadingBackground="",e._opt.loadingBackgroundWidth=0,e._opt.loadingBackgroundHeight=0)}initLoadingIconStyle(e){const t=this.player.$container.querySelector(".easyplayer-icon-loading");t&&(e.width&&md(t,"width",`${e.width}px`),e.height&&md(t,"height",`${e.height}px`),e.background&&md(t,"backgroundImage",`url("${e.background}")`),!1===e.hasAnimation&&(md(t,"animationName","none"),md(t,"animationDuration",0),md(t,"animationTimingFunction","ease"),md(t,"animationIterationCount",1)))}_initLoadingBackgroundForRatio(){const e=this.player._opt.aspectRatio.split(":").map(Number);let t=this.player.width,i=this.player.height;const r=this.player._opt;let s=0;r.hasControl&&!r.controlAutoHide&&(s=r.playType===v?Lt:0,i-=s);const a=this.player._opt.loadingBackgroundWidth,n=this.player._opt.loadingBackgroundHeight,o=a/n,l=e[0]/e[1];if(this.$loadingBgImage.src=this.player._opt.loadingBackground,o>l){const e=l*n/a;this.$loadingBgImage.style.width=100*e+"%",this.$loadingBgImage.style.height=`calc(100% - ${s}px)`,this.$loadingBgImage.style.padding=`0 ${(t-t*e)/2}px`}else{const e=a/l/n;this.$loadingBgImage.style.width="100%",this.$loadingBgImage.style.height=`calc(${100*e}% - ${s}px)`,this.$loadingBgImage.style.padding=(i-i*e)/2+"px 0"}}_initLoadingBackground(){const e=this.player;let t=e.height;const i=e._opt;if(i.hasControl&&!i.controlAutoHide){t-=i.playType===v?Lt:0}let r=e.width,s=t;const a=i.rotate;270!==a&&90!==a||(r=t,s=e.width),this.$loadingBgImage.width=r,this.$loadingBgImage.height=s,this.$loadingBgImage.src=e._opt.loadingBackground;let n=(e.width-r)/2,o=(t-s)/2,l="contain";i.isResize||(l="fill"),i.isFullResize&&(l="none");let d="";"none"===i.mirrorRotate&&a&&(d+=" rotate("+a+"deg)"),"level"===i.mirrorRotate?d+=" rotateY(180deg)":"vertical"===i.mirrorRotate&&(d+=" rotateX(180deg)"),this.player._opt.videoRenderSupportScale&&(this.$loadingBgImage.style.objectFit=l),this.$loadingBgImage.style.transform=d,this.$loadingBgImage.style.padding="0",this.$loadingBgImage.style.left=n+"px",this.$loadingBgImage.style.top=o+"px"}_validateExtendBtn(e){let t=!0;if(e.name||(this.player.debug.warn("Control","extend button name is required"),t=!1),t){-1!==this.extendBtnList.findIndex((t=>t.name===e.name))&&(this.player.debug.warn("Control",`extend button name: ${e.name} is already exist`),t=!1)}return t&&(e.icon||(this.player.debug.warn("Control","extend button icon is required"),t=!1)),t}addExtendBtn(e={}){const t=ma(tr);if(e=Object.assign({},t,e),!this._validateExtendBtn(e))return;const i=e.name||"",r=this.$controlsRight,s=e.activeIcon&&e.activeClick,a=`\n
\n ${e.icon?`
\n \n ${e.iconTitle?`\n ${e.iconTitle}\n `:""}\n
`:""}\n ${e.activeIcon?`
\n \n ${e.activeIconTitle?`\n ${e.activeIconTitle}\n `:""}\n
`:""}\n
\n `,n=Array.from(r.children)[e.index];n?n.insertAdjacentHTML("beforebegin",a):fd(r,a);const o=r.querySelector(`.easyplayer-controls-item-wrap-${i}`),l=e.icon?r.querySelector(`.easyplayer-icon-extend-${i}`):null,d=e.icon?r.querySelector(`.easyplayer-control-extend-${i}`):null,h=e.activeIcon?r.querySelector(`.easyplayer-icon-extend-${i}-active`):null,c=e.activeIcon?r.querySelector(`.easyplayer-control-extend-${i}-active`):null,{events:{proxy:u},debug:p}=this.player;e.icon&&(md(l,"background",`url(${e.icon}) no-repeat center`),md(l,"background-size","100% 100%"),md(d,"display","none"),e.iconHover&&(u(l,"mouseover",(()=>{md(l,"background",`url(${e.iconHover}) no-repeat center`),md(l,"background-size","100% 100%")})),u(l,"mouseout",(()=>{md(l,"background",`url(${e.icon}) no-repeat center`),md(l,"background-size","100% 100%")})))),e.activeIcon&&(md(h,"background",`url(${e.activeIcon}) no-repeat center`),md(h,"background-size","100% 100%"),md(c,"display","none"),e.activeIconHover&&(u(h,"mouseover",(()=>{md(h,"background",`url(${e.activeIconHover}) no-repeat center`),md(h,"background-size","100% 100%")})),u(h,"mouseout",(()=>{md(h,"background",`url(${e.activeIcon}) no-repeat center`),md(h,"background-size","100% 100%")})))),e.click&&l&&u(l,"click",(t=>{t.preventDefault(),s&&(md(d,"display","none"),md(c,"display","flex")),this.player.isInMulti()?e.click.call(this.player,t,this.player._opt.multiIndex):e.click.call(this.player,t)})),e.activeClick&&h&&u(h,"click",(t=>{t.preventDefault(),md(d,"display","flex"),md(c,"display","none"),this.player.isInMulti()?e.activeClick.call(this.player,t,this.player._opt.multiIndex):e.activeClick.call(this.player,t)})),this.extendBtnList.push({name:i,$iconContainer:o,$iconWrap:d,$activeIconWrap:c})}addExtendDom(e){if(this.player.debug.log(this.TAG_NAME,"addExtendDom"),e.html){const t=`\n
\n ${e.html}\n
\n `;this.player.$container.insertAdjacentHTML("beforeend",t),Object.defineProperty(this,"$extendDom",{value:this.player.$container.querySelector(".easyplayer-extend-dom")}),e.showBeforePlay&&md(this.$extendDom,"display","block")}}toggleExtendDom(e){this.$extendDom&&(Gs(e)||(e="none"===this.$extendDom.style.display),md(this.$extendDom,"display",e?"block":"none"))}updateExtendDom(e){this.player.debug.log(this.TAG_NAME,"updateExtendDom"),this.$extendDom&&(this.$extendDom.innerHTML=e)}removeExtendDom(){this.player.debug.log(this.TAG_NAME,"removeExtendDom"),this.$extendDom&&(this.$extendDom.innerHTML="")}updateLoadingText(e){this.$loadingText&&(this.$loadingText.innerText=e)}getExtendBtnList(){return this.extendBtnList}showTipsMessage(e,t){const i=this.$tipsMessage,r=this.$tipsMessageContent;if(i){const s=`\n
${e}
\n ${t?`
Error Type:${t}
`:""}\n `;r.innerHTML=s,md(i,"display","block")}}hideTipsMessage(){const e=this.$tipsMessage;e&&($tipsMessageContent.innerHTML="",md(e,"display","none"))}}vd(".easyplayer-container{position:relative;width:100%;height:100%;overflow:hidden}.easyplayer-container.easyplayer-fullscreen-web{position:fixed;z-index:9999;left:0;top:0;right:0;bottom:0;width:100vw!important;height:100vh!important;background:#000}");class _d{static init(){_d.types={avc1:[],avcC:[],hvc1:[],hvcC:[],av01:[],av1C:[],btrt:[],dinf:[],dref:[],esds:[],ftyp:[],hdlr:[],mdat:[],mdhd:[],mdia:[],mfhd:[],minf:[],moof:[],moov:[],mp4a:[],mvex:[],mvhd:[],sdtp:[],stbl:[],stco:[],stsc:[],stsd:[],stsz:[],stts:[],tfdt:[],tfhd:[],traf:[],trak:[],trun:[],trex:[],tkhd:[],vmhd:[],smhd:[],".mp3":[],Opus:[],dOps:[],"ac-3":[],dac3:[],"ec-3":[],dec3:[]};for(let e in _d.types)_d.types.hasOwnProperty(e)&&(_d.types[e]=[e.charCodeAt(0),e.charCodeAt(1),e.charCodeAt(2),e.charCodeAt(3)]);let e=_d.constants={};e.FTYP=new Uint8Array([105,115,111,109,0,0,0,1,105,115,111,109,97,118,99,49]),e.STSD_PREFIX=new Uint8Array([0,0,0,0,0,0,0,1]),e.STTS=new Uint8Array([0,0,0,0,0,0,0,0]),e.STSC=e.STCO=e.STTS,e.STSZ=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0]),e.HDLR_VIDEO=new Uint8Array([0,0,0,0,0,0,0,0,118,105,100,101,0,0,0,0,0,0,0,0,0,0,0,0,86,105,100,101,111,72,97,110,100,108,101,114,0]),e.HDLR_AUDIO=new Uint8Array([0,0,0,0,0,0,0,0,115,111,117,110,0,0,0,0,0,0,0,0,0,0,0,0,83,111,117,110,100,72,97,110,100,108,101,114,0]),e.DREF=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,12,117,114,108,32,0,0,0,1]),e.SMHD=new Uint8Array([0,0,0,0,0,0,0,0]),e.VMHD=new Uint8Array([0,0,0,1,0,0,0,0,0,0,0,0])}static box(e){let t=8,i=null,r=Array.prototype.slice.call(arguments,1),s=r.length;for(let e=0;e>>24&255,i[1]=t>>>16&255,i[2]=t>>>8&255,i[3]=255&t,i.set(e,4);let a=8;for(let e=0;e>>24&255,e>>>16&255,e>>>8&255,255&e,t>>>24&255,t>>>16&255,t>>>8&255,255&t,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255]))}static trak(e){return _d.box(_d.types.trak,_d.tkhd(e),_d.mdia(e))}static tkhd(e){let t=e.id,i=e.duration,r=e.presentWidth,s=e.presentHeight;return _d.box(_d.types.tkhd,new Uint8Array([0,0,0,7,0,0,0,0,0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t,0,0,0,0,i>>>24&255,i>>>16&255,i>>>8&255,255&i,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,r>>>8&255,255&r,0,0,s>>>8&255,255&s,0,0]))}static mdia(e){return _d.box(_d.types.mdia,_d.mdhd(e),_d.hdlr(e),_d.minf(e))}static mdhd(e){let t=e.timescale,i=e.duration;return _d.box(_d.types.mdhd,new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t,i>>>24&255,i>>>16&255,i>>>8&255,255&i,85,196,0,0]))}static hdlr(e){let t=null;return t="audio"===e.type?_d.constants.HDLR_AUDIO:_d.constants.HDLR_VIDEO,_d.box(_d.types.hdlr,t)}static minf(e){let t=null;return t="audio"===e.type?_d.box(_d.types.smhd,_d.constants.SMHD):_d.box(_d.types.vmhd,_d.constants.VMHD),_d.box(_d.types.minf,t,_d.dinf(),_d.stbl(e))}static dinf(){return _d.box(_d.types.dinf,_d.box(_d.types.dref,_d.constants.DREF))}static stbl(e){return _d.box(_d.types.stbl,_d.stsd(e),_d.box(_d.types.stts,_d.constants.STTS),_d.box(_d.types.stsc,_d.constants.STSC),_d.box(_d.types.stsz,_d.constants.STSZ),_d.box(_d.types.stco,_d.constants.STCO))}static stsd(e){return"audio"===e.type?"mp3"===e.audioType?_d.box(_d.types.stsd,_d.constants.STSD_PREFIX,_d.mp3(e)):_d.box(_d.types.stsd,_d.constants.STSD_PREFIX,_d.mp4a(e)):"avc"===e.videoType?_d.box(_d.types.stsd,_d.constants.STSD_PREFIX,_d.avc1(e)):_d.box(_d.types.stsd,_d.constants.STSD_PREFIX,_d.hvc1(e))}static mp3(e){let t=e.channelCount,i=e.audioSampleRate,r=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,t,0,16,0,0,0,0,i>>>8&255,255&i,0,0]);return _d.box(_d.types[".mp3"],r)}static mp4a(e){let t=e.channelCount,i=e.audioSampleRate,r=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,t,0,16,0,0,0,0,i>>>8&255,255&i,0,0]);return _d.box(_d.types.mp4a,r,_d.esds(e))}static esds(e){let t=e.config||[],i=t.length,r=new Uint8Array([0,0,0,0,3,23+i,0,1,0,4,15+i,64,21,0,0,0,0,0,0,0,0,0,0,0,5].concat([i]).concat(t).concat([6,1,2]));return _d.box(_d.types.esds,r)}static avc1(e){let t=e.avcc;const i=e.codecWidth,r=e.codecHeight;let s=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,i>>>8&255,255&i,r>>>8&255,255&r,0,72,0,0,0,72,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,255,255]);return _d.box(_d.types.avc1,s,_d.box(_d.types.avcC,t))}static hvc1(e){let t=e.avcc;const i=e.codecWidth,r=e.codecHeight;let s=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,i>>>8&255,255&i,r>>>8&255,255&r,0,72,0,0,0,72,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,255,255]);return _d.box(_d.types.hvc1,s,_d.box(_d.types.hvcC,t))}static mvex(e){return _d.box(_d.types.mvex,_d.trex(e))}static trex(e){let t=e.id,i=new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1]);return _d.box(_d.types.trex,i)}static moof(e,t){return _d.box(_d.types.moof,_d.mfhd(e.sequenceNumber),_d.traf(e,t))}static mfhd(e){let t=new Uint8Array([0,0,0,0,e>>>24&255,e>>>16&255,e>>>8&255,255&e]);return _d.box(_d.types.mfhd,t)}static traf(e,t){let i=e.id,r=_d.box(_d.types.tfhd,new Uint8Array([0,0,0,0,i>>>24&255,i>>>16&255,i>>>8&255,255&i])),s=_d.box(_d.types.tfdt,new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t])),a=_d.sdtp(e),n=_d.trun(e,a.byteLength+16+16+8+16+8+8);return _d.box(_d.types.traf,r,s,n,a)}static sdtp(e){let t=new Uint8Array(5),i=e.flags;return t[4]=i.isLeading<<6|i.dependsOn<<4|i.isDependedOn<<2|i.hasRedundancy,_d.box(_d.types.sdtp,t)}static trun(e,t){let i=new Uint8Array(28);t+=36,i.set([0,0,15,1,0,0,0,1,t>>>24&255,t>>>16&255,t>>>8&255,255&t],0);let r=e.duration,s=e.size,a=e.flags,n=e.cts;return i.set([r>>>24&255,r>>>16&255,r>>>8&255,255&r,s>>>24&255,s>>>16&255,s>>>8&255,255&s,a.isLeading<<2|a.dependsOn,a.isDependedOn<<6|a.hasRedundancy<<4|a.isNonSync,0,0,n>>>24&255,n>>>16&255,n>>>8&255,255&n],12),_d.box(_d.types.trun,i)}static mdat(e){return _d.box(_d.types.mdat,e)}}_d.init();class Ed extends Ra{constructor(e){super(),this.TAG_NAME="MediaSource",this.player=e,this._resetInIt(),this._useManagedMediaSource="ManagedMediaSource"in self&&!("MediaSource"in self),this.mediaSource=this._useManagedMediaSource?new self.ManagedMediaSource:new self.MediaSource,this.isDecodeFirstIIframe=!!ba(e._opt.checkFirstIFrame),this.mediaSourceObjectURL=null,this._useManagedMediaSource||(this.mediaSourceObjectURL=window.URL.createObjectURL(this.mediaSource)),this.isSupportVideoFrameCallback=Ta(),this.canvasRenderInterval=null,e._opt.mseUseCanvasRender?(this.$videoElement=document.createElement("video"),this._useManagedMediaSource?(this.$videoElement.disableRemotePlayback=!0,this.$videoElement.srcObject=this.mediaSource):this.$videoElement.src=this.mediaSourceObjectURL,this.initVideoEvents()):(this._useManagedMediaSource?(this.player.video.$videoElement.disableRemotePlayback=!0,this.player.video.$videoElement.srcObject=this.mediaSource):this.player.video.$videoElement.src=this.mediaSourceObjectURL,this.$videoElement=this.player.video.$videoElement),this._bindMediaSourceEvents(),this.audioSourceBufferCheckTimeout=null,this.audioSourceNoDataCheckTimeout=null,this.player.isPlayback()&&this.player.on(rt.playbackPause,(t=>{ba(t)?(va(e._opt.checkFirstIFrame)&&(this.player.debug.log(this.TAG_NAME,"playbackPause is false and _opt.checkFirstIFrame is true so set isDecodeFirstIIframe = false"),this.isDecodeFirstIIframe=!1),this.clearUpAllSourceBuffer(),this.$videoElement.play()):(this.$videoElement.pause(),this.cacheTrack={})})),this.player.on(rt.visibilityChange,(e=>{e&&setTimeout((()=>{if(this.player.isPlaying()&&this.$videoElement){const e=this.getVideoBufferLastTime();e>this.$videoElement.currentTime&&(this.player.debug.log(this.TAG_NAME,`visibilityChange is true and lastTime is ${e} and currentTime is ${this.$videoElement.currentTime} so set currentTime to lastTime`),this.$videoElement.currentTime=e)}}),300)})),this._useManagedMediaSource?this.player.debug.log(this.TAG_NAME,"init and using ManagedMediaSource"):this.player.debug.log(this.TAG_NAME,"init")}destroy(){this.stop(),this._clearAudioSourceBufferCheckTimeout(),this._clearAudioNoDataCheckTimeout(),this._stopCanvasRender(),this.eventListenList.length&&(this.eventListenList.forEach((e=>e())),this.eventListenList=[]),this.supportVideoFrameCallbackHandle&&this.$videoElement&&(this.$videoElement.cancelVideoFrameCallback(this.supportVideoFrameCallbackHandle),this.supportVideoFrameCallbackHandle=null),this.$videoElement&&(this.player._opt.mseUseCanvasRender&&this.$videoElement.src&&(this.$videoElement.src="",this.$videoElement.removeAttribute("src")),this.$videoElement=null),this.mediaSourceObjectURL&&(window.URL.revokeObjectURL(this.mediaSourceObjectURL),this.mediaSourceObjectURL=null),this._resetInIt(),this.off(),this.player.debug.log(this.TAG_NAME,"destroy")}needInitAudio(){return this.player._opt.hasAudio&&this.player._opt.mseDecodeAudio}_resetInIt(){this.isAvc=null,this.isAAC=null,this.videoMeta={},this.audioMeta={},this.sourceBuffer=null,this.audioSourceBuffer=null,this.hasInit=!1,this.hasAudioInit=!1,this.isInitInfo=!1,this.isAudioInitInfo=!1,this.audioMimeType="",this.videoMimeType="",this.cacheTrack={},this.cacheAudioTrack={},this.timeInit=!1,this.sequenceNumber=0,this.audioSequenceNumber=0,this.firstRenderTime=null,this.firstAudioTime=null,this.$videoElement=null,this.mediaSourceAppendBufferFull=!1,this.mediaSourceAppendBufferError=!1,this.mediaSourceAddSourceBufferError=!1,this.mediaSourceBufferError=!1,this.mediaSourceError=!1,this.prevTimestamp=null,this.decodeDiffTimestamp=null,this.prevDts=null,this.prevAudioDts=null,this.prevPayloadBufferSize=0,this.isWidthOrHeightChanged=!1,this.prevTs=null,this.prevAudioTs=null,this.eventListenList=[],this.pendingRemoveRanges=[],this.pendingSegments=[],this.pendingAudioRemoveRanges=[],this.pendingAudioSegments=[],this.supportVideoFrameCallbackHandle=null}get state(){return this.mediaSource&&this.mediaSource.readyState}get isStateOpen(){return this.state===qt}get isStateClosed(){return this.state===Yt}get isStateEnded(){return this.state===Kt}get duration(){return this.mediaSource&&this.mediaSource.duration||-1}set duration(e){this.mediaSource.duration=e}_bindMediaSourceEvents(){const{debug:e,events:{proxy:t}}=this.player,i=t(this.mediaSource,bi.sourceOpen,(()=>{this.player.debug.log(this.TAG_NAME,"sourceOpen"),this._onMediaSourceSourceOpen(),this.player.emit(rt.mseSourceOpen)})),r=t(this.mediaSource,bi.sourceClose,(()=>{this.player.debug.log(this.TAG_NAME,"sourceClose"),this.player.emit(rt.mseSourceClose)})),s=t(this.mediaSource,bi.sourceended,(()=>{this.player.debug.log(this.TAG_NAME,"sourceended"),this.player.emit(rt.mseSourceended)}));this.eventListenList.push(i,r,s);const a=t(this.$videoElement,Si,(e=>{if(ba(this.isSupportVideoFrameCallback))if(this.player.checkIsInRender())this.player.handleRender();else{const t=parseInt(e.timeStamp,10);this.player.debug.log(this.TAG_NAME,`mseUseCanvasRender is ${this.player._opt.mseUseCanvasRender} and\n $videoElement ts is ${t}, but not in render and vbps is ${this.player._stats.vbps} and fps is ${this.player._stats.fps}`)}})),n=t(this.$videoElement,wi,(()=>{this.player.debug.log(this.TAG_NAME,"video playback Rate change",this.$videoElement&&this.$videoElement.playbackRate),this.$videoElement&&this.$videoElement.paused&&(this.player.debug.warn(this.TAG_NAME,"video is paused and sent isMSEPlaybackRateChangePause true"),this.player.isMSEPlaybackRateChangePause=!0)}));if(this.eventListenList.push(a,n),this._useManagedMediaSource){const e=t(this.mediaSource,bi.startstreaming,(()=>{this.player.debug.log(this.TAG_NAME,"ManagedMediaSource startstreaming"),this.player.emit(rt.mseSourceStartStreaming)})),i=t(this.mediaSource,bi.endstreaming,(()=>{this.player.debug.log(this.TAG_NAME,"ManagedMediaSource endstreaming"),this.player.emit(rt.mseSourceEndStreaming)})),r=t(this.mediaSource,bi.qualitychange,(()=>{this.player.debug.log(this.TAG_NAME,"ManagedMediaSource qualitychange")}));this.eventListenList.push(e,i,r)}}_onMediaSourceSourceOpen(){this.sourceBuffer||(this.player.debug.log("MediaSource","onMediaSourceSourceOpen() sourceBuffer is null and next init"),this._initSourceBuffer()),this.audioSourceBuffer||(this.player.debug.log("MediaSource","onMediaSourceSourceOpen() audioSourceBuffer is null and next init"),this._initAudioSourceBuffer()),this._hasPendingSegments()&&this._doAppendSegments()}initVideoEvents(){const{proxy:e}=this.player.events,t=e(this.$videoElement,_i,(()=>{this.player.debug.log(this.TAG_NAME,"video canplay"),this.$videoElement.play().then((()=>{this.player.emit(rt.removeLoadingBgImage),Ta()?this.supportVideoFrameCallbackHandle=this.$videoElement.requestVideoFrameCallback(this.videoFrameCallback.bind(this)):this.player.isUseHls265()&&(this._stopCanvasRender(),this.canvasRenderInterval=setInterval((()=>{this.player.video.render({$video:this.$videoElement,ts:parseInt(1e3*this.$videoElement.currentTime,10)||0})}),40)),this.player.debug.log(this.TAG_NAME,"video play")})).catch((e=>{this.player.debug.error(this.TAG_NAME,"video play error ",e),this.player.emitError(nt.mediaSourceUseCanvasRenderPlayFailed,e)}))})),i=e(this.$videoElement,Ei,(()=>{this.player.debug.log(this.TAG_NAME,"video waiting")})),r=e(this.$videoElement,Si,(e=>{parseInt(e.timeStamp,10),this.$videoElement.paused&&(this.player.debug.warn(this.TAG_NAME,"video is paused and next try to replay"),this.$videoElement.play().then((()=>{this.player.debug.log(this.TAG_NAME,"video is paused and replay success")})).catch((e=>{this.player.debug.warn(this.TAG_NAME,"video is paused and replay error ",e)})))}));this.eventListenList.push(t,i,r)}videoFrameCallback(e,t={}){if(this.player.isDestroyedOrClosed())return void this.player.debug.log(this.TAG_NAME,"videoFrameCallback() player is destroyed");const i=parseInt(1e3*Math.max(t.mediaTime,this.$videoElement.currentTime),10)||0;this.player.handleRender(),this.player.video.render({$video:this.$videoElement,ts:i}),this.player.isUseHls265()&&this.player.updateStats({fps:!0,ts:i}),this.supportVideoFrameCallbackHandle=this.$videoElement.requestVideoFrameCallback(this.videoFrameCallback.bind(this))}decodeVideo(e,t,i,r){const s=this.player;if(s)if(this.player.isDestroyedOrClosed())this.player.debug.warn(this.TAG_NAME,"decodeVideo() player is destroyed");else if(this.hasInit)if(!this.isDecodeFirstIIframe&&i&&(this.isDecodeFirstIIframe=!0),this.isDecodeFirstIIframe){if(i&&0===e[1]){const t=15&e[0];let i={};if(t===mt){i=Ln(e.slice(5))}else t===yt&&(i=Wn(e));const r=this.player.video.videoInfo;r&&r.width&&r.height&&i&&i.codecWidth&&i.codecHeight&&(i.codecWidth!==r.width||i.codecHeight!==r.height)&&(this.player.debug.warn(this.TAG_NAME,`\n decodeVideo: video width or height is changed,\n old width is ${r.width}, old height is ${r.height},\n new width is ${i.codecWidth}, new height is ${i.codecHeight},\n and emit change event`),this.isWidthOrHeightChanged=!0,this.player.emitError(nt.mseWidthOrHeightChange))}if(this.isWidthOrHeightChanged)return void this.player.debug.warn(this.TAG_NAME,"decodeVideo: video width or height is changed, and return");if(Aa(e))return void this.player.debug.warn(this.TAG_NAME,"decodeVideo and payload is video sequence header so drop this frame");if(e.byteLength<12)return void this.player.debug.warn(this.TAG_NAME,`decodeVideo and payload is too small , payload length is ${e.byteLength}`);let s=t;if(this.player.isPlayer()){if(null===this.firstRenderTime&&(this.firstRenderTime=t),s=t-this.firstRenderTime,s<0&&(this.player.debug.warn(this.TAG_NAME,`decodeVideo\n local dts is < 0 , ts is ${t} and prevTs is ${this.prevTs},\n firstRenderTime is ${this.firstRenderTime} and mseCorrectTimeDuration is ${this.player._opt.mseCorrectTimeDuration}`),s=null===this.prevDts?0:this.prevDts+this.player._opt.mseCorrectTimeDuration,this._checkTsIsMaxDiff(t)))return this.player.debug.warn(this.TAG_NAME,`decodeVideo is max diff , ts is ${t} and prevTs is ${this.prevTs}, diff is ${this.prevTs-t} and emit replay`),void this.player.emitError(nt.mediaSourceTsIsMaxDiff,`decodeVideo is max diff, prevTs is ${this.prevTs} and ts is ${t}`);if(null!==this.prevDts&&s<=this.prevDts){if(this.player.debug.warn(this.TAG_NAME,`\n decodeVideo dts is less than(or equal) prev dts ,\n dts is ${s} and prev dts is ${this.prevDts} ,\n and now ts is ${t} and prev ts is ${this.prevTs} ,\n and diff is ${t-this.prevTs} and firstRenderTime is ${this.firstRenderTime} and isIframe is ${i},\n and mseCorrectTimeDuration is ${this.player._opt.mseCorrectTimeDuration},\n and prevPayloadBufferSize is ${this.prevPayloadBufferSize} and payload size is ${e.byteLength}`),s===this.prevDts&&this.prevPayloadBufferSize===e.byteLength)return void this.player.debug.warn(this.TAG_NAME,"decodeVideo dts is equal to prev dts and payload size is equal to prev payload size so drop this frame");if(s=this.prevDts+this.player._opt.mseCorrectTimeDuration,this._checkTsIsMaxDiff(t))return this.player.debug.warn(this.TAG_NAME,`decodeVideo is max diff , ts is ${t} and prevTs is ${this.prevTs}, diff is ${this.prevTs-t} and emit replay`),void this.emit(nt.mediaSourceTsIsMaxDiff,`decodeVideo is max diff, prevTs is ${this.prevTs} and ts is ${t}`)}}this.player.isPlayer()?this._decodeVideo(e,s,i,r,t):this.player.isPlayback()&&ba(this.player.playbackPause)&&(this.player.playback.isUseLocalCalculateTime&&this.player.playback.increaseLocalTimestamp(),this._decodeVideo(e,s,i,r,t)),this.prevDts=s,this.prevPayloadBufferSize=e.byteLength,this.prevTs=t}else this.player.debug.log(this.TAG_NAME,"decodeVideo first frame is not iFrame");else if(i&&e[1]===Fi){const r=15&e[0];if(s.video.updateVideoInfo({encTypeCode:r}),r===yt&&ba(Bs()))return void this.player.emitError(nt.mediaSourceH265NotSupport);s._times.decodeStart||(s._times.decodeStart=ps()),this.hasInit=this._decodeConfigurationRecord(e,t,i,r)}else this.player.debug.warn(this.TAG_NAME,`decodeVideo has not init , isIframe is ${i} , payload is ${e[1]}`)}decodeAudio(e,t){if(this.player)if(this.player.isDestroyedOrClosed())this.player.debug.warn(this.TAG_NAME,"decodeAudio() player is destroyed");else if(ba(this.hasAudioInit))this.hasAudioInit=this._decodeAudioConfigurationRecord(e,t);else{let i=t;if(Qr(e))return void this.player.debug.log(this.TAG_NAME,"decodeAudio and has already initialized and payload is aac codec packet so drop this frame");if(this._clearAudioNoDataCheckTimeout(),this.player.isPlayer()){if(null===this.firstAudioTime&&(this.firstAudioTime=t,null!==this.firstRenderTime&&null!==this.prevTs)){const e=Math.abs(this.firstRenderTime-this.prevTs);e>300&&(this.firstAudioTime-=e,this.player.debug.warn(this.TAG_NAME,`video\n firstAudioTime is ${this.firstRenderTime} and current time is ${this.prevTs}\n play time is ${e} and firstAudioTime ${t} - ${e} = ${this.firstAudioTime}`))}if(i=t-this.firstAudioTime,i<0&&(this.player.debug.warn(this.TAG_NAME,`decodeAudio\n local dts is < 0 , ts is ${t} and prevTs is ${this.prevAudioTs},\n firstAudioTime is ${this.firstAudioTime}`),i=null===this.prevAudioDts?0:this.prevAudioDts+this.player._opt.mseCorrectAudioTimeDuration,this._checkAudioTsIsMaxDiff(t)))return this.player.debug.warn(this.TAG_NAME,`decodeAudio is max diff , ts is ${t} and prevTs is ${this.prevAudioDts}, diff is ${this.prevAudioDts-t} and emit replay`),void this.player.emitError(nt.mediaSourceTsIsMaxDiff,`decodeAudio is max diff, prevTs is ${this.prevAudioDts} and ts is ${t}`);null!==this.prevAudioTs&&i<=this.prevAudioDts&&(this.player.debug.warn(this.TAG_NAME,`\n decodeAudio dts is less than(or equal) prev dts ,\n dts is ${i} and prev dts is ${this.prevAudioDts} ,\n and now ts is ${t} and prev ts is ${this.prevAudioTs} ,\n and diff is ${t-this.prevAudioTs}`),i=this.prevAudioDts+this.player._opt.mseCorrectAudioTimeDuration)}(this.player.isPlayer()||this.player.isPlayback()&&ba(this.player.playbackPause))&&this._decodeAudio(e,i,t),this.prevAudioTs=t,this.prevAudioDts=i}}_checkTsIsMaxDiff(e){return this.prevTs>0&&eZ}_checkAudioTsIsMaxDiff(e){return this.prevAudioTs>0&&eZ}_decodeConfigurationRecord(e,t,i,r){let s=e.slice(5),a={};if(r===mt?a=Ln(s):r===yt&&(a=function(e){const t=e;if(t.length<22)return console.error(`Invalid HEVCDecoderConfigurationRecord, lack of data! ${t.length} < 22`),{};let i={codecWidth:0,codecHeight:0,videoType:Ti},r=function(){let e=new ArrayBuffer(2);return new DataView(e).setInt16(0,256,!0),256===new Int16Array(e)[0]}(),s=new DataView(t.buffer),a=s.getUint8(0),n=31&s.getUint8(1);if(1!==a||0===n)return console.error(`Invalid HEVCDecoderConfigurationRecord,version is ${a}, hevcProfile is ${n}`),{};let o=1+(3&s.getUint8(21));if(3!==o&&4!==o)return console.error("Invalid HEVCDecoderConfigurationRecord, Strange NaluLengthSizeMinusOne: "+(o-1)),{};let l=s.getUint8(22);for(let e=0,a=23;e>4,r=i===vt.MP3,s=i===vt.AAC;if(ba(s||r))return this.player.debug.warn(this.TAG_NAME,`_decodeAudioConfigurationRecord audio codec is not support , codecId is ${i} ant auto wasm decode`),this.player.emit(nt.mediaSourceAudioG711NotSupport),!1;const a={id:Dr,type:"audio",timescale:1e3};let n={};if(Qr(e)){if(n=rs(e.slice(2)),!n)return!1;a.audioSampleRate=n.sampleRate,a.channelCount=n.channelCount,a.config=n.config,a.refSampleDuration=1024/a.audioSampleRate*a.timescale}else{if(!r)return!1;if(n=id(e),!n)return!1;a.audioSampleRate=n.samplingRate,a.channelCount=n.channelCount,a.refSampleDuration=1152/a.audioSampleRate*a.timescale}a.codec=n.codec,a.duration=0;let o="mp4",l=n.codec,d=null;r&&ba(Ss())?(o="mpeg",l="",d=new Uint8Array):d=_d.generateInitSegment(a);let h=`${a.type}/${o}`;return l&&l.length>0&&(h+=`;codecs=${l}`),ba(this.isAudioInitInfo)&&(this.player.audio.updateAudioInfo({encTypeCode:i,channels:a.channelCount,sampleRate:a.audioSampleRate}),this.isAudioInitInfo=!0),this.audioMimeType=h,this.isAAC=s,this._initAudioSourceBuffer(),this.appendAudioBuffer(d.buffer),!0}_initSourceBuffer(){const{debug:e,events:{proxy:t}}=this.player;if(null===this.sourceBuffer&&null!==this.mediaSource&&this.isStateOpen&&this.videoMimeType){try{this.sourceBuffer=this.mediaSource.addSourceBuffer(this.videoMimeType),e.log(this.TAG_NAME,"_initSourceBuffer() this.mediaSource.addSourceBuffer()",this.videoMimeType)}catch(t){return e.error(this.TAG_NAME,"appendBuffer() this.mediaSource.addSourceBuffer()",t.code,t),this.player.emitError(nt.mseAddSourceBufferError,t),void(this.mediaSourceAddSourceBufferError=!0)}if(this.sourceBuffer){const i=t(this.sourceBuffer,"error",(t=>{this.mediaSourceBufferError=!0,e.error(this.TAG_NAME,"mseSourceBufferError this.sourceBuffer",t),this.player.emitError(nt.mseSourceBufferError,t)})),r=t(this.sourceBuffer,"updateend",(()=>{this._hasPendingRemoveRanges()?this._doRemoveRanges():this._hasPendingSegments()&&this._doAppendSegments()}));this.eventListenList.push(i,r)}}else e.log(this.TAG_NAME,`_initSourceBuffer and this.isStateOpen is ${this.isStateOpen} and this.isAvc === null is ${null===this.isAvc}`)}_initAudioSourceBuffer(){const{debug:e,events:{proxy:t}}=this.player;if(null===this.audioSourceBuffer&&null!==this.mediaSource&&this.isStateOpen&&this.audioMimeType){try{this.audioSourceBuffer=this.mediaSource.addSourceBuffer(this.audioMimeType),this._clearAudioSourceBufferCheckTimeout(),e.log(this.TAG_NAME,"_initAudioSourceBuffer() this.mediaSource.addSourceBuffer()",this.audioMimeType)}catch(t){return e.error(this.TAG_NAME,"appendAudioBuffer() this.mediaSource.addSourceBuffer()",t.code,t),this.player.emitError(nt.mseAddSourceBufferError,t),void(this.mediaSourceAddSourceBufferError=!0)}if(this.audioSourceBuffer){const i=t(this.audioSourceBuffer,"error",(t=>{this.mediaSourceBufferError=!0,e.error(this.TAG_NAME,"mseSourceBufferError this.audioSourceBuffer",t),this.player.emitError(nt.mseSourceBufferError,t)})),r=t(this.audioSourceBuffer,"updateend",(()=>{this._hasPendingRemoveRanges()?this._doRemoveRanges():this._hasPendingSegments()&&this._doAppendSegments()}));this.eventListenList.push(i,r),null===this.audioSourceNoDataCheckTimeout&&(this.audioSourceNoDataCheckTimeout=setTimeout((()=>{this._clearAudioNoDataCheckTimeout(),this.player.emit(nt.mediaSourceAudioNoDataTimeout)}),1e3))}}else e.log(this.TAG_NAME,`_initAudioSourceBuffer and this.isStateOpen is ${this.isStateOpen} and this.audioMimeType is ${this.audioMimeType}`)}_decodeVideo(e,t,i,r,s){const a=this.player;let n=e.slice(5),o=n.byteLength;if(0===o)return void a.debug.warn(this.TAG_NAME,"_decodeVideo payload bytes is 0 and return");let l=(new Date).getTime(),d=!1;this.prevTimestamp||(this.prevTimestamp=l,d=!0);const h=l-this.prevTimestamp;this.decodeDiffTimestamp=h,h>500&&!d&&this.player.isPlayer()&&a.debug.warn(this.TAG_NAME,`_decodeVideo now time is ${l} and prev time is ${this.prevTimestamp}, diff time is ${h} ms`);const c=this.$videoElement;if(this.cacheTrack.id&&t>=this.cacheTrack.dts){let e=8+this.cacheTrack.size,i=new Uint8Array(e);i[0]=e>>>24&255,i[1]=e>>>16&255,i[2]=e>>>8&255,i[3]=255&e,i.set(_d.types.mdat,4),i.set(this.cacheTrack.data,8),this.cacheTrack.duration=t-this.cacheTrack.dts;let r=_d.moof(this.cacheTrack,this.cacheTrack.dts);this.cacheTrack={};let n=new Uint8Array(r.byteLength+i.byteLength);n.set(r,0),n.set(i,r.byteLength),this.appendBuffer(n.buffer),a.emit(rt.timeUpdate,s),a.isPlayer()?a.isUseHls265()?a.updateStats({dfps:!0,mseTs:t}):a.updateStats({fps:!0,dfps:!0,ts:s,mseTs:t}):a.isPlayback()&&a.playback.updateStats({ts:s}),a._times.videoStart||(a._times.videoStart=ps(),a.handlePlayToRenderTimes())}else a.debug.log(this.TAG_NAME,`timeInit set false , cacheTrack = {} now dts is ${t}, and ts is ${s} cacheTrack dts is ${this.cacheTrack&&this.cacheTrack.dts}`),this.timeInit=!1,this.cacheTrack={};this.cacheTrack||(this.cacheTrack={}),this.cacheTrack.id=Rr,this.cacheTrack.sequenceNumber=++this.sequenceNumber,this.cacheTrack.size=o,this.cacheTrack.dts=t,this.cacheTrack.cts=r,this.cacheTrack.isKeyframe=i,this.cacheTrack.data=n,this.cacheTrack.flags={isLeading:0,dependsOn:i?2:1,isDependedOn:i?1:0,hasRedundancy:0,isNonSync:i?0:1},!this.isInitInfo&&c.videoWidth>0&&c.videoHeight>0&&(a.debug.log(this.TAG_NAME,`updateVideoInfo: ${c.videoWidth},${c.videoHeight}`),a.video.updateVideoInfo({width:c.videoWidth,height:c.videoHeight}),a.video.initCanvasViewSize(),this.isInitInfo=!0),a._opt.mseUseCanvasRender&&ba(this.isSupportVideoFrameCallback)&&ba(a.isUseHls265())&&a.video.render({$video:c,ts:t}),this.prevTimestamp=(new Date).getTime()}_stopCanvasRender(){this.canvasRenderInterval&&(clearInterval(this.canvasRenderInterval),this.canvasRenderInterval=null)}_decodeAudio(e,t,i){this.player;let r=this.isAAC?e.slice(2):e.slice(1),s=r.byteLength;if(this.cacheAudioTrack.id&&t>=this.cacheAudioTrack.dts){let e=8+this.cacheAudioTrack.size,i=new Uint8Array(e);i[0]=e>>>24&255,i[1]=e>>>16&255,i[2]=e>>>8&255,i[3]=255&e,i.set(_d.types.mdat,4),i.set(this.cacheAudioTrack.data,8),this.cacheAudioTrack.duration=t-this.cacheAudioTrack.dts;let r=_d.moof(this.cacheAudioTrack,this.cacheAudioTrack.dts);this.cacheAudioTrack={};let s=new Uint8Array(r.byteLength+i.byteLength);s.set(r,0),s.set(i,r.byteLength),this.appendAudioBuffer(s.buffer)}else this.cacheAudioTrack={};this.cacheAudioTrack||(this.cacheAudioTrack={}),this.cacheAudioTrack.id=Dr,this.cacheAudioTrack.sequenceNumber=++this.audioSequenceNumber,this.cacheAudioTrack.size=s,this.cacheAudioTrack.dts=t,this.cacheAudioTrack.cts=0,this.cacheAudioTrack.data=r,this.cacheAudioTrack.flags={isLeading:0,dependsOn:1,isDependedOn:0,hasRedundancy:0}}appendBuffer(e){if(this.player.isDestroyedOrClosed())return void this.player.debug.warn(this.TAG_NAME,"appendBuffer() player is destroyed");const{debug:t,events:{proxy:i}}=this.player;this.mediaSourceAddSourceBufferError?t.warn(this.TAG_NAME,"appendBuffer() this.mediaSourceAddSourceBufferError is true"):this.mediaSourceAppendBufferFull?t.warn(this.TAG_NAME,"appendBuffer() this.mediaSourceAppendBufferFull is true"):this.mediaSourceAppendBufferError?t.warn(this.TAG_NAME,"appendBuffer() this.mediaSourceAppendBufferError is true"):this.mediaSourceBufferError?t.warn(this.TAG_NAME,"appendBuffer() this.mediaSourceBufferError is true"):(this.pendingSegments.push(e),this.sourceBuffer&&(this.player.isPlayer()&&this._handleUpdatePlaybackRate(),this.player.isPlayback()&&this._handleUpdateBufferDelayTime(),this.player._opt.mseAutoCleanupSourceBuffer&&this._needCleanupSourceBuffer()&&this._doCleanUpSourceBuffer(),ba(this.getSourceBufferUpdating())&&this.isStateOpen&&ba(this._hasPendingRemoveRanges()))?this._doAppendSegments():this.isStateClosed?(this.mediaSourceBufferError=!0,this.player.emitError(nt.mseSourceBufferError,"mediaSource is not attached to video or mediaSource is closed")):this.isStateEnded?(this.mediaSourceBufferError=!0,this.player.emitError(nt.mseSourceBufferError,"mediaSource is end")):this._hasPendingRemoveRanges()&&t.log(this.TAG_NAME,`video has pending remove ranges and video length is ${this.pendingRemoveRanges.length}, audio length is ${this.pendingAudioRemoveRanges.length}`))}appendAudioBuffer(e){if(this.player.isDestroyedOrClosed())return void this.player.debug.warn(this.TAG_NAME,"appendAudioBuffer() player is destroyed");const{debug:t,events:{proxy:i}}=this.player;this.mediaSourceAddSourceBufferError?t.warn(this.TAG_NAME,"appendAudioBuffer() this.mediaSourceAddSourceBufferError is true"):this.mediaSourceAppendBufferFull?t.warn(this.TAG_NAME,"appendAudioBuffer() this.mediaSourceAppendBufferFull is true"):this.mediaSourceAppendBufferError?t.warn(this.TAG_NAME,"appendAudioBuffer() this.mediaSourceAppendBufferError is true"):this.mediaSourceBufferError?t.warn(this.TAG_NAME,"appendAudioBuffer() this.mediaSourceBufferError is true"):(this.pendingAudioSegments.push(e),this.audioSourceBuffer&&(this.player.isPlayer()&&this._handleUpdatePlaybackRate(),this.player.isPlayback()&&this._handleUpdateBufferDelayTime(),this.player._opt.mseAutoCleanupSourceBuffer&&this._needCleanupSourceBuffer()&&this._doCleanUpSourceBuffer(),ba(this.getAudioSourceBufferUpdating())&&this.isStateOpen&&ba(this._hasPendingRemoveRanges()))?this._doAppendSegments():this.isStateClosed?(this.mediaSourceBufferError=!0,this.player.emitError(nt.mseSourceBufferError,"mediaSource is not attached to video or mediaSource is closed")):this.isStateEnded?(this.mediaSourceBufferError=!0,this.player.emitError(nt.mseSourceBufferError,"mediaSource is end")):this._hasPendingRemoveRanges()&&t.log(this.TAG_NAME,`audio has pending remove ranges and video length is ${this.pendingRemoveRanges.length}, audio length is ${this.pendingAudioRemoveRanges.length}`))}getSourceBufferUpdating(){return this.sourceBuffer&&this.sourceBuffer.updating}getAudioSourceBufferUpdating(){return this.audioSourceBuffer&&this.audioSourceBuffer.updating}stop(){this.removeSourceBuffer(),this.endOfStream(),this.abortSourceBuffer()}checkSourceBufferDelay(){const e=this.$videoElement;let t=0,i=0;return e.buffered.length>0&&(i=e.buffered.end(e.buffered.length-1),t=i-e.currentTime),t<0&&(this.player.debug.warn(this.TAG_NAME,`checkMSESourceBufferDelay ${t} < 0, and buffered is ${i} ,currentTime is ${e.currentTime} , try to seek ${e.currentTime} to ${i}`),e.currentTime=i,t=0),t}checkSourceBufferStore(){const e=this.$videoElement;let t=0;return e.buffered.length>0&&(t=e.currentTime-e.buffered.start(0)),t}getDecodeDiffTimes(){return this.decodeDiffTimestamp}removeBuffer(e,t){const i=ra();if(this.player.debug.log(this.TAG_NAME,`removeBuffer() start is ${e} and end is ${t} and _isMacOsFirefox is ${i}`),this.isStateOpen&&ba(i)){if(ba(this.getSourceBufferUpdating()))try{this.sourceBuffer.remove(e,t)}catch(e){this.player.debug.warn(this.TAG_NAME,"removeBuffer() sourceBuffer error",e)}if(ba(this.getAudioSourceBufferUpdating()))try{this.audioSourceBuffer.remove(e,t)}catch(e){this.player.debug.warn(this.TAG_NAME,"removeBuffer() audioSourceBuffer error",e)}}}clearUpAllSourceBuffer(){if(this.sourceBuffer){const e=this.sourceBuffer.buffered;for(let t=0;t=1)try{this.player.debug.log(this.TAG_NAME,"endOfStream()"),this.mediaSource.endOfStream()}catch(e){this.player.debug.warn(this.TAG_NAME,"endOfStream() error",e)}}abortSourceBuffer(){if(this.isStateOpen){if(this.sourceBuffer)try{this.player.debug.log(this.TAG_NAME,"abortSourceBuffer() abort sourceBuffer"),this.sourceBuffer.abort()}catch(e){}if(this.audioSourceBuffer)try{this.player.debug.log(this.TAG_NAME,"abortSourceBuffer() abort audioSourceBuffer"),this.audioSourceBuffer.abort()}catch(e){}}this.sourceBuffer=null,this.audioSourceBuffer=null}removeSourceBuffer(){if(!this.isStateClosed&&this.mediaSource){if(this.sourceBuffer)try{this.player.debug.log(this.TAG_NAME,"removeSourceBuffer() sourceBuffer"),this.mediaSource.removeSourceBuffer(this.sourceBuffer)}catch(e){this.player.debug.warn(this.TAG_NAME,"removeSourceBuffer() sourceBuffer error",e)}if(this.audioSourceBuffer)try{this.player.debug.log(this.TAG_NAME,"removeSourceBuffer() audioSourceBuffer"),this.mediaSource.removeSourceBuffer(this.audioSourceBuffer)}catch(e){this.player.debug.warn(this.TAG_NAME,"removeSourceBuffer() audioSourceBuffer error",e)}}}_hasPendingSegments(){return this.pendingSegments.length>0||this.pendingAudioSegments.length>0}getPendingSegmentsLength(){return this.pendingSegments.length}_handleUpdatePlaybackRate(){if(!this.$videoElement)return;const e=this.$videoElement;let t=(this.player._opt.videoBuffer+this.player._opt.videoBufferDelay)/1e3;const i=e.buffered;i.length&&i.start(0);const r=i.length?i.end(i.length-1):0;let s=e.currentTime;const a=r-s,n=Math.max(5,t+3);if(this.player.updateStats({mseVideoBufferDelayTime:a}),a>n)this.player.debug.log(this.TAG_NAME,`handleUpdatePlaybackRate and buffered is ${r} and current is ${s} , delay buffer is more than ${n} is ${a} and new time is ${r}`),e.currentTime=r,s=e.currentTime;else if(a<0){if(this.player.debug.warn(this.TAG_NAME,`handleUpdatePlaybackRate and delay buffer is ${r} - current is ${s} = ${a} < 0 and check video is paused : ${e.paused} `),0===r)return void this.player.emit(nt.mediaSourceBufferedIsZeroError,"video.buffered is empty");e.paused&&e.play()}const o=this._getPlaybackRate(r-s);e.playbackRate!==o&&(this.player.debug.log(this.TAG_NAME,`handleUpdatePlaybackRate and buffered is ${r} and current time is ${s} and delay is ${r-s} set playbackRate is ${o} `),e.playbackRate=o)}_handleUpdateBufferDelayTime(){const e=this.getVideoBufferDelayTime();this.player.updateStats({mseVideoBufferDelayTime:e})}_doAppendSegments(){if(this.isStateClosed||this.isStateEnded)this.player.debug.log(this.TAG_NAME,"_doAppendSegments() mediaSource is closed or ended and return");else if(null!==this.sourceBuffer){if(this.needInitAudio()&&null===this.audioSourceBuffer)return this.player.debug.log(this.TAG_NAME,"_doAppendSegments() audioSourceBuffer is null and need init audio source buffer"),void(null===this.audioSourceBufferCheckTimeout&&(this.audioSourceBufferCheckTimeout=setTimeout((()=>{this._clearAudioSourceBufferCheckTimeout(),this.player.emit(nt.mediaSourceAudioInitTimeout)}),1e3)));if(ba(this.getSourceBufferUpdating())&&this.pendingSegments.length>0){const e=this.pendingSegments.shift();try{this.sourceBuffer.appendBuffer(e)}catch(e){this.player.debug.error(this.TAG_NAME,"this.sourceBuffer.appendBuffer()",e.code,e),22===e.code?(this.stop(),this.mediaSourceAppendBufferFull=!0,this.player.emitError(nt.mediaSourceFull)):11===e.code?(this.stop(),this.mediaSourceAppendBufferError=!0,this.player.emitError(nt.mediaSourceAppendBufferError)):(this.stop(),this.mediaSourceBufferError=!0,this.player.emitError(rt.mseSourceBufferError,e))}}if(ba(this.getAudioSourceBufferUpdating())&&this.pendingAudioSegments.length>0){const e=this.pendingAudioSegments.shift();try{this.audioSourceBuffer.appendBuffer(e)}catch(e){this.player.debug.error(this.TAG_NAME,"this.audioSourceBuffer.appendBuffer()",e.code,e),22===e.code?(this.stop(),this.mediaSourceAppendBufferFull=!0,this.player.emitError(nt.mediaSourceFull)):11===e.code?(this.stop(),this.mediaSourceAppendBufferError=!0,this.player.emitError(nt.mediaSourceAppendBufferError)):(this.stop(),this.mediaSourceBufferError=!0,this.player.emitError(rt.mseSourceBufferError,e))}}}else this.player.debug.log(this.TAG_NAME,"_doAppendSegments() sourceBuffer is null and wait init and return")}_doCleanUpSourceBuffer(){if(!this.$videoElement)return;const e=this.$videoElement.currentTime;if(this.sourceBuffer){const t=this.sourceBuffer.buffered;let i=!1;for(let r=0;r=this.player._opt.mseAutoCleanupMaxBackwardDuration){i=!0;let t=e-this.player._opt.mseAutoCleanupMinBackwardDuration;this.pendingRemoveRanges.push({start:s,end:t})}}else a=this.player._opt.mseAutoCleanupMaxBackwardDuration){i=!0;let t=e-this.player._opt.mseAutoCleanupMinBackwardDuration;this.pendingAudioRemoveRanges.push({start:s,end:t})}}else a0||this.pendingAudioRemoveRanges.length>0}_doRemoveRanges(){if(this.sourceBuffer&&ba(this.getSourceBufferUpdating())){let e=this.pendingRemoveRanges;for(;e.length&&ba(this.getSourceBufferUpdating());){let t=e.shift();try{this.sourceBuffer.remove(t.start,t.end)}catch(e){this.player.debug.warn(this.TAG_NAME,"_doRemoveRanges() sourceBuffer error",e)}}}if(this.audioSourceBuffer&&ba(this.getAudioSourceBufferUpdating())){let e=this.pendingAudioRemoveRanges;for(;e.length&&ba(this.getAudioSourceBufferUpdating());){let t=e.shift();try{this.audioSourceBuffer.remove(t.start,t.end)}catch(e){this.player.debug.warn(this.TAG_NAME,"_doRemoveRanges() audioSourceBuffer error",e)}}}}getDecodePlaybackRate(){let e=0;const t=this.$videoElement;return t&&(e=t.playbackRate),e}_getPlaybackRate(e){const t=this.$videoElement;let i=this.player._opt.videoBufferDelay+this.player._opt.videoBuffer;const r=Math.max(i,1e3),s=r/2;return e*=1e3,1===t.playbackRate?e>r?1.2:1:e<=s?1:t.playbackRate}_needCleanupSourceBuffer(){if(ba(this.player._opt.mseAutoCleanupSourceBuffer)||!this.$videoElement)return!1;const e=this.$videoElement,t=e.buffered,i=e.currentTime;return t.length>=1&&i-t.start(0)>=this.player._opt.mseAutoCleanupMaxBackwardDuration}getVideoCurrentTime(){let e=0;return this.$videoElement&&(e=this.$videoElement.currentTime),e}getVideoBufferLastTime(){const e=this.$videoElement;let t=0;if(e){const i=e.buffered;i.length&&i.start(0);t=i.length?i.end(i.length-1):0}return t}getVideoBufferDelayTime(){const e=this.$videoElement;const t=this.getVideoBufferLastTime()-e.currentTime;return t>0?t:0}_clearAudioSourceBufferCheckTimeout(){this.audioSourceBufferCheckTimeout&&(clearTimeout(this.audioSourceBufferCheckTimeout),this.audioSourceBufferCheckTimeout=null)}_clearAudioNoDataCheckTimeout(){this.audioSourceNoDataCheckTimeout&&(clearTimeout(this.audioSourceNoDataCheckTimeout),this.audioSourceNoDataCheckTimeout=null)}}const Sd=()=>"wakeLock"in navigator&&-1===window.navigator.userAgent.indexOf("Samsung")&&ba(Ts());class wd{constructor(e){this.player=e,this.enabled=!1,Sd()?(this.player.debug.log("NoSleep","Native Wake Lock API supported."),this._wakeLock=null,this.handleVisibilityChange=()=>{null!==this._wakeLock&&"visible"===document.visibilityState&&this.enable()},document.addEventListener("visibilitychange",this.handleVisibilityChange),document.addEventListener("fullscreenchange",this.handleVisibilityChange)):(this.player.debug.log("NoSleep","Native Wake Lock API not supported. so use video element."),this.noSleepVideo=document.createElement("video"),this.noSleepVideo.setAttribute("title","No Sleep"),this.noSleepVideo.setAttribute("playsinline",""),this._addSourceToVideo(this.noSleepVideo,"webm","data:video/webm;base64,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ggOtgPj//qOHggPBgPj//qOHggPVgPj//qOHggPpgPj//qOegQPvANECAAUQrAAYABhYL/QACIAEM1+tck+ccwAAo4eCA/2A+P/+o4eCBBGA+P/+o4eCBCWA+P/+o4eCBDmA+P/+o4eCBE2A+P/+o56BBFMA0QIABRCsABgAGFgv9AAIgAQzX61yT5xzAACjh4IEiID4//6jh4IEnID4//6jh4IEsID4//6jnoEEtwDRAgAFEKwAGAAYWC/0AAiABDNfrXJPnHMAAKOHggTEgPj//qOHggTYgPj//qOHggTsgPj//qOHggUAgPj//qOHggUUgPj//qOegQUbANECAAUQrAAYABhYL/QACIAEM1+tck+ccwAAo4eCBSiA+P/+o4eCBTyA+P/+o4eCBVCA+P/+o4eCBWSA+P/+o4eCBXiA+P/+o56BBX8A0QIABRCsABgAGFgv9AAIgAQzX61yT5xzAACjh4IFjID4//6jh4IFoID4//6jh4IFtID4//6jh4IFyID4//6jh4IF3ID4//6jnoEF4wDRAgAFEKwAGAAYWC/0AAiABDNfrXJPnHMAAKOHggXwgPj//qOHggYEgPj//qOHggYYgPj//qOHggYsgPj//qOHggZAgPj//qOegQZHANECAAUQrAAYABhYL/QACIAEM1+tck+ccwAAo4eCBlSA+P/+o4eCBmiA+P/+o4eCBnyA+P/+o4eCBpCA+P/+o4eCBqSA+P/+o56BBqsA0QIABRCsABgAGFgv9AAIgAQzX61yT5xzAACjh4IGuID4//6jh4IGzID4//6jh4IG4ID4//6jh4IG9ID4//6jh4IHCID4//6jnoEHDwDRAgAFEBAUYABhYL/QACIAEM1+tck+ccwAAKOHggccgPj//qOHggcwgPj//qOHggdEgPj//qOHggdYgPj//qOHggdsgPj//qOegQdzANECAAUQrAAYABhYL/QACIAEM1+tck+ccwAAo4eCB4CA+P/+o4eCB5SA+P/+o4eCB6iA+P/+o4eCB7yA+P/+o4eCB9CA+P/+o56BB9cA0QIABRCsABgAGFgv9AAIgAQzX61yT5xzAACjh4IH5ID4//6jh4IH+ID4//6jh4IIDID4//6jh4IIIID4//6jh4IINID4//6jnoEIOwDRAgAFEKwAGAAYWC/0AAiABDNfrXJPnHMAAKOHgghIgPj//qOHgghcgPj//qOHgghwgPj//qOHggiEgPj//qOegQifANECAAUQrAAYABhYL/QACIAEM1+tck+ccwAAo4eCCMCA+P/+o4eCCNSA+P/+o4eCCOiA+P/+o4eCCPyA+P/+o56BCQMA0QIABRCsABgAGFgv9AAIgAQzX61yT5xzAACjh4IJEID4//6jh4IJJID4//6jh4IJOID4//6jh4IJTID4//6jh4IJYID4//6jnoEJZwDRAgAFEKwAGAAYWC/0AAiABDNfrXJPnHMAAKOHggl0gPj//qOHggmIgPj//qOHggmcgPj//qOHggmwgPj//qOHggnEgPj//qOegQnLANECAAUQrAAYABhYL/QACIAEM1+tck+ccwAAo4eCCdiA+P/+o4eCCeyA+P/+o4eCCgCA+P/+o4eCChSA+P/+o4eCCiiA+P/+o56BCi8A0QIABRCsABgAGFgv9AAIgAQzX61yT5xzAACjh4IKPID4//6jh4IKUID4//6jh4IKZID4//6jh4IKeID4//6jh4IKjID4//6jnoEKkwDRAgAFEKwAGAAYWC/0AAiABDNfrXJPnHMAAKOHggqggPj//qOHggq0gPj//qOHggrIgPj//qOHggrcgPj//qOHggrwgPj//qOegQr3ANECAAUQrAAYABhYL/QACIAEM1+tck+ccwAAo4eCCwSA+P/+o4eCCxiA+P/+o4eCCyyA+P/+o4eCC0CA+P/+o4eCC1SA+P/+o56BC1sA0QIABRAQFGAAYWC/0AAiABDNfrXJPnHMAACjh4ILaID4//6jh4ILfID4//6jh4ILkID4//6jh4ILpID4//6jh4ILuID4//6jnoELvwDRAgAFEKwAGAAYWC/0AAiABDNfrXJPnHMAAKOHggvMgPj//qOHggvggPj//qOHggv0gPj//qOHggwIgPj//qOHggwcgPj//qOegQwjANECAAUQrAAYABhYL/QACIAEM1+tck+ccwAAo4eCDDCA+P/+o4eCDESA+P/+o4eCDFiA+P/+o4eCDGyA+P/+o4eCDICA+P/+o56BDIcA0QIABRCsABgAGFgv9AAIgAQzX61yT5xzAACjh4IMlID4//6jh4IMqID4//6jh4IMvID4//6jh4IM0ID4//6jnoEM6wDRAgAFEKwAGAAYWC/0AAiABDNfrXJPnHMAAKOHgg0MgPj//qOHgg0ggPj//qOHgg00gPj//qOHgg1IgPj//qOegQ1PANECAAUQrAAYABhYL/QACIAEM1+tck+ccwAAo4eCDVyA+P/+o4eCDXCA+P/+o4eCDYSA+P/+o4eCDZiA+P/+o4eCDayA+P/+o56BDbMA0QIABRCsABgAGFgv9AAIgAQzX61yT5xzAACjh4INwID4//6jh4IN1ID4//6jh4IN6ID4//6jh4IN/ID4//6jh4IOEID4//6jnoEOFwDRAgAFEKwAGAAYWC/0AAiABDNfrXJPnHMAAKOHgg4kgPj//qOHgg44gPj//qOHgg5MgPj//qOHgg5ggPj//qOHgg50gPj//qOegQ57ANECAAUQrAAYABhYL/QACIAEM1+tck+ccwAAo4eCDoiA+P/+o4eCDpyA+P/+o4eCDrCA+P/+o4eCDsSA+P/+o4eCDtiA+P/+o56BDt8A0QIABRCsABgAGFgv9AAIgAQzX61yT5xzAACjh4IO7ID4//6jh4IPAID4//6jh4IPFID4//6jh4IPKID4//6jh4IPPID4//6jnoEPQwDRAgAFEKwAGAAYWC/0AAiABDNfrXJPnHMAAKOHgg9QgPj//qOHgg9kgPj//qOHgg94gPj//qOHgg+MgPj//qOHgg+ggPj//qOegQ+nANECAAUQEBRgAGFgv9AAIgAQzX61yT5xzAAAo4eCD7SA+P/+o4eCD8iA+P/+o4eCD9yA+P/+o4eCD/CA+P/+o4eCEASA+P/+o56BEAsA0QIABRCsABgAGFgv9AAIgAQzX61yT5xzAACjh4IQGID4//6jh4IQLID4//6jh4IQQID4//6jh4IQVID4//6jh4IQaID4//6jnoEQbwDRAgAFEKwAGAAYWC/0AAiABDNfrXJPnHMAAKOHghB8gPj//qOHghCQgPj//qOHghCkgPj//qOHghC4gPj//qOHghDMgPj//qOegRDTANECAAUQrAAYABhYL/QACIAEM1+tck+ccwAAo4eCEOCA+P/+o4eCEPSA+P/+o4eCEQiA+P/+o56BETcA0QIABRCsABgAGFgv9AAIgAQzX61yT5xzAACjh4IRQ4D4//6jh4IRV4D4//6jh4IRa4D4//6jh4IRf4D4//6jh4IRk4D4//6jnoERmwDRAgAFEKwAGAAYWC/0AAiABDNfrXJPnHMAAKOHghGngPj//qOHghG7gPj//qOHghHPgPj//qOHghHjgPj//qOHghH3gPj//qOegRH/ANECAAUQrAAYABhYL/QACIAEM1+tck+ccwAAo4eCEguA+P/+o4eCEh+A+P/+o4eCEjOA+P/+o4eCEkeA+P/+o4eCEluA+P/+o56BEmMA0QIABRCsABgAGFgv9AAIgAQzX61yT5xzAACjh4ISb4D4//6jh4ISg4D4//6jh4ISl4D4//6jh4ISq4D4//6jh4ISv4D4//6jnoESxwDRAgAFEKwAGAAYWC/0AAiABDNfrXJPnHMAAKOHghLTgPj//qOHghLngPj//qOHghL7gPj//qOHghMPgPj//qOHghMjgPj//qOegRMrANECAAUQrAAYABhYL/QACIAEM1+tck+ccwAAo4eCEzeA+P/+o4eCE0uA+P/+o4eCE1+A+P/+o4eCE3OA+P/+oAEAAAAAAAAPoYeCE4cA+P/+daKDB/KBHFO7a5G7j7OBB7eK94EB8YIDX/CBDA=="),this._addSourceToVideo(this.noSleepVideo,"mp4","data:video/mp4;base64,AAAAIGZ0eXBpc29tAAACAGlzb21pc28yYXZjMW1wNDEAAAAIZnJlZQAACORtZGF03gIATGF2YzU4LjM1LjEwMAACMEAOAAACcQYF//9t3EXpvebZSLeWLNgg2SPu73gyNjQgLSBjb3JlIDE2MSByMzAyNyA0MTIxMjc3IC0gSC4yNjQvTVBFRy00IEFWQyBjb2RlYyAtIENvcHlsZWZ0IDIwMDMtMjAyMCAtIGh0dHA6Ly93d3cudmlkZW9sYW4ub3JnL3gyNjQuaHRtbCAtIG9wdGlvbnM6IGNhYmFjPTAgcmVmPTMgZGVibG9jaz0xOjA6MCBhbmFseXNlPTB4MToweDExMSBtZT1oZXggc3VibWU9NyBwc3k9MSBwc3lfcmQ9MS4wMDowLjAwIG1peGVkX3JlZj0xIG1lX3JhbmdlPTE2IGNocm9tYV9tZT0xIHRyZWxsaXM9MSA4eDhkY3Q9MCBjcW09MCBkZWFkem9uZT0yMSwxMSBmYXN0X3Bza2lwPTEgY2hyb21hX3FwX29mZnNldD0tMiB0aHJlYWRzPTcgbG9va2FoZWFkX3RocmVhZHM9MSBzbGljZWRfdGhyZWFkcz0wIG5yPTAgZGVjaW1hdGU9MSBpbnRlcmxhY2VkPTAgYmx1cmF5X2NvbXBhdD0wIGNvbnN0cmFpbmVkX2ludHJhPTAgYmZyYW1lcz0wIHdlaWdodHA9MCBrZXlpbnQ9MjUwIGtleWludF9taW49MTAgc2NlbmVjdXQ9NDAgaW50cmFfcmVmcmVzaD0wIHJjX2xvb2thaGVhZD00MCByYz1jcmYgbWJ0cmVlPTEgY3JmPTIzLjAgcWNvbXA9MC42MCBxcG1pbj0wIHFwbWF4PTY5IHFwc3RlcD00IGlwX3JhdGlvPTEuNDAgYXE9MToxLjAwAIAAAADvZYiED/JigADD7JycnJycnJycnJycnJycnJycnJ11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111114BGCAHARggBwEYIAcBGCAHARggBwAAAAdBmjgf4BLYARggBwEYIAcBGCAHARggBwAAAAdBmlQH+AS2ARggBwEYIAcBGCAHARggBwAAAAdBmmA/wCWwARggBwEYIAcBGCAHARggBwEYIAcAAAAHQZqAP8AlsAEYIAcBGCAHARggBwEYIAcAAAAHQZqgP8AlsAEYIAcBGCAHARggBwEYIAcAAAAHQZrAP8AlsAEYIAcBGCAHARggBwEYIAcBGCAHAAAAB0Ga4D/AJbABGCAHARggBwEYIAcBGCAHAAAAB0GbAD/AJbABGCAHARggBwEYIAcBGCAHAAAAB0GbID/AJbABGCAHARggBwEYIAcBGCAHARggBwAAAAdBm0A/wCWwARggBwEYIAcBGCAHAAAAB0GbYD/AJbABGCAHARggBwEYIAcAAAAHQZuAP8AlsAEYIAcBGCAHARggBwEYIAcBGCAHAAAAB0GboD/AJbABGCAHARggBwEYIAcBGCAHAAAAB0GbwD/AJbABGCAHARggBwEYIAcBGCAHAAAAB0Gb4D/AJbABGCAHARggBwEYIAcBGCAHARggBwAAAAdBmgA/wCWwARggBwEYIAcBGCAHARggBwAAAAdBmiA/wCWwARggBwEYIAcBGCAHARggBwAAAAdBmkA/wCWwARggBwEYIAcBGCAHARggBwEYIAcAAAAHQZpgP8AlsAEYIAcBGCAHARggBwEYIAcAAAAHQZqAP8AlsAEYIAcBGCAHARggBwEYIAcAAAAHQZqgP8AlsAEYIAcBGCAHARggBwAAAAdBmsA/wCWwARggBwEYIAcBGCAHARggBwAAAAdBmuA/wCWwARggBwEYIAcBGCAHARggBwAAAAdBmwA/wCWwARggBwEYIAcBGCAHARggBwEYIAcAAAAHQZsgP8AlsAEYIAcBGCAHARggBwEYIAcAAAAHQZtAP8AlsAEYIAcBGCAHARggBwEYIAcAAAAHQZtgP8AlsAEYIAcBGCAHARggBwEYIAcBGCAHAAAAB0GbgD/AJbABGCAHARggBwEYIAcBGCAHAAAAB0GboD/AJbABGCAHARggBwEYIAcBGCAHAAAAB0GbwD/AJbABGCAHARggBwEYIAcBGCAHARggBwAAAAdB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"),Object.assign(this.noSleepVideo.style,{position:"absolute",left:"-100%",top:"-100%"}),document.querySelector("body").append(this.noSleepVideo),this.handleNoSleepVideoTimeUpdate=()=>{this.noSleepVideo&&this.noSleepVideo.currentTime>4&&(this.noSleepVideo.currentTime=1)},this.noSleepVideo.addEventListener("timeupdate",this.handleNoSleepVideoTimeUpdate))}destroy(){if(this._wakeLock&&(this._wakeLock.release(),this._wakeLock=null),this.noSleepVideo){this.handleNoSleepVideoTimeUpdate&&this.noSleepVideo.removeEventListener("timeupdate",this.handleNoSleepVideoTimeUpdate);try{this.noSleepVideo.parentNode&&this.noSleepVideo.parentNode.removeChild(this.noSleepVideo)}catch(e){this.player.debug.warn("NoSleep","Failed to remove noSleepVideo element.")}this.noSleepVideo=null}this.handleVisibilityChange&&(document.removeEventListener("visibilitychange",this.handleVisibilityChange),document.removeEventListener("fullscreenchange",this.handleVisibilityChange))}_addSourceToVideo(e,t,i){var r=document.createElement("source");r.src=i,r.type=`video/${t}`,e.appendChild(r)}get isEnabled(){return this.enabled}enable(){const e=this.player.debug;if(Sd())return navigator.wakeLock.request("screen").then((t=>{this._wakeLock=t,this.enabled=!0,e.log("wakeLock","Wake Lock active."),this._wakeLock.addEventListener("release",(()=>{e.log("wakeLock","Wake Lock released.")}))})).catch((t=>{throw this.enabled=!1,e.warn("wakeLock",`${t.name}, ${t.message}`),t}));return this.noSleepVideo.play().then((t=>(e.log("wakeLock","noSleepVideo Wake Lock active."),this.enabled=!0,t))).catch((t=>{throw e.warn("wakeLock",`noSleepVideo ${t.name}, ${t.message}`),this.enabled=!1,t}))}disable(){Sd()?(this._wakeLock&&this._wakeLock.release(),this._wakeLock=null):this.noSleepVideo&&this.noSleepVideo.pause(),this.enabled=!1,this.player.debug.log("wakeLock","Disabling wake lock.")}}var Td,kd=Kr((function(e,t){!function t(i){e.exports=function(){function e(e,t,i){if(r())return Reflect.construct.apply(null,arguments);var s=[null];s.push.apply(s,t);var a=new(e.bind.apply(e,s));return i&&f(a,i.prototype),a}function r(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(e){}return(r=function(){return!!e})()}function s(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,r)}return i}function a(e){for(var t=1;te.length)&&(t=e.length);for(var i=0,r=new Array(t);i=e.length?{done:!0}:{done:!1,value:e[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function b(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var _={exports:{}};!function(e,t){var i,r,s,a,n;i=/^(?=((?:[a-zA-Z0-9+\-.]+:)?))\1(?=((?:\/\/[^\/?#]*)?))\2(?=((?:(?:[^?#\/]*\/)*[^;?#\/]*)?))\3((?:;[^?#]*)?)(\?[^#]*)?(#[^]*)?$/,r=/^(?=([^\/?#]*))\1([^]*)$/,s=/(?:\/|^)\.(?=\/)/g,a=/(?:\/|^)\.\.\/(?!\.\.\/)[^\/]*(?=\/)/g,n={buildAbsoluteURL:function(e,t,i){if(i=i||{},e=e.trim(),!(t=t.trim())){if(!i.alwaysNormalize)return e;var s=n.parseURL(e);if(!s)throw new Error("Error trying to parse base URL.");return s.path=n.normalizePath(s.path),n.buildURLFromParts(s)}var a=n.parseURL(t);if(!a)throw new Error("Error trying to parse relative URL.");if(a.scheme)return i.alwaysNormalize?(a.path=n.normalizePath(a.path),n.buildURLFromParts(a)):t;var o=n.parseURL(e);if(!o)throw new Error("Error trying to parse base URL.");if(!o.netLoc&&o.path&&"/"!==o.path[0]){var l=r.exec(o.path);o.netLoc=l[1],o.path=l[2]}o.netLoc&&!o.path&&(o.path="/");var d={scheme:o.scheme,netLoc:a.netLoc,path:null,params:a.params,query:a.query,fragment:a.fragment};if(!a.netLoc&&(d.netLoc=o.netLoc,"/"!==a.path[0]))if(a.path){var h=o.path,c=h.substring(0,h.lastIndexOf("/")+1)+a.path;d.path=n.normalizePath(c)}else d.path=o.path,a.params||(d.params=o.params,a.query||(d.query=o.query));return null===d.path&&(d.path=i.alwaysNormalize?n.normalizePath(a.path):a.path),n.buildURLFromParts(d)},parseURL:function(e){var t=i.exec(e);return t?{scheme:t[1]||"",netLoc:t[2]||"",path:t[3]||"",params:t[4]||"",query:t[5]||"",fragment:t[6]||""}:null},normalizePath:function(e){for(e=e.split("").reverse().join("").replace(s,"");e.length!==(e=e.replace(a,"")).length;);return e.split("").reverse().join("")},buildURLFromParts:function(e){return e.scheme+e.netLoc+e.path+e.params+e.query+e.fragment}},e.exports=n}(_);var E=_.exports,S=Number.isFinite||function(e){return"number"==typeof e&&isFinite(e)},w=Number.isSafeInteger||function(e){return"number"==typeof e&&Math.abs(e)<=T},T=Number.MAX_SAFE_INTEGER||9007199254740991,k=function(e){return e.MEDIA_ATTACHING="hlsMediaAttaching",e.MEDIA_ATTACHED="hlsMediaAttached",e.MEDIA_DETACHING="hlsMediaDetaching",e.MEDIA_DETACHED="hlsMediaDetached",e.MEDIA_ENDED="hlsMediaEnded",e.BUFFER_RESET="hlsBufferReset",e.BUFFER_CODECS="hlsBufferCodecs",e.BUFFER_CREATED="hlsBufferCreated",e.BUFFER_APPENDING="hlsBufferAppending",e.BUFFER_APPENDED="hlsBufferAppended",e.BUFFER_EOS="hlsBufferEos",e.BUFFER_FLUSHING="hlsBufferFlushing",e.BUFFER_FLUSHED="hlsBufferFlushed",e.MANIFEST_LOADING="hlsManifestLoading",e.MANIFEST_LOADED="hlsManifestLoaded",e.MANIFEST_PARSED="hlsManifestParsed",e.LEVEL_SWITCHING="hlsLevelSwitching",e.LEVEL_SWITCHED="hlsLevelSwitched",e.LEVEL_LOADING="hlsLevelLoading",e.LEVEL_LOADED="hlsLevelLoaded",e.LEVEL_UPDATED="hlsLevelUpdated",e.LEVEL_PTS_UPDATED="hlsLevelPtsUpdated",e.LEVELS_UPDATED="hlsLevelsUpdated",e.AUDIO_TRACKS_UPDATED="hlsAudioTracksUpdated",e.AUDIO_TRACK_SWITCHING="hlsAudioTrackSwitching",e.AUDIO_TRACK_SWITCHED="hlsAudioTrackSwitched",e.AUDIO_TRACK_LOADING="hlsAudioTrackLoading",e.AUDIO_TRACK_LOADED="hlsAudioTrackLoaded",e.SUBTITLE_TRACKS_UPDATED="hlsSubtitleTracksUpdated",e.SUBTITLE_TRACKS_CLEARED="hlsSubtitleTracksCleared",e.SUBTITLE_TRACK_SWITCH="hlsSubtitleTrackSwitch",e.SUBTITLE_TRACK_LOADING="hlsSubtitleTrackLoading",e.SUBTITLE_TRACK_LOADED="hlsSubtitleTrackLoaded",e.SUBTITLE_FRAG_PROCESSED="hlsSubtitleFragProcessed",e.CUES_PARSED="hlsCuesParsed",e.NON_NATIVE_TEXT_TRACKS_FOUND="hlsNonNativeTextTracksFound",e.INIT_PTS_FOUND="hlsInitPtsFound",e.FRAG_LOADING="hlsFragLoading",e.FRAG_LOAD_EMERGENCY_ABORTED="hlsFragLoadEmergencyAborted",e.FRAG_LOADED="hlsFragLoaded",e.FRAG_DECRYPTED="hlsFragDecrypted",e.FRAG_PARSING_INIT_SEGMENT="hlsFragParsingInitSegment",e.FRAG_PARSING_USERDATA="hlsFragParsingUserdata",e.FRAG_PARSING_METADATA="hlsFragParsingMetadata",e.FRAG_PARSED="hlsFragParsed",e.FRAG_BUFFERED="hlsFragBuffered",e.FRAG_CHANGED="hlsFragChanged",e.FPS_DROP="hlsFpsDrop",e.FPS_DROP_LEVEL_CAPPING="hlsFpsDropLevelCapping",e.MAX_AUTO_LEVEL_UPDATED="hlsMaxAutoLevelUpdated",e.ERROR="hlsError",e.DESTROYING="hlsDestroying",e.KEY_LOADING="hlsKeyLoading",e.KEY_LOADED="hlsKeyLoaded",e.LIVE_BACK_BUFFER_REACHED="hlsLiveBackBufferReached",e.BACK_BUFFER_REACHED="hlsBackBufferReached",e.STEERING_MANIFEST_LOADED="hlsSteeringManifestLoaded",e}({}),C=function(e){return e.NETWORK_ERROR="networkError",e.MEDIA_ERROR="mediaError",e.KEY_SYSTEM_ERROR="keySystemError",e.MUX_ERROR="muxError",e.OTHER_ERROR="otherError",e}({}),R=function(e){return e.KEY_SYSTEM_NO_KEYS="keySystemNoKeys",e.KEY_SYSTEM_NO_ACCESS="keySystemNoAccess",e.KEY_SYSTEM_NO_SESSION="keySystemNoSession",e.KEY_SYSTEM_NO_CONFIGURED_LICENSE="keySystemNoConfiguredLicense",e.KEY_SYSTEM_LICENSE_REQUEST_FAILED="keySystemLicenseRequestFailed",e.KEY_SYSTEM_SERVER_CERTIFICATE_REQUEST_FAILED="keySystemServerCertificateRequestFailed",e.KEY_SYSTEM_SERVER_CERTIFICATE_UPDATE_FAILED="keySystemServerCertificateUpdateFailed",e.KEY_SYSTEM_SESSION_UPDATE_FAILED="keySystemSessionUpdateFailed",e.KEY_SYSTEM_STATUS_OUTPUT_RESTRICTED="keySystemStatusOutputRestricted",e.KEY_SYSTEM_STATUS_INTERNAL_ERROR="keySystemStatusInternalError",e.MANIFEST_LOAD_ERROR="manifestLoadError",e.MANIFEST_LOAD_TIMEOUT="manifestLoadTimeOut",e.MANIFEST_PARSING_ERROR="manifestParsingError",e.MANIFEST_INCOMPATIBLE_CODECS_ERROR="manifestIncompatibleCodecsError",e.LEVEL_EMPTY_ERROR="levelEmptyError",e.LEVEL_LOAD_ERROR="levelLoadError",e.LEVEL_LOAD_TIMEOUT="levelLoadTimeOut",e.LEVEL_PARSING_ERROR="levelParsingError",e.LEVEL_SWITCH_ERROR="levelSwitchError",e.AUDIO_TRACK_LOAD_ERROR="audioTrackLoadError",e.AUDIO_TRACK_LOAD_TIMEOUT="audioTrackLoadTimeOut",e.SUBTITLE_LOAD_ERROR="subtitleTrackLoadError",e.SUBTITLE_TRACK_LOAD_TIMEOUT="subtitleTrackLoadTimeOut",e.FRAG_LOAD_ERROR="fragLoadError",e.FRAG_LOAD_TIMEOUT="fragLoadTimeOut",e.FRAG_DECRYPT_ERROR="fragDecryptError",e.FRAG_PARSING_ERROR="fragParsingError",e.FRAG_GAP="fragGap",e.REMUX_ALLOC_ERROR="remuxAllocError",e.KEY_LOAD_ERROR="keyLoadError",e.KEY_LOAD_TIMEOUT="keyLoadTimeOut",e.BUFFER_ADD_CODEC_ERROR="bufferAddCodecError",e.BUFFER_INCOMPATIBLE_CODECS_ERROR="bufferIncompatibleCodecsError",e.BUFFER_APPEND_ERROR="bufferAppendError",e.BUFFER_APPENDING_ERROR="bufferAppendingError",e.BUFFER_STALLED_ERROR="bufferStalledError",e.BUFFER_FULL_ERROR="bufferFullError",e.BUFFER_SEEK_OVER_HOLE="bufferSeekOverHole",e.BUFFER_NUDGE_ON_STALL="bufferNudgeOnStall",e.INTERNAL_EXCEPTION="internalException",e.INTERNAL_ABORTED="aborted",e.UNKNOWN="unknown",e}({}),D=/^(\d+)x(\d+)$/,x=/(.+?)=(".*?"|.*?)(?:,|$)/g,L=function(){function e(t){"string"==typeof t&&(t=e.parseAttrList(t)),c(this,t)}var t=e.prototype;return t.decimalInteger=function(e){var t=parseInt(this[e],10);return t>Number.MAX_SAFE_INTEGER?1/0:t},t.hexadecimalInteger=function(e){if(this[e]){var t=(this[e]||"0x").slice(2);t=(1&t.length?"0":"")+t;for(var i=new Uint8Array(t.length/2),r=0;rNumber.MAX_SAFE_INTEGER?1/0:t},t.decimalFloatingPoint=function(e){return parseFloat(this[e])},t.optionalFloat=function(e,t){var i=this[e];return i?parseFloat(i):t},t.enumeratedString=function(e){return this[e]},t.bool=function(e){return"YES"===this[e]},t.decimalResolution=function(e){var t=D.exec(this[e]);if(null!==t)return{width:parseInt(t[1],10),height:parseInt(t[2],10)}},e.parseAttrList=function(e){var t,i={},r='"';for(x.lastIndex=0;null!==(t=x.exec(e));){var s=t[2];0===s.indexOf(r)&&s.lastIndexOf(r)===s.length-1&&(s=s.slice(1,-1)),i[t[1].trim()]=s}return i},d(e,[{key:"clientAttrs",get:function(){return Object.keys(this).filter((function(e){return"X-"===e.substring(0,2)}))}}])}(),I=function(e,t){this.trace=void 0,this.debug=void 0,this.log=void 0,this.warn=void 0,this.info=void 0,this.error=void 0;var i="["+e+"]:";this.trace=P,this.debug=t.debug.bind(null,i),this.log=t.log.bind(null,i),this.warn=t.warn.bind(null,i),this.info=t.info.bind(null,i),this.error=t.error.bind(null,i)},P=function(){},B={trace:P,debug:P,log:P,warn:P,info:P,error:P};function M(){return c({},B)}function U(e,t){var i=self.console[e];return i?i.bind(self.console,(t?"["+t+"] ":"")+"["+e+"] >"):P}function F(e,t,i){return t[e]?t[e].bind(t):U(e,i)}var O=M();function N(e,t,i){var r=M();if("object"==typeof console&&!0===e||"object"==typeof e){var s=["debug","log","info","warn","error"];s.forEach((function(t){r[t]=F(t,e,i)}));try{r.log('Debug logs enabled for "'+t+'" in hls.js version '+void 0)}catch(e){return M()}s.forEach((function(t){O[t]=F(t,e)}))}else c(O,r);return r}var G=O;function z(e){return"ID"!==e&&"CLASS"!==e&&"START-DATE"!==e&&"DURATION"!==e&&"END-DATE"!==e&&"END-ON-NEXT"!==e}function V(e){return"SCTE35-OUT"===e||"SCTE35-IN"===e}var H=function(){function e(e,t){if(this.attr=void 0,this._startDate=void 0,this._endDate=void 0,this._badValueForSameId=void 0,t){var i=t.attr;for(var r in i)if(Object.prototype.hasOwnProperty.call(e,r)&&e[r]!==i[r]){G.warn('DATERANGE tag attribute: "'+r+'" does not match for tags with ID: "'+e.ID+'"'),this._badValueForSameId=r;break}e=c(new L({}),i,e)}if(this.attr=e,this._startDate=new Date(e["START-DATE"]),"END-DATE"in this.attr){var s=new Date(this.attr["END-DATE"]);S(s.getTime())&&(this._endDate=s)}}return d(e,[{key:"id",get:function(){return this.attr.ID}},{key:"class",get:function(){return this.attr.CLASS}},{key:"startDate",get:function(){return this._startDate}},{key:"endDate",get:function(){if(this._endDate)return this._endDate;var e=this.duration;return null!==e?new Date(this._startDate.getTime()+1e3*e):null}},{key:"duration",get:function(){if("DURATION"in this.attr){var e=this.attr.decimalFloatingPoint("DURATION");if(S(e))return e}else if(this._endDate)return(this._endDate.getTime()-this._startDate.getTime())/1e3;return null}},{key:"plannedDuration",get:function(){return"PLANNED-DURATION"in this.attr?this.attr.decimalFloatingPoint("PLANNED-DURATION"):null}},{key:"endOnNext",get:function(){return this.attr.bool("END-ON-NEXT")}},{key:"isValid",get:function(){return!!this.id&&!this._badValueForSameId&&S(this.startDate.getTime())&&(null===this.duration||this.duration>=0)&&(!this.endOnNext||!!this.class)}}])}(),W=function(){this.aborted=!1,this.loaded=0,this.retry=0,this.total=0,this.chunkCount=0,this.bwEstimate=0,this.loading={start:0,first:0,end:0},this.parsing={start:0,end:0},this.buffering={start:0,first:0,end:0}},j={AUDIO:"audio",VIDEO:"video",AUDIOVIDEO:"audiovideo"},$=function(){function e(e){var t;this._byteRange=null,this._url=null,this.baseurl=void 0,this.relurl=void 0,this.elementaryStreams=((t={})[j.AUDIO]=null,t[j.VIDEO]=null,t[j.AUDIOVIDEO]=null,t),this.baseurl=e}return e.prototype.setByteRange=function(e,t){var i,r=e.split("@",2);i=1===r.length?(null==t?void 0:t.byteRangeEndOffset)||0:parseInt(r[1]),this._byteRange=[i,parseInt(r[0])+i]},d(e,[{key:"byteRange",get:function(){return this._byteRange?this._byteRange:[]}},{key:"byteRangeStartOffset",get:function(){return this.byteRange[0]}},{key:"byteRangeEndOffset",get:function(){return this.byteRange[1]}},{key:"url",get:function(){return!this._url&&this.baseurl&&this.relurl&&(this._url=E.buildAbsoluteURL(this.baseurl,this.relurl,{alwaysNormalize:!0})),this._url||""},set:function(e){this._url=e}}])}(),K=function(e){function t(t,i){var r;return(r=e.call(this,i)||this)._decryptdata=null,r.rawProgramDateTime=null,r.programDateTime=null,r.tagList=[],r.duration=0,r.sn=0,r.levelkeys=void 0,r.type=void 0,r.loader=null,r.keyLoader=null,r.level=-1,r.cc=0,r.startPTS=void 0,r.endPTS=void 0,r.startDTS=void 0,r.endDTS=void 0,r.start=0,r.deltaPTS=void 0,r.maxStartPTS=void 0,r.minEndPTS=void 0,r.stats=new W,r.data=void 0,r.bitrateTest=!1,r.title=null,r.initSegment=null,r.endList=void 0,r.gap=void 0,r.urlId=0,r.type=t,r}u(t,e);var i=t.prototype;return i.setKeyFormat=function(e){if(this.levelkeys){var t=this.levelkeys[e];t&&!this._decryptdata&&(this._decryptdata=t.getDecryptData(this.sn))}},i.abortRequests=function(){var e,t;null==(e=this.loader)||e.abort(),null==(t=this.keyLoader)||t.abort()},i.setElementaryStreamInfo=function(e,t,i,r,s,a){void 0===a&&(a=!1);var n=this.elementaryStreams,o=n[e];o?(o.startPTS=Math.min(o.startPTS,t),o.endPTS=Math.max(o.endPTS,i),o.startDTS=Math.min(o.startDTS,r),o.endDTS=Math.max(o.endDTS,s)):n[e]={startPTS:t,endPTS:i,startDTS:r,endDTS:s,partial:a}},i.clearElementaryStreamInfo=function(){var e=this.elementaryStreams;e[j.AUDIO]=null,e[j.VIDEO]=null,e[j.AUDIOVIDEO]=null},d(t,[{key:"decryptdata",get:function(){if(!this.levelkeys&&!this._decryptdata)return null;if(!this._decryptdata&&this.levelkeys&&!this.levelkeys.NONE){var e=this.levelkeys.identity;if(e)this._decryptdata=e.getDecryptData(this.sn);else{var t=Object.keys(this.levelkeys);if(1===t.length)return this._decryptdata=this.levelkeys[t[0]].getDecryptData(this.sn)}}return this._decryptdata}},{key:"end",get:function(){return this.start+this.duration}},{key:"endProgramDateTime",get:function(){if(null===this.programDateTime)return null;if(!S(this.programDateTime))return null;var e=S(this.duration)?this.duration:0;return this.programDateTime+1e3*e}},{key:"encrypted",get:function(){var e;if(null!=(e=this._decryptdata)&&e.encrypted)return!0;if(this.levelkeys){var t=Object.keys(this.levelkeys),i=t.length;if(i>1||1===i&&this.levelkeys[t[0]].encrypted)return!0}return!1}}])}($),q=function(e){function t(t,i,r,s,a){var n;(n=e.call(this,r)||this).fragOffset=0,n.duration=0,n.gap=!1,n.independent=!1,n.relurl=void 0,n.fragment=void 0,n.index=void 0,n.stats=new W,n.duration=t.decimalFloatingPoint("DURATION"),n.gap=t.bool("GAP"),n.independent=t.bool("INDEPENDENT"),n.relurl=t.enumeratedString("URI"),n.fragment=i,n.index=s;var o=t.enumeratedString("BYTERANGE");return o&&n.setByteRange(o,a),a&&(n.fragOffset=a.fragOffset+a.duration),n}return u(t,e),d(t,[{key:"start",get:function(){return this.fragment.start+this.fragOffset}},{key:"end",get:function(){return this.start+this.duration}},{key:"loaded",get:function(){var e=this.elementaryStreams;return!!(e.audio||e.video||e.audiovideo)}}])}($),Y=10,Q=function(){function e(e){this.PTSKnown=!1,this.alignedSliding=!1,this.averagetargetduration=void 0,this.endCC=0,this.endSN=0,this.fragments=void 0,this.fragmentHint=void 0,this.partList=null,this.dateRanges=void 0,this.live=!0,this.ageHeader=0,this.advancedDateTime=void 0,this.updated=!0,this.advanced=!0,this.availabilityDelay=void 0,this.misses=0,this.startCC=0,this.startSN=0,this.startTimeOffset=null,this.targetduration=0,this.totalduration=0,this.type=null,this.url=void 0,this.m3u8="",this.version=null,this.canBlockReload=!1,this.canSkipUntil=0,this.canSkipDateRanges=!1,this.skippedSegments=0,this.recentlyRemovedDateranges=void 0,this.partHoldBack=0,this.holdBack=0,this.partTarget=0,this.preloadHint=void 0,this.renditionReports=void 0,this.tuneInGoal=0,this.deltaUpdateFailed=void 0,this.driftStartTime=0,this.driftEndTime=0,this.driftStart=0,this.driftEnd=0,this.encryptedFragments=void 0,this.playlistParsingError=null,this.variableList=null,this.hasVariableRefs=!1,this.fragments=[],this.encryptedFragments=[],this.dateRanges={},this.url=e}return e.prototype.reloaded=function(e){if(!e)return this.advanced=!0,void(this.updated=!0);var t=this.lastPartSn-e.lastPartSn,i=this.lastPartIndex-e.lastPartIndex;this.updated=this.endSN!==e.endSN||!!i||!!t||!this.live,this.advanced=this.endSN>e.endSN||t>0||0===t&&i>0,this.updated||this.advanced?this.misses=Math.floor(.6*e.misses):this.misses=e.misses+1,this.availabilityDelay=e.availabilityDelay},d(e,[{key:"hasProgramDateTime",get:function(){return!!this.fragments.length&&S(this.fragments[this.fragments.length-1].programDateTime)}},{key:"levelTargetDuration",get:function(){return this.averagetargetduration||this.targetduration||Y}},{key:"drift",get:function(){var e=this.driftEndTime-this.driftStartTime;return e>0?1e3*(this.driftEnd-this.driftStart)/e:1}},{key:"edge",get:function(){return this.partEnd||this.fragmentEnd}},{key:"partEnd",get:function(){var e;return null!=(e=this.partList)&&e.length?this.partList[this.partList.length-1].end:this.fragmentEnd}},{key:"fragmentEnd",get:function(){var e;return null!=(e=this.fragments)&&e.length?this.fragments[this.fragments.length-1].end:0}},{key:"age",get:function(){return this.advancedDateTime?Math.max(Date.now()-this.advancedDateTime,0)/1e3:0}},{key:"lastPartIndex",get:function(){var e;return null!=(e=this.partList)&&e.length?this.partList[this.partList.length-1].index:-1}},{key:"lastPartSn",get:function(){var e;return null!=(e=this.partList)&&e.length?this.partList[this.partList.length-1].fragment.sn:this.endSN}}])}();function X(e){return Uint8Array.from(atob(e),(function(e){return e.charCodeAt(0)}))}function J(e){return Uint8Array.from(unescape(encodeURIComponent(e)),(function(e){return e.charCodeAt(0)}))}function Z(e){var t=J(e).subarray(0,16),i=new Uint8Array(16);return i.set(t,16-t.length),i}function ee(e){var t=function(e,t,i){var r=e[t];e[t]=e[i],e[i]=r};t(e,0,3),t(e,1,2),t(e,4,5),t(e,6,7)}function te(e){var t=e.split(":"),i=null;if("data"===t[0]&&2===t.length){var r=t[1].split(";"),s=r[r.length-1].split(",");if(2===s.length){var a="base64"===s[0],n=s[1];a?(r.splice(-1,1),i=X(n)):i=Z(n)}}return i}var ie={cbc:0,ctr:1};function re(e){return"AES-128"===e||"AES-256"===e||"AES-256-CTR"===e}function se(e){switch(e){case"AES-128":case"AES-256":return ie.cbc;case"AES-256-CTR":return ie.ctr;default:throw new Error("invalid full segment method "+e)}}var ae="undefined"!=typeof self?self:void 0,ne={CLEARKEY:"org.w3.clearkey",FAIRPLAY:"com.apple.fps",PLAYREADY:"com.microsoft.playready",WIDEVINE:"com.widevine.alpha"},oe={CLEARKEY:"org.w3.clearkey",FAIRPLAY:"com.apple.streamingkeydelivery",PLAYREADY:"com.microsoft.playready",WIDEVINE:"urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed"};function le(e){switch(e){case oe.FAIRPLAY:return ne.FAIRPLAY;case oe.PLAYREADY:return ne.PLAYREADY;case oe.WIDEVINE:return ne.WIDEVINE;case oe.CLEARKEY:return ne.CLEARKEY}}var de={WIDEVINE:"edef8ba979d64acea3c827dcd51d21ed"};function he(e){if(e===de.WIDEVINE)return ne.WIDEVINE}function ce(e){switch(e){case ne.FAIRPLAY:return oe.FAIRPLAY;case ne.PLAYREADY:return oe.PLAYREADY;case ne.WIDEVINE:return oe.WIDEVINE;case ne.CLEARKEY:return oe.CLEARKEY}}function ue(e){var t=e.drmSystems,i=e.widevineLicenseUrl,r=t?[ne.FAIRPLAY,ne.WIDEVINE,ne.PLAYREADY,ne.CLEARKEY].filter((function(e){return!!t[e]})):[];return!r[ne.WIDEVINE]&&i&&r.push(ne.WIDEVINE),r}var pe,fe=null!=ae&&null!=(pe=ae.navigator)&&pe.requestMediaKeySystemAccess?self.navigator.requestMediaKeySystemAccess.bind(self.navigator):null;function me(e,t,i,r){var s;switch(e){case ne.FAIRPLAY:s=["cenc","sinf"];break;case ne.WIDEVINE:case ne.PLAYREADY:s=["cenc"];break;case ne.CLEARKEY:s=["cenc","keyids"];break;default:throw new Error("Unknown key-system: "+e)}return ye(s,t,i,r)}function ye(e,t,i,r){return[{initDataTypes:e,persistentState:r.persistentState||"optional",distinctiveIdentifier:r.distinctiveIdentifier||"optional",sessionTypes:r.sessionTypes||[r.sessionType||"temporary"],audioCapabilities:t.map((function(e){return{contentType:'audio/mp4; codecs="'+e+'"',robustness:r.audioRobustness||"",encryptionScheme:r.audioEncryptionScheme||null}})),videoCapabilities:i.map((function(e){return{contentType:'video/mp4; codecs="'+e+'"',robustness:r.videoRobustness||"",encryptionScheme:r.videoEncryptionScheme||null}}))}]}function ge(e,t,i){return Uint8Array.prototype.slice?e.slice(t,i):new Uint8Array(Array.prototype.slice.call(e,t,i))}function Ae(e,t){if(void 0===t&&(t=!1),"undefined"!=typeof TextDecoder){var i=new TextDecoder("utf-8").decode(e);if(t){var r=i.indexOf("\0");return-1!==r?i.substring(0,r):i}return i.replace(/\0/g,"")}for(var s,a,n,o=e.length,l="",d=0;d>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:l+=String.fromCharCode(s);break;case 12:case 13:a=e[d++],l+=String.fromCharCode((31&s)<<6|63&a);break;case 14:a=e[d++],n=e[d++],l+=String.fromCharCode((15&s)<<12|(63&a)<<6|63&n)}}return l}var ve={hexDump:function(e){for(var t="",i=0;i>24,e[t+1]=i>>16&255,e[t+2]=i>>8&255,e[t+3]=255&i}function De(e){for(var t=e.byteLength,i=0;i8&&109===e[i+4]&&111===e[i+5]&&111===e[i+6]&&102===e[i+7])return!0;i=r>1?i+r:t}return!1}function xe(e,t){var i=[];if(!t.length)return i;for(var r=e.byteLength,s=0;s1?s+a:r;if(Se(e.subarray(s+4,s+8))===t[0])if(1===t.length)i.push(e.subarray(s+8,n));else{var o=xe(e.subarray(s+8,n),t.slice(1));o.length&&_e.apply(i,o)}s=n}return i}function Le(e){var t=[],i=e[0],r=8,s=Te(e,r);r+=4;var a=0,n=0;0===i?(a=Te(e,r),n=Te(e,r+4),r+=8):(a=ke(e,r),n=ke(e,r+8),r+=16),r+=2;var o=e.length+n,l=we(e,r);r+=2;for(var d=0;d>>31)return G.warn("SIDX has hierarchical references (not supported)"),null;var p=Te(e,h);h+=4,t.push({referenceSize:u,subsegmentDuration:p,info:{duration:p/s,start:o,end:o+u-1}}),o+=u,r=h+=4}return{earliestPresentationTime:a,timescale:s,version:i,referencesCount:l,references:t}}function Ie(e){for(var t=[],i=xe(e,["moov","trak"]),r=0;r7){var h=4;if(3!==d[h++])break;h=Be(d,h),h+=2;var c=d[h++];if(128&c&&(h+=2),64&c&&(h+=d[h++]),4!==d[h++])break;h=Be(d,h);var u=d[h++];if(64!==u)break;if(s+="."+Me(u),h+=12,5!==d[h++])break;h=Be(d,h);var p=d[h++],f=(248&p)>>3;31===f&&(f+=1+((7&p)<<3)+((224&d[h])>>5)),s+="."+f}break;case"hvc1":case"hev1":var m=xe(i,["hvcC"])[0],y=m[1],g=["","A","B","C"][y>>6],A=31&y,v=Te(m,2),b=(32&y)>>5?"H":"L",_=m[12],E=m.subarray(6,12);s+="."+g+A,s+="."+v.toString(16).toUpperCase(),s+="."+b+_;for(var S="",w=E.length;w--;){var T=E[w];(T||S)&&(S="."+T.toString(16).toUpperCase()+S)}s+=S;break;case"dvh1":case"dvhe":var k=xe(i,["dvcC"])[0],C=k[2]>>1&127,R=k[2]<<5&32|k[3]>>3&31;s+="."+Ue(C)+"."+Ue(R);break;case"vp09":var D=xe(i,["vpcC"])[0],x=D[4],L=D[5],I=D[6]>>4&15;s+="."+Ue(x)+"."+Ue(L)+"."+Ue(I);break;case"av01":var P=xe(i,["av1C"])[0],B=P[1]>>>5,M=31&P[1],U=P[2]>>>7?"H":"M",F=(64&P[2])>>6,O=(32&P[2])>>5,N=2===B&&F?O?12:10:F?10:8,G=(16&P[2])>>4,z=(8&P[2])>>3,V=(4&P[2])>>2,H=3&P[2],W=1,j=1,$=1,K=0;s+="."+B+"."+Ue(M)+U+"."+Ue(N)+"."+G+"."+z+V+H+"."+Ue(W)+"."+Ue(j)+"."+Ue($)+"."+K}return{codec:s,encrypted:a}}function Be(e,t){for(var i=t+5;128&e[t++]&&t0;s||(r=xe(t,["encv"])),r.forEach((function(e){xe(s?e.subarray(28):e.subarray(78),["sinf"]).forEach((function(e){var t=Oe(e);if(t){var r=t.subarray(8,24);r.some((function(e){return 0!==e}))||(G.log("[eme] Patching keyId in 'enc"+(s?"a":"v")+">sinf>>tenc' box: "+ve.hexDump(r)+" -> "+ve.hexDump(i)),t.set(i,8))}}))}))})),e}function Oe(e){var t=xe(e,["schm"])[0];if(t){var i=Se(t.subarray(4,8));if("cbcs"===i||"cenc"===i)return xe(e,["schi","tenc"])[0]}return G.error("[eme] missing 'schm' box"),null}function Ne(e,t){return xe(t,["moof","traf"]).reduce((function(t,i){var r=xe(i,["tfdt"])[0],s=r[0],a=xe(i,["tfhd"]).reduce((function(t,i){var a=Te(i,4),n=e[a];if(n){var o=Te(r,4);if(1===s){if(o===be)return G.warn("[mp4-demuxer]: Ignoring assumed invalid signed 64-bit track fragment decode time"),t;o*=be+1,o+=Te(r,8)}var l=o/(n.timescale||9e4);if(S(l)&&(null===t||l>1&63;return 39===i||40===i}return 6==(31&t)}function qe(e,t,i,r){var s=Ye(e),a=0;a+=t;for(var n=0,o=0,l=0;a=s.length)break;n+=l=s[a++]}while(255===l);o=0;do{if(a>=s.length)break;o+=l=s[a++]}while(255===l);var d=s.length-a,h=a;if(od){G.error("Malformed SEI payload. "+o+" is too small, only "+d+" bytes left to parse.");break}if(4===n){if(181===s[h++]){var c=we(s,h);if(h+=2,49===c){var u=Te(s,h);if(h+=4,1195456820===u){var p=s[h++];if(3===p){var f=s[h++],m=64&f,y=m?2+3*(31&f):0,g=new Uint8Array(y);if(m){g[0]=f;for(var A=1;A16){for(var v=[],b=0;b<16;b++){var _=s[h++].toString(16);v.push(1==_.length?"0"+_:_),3!==b&&5!==b&&7!==b&&9!==b||v.push("-")}for(var E=o-16,S=new Uint8Array(E),w=0;w1?t-1:0),r=1;r>24&255,o[1]=a>>16&255,o[2]=a>>8&255,o[3]=255&a,o.set(e,4),n=0,a=8;n0?(a=new Uint8Array(4),t.length>0&&new DataView(a.buffer).setUint32(0,t.length,!1)):a=new Uint8Array;var l=new Uint8Array(4);return i&&i.byteLength>0&&new DataView(l.buffer).setUint32(0,i.byteLength,!1),Xe([112,115,115,104],new Uint8Array([r,0,0,0]),e,a,s,l,i||new Uint8Array)}function Ze(e){if(!(e instanceof ArrayBuffer)||e.byteLength<32)return null;var t={version:0,systemId:"",kids:null,data:null},i=new DataView(e),r=i.getUint32(0);if(e.byteLength!==r&&r>44)return null;if(1886614376!==i.getUint32(4))return null;if(t.version=i.getUint32(8)>>>24,t.version>1)return null;t.systemId=ve.hexDump(new Uint8Array(e,12,16));var s=i.getUint32(28);if(0===t.version){if(r-32=22&&(this.keyId=r.subarray(r.length-22,r.length-6));break;case oe.PLAYREADY:var s=new Uint8Array([154,4,240,121,152,64,66,134,171,146,230,91,224,136,95,149]);this.pssh=Je(s,null,r);var a=new Uint16Array(r.buffer,r.byteOffset,r.byteLength/2),n=String.fromCharCode.apply(null,Array.from(a)),o=n.substring(n.indexOf("<"),n.length),l=(new DOMParser).parseFromString(o,"text/xml").getElementsByTagName("KID")[0];if(l){var d=l.childNodes[0]?l.childNodes[0].nodeValue:l.getAttribute("VALUE");if(d){var h=X(d).subarray(0,16);ee(h),this.keyId=h}}break;default:var c=r.subarray(0,16);if(16!==c.length){var u=new Uint8Array(16);u.set(c,16-c.length),c=u}this.keyId=c}if(!this.keyId||16!==this.keyId.byteLength){var p=et[this.uri];if(!p){var f=Object.keys(et).length%Number.MAX_SAFE_INTEGER;p=new Uint8Array(16),new DataView(p.buffer,12,4).setUint32(0,f),et[this.uri]=p}this.keyId=p}return this},e}();function it(e){for(var t=new Uint8Array(16),i=12;i<16;i++)t[i]=e>>8*(15-i)&255;return t}var rt=/\{\$([a-zA-Z0-9-_]+)\}/g;function st(e){return rt.test(e)}function at(e,t,i){if(null!==e.variableList||e.hasVariableRefs)for(var r=i.length;r--;){var s=i[r],a=t[s];a&&(t[s]=nt(e,a))}}function nt(e,t){if(null!==e.variableList||e.hasVariableRefs){var i=e.variableList;return t.replace(rt,(function(t){var r=t.substring(2,t.length-1),s=null==i?void 0:i[r];return void 0===s?(e.playlistParsingError||(e.playlistParsingError=new Error('Missing preceding EXT-X-DEFINE tag for Variable Reference: "'+r+'"')),t):s}))}return t}function ot(e,t,i){var r,s,a=e.variableList;if(a||(e.variableList=a={}),"QUERYPARAM"in t){r=t.QUERYPARAM;try{var n=new self.URL(i).searchParams;if(!n.has(r))throw new Error('"'+r+'" does not match any query parameter in URI: "'+i+'"');s=n.get(r)}catch(t){e.playlistParsingError||(e.playlistParsingError=new Error("EXT-X-DEFINE QUERYPARAM: "+t.message))}}else r=t.NAME,s=t.VALUE;r in a?e.playlistParsingError||(e.playlistParsingError=new Error('EXT-X-DEFINE duplicate Variable Name declarations: "'+r+'"')):a[r]=s||""}function lt(e,t,i){var r=t.IMPORT;if(i&&r in i){var s=e.variableList;s||(e.variableList=s={}),s[r]=i[r]}else e.playlistParsingError||(e.playlistParsingError=new Error('EXT-X-DEFINE IMPORT attribute not found in Multivariant Playlist: "'+r+'"'))}function dt(e){if(void 0===e&&(e=!0),"undefined"!=typeof self)return(e||!self.MediaSource)&&self.ManagedMediaSource||self.MediaSource||self.WebKitMediaSource}var ht={audio:{a3ds:1,"ac-3":.95,"ac-4":1,alac:.9,alaw:1,dra1:1,"dts+":1,"dts-":1,dtsc:1,dtse:1,dtsh:1,"ec-3":.9,enca:1,fLaC:.9,flac:.9,FLAC:.9,g719:1,g726:1,m4ae:1,mha1:1,mha2:1,mhm1:1,mhm2:1,mlpa:1,mp4a:1,"raw ":1,Opus:1,opus:1,samr:1,sawb:1,sawp:1,sevc:1,sqcp:1,ssmv:1,twos:1,ulaw:1},video:{avc1:1,avc2:1,avc3:1,avc4:1,avcp:1,av01:.8,drac:1,dva1:1,dvav:1,dvh1:.7,dvhe:.7,encv:1,hev1:.75,hvc1:.75,mjp2:1,mp4v:1,mvc1:1,mvc2:1,mvc3:1,mvc4:1,resv:1,rv60:1,s263:1,svc1:1,svc2:1,"vc-1":1,vp08:1,vp09:.9},text:{stpp:1,wvtt:1}};function ct(e,t){var i=ht[t];return!!i&&!!i[e.slice(0,4)]}function ut(e,t,i){return void 0===i&&(i=!0),!e.split(",").some((function(e){return!pt(e,t,i)}))}function pt(e,t,i){var r;void 0===i&&(i=!0);var s=dt(i);return null!=(r=null==s?void 0:s.isTypeSupported(ft(e,t)))&&r}function ft(e,t){return t+'/mp4;codecs="'+e+'"'}function mt(e){if(e){var t=e.substring(0,4);return ht.video[t]}return 2}function yt(e){return e.split(",").reduce((function(e,t){var i=ht.video[t];return i?(2*i+e)/(e?3:2):(ht.audio[t]+e)/(e?2:1)}),0)}var gt={};function At(e,t){if(void 0===t&&(t=!0),gt[e])return gt[e];for(var i={flac:["flac","fLaC","FLAC"],opus:["opus","Opus"],"mp4a.40.34":["mp3"]}[e],r=0;r2){var i=t.shift()+".";return i+=parseInt(t.shift()).toString(16),i+=("000"+parseInt(t.shift()).toString(16)).slice(-4)}return e}function St(e){var t=dt(e)||{isTypeSupported:function(){return!1}};return{mpeg:t.isTypeSupported("audio/mpeg"),mp3:t.isTypeSupported('audio/mp4; codecs="mp3"'),ac3:t.isTypeSupported('audio/mp4; codecs="ac-3"')}}var wt=/#EXT-X-STREAM-INF:([^\r\n]*)(?:[\r\n](?:#[^\r\n]*)?)*([^\r\n]+)|#EXT-X-(SESSION-DATA|SESSION-KEY|DEFINE|CONTENT-STEERING|START):([^\r\n]*)[\r\n]+/g,Tt=/#EXT-X-MEDIA:(.*)/g,kt=/^#EXT(?:INF|-X-TARGETDURATION):/m,Ct=new RegExp([/#EXTINF:\s*(\d*(?:\.\d+)?)(?:,(.*)\s+)?/.source,/(?!#) *(\S[\S ]*)/.source,/#EXT-X-BYTERANGE:*(.+)/.source,/#EXT-X-PROGRAM-DATE-TIME:(.+)/.source,/#.*/.source].join("|"),"g"),Rt=new RegExp([/#(EXTM3U)/.source,/#EXT-X-(DATERANGE|DEFINE|KEY|MAP|PART|PART-INF|PLAYLIST-TYPE|PRELOAD-HINT|RENDITION-REPORT|SERVER-CONTROL|SKIP|START):(.+)/.source,/#EXT-X-(BITRATE|DISCONTINUITY-SEQUENCE|MEDIA-SEQUENCE|TARGETDURATION|VERSION): *(\d+)/.source,/#EXT-X-(DISCONTINUITY|ENDLIST|GAP|INDEPENDENT-SEGMENTS)/.source,/(#)([^:]*):(.*)/.source,/(#)(.*)(?:.*)\r?\n?/.source].join("|")),Dt=function(){function e(){}return e.findGroup=function(e,t){for(var i=0;i0&&a.length0&&j.bool("CAN-SKIP-DATERANGES"),d.partHoldBack=j.optionalFloat("PART-HOLD-BACK",0),d.holdBack=j.optionalFloat("HOLD-BACK",0);break;case"PART-INF":var $=new L(R);d.partTarget=$.decimalFloatingPoint("PART-TARGET");break;case"PART":var Y=d.partList;Y||(Y=d.partList=[]);var X=f>0?Y[Y.length-1]:void 0,J=f++,Z=new L(R);at(d,Z,["BYTERANGE","URI"]);var ee=new q(Z,A,t,J,X);Y.push(ee),A.duration+=ee.duration;break;case"PRELOAD-HINT":var te=new L(R);at(d,te,["URI"]),d.preloadHint=te;break;case"RENDITION-REPORT":var ie=new L(R);at(d,ie,["URI"]),d.renditionReports=d.renditionReports||[],d.renditionReports.push(ie);break;default:G.warn("line parsed but not handled: "+n)}}}g&&!g.relurl?(h.pop(),m-=g.duration,d.partList&&(d.fragmentHint=g)):d.partList&&(Mt(A,g),A.cc=y,d.fragmentHint=A,l&&Ft(A,l,d));var re=h.length,se=h[0],ae=h[re-1];if((m+=d.skippedSegments*d.targetduration)>0&&re&&ae){d.averagetargetduration=m/re;var ne=ae.sn;d.endSN="initSegment"!==ne?ne:0,d.live||(ae.endList=!0),se&&(d.startCC=se.cc)}else d.endSN=0,d.startCC=0;return d.fragmentHint&&(m+=d.fragmentHint.duration),d.totalduration=m,d.endCC=y,v>0&&Bt(h,v),d},e}();function xt(e,t,i){var r,s,a=new L(e);at(i,a,["KEYFORMAT","KEYFORMATVERSIONS","URI","IV","URI"]);var n=null!=(r=a.METHOD)?r:"",o=a.URI,l=a.hexadecimalInteger("IV"),d=a.KEYFORMATVERSIONS,h=null!=(s=a.KEYFORMAT)?s:"identity";o&&a.IV&&!l&&G.error("Invalid IV: "+a.IV);var c=o?Dt.resolve(o,t):"",u=(d||"1").split("/").map(Number).filter(Number.isFinite);return new tt(n,c,h,u,l)}function Lt(e){var t=new L(e).decimalFloatingPoint("TIME-OFFSET");return S(t)?t:null}function It(e,t){var i=(e||"").split(/[ ,]+/).filter((function(e){return e}));["video","audio","text"].forEach((function(e){var r=i.filter((function(t){return ct(t,e)}));r.length&&(t[e+"Codec"]=r.join(","),i=i.filter((function(e){return-1===r.indexOf(e)})))})),t.unknownCodecs=i}function Pt(e,t,i){var r=t[i];r&&(e[i]=r)}function Bt(e,t){for(var i=e[t],r=t;r--;){var s=e[r];if(!s)return;s.programDateTime=i.programDateTime-1e3*s.duration,i=s}}function Mt(e,t){e.rawProgramDateTime?e.programDateTime=Date.parse(e.rawProgramDateTime):null!=t&&t.programDateTime&&(e.programDateTime=t.endProgramDateTime),S(e.programDateTime)||(e.programDateTime=null,e.rawProgramDateTime=null)}function Ut(e,t,i,r){e.relurl=t.URI,t.BYTERANGE&&e.setByteRange(t.BYTERANGE),e.level=i,e.sn="initSegment",r&&(e.levelkeys=r),e.initSegment=null}function Ft(e,t,i){e.levelkeys=t;var r=i.encryptedFragments;r.length&&r[r.length-1].levelkeys===t||!Object.keys(t).some((function(e){return t[e].isCommonEncryption}))||r.push(e)}var Ot={MANIFEST:"manifest",LEVEL:"level",AUDIO_TRACK:"audioTrack",SUBTITLE_TRACK:"subtitleTrack"},Nt={MAIN:"main",AUDIO:"audio",SUBTITLE:"subtitle"};function Gt(e){switch(e.type){case Ot.AUDIO_TRACK:return Nt.AUDIO;case Ot.SUBTITLE_TRACK:return Nt.SUBTITLE;default:return Nt.MAIN}}function zt(e,t){var i=e.url;return void 0!==i&&0!==i.indexOf("data:")||(i=t.url),i}var Vt=function(){function e(e){this.hls=void 0,this.loaders=Object.create(null),this.variableList=null,this.hls=e,this.registerListeners()}var t=e.prototype;return t.startLoad=function(e){},t.stopLoad=function(){this.destroyInternalLoaders()},t.registerListeners=function(){var e=this.hls;e.on(k.MANIFEST_LOADING,this.onManifestLoading,this),e.on(k.LEVEL_LOADING,this.onLevelLoading,this),e.on(k.AUDIO_TRACK_LOADING,this.onAudioTrackLoading,this),e.on(k.SUBTITLE_TRACK_LOADING,this.onSubtitleTrackLoading,this)},t.unregisterListeners=function(){var e=this.hls;e.off(k.MANIFEST_LOADING,this.onManifestLoading,this),e.off(k.LEVEL_LOADING,this.onLevelLoading,this),e.off(k.AUDIO_TRACK_LOADING,this.onAudioTrackLoading,this),e.off(k.SUBTITLE_TRACK_LOADING,this.onSubtitleTrackLoading,this)},t.createInternalLoader=function(e){var t=this.hls.config,i=t.pLoader,r=t.loader,s=new(i||r)(t);return this.loaders[e.type]=s,s},t.getInternalLoader=function(e){return this.loaders[e.type]},t.resetInternalLoader=function(e){this.loaders[e]&&delete this.loaders[e]},t.destroyInternalLoaders=function(){for(var e in this.loaders){var t=this.loaders[e];t&&t.destroy(),this.resetInternalLoader(e)}},t.destroy=function(){this.variableList=null,this.unregisterListeners(),this.destroyInternalLoaders()},t.onManifestLoading=function(e,t){var i=t.url;this.variableList=null,this.load({id:null,level:0,responseType:"text",type:Ot.MANIFEST,url:i,deliveryDirectives:null})},t.onLevelLoading=function(e,t){var i=t.id,r=t.level,s=t.pathwayId,a=t.url,n=t.deliveryDirectives;this.load({id:i,level:r,pathwayId:s,responseType:"text",type:Ot.LEVEL,url:a,deliveryDirectives:n})},t.onAudioTrackLoading=function(e,t){var i=t.id,r=t.groupId,s=t.url,a=t.deliveryDirectives;this.load({id:i,groupId:r,level:null,responseType:"text",type:Ot.AUDIO_TRACK,url:s,deliveryDirectives:a})},t.onSubtitleTrackLoading=function(e,t){var i=t.id,r=t.groupId,s=t.url,a=t.deliveryDirectives;this.load({id:i,groupId:r,level:null,responseType:"text",type:Ot.SUBTITLE_TRACK,url:s,deliveryDirectives:a})},t.load=function(e){var t,i,r,s=this,a=this.hls.config,n=this.getInternalLoader(e);if(n){var o=n.context;if(o&&o.url===e.url&&o.level===e.level)return void this.hls.logger.trace("[playlist-loader]: playlist request ongoing");this.hls.logger.log("[playlist-loader]: aborting previous loader for type: "+e.type),n.abort()}if(i=e.type===Ot.MANIFEST?a.manifestLoadPolicy.default:c({},a.playlistLoadPolicy.default,{timeoutRetry:null,errorRetry:null}),n=this.createInternalLoader(e),S(null==(t=e.deliveryDirectives)?void 0:t.part)&&(e.type===Ot.LEVEL&&null!==e.level?r=this.hls.levels[e.level].details:e.type===Ot.AUDIO_TRACK&&null!==e.id?r=this.hls.audioTracks[e.id].details:e.type===Ot.SUBTITLE_TRACK&&null!==e.id&&(r=this.hls.subtitleTracks[e.id].details),r)){var l=r.partTarget,d=r.targetduration;if(l&&d){var h=1e3*Math.max(3*l,.8*d);i=c({},i,{maxTimeToFirstByteMs:Math.min(h,i.maxTimeToFirstByteMs),maxLoadTimeMs:Math.min(h,i.maxTimeToFirstByteMs)})}}var u=i.errorRetry||i.timeoutRetry||{},p={loadPolicy:i,timeout:i.maxLoadTimeMs,maxRetry:u.maxNumRetry||0,retryDelay:u.retryDelayMs||0,maxRetryDelay:u.maxRetryDelayMs||0},f={onSuccess:function(e,t,i,r){var a=s.getInternalLoader(i);s.resetInternalLoader(i.type);var n=e.data;0===n.indexOf("#EXTM3U")?(t.parsing.start=performance.now(),Dt.isMediaPlaylist(n)?s.handleTrackOrLevelPlaylist(e,t,i,r||null,a):s.handleMasterPlaylist(e,t,i,r)):s.handleManifestParsingError(e,i,new Error("no EXTM3U delimiter"),r||null,t)},onError:function(e,t,i,r){s.handleNetworkError(t,i,!1,e,r)},onTimeout:function(e,t,i){s.handleNetworkError(t,i,!0,void 0,e)}};n.load(e,p,f)},t.handleMasterPlaylist=function(e,t,i,r){var s=this.hls,a=e.data,n=zt(e,i),o=Dt.parseMasterPlaylist(a,n);if(o.playlistParsingError)this.handleManifestParsingError(e,i,o.playlistParsingError,r,t);else{var l=o.contentSteering,d=o.levels,h=o.sessionData,c=o.sessionKeys,u=o.startTimeOffset,p=o.variableList;this.variableList=p;var f=Dt.parseMasterPlaylistMedia(a,n,o),m=f.AUDIO,y=void 0===m?[]:m,g=f.SUBTITLES,A=f["CLOSED-CAPTIONS"];y.length&&(y.some((function(e){return!e.url}))||!d[0].audioCodec||d[0].attrs.AUDIO||(this.hls.logger.log("[playlist-loader]: audio codec signaled in quality level, but no embedded audio track signaled, create one"),y.unshift({type:"main",name:"main",groupId:"main",default:!1,autoselect:!1,forced:!1,id:-1,attrs:new L({}),bitrate:0,url:""}))),s.trigger(k.MANIFEST_LOADED,{levels:d,audioTracks:y,subtitles:g,captions:A,contentSteering:l,url:n,stats:t,networkDetails:r,sessionData:h,sessionKeys:c,startTimeOffset:u,variableList:p})}},t.handleTrackOrLevelPlaylist=function(e,t,i,r,s){var a=this.hls,n=i.id,o=i.level,l=i.type,d=zt(e,i),h=0,c=S(o)?o:S(n)?n:0,u=Gt(i),p=Dt.parseLevelPlaylist(e.data,d,c,u,h,this.variableList);if(l===Ot.MANIFEST){var f={attrs:new L({}),bitrate:0,details:p,name:"",url:d};a.trigger(k.MANIFEST_LOADED,{levels:[f],audioTracks:[],url:d,stats:t,networkDetails:r,sessionData:null,sessionKeys:null,contentSteering:null,startTimeOffset:null,variableList:null})}t.parsing.end=performance.now(),i.levelDetails=p,this.handlePlaylistLoaded(p,e,t,i,r,s)},t.handleManifestParsingError=function(e,t,i,r,s){this.hls.trigger(k.ERROR,{type:C.NETWORK_ERROR,details:R.MANIFEST_PARSING_ERROR,fatal:t.type===Ot.MANIFEST,url:e.url,err:i,error:i,reason:i.message,response:e,context:t,networkDetails:r,stats:s})},t.handleNetworkError=function(e,t,i,r,s){void 0===i&&(i=!1);var n="A network "+(i?"timeout":"error"+(r?" (status "+r.code+")":""))+" occurred while loading "+e.type;e.type===Ot.LEVEL?n+=": "+e.level+" id: "+e.id:e.type!==Ot.AUDIO_TRACK&&e.type!==Ot.SUBTITLE_TRACK||(n+=" id: "+e.id+' group-id: "'+e.groupId+'"');var o=new Error(n);this.hls.logger.warn("[playlist-loader]: "+n);var l=R.UNKNOWN,d=!1,h=this.getInternalLoader(e);switch(e.type){case Ot.MANIFEST:l=i?R.MANIFEST_LOAD_TIMEOUT:R.MANIFEST_LOAD_ERROR,d=!0;break;case Ot.LEVEL:l=i?R.LEVEL_LOAD_TIMEOUT:R.LEVEL_LOAD_ERROR,d=!1;break;case Ot.AUDIO_TRACK:l=i?R.AUDIO_TRACK_LOAD_TIMEOUT:R.AUDIO_TRACK_LOAD_ERROR,d=!1;break;case Ot.SUBTITLE_TRACK:l=i?R.SUBTITLE_TRACK_LOAD_TIMEOUT:R.SUBTITLE_LOAD_ERROR,d=!1}h&&this.resetInternalLoader(e.type);var c={type:C.NETWORK_ERROR,details:l,fatal:d,url:e.url,loader:h,context:e,error:o,networkDetails:t,stats:s};if(r){var u=(null==t?void 0:t.url)||e.url;c.response=a({url:u,data:void 0},r)}this.hls.trigger(k.ERROR,c)},t.handlePlaylistLoaded=function(e,t,i,r,s,a){var n=this.hls,o=r.type,l=r.level,d=r.id,h=r.groupId,c=r.deliveryDirectives,u=zt(t,r),p=Gt(r),f="number"==typeof r.level&&p===Nt.MAIN?l:void 0;if(e.fragments.length){e.targetduration||(e.playlistParsingError=new Error("Missing Target Duration"));var m=e.playlistParsingError;if(m)n.trigger(k.ERROR,{type:C.NETWORK_ERROR,details:R.LEVEL_PARSING_ERROR,fatal:!1,url:u,error:m,reason:m.message,response:t,context:r,level:f,parent:p,networkDetails:s,stats:i});else switch(e.live&&a&&(a.getCacheAge&&(e.ageHeader=a.getCacheAge()||0),a.getCacheAge&&!isNaN(e.ageHeader)||(e.ageHeader=0)),o){case Ot.MANIFEST:case Ot.LEVEL:n.trigger(k.LEVEL_LOADED,{details:e,level:f||0,id:d||0,stats:i,networkDetails:s,deliveryDirectives:c});break;case Ot.AUDIO_TRACK:n.trigger(k.AUDIO_TRACK_LOADED,{details:e,id:d||0,groupId:h||"",stats:i,networkDetails:s,deliveryDirectives:c});break;case Ot.SUBTITLE_TRACK:n.trigger(k.SUBTITLE_TRACK_LOADED,{details:e,id:d||0,groupId:h||"",stats:i,networkDetails:s,deliveryDirectives:c})}}else{var y=new Error("No Segments found in Playlist");n.trigger(k.ERROR,{type:C.NETWORK_ERROR,details:R.LEVEL_EMPTY_ERROR,fatal:!1,url:u,error:y,reason:y.message,response:t,context:r,level:f,parent:p,networkDetails:s,stats:i})}},e}();function Ht(e,t){var i;try{i=new Event("addtrack")}catch(e){(i=document.createEvent("Event")).initEvent("addtrack",!1,!1)}i.track=e,t.dispatchEvent(i)}function Wt(e,t){var i=e.mode;if("disabled"===i&&(e.mode="hidden"),e.cues&&!e.cues.getCueById(t.id))try{if(e.addCue(t),!e.cues.getCueById(t.id))throw new Error("addCue is failed for: "+t)}catch(i){G.debug("[texttrack-utils]: "+i);try{var r=new self.TextTrackCue(t.startTime,t.endTime,t.text);r.id=t.id,e.addCue(r)}catch(e){G.debug("[texttrack-utils]: Legacy TextTrackCue fallback failed: "+e)}}"disabled"===i&&(e.mode=i)}function jt(e){var t=e.mode;if("disabled"===t&&(e.mode="hidden"),e.cues)for(var i=e.cues.length;i--;)e.removeCue(e.cues[i]);"disabled"===t&&(e.mode=t)}function $t(e,t,i,r){var s=e.mode;if("disabled"===s&&(e.mode="hidden"),e.cues&&e.cues.length>0)for(var a=qt(e.cues,t,i),n=0;ne[i].endTime)return-1;for(var r=0,s=i;r<=s;){var a=Math.floor((s+r)/2);if(te[a].startTime&&r-1)for(var a=s,n=e.length;a=t&&o.endTime<=i)r.push(o);else if(o.startTime>i)return r}return r}function Yt(e){for(var t=[],i=0;i>6&1&&(t+=mi);for(var s=(t+=mi)+r;t+yiEi&&(c=Ei),c-h<=0&&(c=h+vi);for(var u=0;ut.startDate&&(!e||t.startDate.05&&t.forwardBufferLength>1){var d=Math.min(2,Math.max(1,n)),h=Math.round(2/(1+Math.exp(-.75*l-t.edgeStalled))*20)/20;e.playbackRate=Math.min(d,Math.max(1,h))}else 1!==e.playbackRate&&0!==e.playbackRate&&(e.playbackRate=1)}}}}},this.hls=e,this.config=e.config,this.registerListeners()}var t=e.prototype;return t.destroy=function(){this.unregisterListeners(),this.onMediaDetaching(),this.levelDetails=null,this.hls=null},t.registerListeners=function(){this.hls.on(k.MEDIA_ATTACHED,this.onMediaAttached,this),this.hls.on(k.MEDIA_DETACHING,this.onMediaDetaching,this),this.hls.on(k.MANIFEST_LOADING,this.onManifestLoading,this),this.hls.on(k.LEVEL_UPDATED,this.onLevelUpdated,this),this.hls.on(k.ERROR,this.onError,this)},t.unregisterListeners=function(){this.hls.off(k.MEDIA_ATTACHED,this.onMediaAttached,this),this.hls.off(k.MEDIA_DETACHING,this.onMediaDetaching,this),this.hls.off(k.MANIFEST_LOADING,this.onManifestLoading,this),this.hls.off(k.LEVEL_UPDATED,this.onLevelUpdated,this),this.hls.off(k.ERROR,this.onError,this)},t.onMediaAttached=function(e,t){this.media=t.media,this.media.addEventListener("timeupdate",this.onTimeupdate)},t.onMediaDetaching=function(){this.media&&(this.media.removeEventListener("timeupdate",this.onTimeupdate),this.media=null)},t.onManifestLoading=function(){this.levelDetails=null,this._latency=null,this.stallCount=0},t.onLevelUpdated=function(e,t){var i=t.details;this.levelDetails=i,i.advanced&&this.onTimeupdate(),!i.live&&this.media&&this.media.removeEventListener("timeupdate",this.onTimeupdate)},t.onError=function(e,t){var i;t.details===R.BUFFER_STALLED_ERROR&&(this.stallCount++,null!=(i=this.levelDetails)&&i.live&&this.hls.logger.warn("[latency-controller]: Stall detected, adjusting target latency"))},t.estimateLiveEdge=function(){var e=this.levelDetails;return null===e?null:e.edge+e.age},t.computeLatency=function(){var e=this.estimateLiveEdge();return null===e?null:e-this.currentTime},d(e,[{key:"latency",get:function(){return this._latency||0}},{key:"maxLatency",get:function(){var e=this.config,t=this.levelDetails;return void 0!==e.liveMaxLatencyDuration?e.liveMaxLatencyDuration:t?e.liveMaxLatencyDurationCount*t.targetduration:0}},{key:"targetLatency",get:function(){var e=this.levelDetails;if(null===e)return null;var t=e.holdBack,i=e.partHoldBack,r=e.targetduration,s=this.config,a=s.liveSyncDuration,n=s.liveSyncDurationCount,o=s.lowLatencyMode,l=this.hls.userConfig,d=o&&i||t;(l.liveSyncDuration||l.liveSyncDurationCount||0===d)&&(d=void 0!==a?a:n*r);var h=r,c=1;return d+Math.min(this.stallCount*c,h)}},{key:"liveSyncPosition",get:function(){var e=this.estimateLiveEdge(),t=this.targetLatency,i=this.levelDetails;if(null===e||null===t||null===i)return null;var r=i.edge,s=e-t-this.edgeStalled,a=r-i.totalduration,n=r-(this.config.lowLatencyMode&&i.partTarget||i.targetduration);return Math.min(Math.max(a,s),n)}},{key:"drift",get:function(){var e=this.levelDetails;return null===e?1:e.drift}},{key:"edgeStalled",get:function(){var e=this.levelDetails;if(null===e)return 0;var t=3*(this.config.lowLatencyMode&&e.partTarget||e.targetduration);return Math.max(e.age-t,0)}},{key:"forwardBufferLength",get:function(){var e=this.media,t=this.levelDetails;if(!e||!t)return 0;var i=e.buffered.length;return(i?e.buffered.end(i-1):t.edge)-this.currentTime}}])}(),Ci=["NONE","TYPE-0","TYPE-1",null];function Ri(e){return Ci.indexOf(e)>-1}var Di=["SDR","PQ","HLG"];function xi(e){return!!e&&Di.indexOf(e)>-1}var Li={No:"",Yes:"YES",v2:"v2"};function Ii(e){var t=e.canSkipUntil,i=e.canSkipDateRanges,r=e.age;return t&&re.sn?(s=i-e.start,r=e):(s=e.start-i,r=t),r.duration!==s&&(r.duration=s)}else t.sn>e.sn?e.cc===t.cc&&e.minEndPTS?t.start=e.start+(e.minEndPTS-e.start):t.start=e.start+e.duration:t.start=Math.max(e.start-t.duration,0)}function Fi(e,t,i,r,s,a){r-i<=0&&(G.warn("Fragment should have a positive duration",t),r=i+t.duration,a=s+t.duration);var n=i,o=r,l=t.startPTS,d=t.endPTS;if(S(l)){var h=Math.abs(l-i);S(t.deltaPTS)?t.deltaPTS=Math.max(h,t.deltaPTS):t.deltaPTS=h,n=Math.max(i,l),i=Math.min(i,l),s=Math.min(s,t.startDTS),o=Math.min(r,d),r=Math.max(r,d),a=Math.max(a,t.endDTS)}var c=i-t.start;0!==t.start&&(t.start=i),t.duration=r-t.start,t.startPTS=i,t.maxStartPTS=n,t.startDTS=s,t.endPTS=r,t.minEndPTS=o,t.endDTS=a;var u,p=t.sn;if(!e||pe.endSN)return 0;var f=p-e.startSN,m=e.fragments;for(m[f]=t,u=f;u>0;u--)Ui(m[u],m[u-1]);for(u=f;u=0;s--){var a=r[s].initSegment;if(a){i=a;break}}e.fragmentHint&&delete e.fragmentHint.endPTS;var n,o=0;if(zi(e,t,(function(e,r){e.relurl&&(o=e.cc-r.cc),S(e.startPTS)&&S(e.endPTS)&&(r.start=r.startPTS=e.startPTS,r.startDTS=e.startDTS,r.maxStartPTS=e.maxStartPTS,r.endPTS=e.endPTS,r.endDTS=e.endDTS,r.minEndPTS=e.minEndPTS,r.duration=e.endPTS-e.startPTS,r.duration&&(n=r),t.PTSKnown=t.alignedSliding=!0),r.elementaryStreams=e.elementaryStreams,r.loader=e.loader,r.stats=e.stats,e.initSegment&&(r.initSegment=e.initSegment,i=e.initSegment)})),i&&(t.fragmentHint?t.fragments.concat(t.fragmentHint):t.fragments).forEach((function(e){var t;!e||e.initSegment&&e.initSegment.relurl!==(null==(t=i)?void 0:t.relurl)||(e.initSegment=i)})),t.skippedSegments)if(t.deltaUpdateFailed=t.fragments.some((function(e){return!e})),t.deltaUpdateFailed){G.warn("[level-helper] Previous playlist missing segments skipped in delta playlist");for(var l=t.skippedSegments;l--;)t.fragments.shift();t.startSN=t.fragments[0].sn,t.startCC=t.fragments[0].cc}else t.canSkipDateRanges&&(t.dateRanges=Ni(e.dateRanges,t.dateRanges,t.recentlyRemovedDateranges));var d=t.fragments;if(o){G.warn("discontinuity sliding from playlist, take drift into account");for(var h=0;h=r.length||Hi(t,r[i].start)}function Hi(e,t){if(t){for(var i=e.fragments,r=e.skippedSegments;rt){var a=1e3*r[r.length-1].duration;a499)}var tr={search:function(e,t){for(var i=0,r=e.length-1,s=null,a=null;i<=r;){var n=t(a=e[s=(i+r)/2|0]);if(n>0)i=s+1;else{if(!(n<0))return a;r=s-1}}return null}};function ir(e,t,i){if(null===t||!Array.isArray(e)||!e.length||!S(t))return null;if(t<(e[0].programDateTime||0))return null;if(t>=(e[e.length-1].endProgramDateTime||0))return null;i=i||0;for(var r=0;r0&&a<15e-7&&(i+=15e-7)}else 0===i&&0===t[0].start&&(s=t[0]);if(s&&(!e||e.level===s.level)&&0===sr(i,r,s))return s;var n=tr.search(t,sr.bind(null,i,r));return!n||n===e&&s?s:n}function sr(e,t,i){if(void 0===e&&(e=0),void 0===t&&(t=0),i.start<=e&&i.start+i.duration>e)return 0;var r=Math.min(t,i.duration+(i.deltaPTS?i.deltaPTS:0));return i.start+i.duration-r<=e?1:i.start-r>e&&i.start?-1:0}function ar(e,t,i){var r=1e3*Math.min(t,i.duration+(i.deltaPTS?i.deltaPTS:0));return(i.endProgramDateTime||0)-r>e}function nr(e,t){return tr.search(e,(function(e){return e.cct?-1:0}))}var or={DoNothing:0,SendEndCallback:1,SendAlternateToPenaltyBox:2,RemoveAlternatePermanently:3,InsertDiscontinuity:4,RetryRequest:5},lr={None:0,MoveAllAlternatesMatchingHost:1,MoveAllAlternatesMatchingHDCP:2,SwitchToSDR:4},dr=function(e){function t(t){var i;return(i=e.call(this,"error-controller",t.logger)||this).hls=void 0,i.playlistError=0,i.penalizedRenditions={},i.hls=t,i.registerListeners(),i}u(t,e);var i=t.prototype;return i.registerListeners=function(){var e=this.hls;e.on(k.ERROR,this.onError,this),e.on(k.MANIFEST_LOADING,this.onManifestLoading,this),e.on(k.LEVEL_UPDATED,this.onLevelUpdated,this)},i.unregisterListeners=function(){var e=this.hls;e&&(e.off(k.ERROR,this.onError,this),e.off(k.ERROR,this.onErrorOut,this),e.off(k.MANIFEST_LOADING,this.onManifestLoading,this),e.off(k.LEVEL_UPDATED,this.onLevelUpdated,this))},i.destroy=function(){this.unregisterListeners(),this.hls=null,this.penalizedRenditions={}},i.startLoad=function(e){},i.stopLoad=function(){this.playlistError=0},i.getVariantLevelIndex=function(e){return(null==e?void 0:e.type)===Nt.MAIN?e.level:this.hls.loadLevel},i.onManifestLoading=function(){this.playlistError=0,this.penalizedRenditions={}},i.onLevelUpdated=function(){this.playlistError=0},i.onError=function(e,t){var i,r;if(!t.fatal){var s=this.hls,a=t.context;switch(t.details){case R.FRAG_LOAD_ERROR:case R.FRAG_LOAD_TIMEOUT:case R.KEY_LOAD_ERROR:case R.KEY_LOAD_TIMEOUT:return void(t.errorAction=this.getFragRetryOrSwitchAction(t));case R.FRAG_PARSING_ERROR:if(null!=(i=t.frag)&&i.gap)return void(t.errorAction={action:or.DoNothing,flags:lr.None});case R.FRAG_GAP:case R.FRAG_DECRYPT_ERROR:return t.errorAction=this.getFragRetryOrSwitchAction(t),void(t.errorAction.action=or.SendAlternateToPenaltyBox);case R.LEVEL_EMPTY_ERROR:case R.LEVEL_PARSING_ERROR:var n,o,l=t.parent===Nt.MAIN?t.level:s.loadLevel;return void(t.details===R.LEVEL_EMPTY_ERROR&&null!=(n=t.context)&&null!=(o=n.levelDetails)&&o.live?t.errorAction=this.getPlaylistRetryOrSwitchAction(t,l):(t.levelRetry=!1,t.errorAction=this.getLevelSwitchAction(t,l)));case R.LEVEL_LOAD_ERROR:case R.LEVEL_LOAD_TIMEOUT:return void("number"==typeof(null==a?void 0:a.level)&&(t.errorAction=this.getPlaylistRetryOrSwitchAction(t,a.level)));case R.AUDIO_TRACK_LOAD_ERROR:case R.AUDIO_TRACK_LOAD_TIMEOUT:case R.SUBTITLE_LOAD_ERROR:case R.SUBTITLE_TRACK_LOAD_TIMEOUT:if(a){var d=s.levels[s.loadLevel];if(d&&(a.type===Ot.AUDIO_TRACK&&d.hasAudioGroup(a.groupId)||a.type===Ot.SUBTITLE_TRACK&&d.hasSubtitleGroup(a.groupId)))return t.errorAction=this.getPlaylistRetryOrSwitchAction(t,s.loadLevel),t.errorAction.action=or.SendAlternateToPenaltyBox,void(t.errorAction.flags=lr.MoveAllAlternatesMatchingHost)}return;case R.KEY_SYSTEM_STATUS_OUTPUT_RESTRICTED:var h=s.levels[s.loadLevel],c=null==h?void 0:h.attrs["HDCP-LEVEL"];return void(c?t.errorAction={action:or.SendAlternateToPenaltyBox,flags:lr.MoveAllAlternatesMatchingHDCP,hdcpLevel:c}:this.keySystemError(t));case R.BUFFER_ADD_CODEC_ERROR:case R.REMUX_ALLOC_ERROR:case R.BUFFER_APPEND_ERROR:return void(t.errorAction=this.getLevelSwitchAction(t,null!=(r=t.level)?r:s.loadLevel));case R.INTERNAL_EXCEPTION:case R.BUFFER_APPENDING_ERROR:case R.BUFFER_FULL_ERROR:case R.LEVEL_SWITCH_ERROR:case R.BUFFER_STALLED_ERROR:case R.BUFFER_SEEK_OVER_HOLE:case R.BUFFER_NUDGE_ON_STALL:return void(t.errorAction={action:or.DoNothing,flags:lr.None})}t.type===C.KEY_SYSTEM_ERROR&&this.keySystemError(t)}},i.keySystemError=function(e){var t=this.getVariantLevelIndex(e.frag);e.levelRetry=!1,e.errorAction=this.getLevelSwitchAction(e,t)},i.getPlaylistRetryOrSwitchAction=function(e,t){var i=Qi(this.hls.config.playlistLoadPolicy,e),r=this.playlistError++;if(Zi(i,r,Yi(e),e.response))return{action:or.RetryRequest,flags:lr.None,retryConfig:i,retryCount:r};var s=this.getLevelSwitchAction(e,t);return i&&(s.retryConfig=i,s.retryCount=r),s},i.getFragRetryOrSwitchAction=function(e){var t=this.hls,i=this.getVariantLevelIndex(e.frag),r=t.levels[i],s=t.config,a=s.fragLoadPolicy,n=s.keyLoadPolicy,o=Qi(e.details.startsWith("key")?n:a,e),l=t.levels.reduce((function(e,t){return e+t.fragmentError}),0);if(r&&(e.details!==R.FRAG_GAP&&r.fragmentError++,Zi(o,l,Yi(e),e.response)))return{action:or.RetryRequest,flags:lr.None,retryConfig:o,retryCount:l};var d=this.getLevelSwitchAction(e,i);return o&&(d.retryConfig=o,d.retryCount=l),d},i.getLevelSwitchAction=function(e,t){var i=this.hls;null==t&&(t=i.loadLevel);var r=this.hls.levels[t];if(r){var s,a,n=e.details;r.loadError++,n===R.BUFFER_APPEND_ERROR&&r.fragmentError++;var o=-1,l=i.levels,d=i.loadLevel,h=i.minAutoLevel,c=i.maxAutoLevel;i.autoLevelEnabled||(i.loadLevel=-1);for(var u,p=null==(s=e.frag)?void 0:s.type,f=(p===Nt.AUDIO&&n===R.FRAG_PARSING_ERROR||"audio"===e.sourceBufferName&&(n===R.BUFFER_ADD_CODEC_ERROR||n===R.BUFFER_APPEND_ERROR))&&l.some((function(e){var t=e.audioCodec;return r.audioCodec!==t})),m="video"===e.sourceBufferName&&(n===R.BUFFER_ADD_CODEC_ERROR||n===R.BUFFER_APPEND_ERROR)&&l.some((function(e){var t=e.codecSet,i=e.audioCodec;return r.codecSet!==t&&r.audioCodec===i})),y=null!=(a=e.context)?a:{},g=y.type,A=y.groupId,v=function(){var t=(b+d)%l.length;if(t!==d&&t>=h&&t<=c&&0===l[t].loadError){var i,s,a=l[t];if(n===R.FRAG_GAP&&e.frag){var u=l[t].details;if(u){var y=rr(e.frag,u.fragments,e.frag.start);if(null!=y&&y.gap)return 0}}else{if(g===Ot.AUDIO_TRACK&&a.hasAudioGroup(A)||g===Ot.SUBTITLE_TRACK&&a.hasSubtitleGroup(A))return 0;if(p===Nt.AUDIO&&null!=(i=r.audioGroups)&&i.some((function(e){return a.hasAudioGroup(e)}))||p===Nt.SUBTITLE&&null!=(s=r.subtitleGroups)&&s.some((function(e){return a.hasSubtitleGroup(e)}))||f&&r.audioCodec===a.audioCodec||!f&&r.audioCodec!==a.audioCodec||m&&r.codecSet===a.codecSet)return 0}return o=t,1}},b=l.length;b--&&(0===(u=v())||1!==u););if(o>-1&&i.loadLevel!==o)return e.levelRetry=!0,this.playlistError=0,{action:or.SendAlternateToPenaltyBox,flags:lr.None,nextAutoLevel:o}}return{action:or.SendAlternateToPenaltyBox,flags:lr.MoveAllAlternatesMatchingHost}},i.onErrorOut=function(e,t){var i;switch(null==(i=t.errorAction)?void 0:i.action){case or.DoNothing:break;case or.SendAlternateToPenaltyBox:this.sendAlternateToPenaltyBox(t),t.errorAction.resolved||t.details===R.FRAG_GAP?/MediaSource readyState: ended/.test(t.error.message)&&(this.warn('MediaSource ended after "'+t.sourceBufferName+'" sourceBuffer append error. Attempting to recover from media error.'),this.hls.recoverMediaError()):t.fatal=!0}t.fatal&&this.hls.stopLoad()},i.sendAlternateToPenaltyBox=function(e){var t=this.hls,i=e.errorAction;if(i){var r=i.flags,s=i.hdcpLevel,a=i.nextAutoLevel;switch(r){case lr.None:this.switchLevel(e,a);break;case lr.MoveAllAlternatesMatchingHDCP:s&&(t.maxHdcpLevel=Ci[Ci.indexOf(s)-1],i.resolved=!0),this.warn('Restricting playback to HDCP-LEVEL of "'+t.maxHdcpLevel+'" or lower')}i.resolved||this.switchLevel(e,a)}},i.switchLevel=function(e,t){void 0!==t&&e.errorAction&&(this.warn("switching to level "+t+" after "+e.details),this.hls.nextAutoLevel=t,e.errorAction.resolved=!0,this.hls.nextLoadLevel=this.hls.nextAutoLevel)},t}(I),hr=function(e){function t(t,i){var r;return(r=e.call(this,i,t.logger)||this).hls=void 0,r.timer=-1,r.requestScheduled=-1,r.canLoad=!1,r.hls=t,r}u(t,e);var i=t.prototype;return i.destroy=function(){this.clearTimer(),this.hls=this.log=this.warn=null},i.clearTimer=function(){-1!==this.timer&&(self.clearTimeout(this.timer),this.timer=-1)},i.startLoad=function(){this.canLoad=!0,this.requestScheduled=-1,this.loadPlaylist()},i.stopLoad=function(){this.canLoad=!1,this.clearTimer()},i.switchParams=function(e,t,i){var r=null==t?void 0:t.renditionReports;if(r){for(var s=-1,a=0;a=0&&c>t.partTarget&&(h+=1)}var u=i&&Ii(i);return new Pi(d,h>=0?h:void 0,u)}}},i.loadPlaylist=function(e){-1===this.requestScheduled&&(this.requestScheduled=self.performance.now())},i.shouldLoadPlaylist=function(e){return this.canLoad&&!!e&&!!e.url&&(!e.details||e.details.live)},i.shouldReloadPlaylist=function(e){return-1===this.timer&&-1===this.requestScheduled&&this.shouldLoadPlaylist(e)},i.playlistLoaded=function(e,t,i){var r=this,s=t.details,a=t.stats,n=self.performance.now(),o=a.loading.first?Math.max(0,n-a.loading.first):0;if(s.advancedDateTime=Date.now()-o,s.live||null!=i&&i.live){if(s.reloaded(i),i&&this.log("live playlist "+e+" "+(s.advanced?"REFRESHED "+s.lastPartSn+"-"+s.lastPartIndex:s.updated?"UPDATED":"MISSED")),i&&s.fragments.length>0&&Oi(i,s),!this.canLoad||!s.live)return;var l,d=void 0,h=void 0;if(s.canBlockReload&&s.endSN&&s.advanced){var c=this.hls.config.lowLatencyMode,u=s.lastPartSn,p=s.endSN,f=s.lastPartIndex,m=u===p;-1!==f?(d=m?p+1:u,h=m?c?0:f:f+1):d=p+1;var y=s.age,g=y+s.ageHeader,A=Math.min(g-s.partTarget,1.5*s.targetduration);if(A>0){if(g>3*s.targetduration)this.log("Playlist last advanced "+y.toFixed(2)+"s ago. Omitting segment and part directives."),d=void 0,h=void 0;else if(null!=i&&i.tuneInGoal&&g-s.partTarget>i.tuneInGoal)this.warn("CDN Tune-in goal increased from: "+i.tuneInGoal+" to: "+A+" with playlist age: "+s.age),A=0;else{var v=Math.floor(A/s.targetduration);d+=v,void 0!==h&&(h+=Math.round(A%s.targetduration/s.partTarget)),this.log("CDN Tune-in age: "+s.ageHeader+"s last advanced "+y.toFixed(2)+"s goal: "+A+" skip sn "+v+" to part "+h)}s.tuneInGoal=A}if(l=this.getDeliveryDirectives(s,t.deliveryDirectives,d,h),c||!m)return void this.loadPlaylist(l)}else(s.canBlockReload||s.canSkipUntil)&&(l=this.getDeliveryDirectives(s,t.deliveryDirectives,d,h));var b=this.hls.mainForwardBufferInfo,_=b?b.end-b.len:0,E=Wi(s,1e3*(s.edge-_));s.updated&&n>this.requestScheduled+E&&(this.requestScheduled=a.loading.start),void 0!==d&&s.canBlockReload?this.requestScheduled=a.loading.first+E-(1e3*s.partTarget||1e3):-1===this.requestScheduled||this.requestScheduled+E=d.maxNumRetry)return!1;if(r&&null!=(c=e.context)&&c.deliveryDirectives)this.warn("Retrying playlist loading "+(l+1)+"/"+d.maxNumRetry+' after "'+i+'" without delivery-directives'),this.loadPlaylist();else{var u=Xi(d,l);this.timer=self.setTimeout((function(){return t.loadPlaylist()}),u),this.warn("Retrying playlist loading "+(l+1)+"/"+d.maxNumRetry+' after "'+i+'" in '+u+"ms")}e.levelRetry=!0,s.resolved=!0}return h},t}(I),cr=function(){function e(e,t,i){void 0===t&&(t=0),void 0===i&&(i=0),this.halfLife=void 0,this.alpha_=void 0,this.estimate_=void 0,this.totalWeight_=void 0,this.halfLife=e,this.alpha_=e?Math.exp(Math.log(.5)/e):0,this.estimate_=t,this.totalWeight_=i}var t=e.prototype;return t.sample=function(e,t){var i=Math.pow(this.alpha_,e);this.estimate_=t*(1-i)+i*this.estimate_,this.totalWeight_+=e},t.getTotalWeight=function(){return this.totalWeight_},t.getEstimate=function(){if(this.alpha_){var e=1-Math.pow(this.alpha_,this.totalWeight_);if(e)return this.estimate_/e}return this.estimate_},e}(),ur=function(){function e(e,t,i,r){void 0===r&&(r=100),this.defaultEstimate_=void 0,this.minWeight_=void 0,this.minDelayMs_=void 0,this.slow_=void 0,this.fast_=void 0,this.defaultTTFB_=void 0,this.ttfb_=void 0,this.defaultEstimate_=i,this.minWeight_=.001,this.minDelayMs_=50,this.slow_=new cr(e),this.fast_=new cr(t),this.defaultTTFB_=r,this.ttfb_=new cr(e)}var t=e.prototype;return t.update=function(e,t){var i=this.slow_,r=this.fast_,s=this.ttfb_;i.halfLife!==e&&(this.slow_=new cr(e,i.getEstimate(),i.getTotalWeight())),r.halfLife!==t&&(this.fast_=new cr(t,r.getEstimate(),r.getTotalWeight())),s.halfLife!==e&&(this.ttfb_=new cr(e,s.getEstimate(),s.getTotalWeight()))},t.sample=function(e,t){var i=(e=Math.max(e,this.minDelayMs_))/1e3,r=8*t/i;this.fast_.sample(i,r),this.slow_.sample(i,r)},t.sampleTTFB=function(e){var t=e/1e3,i=Math.sqrt(2)*Math.exp(-Math.pow(t,2)/2);this.ttfb_.sample(i,Math.max(e,5))},t.canEstimate=function(){return this.fast_.getTotalWeight()>=this.minWeight_},t.getEstimate=function(){return this.canEstimate()?Math.min(this.fast_.getEstimate(),this.slow_.getEstimate()):this.defaultEstimate_},t.getEstimateTTFB=function(){return this.ttfb_.getTotalWeight()>=this.minWeight_?this.ttfb_.getEstimate():this.defaultTTFB_},t.destroy=function(){},e}(),pr={supported:!0,configurations:[],decodingInfoResults:[{supported:!0,powerEfficient:!0,smooth:!0}]},fr={};function mr(e,t,i,r,s,a){var n=e.audioCodec?e.audioGroups:null,o=null==a?void 0:a.audioCodec,l=null==a?void 0:a.channels,d=l?parseInt(l):o?1/0:2,h=null;if(null!=n&&n.length)try{h=1===n.length&&n[0]?t.groups[n[0]].channels:n.reduce((function(e,i){if(i){var r=t.groups[i];if(!r)throw new Error("Audio track group "+i+" not found");Object.keys(r.channels).forEach((function(t){e[t]=(e[t]||0)+r.channels[t]}))}return e}),{2:0})}catch(e){return!0}return void 0!==e.videoCodec&&(e.width>1920&&e.height>1088||e.height>1920&&e.width>1088||e.frameRate>Math.max(r,30)||"SDR"!==e.videoRange&&e.videoRange!==i||e.bitrate>Math.max(s,8e6))||!!h&&S(d)&&Object.keys(h).some((function(e){return parseInt(e)>d}))}function yr(e,t,i){var r=e.videoCodec,s=e.audioCodec;if(!r||!s||!i)return Promise.resolve(pr);var n={width:e.width,height:e.height,bitrate:Math.ceil(Math.max(.9*e.bitrate,e.averageBitrate)),framerate:e.frameRate||30},o=e.videoRange;"SDR"!==o&&(n.transferFunction=o.toLowerCase());var l=r.split(",").map((function(e){return{type:"media-source",video:a(a({},n),{},{contentType:ft(e,"video")})}}));return s&&e.audioGroups&&e.audioGroups.forEach((function(e){var i;e&&(null==(i=t.groups[e])||i.tracks.forEach((function(t){if(t.groupId===e){var i=t.channels||"",r=parseFloat(i);S(r)&&r>2&&l.push.apply(l,s.split(",").map((function(e){return{type:"media-source",audio:{contentType:ft(e,"audio"),channels:""+r}}})))}})))})),Promise.all(l.map((function(e){var t=gr(e);return fr[t]||(fr[t]=i.decodingInfo(e))}))).then((function(e){return{supported:!e.some((function(e){return!e.supported})),configurations:l,decodingInfoResults:e}})).catch((function(e){return{supported:!1,configurations:l,decodingInfoResults:[],error:e}}))}function gr(e){var t=e.audio,i=e.video,r=i||t;if(r){var s=r.contentType.split('"')[1];if(i)return"r"+i.height+"x"+i.width+"f"+Math.ceil(i.framerate)+(i.transferFunction||"sd")+"_"+s+"_"+Math.ceil(i.bitrate/1e5);if(t)return"c"+t.channels+(t.spatialRendering?"s":"n")+"_"+s}return""}function Ar(){if("function"==typeof matchMedia){var e=matchMedia("(dynamic-range: high)"),t=matchMedia("bad query");if(e.media!==t.media)return!0===e.matches}return!1}function vr(e,t){var i=!1,r=[];return e&&(i="SDR"!==e,r=[e]),t&&(r=t.allowedVideoRanges||Di.slice(0),r=(i=void 0!==t.preferHDR?t.preferHDR:Ar())?r.filter((function(e){return"SDR"!==e})):["SDR"]),{preferHDR:i,allowedVideoRanges:r}}function br(e,t,i,r,s){for(var a=Object.keys(e),n=null==r?void 0:r.channels,o=null==r?void 0:r.audioCodec,l=n&&2===parseInt(n),d=!0,h=!1,c=1/0,u=1/0,p=1/0,f=0,m=[],y=vr(t,s),g=y.preferHDR,A=y.allowedVideoRanges,v=function(){var t=e[a[b]];d=t.channels[2]>0,c=Math.min(c,t.minHeight),u=Math.min(u,t.minFramerate),p=Math.min(p,t.minBitrate);var i=A.filter((function(e){return t.videoRanges[e]>0}));i.length>0&&(h=!0,m=i)},b=a.length;b--;)v();c=S(c)?c:0,u=S(u)?u:0;var _=Math.max(1080,c),E=Math.max(30,u);p=S(p)?p:i,i=Math.max(p,i),h||(t=void 0,m=[]);var w=a.reduce((function(t,r){var s=e[r];if(r===t)return t;if(s.minBitrate>i)return _r(r,"min bitrate of "+s.minBitrate+" > current estimate of "+i),t;if(!s.hasDefaultAudio)return _r(r,"no renditions with default or auto-select sound found"),t;if(o&&r.indexOf(o.substring(0,4))%5!=0)return _r(r,'audio codec preference "'+o+'" not found'),t;if(n&&!l){if(!s.channels[n])return _r(r,"no renditions with "+n+" channel sound found (channels options: "+Object.keys(s.channels)+")"),t}else if((!o||l)&&d&&0===s.channels[2])return _r(r,"no renditions with stereo sound found"),t;return s.minHeight>_?(_r(r,"min resolution of "+s.minHeight+" > maximum of "+_),t):s.minFramerate>E?(_r(r,"min framerate of "+s.minFramerate+" > maximum of "+E),t):m.some((function(e){return s.videoRanges[e]>0}))?s.maxScore=yt(t)||s.fragmentError>e[t].fragmentError)?t:(f=s.maxScore,r):(_r(r,"no variants with VIDEO-RANGE of "+JSON.stringify(m)+" found"),t)}),void 0);return{codecSet:w,videoRanges:m,preferHDR:g,minFramerate:u,minBitrate:p}}function _r(e,t){G.log('[abr] start candidates with "'+e+'" ignored because '+t)}function Er(e){return e.reduce((function(e,t){var i=e.groups[t.groupId];i||(i=e.groups[t.groupId]={tracks:[],channels:{2:0},hasDefault:!1,hasAutoSelect:!1}),i.tracks.push(t);var r=t.channels||"2";return i.channels[r]=(i.channels[r]||0)+1,i.hasDefault=i.hasDefault||t.default,i.hasAutoSelect=i.hasAutoSelect||t.autoselect,i.hasDefault&&(e.hasDefaultAudio=!0),i.hasAutoSelect&&(e.hasAutoSelectAudio=!0),e}),{hasDefaultAudio:!1,hasAutoSelectAudio:!1,groups:{}})}function Sr(e,t,i,r){return e.slice(i,r+1).reduce((function(e,i){if(!i.codecSet)return e;var r=i.audioGroups,s=e[i.codecSet];s||(e[i.codecSet]=s={minBitrate:1/0,minHeight:1/0,minFramerate:1/0,maxScore:0,videoRanges:{SDR:0},channels:{2:0},hasDefaultAudio:!r,fragmentError:0}),s.minBitrate=Math.min(s.minBitrate,i.bitrate);var a=Math.min(i.height,i.width);return s.minHeight=Math.min(s.minHeight,a),s.minFramerate=Math.min(s.minFramerate,i.frameRate),s.maxScore=Math.max(s.maxScore,i.score),s.fragmentError+=i.fragmentError,s.videoRanges[i.videoRange]=(s.videoRanges[i.videoRange]||0)+1,r&&r.forEach((function(e){if(e){var i=t.groups[e];s.hasDefaultAudio=s.hasDefaultAudio||t.hasDefaultAudio?i.hasDefault:i.hasAutoSelect||!t.hasDefaultAudio&&!t.hasAutoSelectAudio,Object.keys(i.channels).forEach((function(e){s.channels[e]=(s.channels[e]||0)+i.channels[e]}))}})),e}),{})}function wr(e,t,i){if("attrs"in e){var r=t.indexOf(e);if(-1!==r)return r}for(var s=0;s1&&(r=Math.max.apply(Math,n));var o=a.videoRange,l=a.frameRate,d=a.codecSet.substring(0,4),h=Dr(t,r,(function(t){if(t.videoRange!==o||t.frameRate!==l||t.codecSet.substring(0,4)!==d)return!1;var r=t.audioGroups,a=i.filter((function(e){return!r||-1!==r.indexOf(e.groupId)}));return wr(e,a,s)>-1}));return h>-1?h:Dr(t,r,(function(t){var r=t.audioGroups,a=i.filter((function(e){return!r||-1!==r.indexOf(e.groupId)}));return wr(e,a,s)>-1}))}function Dr(e,t,i){for(var r=t;r;r--)if(i(e[r]))return r;for(var s=t+1;s-1,A=i.getBwEstimate(),v=s.levels,b=v[t.level],_=l.total||Math.max(l.loaded,Math.round(d*b.averageBitrate/8)),E=g?h-y:h;E<1&&g&&(E=Math.min(h,8*l.loaded/A));var w=g?1e3*l.loaded/E:0,T=w?(_-l.loaded)/w:8*_/A+p/1e3;if(!(T<=m)){var C,R=w?8*w:A,D=Number.POSITIVE_INFINITY;for(C=t.level-1;C>c;C--){var x=v[C].maxBitrate;if((D=i.getTimeToLoadFrag(p/1e3,R,d*x,!v[C].details))=T||D>10*d)){s.nextLoadLevel=s.nextAutoLevel=C,g?i.bwEstimator.sample(h-Math.min(p,y),l.loaded):i.bwEstimator.sampleTTFB(h);var L=v[C].maxBitrate;i.getBwEstimate()*i.hls.config.abrBandWidthUpFactor>L&&i.resetEstimator(L),i.clearTimer(),i.warn("Fragment "+t.sn+(r?" part "+r.index:"")+" of level "+t.level+" is loading too slowly;\n Time to underbuffer: "+m.toFixed(3)+" s\n Estimated load time for current fragment: "+T.toFixed(3)+" s\n Estimated load time for down switch fragment: "+D.toFixed(3)+" s\n TTFB estimate: "+(0|y)+" ms\n Current BW estimate: "+(S(A)?0|A:"Unknown")+" bps\n New BW estimate: "+(0|i.getBwEstimate())+" bps\n Switching to level "+C+" @ "+(0|L)+" bps"),s.trigger(k.FRAG_LOAD_EMERGENCY_ABORTED,{frag:t,part:r,stats:l})}}}}}}},i.hls=t,i.bwEstimator=i.initEstimator(),i.registerListeners(),i}u(t,e);var i=t.prototype;return i.resetEstimator=function(e){e&&(this.log("setting initial bwe to "+e),this.hls.config.abrEwmaDefaultEstimate=e),this.firstSelection=-1,this.bwEstimator=this.initEstimator()},i.initEstimator=function(){var e=this.hls.config;return new ur(e.abrEwmaSlowVoD,e.abrEwmaFastVoD,e.abrEwmaDefaultEstimate)},i.registerListeners=function(){var e=this.hls;e.on(k.MANIFEST_LOADING,this.onManifestLoading,this),e.on(k.FRAG_LOADING,this.onFragLoading,this),e.on(k.FRAG_LOADED,this.onFragLoaded,this),e.on(k.FRAG_BUFFERED,this.onFragBuffered,this),e.on(k.LEVEL_SWITCHING,this.onLevelSwitching,this),e.on(k.LEVEL_LOADED,this.onLevelLoaded,this),e.on(k.LEVELS_UPDATED,this.onLevelsUpdated,this),e.on(k.MAX_AUTO_LEVEL_UPDATED,this.onMaxAutoLevelUpdated,this),e.on(k.ERROR,this.onError,this)},i.unregisterListeners=function(){var e=this.hls;e&&(e.off(k.MANIFEST_LOADING,this.onManifestLoading,this),e.off(k.FRAG_LOADING,this.onFragLoading,this),e.off(k.FRAG_LOADED,this.onFragLoaded,this),e.off(k.FRAG_BUFFERED,this.onFragBuffered,this),e.off(k.LEVEL_SWITCHING,this.onLevelSwitching,this),e.off(k.LEVEL_LOADED,this.onLevelLoaded,this),e.off(k.LEVELS_UPDATED,this.onLevelsUpdated,this),e.off(k.MAX_AUTO_LEVEL_UPDATED,this.onMaxAutoLevelUpdated,this),e.off(k.ERROR,this.onError,this))},i.destroy=function(){this.unregisterListeners(),this.clearTimer(),this.hls=this._abandonRulesCheck=null,this.fragCurrent=this.partCurrent=null},i.onManifestLoading=function(e,t){this.lastLoadedFragLevel=-1,this.firstSelection=-1,this.lastLevelLoadSec=0,this.fragCurrent=this.partCurrent=null,this.onLevelsUpdated(),this.clearTimer()},i.onLevelsUpdated=function(){this.lastLoadedFragLevel>-1&&this.fragCurrent&&(this.lastLoadedFragLevel=this.fragCurrent.level),this._nextAutoLevel=-1,this.onMaxAutoLevelUpdated(),this.codecTiers=null,this.audioTracksByGroup=null},i.onMaxAutoLevelUpdated=function(){this.firstSelection=-1,this.nextAutoLevelKey=""},i.onFragLoading=function(e,t){var i,r=t.frag;this.ignoreFragment(r)||(r.bitrateTest||(this.fragCurrent=r,this.partCurrent=null!=(i=t.part)?i:null),this.clearTimer(),this.timer=self.setInterval(this._abandonRulesCheck,100))},i.onLevelSwitching=function(e,t){this.clearTimer()},i.onError=function(e,t){if(!t.fatal)switch(t.details){case R.BUFFER_ADD_CODEC_ERROR:case R.BUFFER_APPEND_ERROR:this.lastLoadedFragLevel=-1,this.firstSelection=-1;break;case R.FRAG_LOAD_TIMEOUT:var i=t.frag,r=this.fragCurrent,s=this.partCurrent;if(i&&r&&i.sn===r.sn&&i.level===r.level){var a=performance.now(),n=s?s.stats:i.stats,o=a-n.loading.start,l=n.loading.first?n.loading.first-n.loading.start:-1;if(n.loaded&&l>-1){var d=this.bwEstimator.getEstimateTTFB();this.bwEstimator.sample(o-Math.min(d,l),n.loaded)}else this.bwEstimator.sampleTTFB(o)}}},i.getTimeToLoadFrag=function(e,t,i,r){return e+i/t+(r?this.lastLevelLoadSec:0)},i.onLevelLoaded=function(e,t){var i=this.hls.config,r=t.stats.loading,s=r.end-r.start;S(s)&&(this.lastLevelLoadSec=s/1e3),t.details.live?this.bwEstimator.update(i.abrEwmaSlowLive,i.abrEwmaFastLive):this.bwEstimator.update(i.abrEwmaSlowVoD,i.abrEwmaFastVoD)},i.onFragLoaded=function(e,t){var i=t.frag,r=t.part,s=r?r.stats:i.stats;if(i.type===Nt.MAIN&&this.bwEstimator.sampleTTFB(s.loading.first-s.loading.start),!this.ignoreFragment(i)){if(this.clearTimer(),i.level===this._nextAutoLevel&&(this._nextAutoLevel=-1),this.firstSelection=-1,this.hls.config.abrMaxWithRealBitrate){var a=r?r.duration:i.duration,n=this.hls.levels[i.level],o=(n.loaded?n.loaded.bytes:0)+s.loaded,l=(n.loaded?n.loaded.duration:0)+a;n.loaded={bytes:o,duration:l},n.realBitrate=Math.round(8*o/l)}if(i.bitrateTest){var d={stats:s,frag:i,part:r,id:i.type};this.onFragBuffered(k.FRAG_BUFFERED,d),i.bitrateTest=!1}else this.lastLoadedFragLevel=i.level}},i.onFragBuffered=function(e,t){var i=t.frag,r=t.part,s=null!=r&&r.stats.loaded?r.stats:i.stats;if(!s.aborted&&!this.ignoreFragment(i)){var a=s.parsing.end-s.loading.start-Math.min(s.loading.first-s.loading.start,this.bwEstimator.getEstimateTTFB());this.bwEstimator.sample(a,s.loaded),s.bwEstimate=this.getBwEstimate(),i.bitrateTest?this.bitrateTestDelay=a/1e3:this.bitrateTestDelay=0}},i.ignoreFragment=function(e){return e.type!==Nt.MAIN||"initSegment"===e.sn},i.clearTimer=function(){this.timer>-1&&(self.clearInterval(this.timer),this.timer=-1)},i.getAutoLevelKey=function(){return this.getBwEstimate()+"_"+this.getStarvationDelay().toFixed(2)},i.getNextABRAutoLevel=function(){var e=this.fragCurrent,t=this.partCurrent,i=this.hls;if(i.levels.length<=1)return i.loadLevel;var r=i.maxAutoLevel,s=i.config,a=i.minAutoLevel,n=t?t.duration:e?e.duration:0,o=this.getBwEstimate(),l=this.getStarvationDelay(),d=s.abrBandWidthFactor,h=s.abrBandWidthUpFactor;if(l){var c=this.findBestLevel(o,a,r,l,0,d,h);if(c>=0)return c}var u=n?Math.min(n,s.maxStarvationDelay):s.maxStarvationDelay;if(!l){var p=this.bitrateTestDelay;p&&(u=(n?Math.min(n,s.maxLoadingDelay):s.maxLoadingDelay)-p,this.info("bitrate test took "+Math.round(1e3*p)+"ms, set first fragment max fetchDuration to "+Math.round(1e3*u)+" ms"),d=h=1)}var f=this.findBestLevel(o,a,r,l,u,d,h);if(this.info((l?"rebuffering expected":"buffer is empty")+", optimal quality level "+f),f>-1)return f;var m=i.levels[a],y=i.levels[i.loadLevel];return(null==m?void 0:m.bitrate)<(null==y?void 0:y.bitrate)?a:i.loadLevel},i.getStarvationDelay=function(){var e=this.hls,t=e.media;if(!t)return 1/0;var i=t&&0!==t.playbackRate?Math.abs(t.playbackRate):1,r=e.mainForwardBufferInfo;return(r?r.len:0)/i},i.getBwEstimate=function(){return this.bwEstimator.canEstimate()?this.bwEstimator.getEstimate():this.hls.config.abrEwmaDefaultEstimate},i.findBestLevel=function(e,t,i,r,s,a,n){var o,l=this,d=r+s,h=this.lastLoadedFragLevel,c=-1===h?this.hls.firstLevel:h,u=this.fragCurrent,p=this.partCurrent,f=this.hls,m=f.levels,y=f.allAudioTracks,g=f.loadLevel,A=f.config;if(1===m.length)return 0;var v,b=m[c],_=!(null==b||null==(o=b.details)||!o.live),E=-1===g||-1===h,w="SDR",T=(null==b?void 0:b.frameRate)||0,k=A.audioPreference,C=A.videoPreference,R=this.audioTracksByGroup||(this.audioTracksByGroup=Er(y));if(E){if(-1!==this.firstSelection)return this.firstSelection;var D=br(this.codecTiers||(this.codecTiers=Sr(m,R,t,i)),w,e,k,C),x=D.codecSet,L=D.videoRanges,I=D.minFramerate,P=D.minBitrate,B=D.preferHDR;v=x,w=B?L[L.length-1]:L[0],T=I,e=Math.max(e,P),this.log("picked start tier "+JSON.stringify(D))}else v=null==b?void 0:b.codecSet,w=null==b?void 0:b.videoRange;for(var M,U=p?p.duration:u?u.duration:0,F=this.bwEstimator.getEstimateTTFB()/1e3,O=[],N=function(){var t,o=m[G],u=G>c;if(!o)return 0;if(A.useMediaCapabilities&&!o.supportedResult&&!o.supportedPromise){var f=navigator.mediaCapabilities;"function"==typeof(null==f?void 0:f.decodingInfo)&&mr(o,R,w,T,e,k)?(o.supportedPromise=yr(o,R,f),o.supportedPromise.then((function(e){if(l.hls){o.supportedResult=e;var t=l.hls.levels,i=t.indexOf(o);e.error?l.warn('MediaCapabilities decodingInfo error: "'+e.error+'" for level '+i+" "+JSON.stringify(e)):e.supported||(l.warn("Unsupported MediaCapabilities decodingInfo result for level "+i+" "+JSON.stringify(e)),i>-1&&t.length>1&&(l.log("Removing unsupported level "+i),l.hls.removeLevel(i)))}}))):o.supportedResult=pr}if(v&&o.codecSet!==v||w&&o.videoRange!==w||u&&T>o.frameRate||!u&&T>0&&T=2*U&&0===s?m[G].averageBitrate:m[G].maxBitrate,L=l.getTimeToLoadFrag(F,y,x*D,void 0===C);if(y>=x&&(G===h||0===o.loadError&&0===o.fragmentError)&&(L<=F||!S(L)||_&&!l.bitrateTestDelay||L"+G+" adjustedbw("+Math.round(y)+")-bitrate="+Math.round(y-x)+" ttfb:"+F.toFixed(1)+" avgDuration:"+D.toFixed(1)+" maxFetchDuration:"+d.toFixed(1)+" fetchDuration:"+L.toFixed(1)+" firstSelection:"+E+" codecSet:"+v+" videoRange:"+w+" hls.loadLevel:"+g)),E&&(l.firstSelection=G),{v:G}}},G=i;G>=t;G--)if(0!==(M=N())&&M)return M.v;return-1},d(t,[{key:"firstAutoLevel",get:function(){var e=this.hls,t=e.maxAutoLevel,i=e.minAutoLevel,r=this.getBwEstimate(),s=this.hls.config.maxStarvationDelay,a=this.findBestLevel(r,i,t,0,s,1,1);if(a>-1)return a;var n=this.hls.firstLevel,o=Math.min(Math.max(n,i),t);return this.warn("Could not find best starting auto level. Defaulting to first in playlist "+n+" clamped to "+o),o}},{key:"forcedAutoLevel",get:function(){return this.nextAutoLevelKey?-1:this._nextAutoLevel}},{key:"nextAutoLevel",get:function(){var e=this.forcedAutoLevel,t=this.bwEstimator.canEstimate(),i=this.lastLoadedFragLevel>-1;if(!(-1===e||t&&i&&this.nextAutoLevelKey!==this.getAutoLevelKey()))return e;var r=t&&i?this.getNextABRAutoLevel():this.firstAutoLevel;if(-1!==e){var s=this.hls.levels;if(s.length>Math.max(e,r)&&s[e].loadError<=s[r].loadError)return e}return this._nextAutoLevel=r,this.nextAutoLevelKey=this.getAutoLevelKey(),r},set:function(e){var t=this.hls,i=t.maxAutoLevel,r=t.minAutoLevel,s=Math.min(Math.max(e,r),i);this._nextAutoLevel!==s&&(this.nextAutoLevelKey="",this._nextAutoLevel=s)}}])}(I),Lr=function(e){function t(t,i){var r;return(r=e.call(this,t,i)||this)._boundTick=void 0,r._tickTimer=null,r._tickInterval=null,r._tickCallCount=0,r._boundTick=r.tick.bind(r),r}u(t,e);var i=t.prototype;return i.destroy=function(){this.onHandlerDestroying(),this.onHandlerDestroyed()},i.onHandlerDestroying=function(){this.clearNextTick(),this.clearInterval()},i.onHandlerDestroyed=function(){},i.hasInterval=function(){return!!this._tickInterval},i.hasNextTick=function(){return!!this._tickTimer},i.setInterval=function(e){return!this._tickInterval&&(this._tickCallCount=0,this._tickInterval=self.setInterval(this._boundTick,e),!0)},i.clearInterval=function(){return!!this._tickInterval&&(self.clearInterval(this._tickInterval),this._tickInterval=null,!0)},i.clearNextTick=function(){return!!this._tickTimer&&(self.clearTimeout(this._tickTimer),this._tickTimer=null,!0)},i.tick=function(){this._tickCallCount++,1===this._tickCallCount&&(this.doTick(),this._tickCallCount>1&&this.tickImmediate(),this._tickCallCount=0)},i.tickImmediate=function(){this.clearNextTick(),this._tickTimer=self.setTimeout(this._boundTick,0)},i.doTick=function(){},t}(I),Ir={NOT_LOADED:"NOT_LOADED",APPENDING:"APPENDING",PARTIAL:"PARTIAL",OK:"OK"},Pr=function(){function e(e){this.activePartLists=Object.create(null),this.endListFragments=Object.create(null),this.fragments=Object.create(null),this.timeRanges=Object.create(null),this.bufferPadding=.2,this.hls=void 0,this.hasGaps=!1,this.hls=e,this._registerListeners()}var t=e.prototype;return t._registerListeners=function(){var e=this.hls;e.on(k.BUFFER_APPENDED,this.onBufferAppended,this),e.on(k.FRAG_BUFFERED,this.onFragBuffered,this),e.on(k.FRAG_LOADED,this.onFragLoaded,this)},t._unregisterListeners=function(){var e=this.hls;e.off(k.BUFFER_APPENDED,this.onBufferAppended,this),e.off(k.FRAG_BUFFERED,this.onFragBuffered,this),e.off(k.FRAG_LOADED,this.onFragLoaded,this)},t.destroy=function(){this._unregisterListeners(),this.fragments=this.activePartLists=this.endListFragments=this.timeRanges=null},t.getAppendedFrag=function(e,t){var i=this.activePartLists[t];if(i)for(var r=i.length;r--;){var s=i[r];if(!s)break;var a=s.end;if(s.start<=e&&null!==a&&e<=a)return s}return this.getBufferedFrag(e,t)},t.getBufferedFrag=function(e,t){return this.getFragAtPos(e,t,!0)},t.getFragAtPos=function(e,t,i){for(var r=this.fragments,s=Object.keys(r),a=s.length;a--;){var n=r[s[a]];if((null==n?void 0:n.body.type)===t&&(!i||n.buffered)){var o=n.body;if(o.start<=e&&e<=o.end)return o}}return null},t.detectEvictedFragments=function(e,t,i,r){var s=this;this.timeRanges&&(this.timeRanges[e]=t);var a=(null==r?void 0:r.fragment.sn)||-1;Object.keys(this.fragments).forEach((function(r){var n=s.fragments[r];if(n&&!(a>=n.body.sn))if(n.buffered||n.loaded){var o=n.range[e];o&&o.time.some((function(e){var i=!s.isTimeBuffered(e.startPTS,e.endPTS,t);return i&&s.removeFragment(n.body),i}))}else n.body.type===i&&s.removeFragment(n.body)}))},t.detectPartialFragments=function(e){var t=this,i=this.timeRanges,r=e.frag,s=e.part;if(i&&"initSegment"!==r.sn){var a=Mr(r),n=this.fragments[a];if(!(!n||n.buffered&&r.gap)){var o=!r.relurl;Object.keys(i).forEach((function(e){var a=r.elementaryStreams[e];if(a){var l=i[e],d=o||!0===a.partial;n.range[e]=t.getBufferedTimes(r,s,d,l)}})),n.loaded=null,Object.keys(n.range).length?(n.buffered=!0,(n.body.endList=r.endList||n.body.endList)&&(this.endListFragments[n.body.type]=n),Br(n)||this.removeParts(r.sn-1,r.type)):this.removeFragment(n.body)}}},t.removeParts=function(e,t){var i=this.activePartLists[t];i&&(this.activePartLists[t]=i.filter((function(t){return t.fragment.sn>=e})))},t.fragBuffered=function(e,t){var i=Mr(e),r=this.fragments[i];!r&&t&&(r=this.fragments[i]={body:e,appendedPTS:null,loaded:null,buffered:!1,range:Object.create(null)},e.gap&&(this.hasGaps=!0)),r&&(r.loaded=null,r.buffered=!0)},t.getBufferedTimes=function(e,t,i,r){for(var s={time:[],partial:i},a=e.start,n=e.end,o=e.minEndPTS||n,l=e.maxStartPTS||a,d=0;d=h&&o<=c){s.time.push({startPTS:Math.max(a,r.start(d)),endPTS:Math.min(n,r.end(d))});break}if(ah){var u=Math.max(a,r.start(d)),p=Math.min(n,r.end(d));p>u&&(s.partial=!0,s.time.push({startPTS:u,endPTS:p}))}else if(n<=h)break}return s},t.getPartialFragment=function(e){var t,i,r,s=null,a=0,n=this.bufferPadding,o=this.fragments;return Object.keys(o).forEach((function(l){var d=o[l];d&&Br(d)&&(i=d.body.start-n,r=d.body.end+n,e>=i&&e<=r&&(t=Math.min(e-i,r-e),a<=t&&(s=d.body,a=t)))})),s},t.isEndListAppended=function(e){var t=this.endListFragments[e];return void 0!==t&&(t.buffered||Br(t))},t.getState=function(e){var t=Mr(e),i=this.fragments[t];return i?i.buffered?Br(i)?Ir.PARTIAL:Ir.OK:Ir.APPENDING:Ir.NOT_LOADED},t.isTimeBuffered=function(e,t,i){for(var r,s,a=0;a=r&&t<=s)return!0;if(t<=r)return!1}return!1},t.onFragLoaded=function(e,t){var i=t.frag,r=t.part;if("initSegment"!==i.sn&&!i.bitrateTest){var s=r?null:t,a=Mr(i);this.fragments[a]={body:i,appendedPTS:null,loaded:s,buffered:!1,range:Object.create(null)}}},t.onBufferAppended=function(e,t){var i=t.frag,r=t.part,s=t.timeRanges,a=t.type;if("initSegment"!==i.sn){var n=i.type;if(r){var o=this.activePartLists[n];o||(this.activePartLists[n]=o=[]),o.push(r)}this.timeRanges=s;var l=s[a];this.detectEvictedFragments(a,l,n,r)}},t.onFragBuffered=function(e,t){this.detectPartialFragments(t)},t.hasFragment=function(e){var t=Mr(e);return!!this.fragments[t]},t.hasParts=function(e){var t;return!(null==(t=this.activePartLists[e])||!t.length)},t.removeFragmentsInRange=function(e,t,i,r,s){var a=this;r&&!this.hasGaps||Object.keys(this.fragments).forEach((function(n){var o=a.fragments[n];if(o){var l=o.body;l.type!==i||r&&!l.gap||l.starte&&(o.buffered||s)&&a.removeFragment(l)}}))},t.removeFragment=function(e){var t=Mr(e);e.stats.loaded=0,e.clearElementaryStreamInfo();var i=this.activePartLists[e.type];if(i){var r=e.sn;this.activePartLists[e.type]=i.filter((function(e){return e.fragment.sn!==r}))}delete this.fragments[t],e.endList&&delete this.endListFragments[e.type]},t.removeAllFragments=function(){this.fragments=Object.create(null),this.endListFragments=Object.create(null),this.activePartLists=Object.create(null),this.hasGaps=!1},e}();function Br(e){var t,i,r;return e.buffered&&(e.body.gap||(null==(t=e.range.video)?void 0:t.partial)||(null==(i=e.range.audio)?void 0:i.partial)||(null==(r=e.range.audiovideo)?void 0:r.partial))}function Mr(e){return e.type+"_"+e.level+"_"+e.sn}var Ur={length:0,start:function(){return 0},end:function(){return 0}},Fr=function(){function e(){}return e.isBuffered=function(t,i){if(t)for(var r=e.getBuffered(t),s=r.length;s--;)if(i>=r.start(s)&&i<=r.end(s))return!0;return!1},e.bufferInfo=function(t,i,r){if(t){var s=e.getBuffered(t);if(s.length){for(var a=[],n=0;nn&&(r[a-1].end=e[s].end):r.push(e[s])}else r.push(e[s])}else r=e;for(var o,l=0,d=t,h=t,c=0;c=u&&ti.startCC||e&&e.cc>>8^255&y^99,e[p]=y,t[y]=p;var g=u[p],A=u[g],v=u[A],b=257*u[y]^16843008*y;r[p]=b<<24|b>>>8,s[p]=b<<16|b>>>16,a[p]=b<<8|b>>>24,n[p]=b,b=16843009*v^65537*A^257*g^16843008*p,l[y]=b<<24|b>>>8,d[y]=b<<16|b>>>16,h[y]=b<<8|b>>>24,c[y]=b,p?(p=g^u[u[u[v^g]]],f^=u[u[f]]):p=f=1}},t.expandKey=function(e){for(var t=this.uint8ArrayToUint32Array_(e),i=!0,r=0;rl.end){var u=o>c;(o0&&null!=a&&a.key&&a.iv&&re(a.method)){var n=self.performance.now();return i.decrypter.decrypt(new Uint8Array(s),a.key.buffer,a.iv.buffer,se(a.method)).catch((function(t){throw r.trigger(k.ERROR,{type:C.MEDIA_ERROR,details:R.FRAG_DECRYPT_ERROR,fatal:!1,error:t,reason:t.message,frag:e}),t})).then((function(s){var a=self.performance.now();return r.trigger(k.FRAG_DECRYPTED,{frag:e,payload:s,stats:{tstart:n,tdecrypt:a}}),t.payload=s,i.completeInitSegmentLoad(t)}))}return i.completeInitSegmentLoad(t)})).catch((function(t){i.state!==ls.STOPPED&&i.state!==ls.ERROR&&(i.warn(t),i.resetFragmentLoading(e))}))},i.completeInitSegmentLoad=function(e){if(!this.levels)throw new Error("init load aborted, missing levels");var t=e.frag.stats;this.state!==ls.STOPPED&&(this.state=ls.IDLE),e.frag.data=new Uint8Array(e.payload),t.parsing.start=t.buffering.start=self.performance.now(),t.parsing.end=t.buffering.end=self.performance.now(),this.tick()},i.fragContextChanged=function(e){var t=this.fragCurrent;return!e||!t||e.sn!==t.sn||e.level!==t.level},i.fragBufferedComplete=function(e,t){var i,r,s,a,n=this.mediaBuffer?this.mediaBuffer:this.media;if(this.log("Buffered "+e.type+" sn: "+e.sn+(t?" part: "+t.index:"")+" of "+(this.playlistType===Nt.MAIN?"level":"track")+" "+e.level+" (frag:["+(null!=(i=e.startPTS)?i:NaN).toFixed(3)+"-"+(null!=(r=e.endPTS)?r:NaN).toFixed(3)+"] > buffer:"+(n?os.toString(Fr.getBuffered(n)):"(detached)")+")"),"initSegment"!==e.sn){var o;if(e.type!==Nt.SUBTITLE){var l=e.elementaryStreams;if(!Object.keys(l).some((function(e){return!!l[e]})))return void(this.state=ls.IDLE)}var d=null==(o=this.levels)?void 0:o[e.level];null!=d&&d.fragmentError&&(this.log("Resetting level fragment error count of "+d.fragmentError+" on frag buffered"),d.fragmentError=0)}this.state=ls.IDLE,n&&(!this.loadedmetadata&&e.type==Nt.MAIN&&n.buffered.length&&(null==(s=this.fragCurrent)?void 0:s.sn)===(null==(a=this.fragPrevious)?void 0:a.sn)&&(this.loadedmetadata=!0,this.seekToStartPos()),this.tick())},i.seekToStartPos=function(){},i._handleFragmentLoadComplete=function(e){var t=this.transmuxer;if(t){var i=e.frag,r=e.part,s=e.partsLoaded,a=!s||0===s.length||s.some((function(e){return!e})),n=new Or(i.level,i.sn,i.stats.chunkCount+1,0,r?r.index:-1,!a);t.flush(n)}},i._handleFragmentLoadProgress=function(e){},i._doFragLoad=function(e,t,i,r){var s,a=this;void 0===i&&(i=null);var n=null==t?void 0:t.details;if(!this.levels||!n)throw new Error("frag load aborted, missing level"+(n?"":" detail")+"s");var o=null;!e.encrypted||null!=(s=e.decryptdata)&&s.key?!e.encrypted&&n.encryptedFragments.length&&this.keyLoader.loadClear(e,n.encryptedFragments):(this.log("Loading key for "+e.sn+" of ["+n.startSN+"-"+n.endSN+"], "+(this.playlistType===Nt.MAIN?"level":"track")+" "+e.level),this.state=ls.KEY_LOADING,this.fragCurrent=e,o=this.keyLoader.load(e).then((function(e){if(!a.fragContextChanged(e.frag))return a.hls.trigger(k.KEY_LOADED,e),a.state===ls.KEY_LOADING&&(a.state=ls.IDLE),e})),this.hls.trigger(k.KEY_LOADING,{frag:e}),null===this.fragCurrent&&(o=Promise.reject(new Error("frag load aborted, context changed in KEY_LOADING"))));var l=this.fragPrevious;if("initSegment"!==e.sn&&(!l||e.sn!==l.sn)){var d=this.shouldLoadParts(t.details,e.end);d!==this.loadingParts&&(this.log("LL-Part loading "+(d?"ON":"OFF")+" loading sn "+(null==l?void 0:l.sn)+"->"+e.sn),this.loadingParts=d)}if(i=Math.max(e.start,i||0),this.loadingParts&&"initSegment"!==e.sn){var h=n.partList;if(h&&r){i>e.end&&n.fragmentHint&&(e=n.fragmentHint);var c=this.getNextPart(h,e,i);if(c>-1){var u,p=h[c];return this.log("Loading part sn: "+e.sn+" p: "+p.index+" cc: "+e.cc+" of playlist ["+n.startSN+"-"+n.endSN+"] parts [0-"+c+"-"+(h.length-1)+"] "+(this.playlistType===Nt.MAIN?"level":"track")+": "+e.level+", target: "+parseFloat(i.toFixed(3))),this.nextLoadPosition=p.start+p.duration,this.state=ls.FRAG_LOADING,u=o?o.then((function(i){return!i||a.fragContextChanged(i.frag)?null:a.doFragPartsLoad(e,p,t,r)})).catch((function(e){return a.handleFragLoadError(e)})):this.doFragPartsLoad(e,p,t,r).catch((function(e){return a.handleFragLoadError(e)})),this.hls.trigger(k.FRAG_LOADING,{frag:e,part:p,targetBufferTime:i}),null===this.fragCurrent?Promise.reject(new Error("frag load aborted, context changed in FRAG_LOADING parts")):u}if(!e.url||this.loadedEndOfParts(h,i))return Promise.resolve(null)}}if("initSegment"!==e.sn&&this.loadingParts)this.log("LL-Part loading OFF after next part miss @"+i.toFixed(2)),this.loadingParts=!1;else if(!e.url)return Promise.resolve(null);this.log("Loading fragment "+e.sn+" cc: "+e.cc+" "+(n?"of ["+n.startSN+"-"+n.endSN+"] ":"")+(this.playlistType===Nt.MAIN?"level":"track")+": "+e.level+", target: "+parseFloat(i.toFixed(3))),S(e.sn)&&!this.bitrateTest&&(this.nextLoadPosition=e.start+e.duration),this.state=ls.FRAG_LOADING;var f,m=this.config.progressive;return f=m&&o?o.then((function(t){return!t||a.fragContextChanged(null==t?void 0:t.frag)?null:a.fragmentLoader.load(e,r)})).catch((function(e){return a.handleFragLoadError(e)})):Promise.all([this.fragmentLoader.load(e,m?r:void 0),o]).then((function(e){var t=e[0];return!m&&t&&r&&r(t),t})).catch((function(e){return a.handleFragLoadError(e)})),this.hls.trigger(k.FRAG_LOADING,{frag:e,targetBufferTime:i}),null===this.fragCurrent?Promise.reject(new Error("frag load aborted, context changed in FRAG_LOADING")):f},i.doFragPartsLoad=function(e,t,i,r){var s=this;return new Promise((function(a,n){var o,l=[],d=null==(o=i.details)?void 0:o.partList;!function t(o){s.fragmentLoader.loadPart(e,o,r).then((function(r){l[o.index]=r;var n=r.part;s.hls.trigger(k.FRAG_LOADED,r);var h=$i(i,e.sn,o.index+1)||Ki(d,e.sn,o.index+1);if(!h)return a({frag:e,part:n,partsLoaded:l});t(h)})).catch(n)}(t)}))},i.handleFragLoadError=function(e){if("data"in e){var t=e.data;e.data&&t.details===R.INTERNAL_ABORTED?this.handleFragLoadAborted(t.frag,t.part):this.hls.trigger(k.ERROR,t)}else this.hls.trigger(k.ERROR,{type:C.OTHER_ERROR,details:R.INTERNAL_EXCEPTION,err:e,error:e,fatal:!0});return null},i._handleTransmuxerFlush=function(e){var t=this.getCurrentContext(e);if(t&&this.state===ls.PARSING){var i=t.frag,r=t.part,s=t.level,a=self.performance.now();if(i.stats.parsing.end=a,r&&(r.stats.parsing.end=a),"initSegment"!==i.sn){var n=this.getLevelDetails(),o=n&&i.sn>n.endSN||this.shouldLoadParts(n,i.end);o!==this.loadingParts&&(this.log("LL-Part loading "+(o?"ON":"OFF")+" after parsing segment ending @"+i.end.toFixed(2)),this.loadingParts=o)}this.updateLevelTiming(i,r,s,e.partial)}else this.fragCurrent||this.state===ls.STOPPED||this.state===ls.ERROR||(this.state=ls.IDLE)},i.shouldLoadParts=function(e,t){if(this.config.lowLatencyMode){if(!e)return this.loadingParts;if(null!=e&&e.partList){var i,r=e.partList[0];if(t>=r.end+((null==(i=e.fragmentHint)?void 0:i.duration)||0)&&this.lastCurrentTime>r.start-r.fragment.duration)return!0}}return!1},i.getCurrentContext=function(e){var t=this.levels,i=this.fragCurrent,r=e.level,s=e.sn,a=e.part;if(null==t||!t[r])return this.warn("Levels object was unset while buffering fragment "+s+" of level "+r+". The current chunk will not be buffered."),null;var n=t[r],o=a>-1?$i(n,s,a):null,l=o?o.fragment:ji(n,s,i);return l?(i&&i!==l&&(l.stats=i.stats),{frag:l,part:o,level:n}):null},i.bufferFragmentData=function(e,t,i,r,s){var a;if(e&&this.state===ls.PARSING){var n=e.data1,o=e.data2,l=n;if(n&&o&&(l=We(n,o)),null!=(a=l)&&a.length){var d={type:e.type,frag:t,part:i,chunkMeta:r,parent:t.type,data:l};if(this.hls.trigger(k.BUFFER_APPENDING,d),e.dropped&&e.independent&&!i){if(s)return;this.flushBufferGap(t)}}}},i.flushBufferGap=function(e){var t=this.media;if(t)if(Fr.isBuffered(t,t.currentTime)){var i=t.currentTime,r=Fr.bufferInfo(t,i,0),s=e.duration,a=Math.min(2*this.config.maxFragLookUpTolerance,.25*s),n=Math.max(Math.min(e.start-a,r.end-a),i+a);e.start-n>a&&this.flushMainBuffer(n,e.start)}else this.flushMainBuffer(0,e.start)},i.getFwdBufferInfo=function(e,t){var i=this.getLoadPosition();return S(i)?this.getFwdBufferInfoAtPos(e,i,t):null},i.getFwdBufferInfoAtPos=function(e,t,i){var r=this.config.maxBufferHole,s=Fr.bufferInfo(e,t,r);if(0===s.len&&void 0!==s.nextStart){var a=this.fragmentTracker.getBufferedFrag(t,i);if(a&&(s.nextStart<=a.end||a.gap))return Fr.bufferInfo(e,t,Math.max(s.nextStart,r))}return s},i.getMaxBufferLength=function(e){var t,i=this.config;return t=e?Math.max(8*i.maxBufferSize/e,i.maxBufferLength):i.maxBufferLength,Math.min(t,i.maxMaxBufferLength)},i.reduceMaxBufferLength=function(e){var t=this.config,i=e||t.maxBufferLength;return t.maxMaxBufferLength>=i&&(t.maxMaxBufferLength/=2,this.warn("Reduce max buffer length to "+t.maxMaxBufferLength+"s"),!0)},i.getAppendedFrag=function(e,t){var i=this.fragmentTracker.getAppendedFrag(e,Nt.MAIN);return i&&"fragment"in i?i.fragment:i},i.getNextFragment=function(e,t){var i=t.fragments,r=i.length;if(!r)return null;var s=this.config,a=i[0].start,n=s.lowLatencyMode&&!!t.partList,o=null;if(t.live){var l=s.initialLiveManifestSize;if(rt},i.getNextFragmentLoopLoading=function(e,t,i,r,s){var a=e.gap,n=this.getNextFragment(this.nextLoadPosition,t);if(null===n)return n;if(e=n,a&&e&&!e.gap&&i.nextStart){var o=this.getFwdBufferInfoAtPos(this.mediaBuffer?this.mediaBuffer:this.media,i.nextStart,r);if(null!==o&&i.len+o.len>=s)return this.log('buffer full after gaps in "'+r+'" playlist starting at sn: '+e.sn),null}return e},i.mapToInitFragWhenRequired=function(e){return null==e||!e.initSegment||null!=e&&e.initSegment.data||this.bitrateTest?e:e.initSegment},i.getNextPart=function(e,t,i){for(var r=-1,s=!1,a=!0,n=0,o=e.length;n-1&&ii.start&&i.loaded},i.getInitialLiveFragment=function(e,t){var i=this.fragPrevious,r=null;if(i){if(e.hasProgramDateTime&&(this.log("Live playlist, switching playlist, load frag with same PDT: "+i.programDateTime),r=ir(t,i.endProgramDateTime,this.config.maxFragLookUpTolerance)),!r){var s=i.sn+1;if(s>=e.startSN&&s<=e.endSN){var a=t[s-e.startSN];i.cc===a.cc&&(r=a,this.log("Live playlist, switching playlist, load frag with next SN: "+r.sn))}r||(r=nr(t,i.cc))&&this.log("Live playlist, switching playlist, load frag with same CC: "+r.sn)}}else{var n=this.hls.liveSyncPosition;null!==n&&(r=this.getFragmentAtPosition(n,this.bitrateTest?e.fragmentEnd:e.edge,e))}return r},i.getFragmentAtPosition=function(e,t,i){var r,s=this.config,a=this.fragPrevious,n=i.fragments,o=i.endSN,l=i.fragmentHint,d=s.maxFragLookUpTolerance,h=i.partList,c=!!(this.loadingParts&&null!=h&&h.length&&l);if(c&&l&&!this.bitrateTest&&(n=n.concat(l),o=l.sn),r=et-d?0:d):n[n.length-1]){var u=r.sn-i.startSN,p=this.fragmentTracker.getState(r);if((p===Ir.OK||p===Ir.PARTIAL&&r.gap)&&(a=r),a&&r.sn===a.sn&&(!c||h[0].fragment.sn>r.sn)&&a&&r.level===a.level){var f=n[u+1];r=r.sn=a-t.maxFragLookUpTolerance&&s<=n;if(null!==r&&i.duration>r&&(s"+e.startSN+" prev-sn: "+(o?o.sn:"na")+" fragments: "+r),l}return s},i.waitForCdnTuneIn=function(e){var t=3;return e.live&&e.canBlockReload&&e.partTarget&&e.tuneInGoal>Math.max(e.partHoldBack,e.partTarget*t)},i.setStartPosition=function(e,t){var i=this.startPosition;if(i "+(null==(s=this.fragCurrent)?void 0:s.url))}else{var a=t.details===R.FRAG_GAP;a&&this.fragmentTracker.fragBuffered(r,!0);var n=t.errorAction,o=n||{},l=o.action,d=o.retryCount,h=void 0===d?0:d,c=o.retryConfig;if(n&&l===or.RetryRequest&&c){this.resetStartWhenNotLoaded(this.levelLastLoaded);var u=Xi(c,h);this.warn("Fragment "+r.sn+" of "+e+" "+r.level+" errored with "+t.details+", retrying loading "+(h+1)+"/"+c.maxNumRetry+" in "+u+"ms"),n.resolved=!0,this.retryDate=self.performance.now()+u,this.state=ls.FRAG_LOADING_WAITING_RETRY}else if(c&&n){if(this.resetFragmentErrors(e),!(h.5;r&&this.reduceMaxBufferLength(i.len);var s=!r;return s&&this.warn("Buffer full error while media.currentTime is not buffered, flush "+t+" buffer"),e.frag&&(this.fragmentTracker.removeFragment(e.frag),this.nextLoadPosition=e.frag.start),this.resetLoadingState(),s}return!1},i.resetFragmentErrors=function(e){e===Nt.AUDIO&&(this.fragCurrent=null),this.loadedmetadata||(this.startFragRequested=!1),this.state!==ls.STOPPED&&(this.state=ls.IDLE)},i.afterBufferFlushed=function(e,t,i){if(e){var r=Fr.getBuffered(e);this.fragmentTracker.detectEvictedFragments(t,r,i),this.state===ls.ENDED&&this.resetLoadingState()}},i.resetLoadingState=function(){this.log("Reset loading state"),this.fragCurrent=null,this.fragPrevious=null,this.state!==ls.STOPPED&&(this.state=ls.IDLE)},i.resetStartWhenNotLoaded=function(e){if(!this.loadedmetadata){this.startFragRequested=!1;var t=e?e.details:null;null!=t&&t.live?(this.startPosition=-1,this.setStartPosition(t,0),this.resetLoadingState()):this.nextLoadPosition=this.startPosition}},i.resetWhenMissingContext=function(e){this.warn("The loading context changed while buffering fragment "+e.sn+" of level "+e.level+". This chunk will not be buffered."),this.removeUnbufferedFrags(),this.resetStartWhenNotLoaded(this.levelLastLoaded),this.resetLoadingState()},i.removeUnbufferedFrags=function(e){void 0===e&&(e=0),this.fragmentTracker.removeFragmentsInRange(e,1/0,this.playlistType,!1,!0)},i.updateLevelTiming=function(e,t,i,r){var s,a=this,n=i.details;if(n){if(!Object.keys(e.elementaryStreams).reduce((function(t,s){var o=e.elementaryStreams[s];if(o){var l=o.endPTS-o.startPTS;if(l<=0)return a.warn("Could not parse fragment "+e.sn+" "+s+" duration reliably ("+l+")"),t||!1;var d=r?0:Fi(n,e,o.startPTS,o.endPTS,o.startDTS,o.endDTS);return a.hls.trigger(k.LEVEL_PTS_UPDATED,{details:n,level:i,drift:d,type:s,frag:e,start:o.startPTS,end:o.endPTS}),!0}return t}),!1)&&null===(null==(s=this.transmuxer)?void 0:s.error)){var o=new Error("Found no media in fragment "+e.sn+" of level "+e.level+" resetting transmuxer to fallback to playlist timing");if(0===i.fragmentError&&(i.fragmentError++,e.gap=!0,this.fragmentTracker.removeFragment(e),this.fragmentTracker.fragBuffered(e,!0)),this.warn(o.message),this.hls.trigger(k.ERROR,{type:C.MEDIA_ERROR,details:R.FRAG_PARSING_ERROR,fatal:!1,error:o,frag:e,reason:"Found no media in msn "+e.sn+' of level "'+i.url+'"'}),!this.hls)return;this.resetTransmuxer()}this.state=ls.PARSED,this.hls.trigger(k.FRAG_PARSED,{frag:e,part:t})}else this.warn("level.details undefined")},i.resetTransmuxer=function(){this.transmuxer&&(this.transmuxer.destroy(),this.transmuxer=null)},i.recoverWorkerError=function(e){"demuxerWorker"===e.event&&(this.fragmentTracker.removeAllFragments(),this.resetTransmuxer(),this.resetStartWhenNotLoaded(this.levelLastLoaded),this.resetLoadingState())},d(t,[{key:"state",get:function(){return this._state},set:function(e){var t=this._state;t!==e&&(this._state=e,this.log(t+"->"+e))}}])}(Lr),hs=function(){function e(){this.chunks=[],this.dataLength=0}var t=e.prototype;return t.push=function(e){this.chunks.push(e),this.dataLength+=e.length},t.flush=function(){var e,t=this.chunks,i=this.dataLength;return t.length?(e=1===t.length?t[0]:cs(t,i),this.reset(),e):new Uint8Array(0)},t.reset=function(){this.chunks.length=0,this.dataLength=0},e}();function cs(e,t){for(var i=new Uint8Array(t),r=0,s=0;s0)return e.subarray(i,i+r)}function fs(e){if(8===e.data.byteLength){var t=new Uint8Array(e.data),i=1&t[3],r=(t[4]<<23)+(t[5]<<15)+(t[6]<<7)+t[7];return r/=45,i&&(r+=47721858.84),Math.round(r)}}function ms(e){for(var t=gi(e),i=0;i0&&n.samples.push({pts:this.lastPTS,dts:this.lastPTS,data:r,type:Qt.audioId3,duration:Number.POSITIVE_INFINITY});s>>6);var u=(60&t[i+2])>>>2;if(!(u>c.length-1))return o=(1&t[i+2])<<2,o|=(192&t[i+3])>>>6,G.log("manifest codec:"+r+", ADTS type:"+s+", samplingIndex:"+u),/firefox|palemoon/i.test(d)?u>=6?(s=5,l=new Array(4),n=u-3):(s=2,l=new Array(2),n=u):-1!==d.indexOf("android")?(s=2,l=new Array(2),n=u):(s=5,l=new Array(4),r&&(-1!==r.indexOf("mp4a.40.29")||-1!==r.indexOf("mp4a.40.5"))||!r&&u>=6?n=u-3:((r&&-1!==r.indexOf("mp4a.40.2")&&(u>=6&&1===o||/vivaldi/i.test(d))||!r&&1===o)&&(s=2,l=new Array(2)),n=u)),l[0]=s<<3,l[0]|=(14&u)>>1,l[1]|=(1&u)<<7,l[1]|=o<<3,5===s&&(l[1]|=(14&n)>>1,l[2]=(1&n)<<7,l[2]|=8,l[3]=0),{config:l,samplerate:c[u],channelCount:o,codec:"mp4a.40."+s,parsedCodec:"mp4a.40."+a,manifestCodec:h};var p=new Error("invalid ADTS sampling index:"+u);e.emit(k.ERROR,k.ERROR,{type:C.MEDIA_ERROR,details:R.FRAG_PARSING_ERROR,fatal:!0,error:p,reason:p.message})}function bs(e,t){return 255===e[t]&&240==(246&e[t+1])}function _s(e,t){return 1&e[t+1]?7:9}function Es(e,t){return(3&e[t+3])<<11|e[t+4]<<3|(224&e[t+5])>>>5}function Ss(e,t){return t+5=e.length)return!1;var r=Es(e,t);if(r<=i)return!1;var s=t+r;return s===e.length||ws(e,s)}return!1}function Cs(e,t,i,r,s){if(!e.samplerate){var a=vs(t,i,r,s);if(!a)return;e.config=a.config,e.samplerate=a.samplerate,e.channelCount=a.channelCount,e.codec=a.codec,e.manifestCodec=a.manifestCodec,e.parsedCodec=a.parsedCodec,G.log("parsed codec:"+e.parsedCodec+", codec:"+e.codec+", rate:"+a.samplerate+", channels:"+a.channelCount)}}function Rs(e){return 9216e4/e}function Ds(e,t){var i=_s(e,t);if(t+i<=e.length){var r=Es(e,t)-i;if(r>0)return{headerLength:i,frameLength:r}}}function xs(e,t,i,r,s){var a,n=r+s*Rs(e.samplerate),o=Ds(t,i);if(o){var l=o.frameLength,d=o.headerLength,h=d+l,c=Math.max(0,i+h-t.length);c?(a=new Uint8Array(h-d)).set(t.subarray(i+d,t.length),0):a=t.subarray(i+d,i+h);var u={unit:a,pts:n};return c||e.samples.push(u),{sample:u,length:h,missing:c}}var p=t.length-i;return(a=new Uint8Array(p)).set(t.subarray(i,t.length),0),{sample:{unit:a,pts:n},length:p,missing:-1}}var Ls=null,Is=[32,64,96,128,160,192,224,256,288,320,352,384,416,448,32,48,56,64,80,96,112,128,160,192,224,256,320,384,32,40,48,56,64,80,96,112,128,160,192,224,256,320,32,48,56,64,80,96,112,128,144,160,176,192,224,256,8,16,24,32,40,48,56,64,80,96,112,128,144,160],Ps=[44100,48e3,32e3,22050,24e3,16e3,11025,12e3,8e3],Bs=[[0,72,144,12],[0,0,0,0],[0,72,144,12],[0,144,144,12]],Ms=[0,1,1,4];function Us(e,t,i,r,s){if(!(i+24>t.length)){var a=Fs(t,i);if(a&&i+a.frameLength<=t.length){var n=r+s*(9e4*a.samplesPerFrame/a.sampleRate),o={unit:t.subarray(i,i+a.frameLength),pts:n,dts:n};return e.config=[],e.channelCount=a.channelCount,e.samplerate=a.sampleRate,e.samples.push(o),{sample:o,length:a.frameLength,missing:0}}}}function Fs(e,t){var i=e[t+1]>>3&3,r=e[t+1]>>1&3,s=e[t+2]>>4&15,a=e[t+2]>>2&3;if(1!==i&&0!==s&&15!==s&&3!==a){var n=e[t+2]>>1&1,o=e[t+3]>>6,l=1e3*Is[14*(3===i?3-r:3===r?3:4)+s-1],d=Ps[3*(3===i?0:2===i?1:2)+a],h=3===o?1:2,c=Bs[i][r],u=Ms[r],p=8*c*u,f=Math.floor(c*l/d+n)*u;if(null===Ls){var m=(navigator.userAgent||"").match(/Chrome\/(\d+)/i);Ls=m?parseInt(m[1]):0}return!!Ls&&Ls<=87&&2===r&&l>=224e3&&0===o&&(e[t+3]=128|e[t+3]),{sampleRate:d,channelCount:h,frameLength:f,samplesPerFrame:p}}}function Os(e,t){return!(255!==e[t]||224&~e[t+1]||!(6&e[t+1]))}function Ns(e,t){return t+10;){n[0]=e[t];var o=Math.min(r,8),l=8-o;a[0]=4278190080>>>24+l<>l,i=i?i<t.length)return-1;if(11!==t[i]||119!==t[i+1])return-1;var a=t[i+4]>>6;if(a>=3)return-1;var n=[48e3,44100,32e3][a],o=63&t[i+4],l=2*[64,69,96,64,70,96,80,87,120,80,88,120,96,104,144,96,105,144,112,121,168,112,122,168,128,139,192,128,140,192,160,174,240,160,175,240,192,208,288,192,209,288,224,243,336,224,244,336,256,278,384,256,279,384,320,348,480,320,349,480,384,417,576,384,418,576,448,487,672,448,488,672,512,557,768,512,558,768,640,696,960,640,697,960,768,835,1152,768,836,1152,896,975,1344,896,976,1344,1024,1114,1536,1024,1115,1536,1152,1253,1728,1152,1254,1728,1280,1393,1920,1280,1394,1920][3*o+a];if(i+l>t.length)return-1;var d=t[i+6]>>5,h=0;2===d?h+=2:(1&d&&1!==d&&(h+=2),4&d&&(h+=2));var c=(t[i+6]<<8|t[i+7])>>12-h&1,u=[2,1,2,3,3,4,4,5][d]+c,p=t[i+5]>>3,f=7&t[i+5],m=new Uint8Array([a<<6|p<<1|f>>2,(3&f)<<6|d<<3|c<<2|o>>4,o<<4&224]),y=r+s*(1536/n*9e4),g=t.subarray(i,i+l);return e.config=m,e.channelCount=u,e.samplerate=n,e.samples.push({unit:g,pts:y}),l}var qs=function(){function e(){this.VideoSample=null}var t=e.prototype;return t.createVideoSample=function(e,t,i,r){return{key:e,frame:!1,pts:t,dts:i,units:[],debug:r,length:0}},t.getLastNalUnit=function(e){var t,i,r=this.VideoSample;if(r&&0!==r.units.length||(r=e[e.length-1]),null!=(t=r)&&t.units){var s=r.units;i=s[s.length-1]}return i},t.pushAccessUnit=function(e,t){if(e.units.length&&e.frame){if(void 0===e.pts){var i=t.samples,r=i.length;if(!r)return void t.dropped++;var s=i[r-1];e.pts=s.pts,e.dts=s.dts}t.samples.push(e)}e.debug.length&&G.log(e.pts+"/"+e.dts+":"+e.debug)},t.parseNALu=function(e,t){var i,r,s=t.byteLength,a=e.naluState||0,n=a,o=[],l=0,d=-1,h=0;for(-1===a&&(d=0,h=this.getNALuType(t,0),a=0,l=1);l=0){var c={data:t.subarray(d,r),type:h};o.push(c)}else{var u=this.getLastNalUnit(e.samples);u&&(n&&l<=4-n&&u.state&&(u.data=u.data.subarray(0,u.data.byteLength-n)),r>0&&(u.data=We(u.data,t.subarray(0,r)),u.state=0))}l=0&&a>=0){var p={data:t.subarray(d,s),type:h,state:a};o.push(p)}if(0===o.length){var f=this.getLastNalUnit(e.samples);f&&(f.data=We(f.data,t))}return e.naluState=a,o},e}(),Ys=function(){function e(e){this.data=void 0,this.bytesAvailable=void 0,this.word=void 0,this.bitsAvailable=void 0,this.data=e,this.bytesAvailable=e.byteLength,this.word=0,this.bitsAvailable=0}var t=e.prototype;return t.loadWord=function(){var e=this.data,t=this.bytesAvailable,i=e.byteLength-t,r=new Uint8Array(4),s=Math.min(4,t);if(0===s)throw new Error("no bytes available");r.set(e.subarray(i,i+s)),this.word=new DataView(r.buffer).getUint32(0),this.bitsAvailable=8*s,this.bytesAvailable-=s},t.skipBits=function(e){var t;e=Math.min(e,8*this.bytesAvailable+this.bitsAvailable),this.bitsAvailable>e?(this.word<<=e,this.bitsAvailable-=e):(e-=this.bitsAvailable,e-=(t=e>>3)<<3,this.bytesAvailable-=t,this.loadWord(),this.word<<=e,this.bitsAvailable-=e)},t.readBits=function(e){var t=Math.min(this.bitsAvailable,e),i=this.word>>>32-t;if(e>32&&G.error("Cannot read more than 32 bits at a time"),this.bitsAvailable-=t,this.bitsAvailable>0)this.word<<=t;else{if(!(this.bytesAvailable>0))throw new Error("no bits available");this.loadWord()}return(t=e-t)>0&&this.bitsAvailable?i<>>e)return this.word<<=e,this.bitsAvailable-=e,e;return this.loadWord(),e+this.skipLZ()},t.skipUEG=function(){this.skipBits(1+this.skipLZ())},t.skipEG=function(){this.skipBits(1+this.skipLZ())},t.readUEG=function(){var e=this.skipLZ();return this.readBits(e+1)-1},t.readEG=function(){var e=this.readUEG();return 1&e?1+e>>>1:-1*(e>>>1)},t.readBoolean=function(){return 1===this.readBits(1)},t.readUByte=function(){return this.readBits(8)},t.readUShort=function(){return this.readBits(16)},t.readUInt=function(){return this.readBits(32)},e}(),Qs=function(e){function t(){return e.apply(this,arguments)||this}u(t,e);var i=t.prototype;return i.parsePES=function(e,t,i,r,s){var a,n=this,o=this.parseNALu(e,i.data),l=this.VideoSample,d=!1;i.data=null,l&&o.length&&!e.audFound&&(this.pushAccessUnit(l,e),l=this.VideoSample=this.createVideoSample(!1,i.pts,i.dts,"")),o.forEach((function(r){var o;switch(r.type){case 1:var h=!1;a=!0;var c,u=r.data;if(d&&u.length>4){var p=n.readSliceType(u);2!==p&&4!==p&&7!==p&&9!==p||(h=!0)}h&&null!=(c=l)&&c.frame&&!l.key&&(n.pushAccessUnit(l,e),l=n.VideoSample=null),l||(l=n.VideoSample=n.createVideoSample(!0,i.pts,i.dts,"")),l.frame=!0,l.key=h;break;case 5:a=!0,null!=(o=l)&&o.frame&&!l.key&&(n.pushAccessUnit(l,e),l=n.VideoSample=null),l||(l=n.VideoSample=n.createVideoSample(!0,i.pts,i.dts,"")),l.key=!0,l.frame=!0;break;case 6:a=!0,qe(r.data,1,i.pts,t.samples);break;case 7:var f,m;a=!0,d=!0;var y=r.data,g=n.readSPS(y);if(!e.sps||e.width!==g.width||e.height!==g.height||(null==(f=e.pixelRatio)?void 0:f[0])!==g.pixelRatio[0]||(null==(m=e.pixelRatio)?void 0:m[1])!==g.pixelRatio[1]){e.width=g.width,e.height=g.height,e.pixelRatio=g.pixelRatio,e.sps=[y],e.duration=s;for(var A=y.subarray(1,4),v="avc1.",b=0;b<3;b++){var _=A[b].toString(16);_.length<2&&(_="0"+_),v+=_}e.codec=v}break;case 8:a=!0,e.pps=[r.data];break;case 9:a=!0,e.audFound=!0,l&&n.pushAccessUnit(l,e),l=n.VideoSample=n.createVideoSample(!1,i.pts,i.dts,"");break;case 12:a=!0;break;default:a=!1,l&&(l.debug+="unknown NAL "+r.type+" ")}l&&a&&l.units.push(r)})),r&&l&&(this.pushAccessUnit(l,e),this.VideoSample=null)},i.getNALuType=function(e,t){return 31&e[t]},i.readSliceType=function(e){var t=new Ys(e);return t.readUByte(),t.readUEG(),t.readUEG()},i.skipScalingList=function(e,t){for(var i=8,r=8,s=0;s>>1},i.ebsp2rbsp=function(e){for(var t=new Uint8Array(e.byteLength),i=0,r=0;r=2&&3===e[r]&&0===e[r-1]&&0===e[r-2]||(t[i]=e[r],i++);return new Uint8Array(t.buffer,0,i)},i.readVPS=function(e){var t=new Ys(e);return t.readUByte(),t.readUByte(),t.readBits(4),t.skipBits(2),t.readBits(6),{numTemporalLayers:t.readBits(3)+1,temporalIdNested:t.readBoolean()}},i.readSPS=function(e){var t=new Ys(this.ebsp2rbsp(e));t.readUByte(),t.readUByte(),t.readBits(4);var i=t.readBits(3);t.readBoolean();for(var r=t.readBits(2),s=t.readBoolean(),a=t.readBits(5),n=t.readUByte(),o=t.readUByte(),l=t.readUByte(),d=t.readUByte(),h=t.readUByte(),c=t.readUByte(),u=t.readUByte(),p=t.readUByte(),f=t.readUByte(),m=t.readUByte(),y=t.readUByte(),g=[],A=[],v=0;v0)for(var b=i;b<8;b++)t.readBits(2);for(var _=0;_1&&t.readEG();for(var F=0;F0&&ne<16?(ee=[1,12,10,16,40,24,20,32,80,18,15,64,160,4,3,2][ne-1],te=[1,11,11,11,33,11,11,11,33,11,11,33,99,3,2,1][ne-1]):255===ne&&(ee=t.readBits(16),te=t.readBits(16))}if(t.readBoolean()&&t.readBoolean(),t.readBoolean()&&(t.readBits(3),t.readBoolean(),t.readBoolean()&&(t.readUByte(),t.readUByte(),t.readUByte())),t.readBoolean()&&(t.readUEG(),t.readUEG()),t.readBoolean(),t.readBoolean(),t.readBoolean(),(ae=t.readBoolean())&&(k+=t.readUEG(),C+=t.readUEG(),R+=t.readUEG(),D+=t.readUEG()),t.readBoolean()&&(re=t.readBits(32),se=t.readBits(32),t.readBoolean()&&t.readUEG(),t.readBoolean())){var oe=t.readBoolean(),le=t.readBoolean(),de=!1;(oe||le)&&((de=t.readBoolean())&&(t.readUByte(),t.readBits(5),t.readBoolean(),t.readBits(5)),t.readBits(4),t.readBits(4),de&&t.readBits(4),t.readBits(5),t.readBits(5),t.readBits(5));for(var he=0;he<=i;he++){var ce=!1;(ie=t.readBoolean())||t.readBoolean()?t.readEG():ce=t.readBoolean();var ue=ce?1:t.readUEG()+1;if(oe)for(var pe=0;pe>Ee&1)<<31-Ee)>>>0;var Se=_e.toString(16);return 1===a&&"2"===Se&&(Se="6"),{codecString:"hvc1."+ve+a+"."+Se+"."+(s?"H":"L")+y+".B0",params:{general_tier_flag:s,general_profile_idc:a,general_profile_space:r,general_profile_compatibility_flags:[n,o,l,d],general_constraint_indicator_flags:[h,c,u,p,f,m],general_level_idc:y,bit_depth:x+8,bit_depth_luma_minus8:x,bit_depth_chroma_minus8:L,min_spatial_segmentation_idc:Z,chroma_format_idc:E,frame_rate:{fixed:ie,fps:se/re}},width:me,height:ye,pixelRatio:[ee,te]}},i.readPPS=function(e){var t=new Ys(this.ebsp2rbsp(e));t.readUByte(),t.readUByte(),t.skipUEG(),t.skipUEG(),t.skipBits(2),t.skipBits(3),t.skipBits(2),t.skipUEG(),t.skipUEG(),t.skipEG(),t.skipBits(2),t.readBoolean()&&t.skipUEG(),t.skipEG(),t.skipEG(),t.skipBits(4);var i=t.readBoolean(),r=t.readBoolean(),s=1;return r&&i?s=0:r?s=3:i&&(s=2),{parallelismType:s}},i.matchSPS=function(e,t){return String.fromCharCode.apply(null,e).substr(3)===String.fromCharCode.apply(null,t).substr(3)},t}(qs),Js=function(){function e(e,t,i){this.keyData=void 0,this.decrypter=void 0,this.keyData=i,this.decrypter=new ns(t,{removePKCS7Padding:!1})}var t=e.prototype;return t.decryptBuffer=function(e){return this.decrypter.decrypt(e,this.keyData.key.buffer,this.keyData.iv.buffer,ie.cbc)},t.decryptAacSample=function(e,t,i){var r=this,s=e[t].unit;if(!(s.length<=16)){var a=s.subarray(16,s.length-s.length%16),n=a.buffer.slice(a.byteOffset,a.byteOffset+a.length);this.decryptBuffer(n).then((function(a){var n=new Uint8Array(a);s.set(n,16),r.decrypter.isSync()||r.decryptAacSamples(e,t+1,i)}))}},t.decryptAacSamples=function(e,t,i){for(;;t++){if(t>=e.length)return void i();if(!(e[t].unit.length<32||(this.decryptAacSample(e,t,i),this.decrypter.isSync())))return}},t.getAvcEncryptedData=function(e){for(var t=16*Math.floor((e.length-48)/160)+16,i=new Int8Array(t),r=0,s=32;s=e.length)return void r();for(var s=e[t].units;!(i>=s.length);i++){var a=s[i];if(!(a.data.length<=48||1!==a.type&&5!==a.type||(this.decryptAvcSample(e,t,i,r,a),this.decrypter.isSync())))return}}},e}(),Zs=188,ea=function(){function e(e,t,i){this.observer=void 0,this.config=void 0,this.typeSupported=void 0,this.sampleAes=null,this.pmtParsed=!1,this.audioCodec=void 0,this.videoCodec=void 0,this._duration=0,this._pmtId=-1,this._videoTrack=void 0,this._audioTrack=void 0,this._id3Track=void 0,this._txtTrack=void 0,this.aacOverFlow=null,this.remainderData=null,this.videoParser=void 0,this.observer=e,this.config=t,this.typeSupported=i,this.videoParser=null}e.probe=function(t){var i=e.syncOffset(t);return i>0&&G.warn("MPEG2-TS detected but first sync word found @ offset "+i),-1!==i},e.syncOffset=function(e){for(var t=e.length,i=Math.min(5*Zs,t-Zs)+1,r=0;r1&&(0===a&&n>2||o+Zs>i))return a}r++}return-1},e.createTrack=function(e,t){return{container:"video"===e||"audio"===e?"video/mp2t":void 0,type:e,id:Ee[e],pid:-1,inputTimeScale:9e4,sequenceNumber:0,samples:[],dropped:0,duration:"audio"===e?t:void 0}};var t=e.prototype;return t.resetInitSegment=function(t,i,r,s){this.pmtParsed=!1,this._pmtId=-1,this._videoTrack=e.createTrack("video"),this._audioTrack=e.createTrack("audio",s),this._id3Track=e.createTrack("id3"),this._txtTrack=e.createTrack("text"),this._audioTrack.segmentCodec="aac",this.aacOverFlow=null,this.remainderData=null,this.audioCodec=i,this.videoCodec=r,this._duration=s},t.resetTimeStamp=function(){},t.resetContiguity=function(){var e=this._audioTrack,t=this._videoTrack,i=this._id3Track;e&&(e.pesData=null),t&&(t.pesData=null),i&&(i.pesData=null),this.aacOverFlow=null,this.remainderData=null},t.demux=function(t,i,r,s){var a;void 0===r&&(r=!1),void 0===s&&(s=!1),r||(this.sampleAes=null);var n=this._videoTrack,o=this._audioTrack,l=this._id3Track,d=this._txtTrack,h=n.pid,c=n.pesData,u=o.pid,p=l.pid,f=o.pesData,m=l.pesData,y=null,g=this.pmtParsed,A=this._pmtId,v=t.length;if(this.remainderData&&(v=(t=We(this.remainderData,t)).length,this.remainderData=null),v>4>1){if((T=E+5+t[E+4])===E+Zs)continue}else T=E+4;switch(w){case h:if(S){if(c&&(a=aa(c))){if(null===this.videoParser)switch(n.segmentCodec){case"avc":this.videoParser=new Qs;break;case"hevc":this.videoParser=new Xs}null!==this.videoParser&&this.videoParser.parsePES(n,d,a,!1,this._duration)}c={data:[],size:0}}c&&(c.data.push(t.subarray(T,E+Zs)),c.size+=E+Zs-T);break;case u:if(S){if(f&&(a=aa(f)))switch(o.segmentCodec){case"aac":this.parseAACPES(o,a);break;case"mp3":this.parseMPEGPES(o,a);break;case"ac3":this.parseAC3PES(o,a)}f={data:[],size:0}}f&&(f.data.push(t.subarray(T,E+Zs)),f.size+=E+Zs-T);break;case p:S&&(m&&(a=aa(m))&&this.parseID3PES(l,a),m={data:[],size:0}),m&&(m.data.push(t.subarray(T,E+Zs)),m.size+=E+Zs-T);break;case 0:S&&(T+=t[T]+1),A=this._pmtId=ia(t,T);break;case A:S&&(T+=t[T]+1);var D=ra(t,T,this.typeSupported,r);(h=D.videoPid)>0&&(n.pid=h,n.segmentCodec=D.segmentVideoCodec),(u=D.audioPid)>0&&(o.pid=u,o.segmentCodec=D.segmentAudioCodec),(p=D.id3Pid)>0&&(l.pid=p),null===y||g||(G.warn("MPEG-TS PMT found at "+E+" after unknown PID '"+y+"'. Backtracking to sync byte @"+b+" to parse all TS packets."),y=null,E=b-188),g=this.pmtParsed=!0;break;case 17:case 8191:break;default:y=w}}else _++;if(_>0){var x=new Error("Found "+_+" TS packet/s that do not start with 0x47");this.observer.emit(k.ERROR,k.ERROR,{type:C.MEDIA_ERROR,details:R.FRAG_PARSING_ERROR,fatal:!1,error:x,reason:x.message})}n.pesData=c,o.pesData=f,l.pesData=m;var L={audioTrack:o,videoTrack:n,id3Track:l,textTrack:d};return s&&this.extractRemainingSamples(L),L},t.flush=function(){var e,t=this.remainderData;return this.remainderData=null,e=t?this.demux(t,-1,!1,!0):{videoTrack:this._videoTrack,audioTrack:this._audioTrack,id3Track:this._id3Track,textTrack:this._txtTrack},this.extractRemainingSamples(e),this.sampleAes?this.decrypt(e,this.sampleAes):e},t.extractRemainingSamples=function(e){var t,i=e.audioTrack,r=e.videoTrack,s=e.id3Track,a=e.textTrack,n=r.pesData,o=i.pesData,l=s.pesData;if(n&&(t=aa(n))){if(null===this.videoParser)switch(r.segmentCodec){case"avc":this.videoParser=new Qs;break;case"hevc":this.videoParser=new Xs}null!==this.videoParser&&(this.videoParser.parsePES(r,a,t,!0,this._duration),r.pesData=null)}else r.pesData=n;if(o&&(t=aa(o))){switch(i.segmentCodec){case"aac":this.parseAACPES(i,t);break;case"mp3":this.parseMPEGPES(i,t);break;case"ac3":this.parseAC3PES(i,t)}i.pesData=null}else null!=o&&o.size&&G.log("last AAC PES packet truncated,might overlap between fragments"),i.pesData=o;l&&(t=aa(l))?(this.parseID3PES(s,t),s.pesData=null):s.pesData=l},t.demuxSampleAes=function(e,t,i){var r=this.demux(e,i,!0,!this.config.progressive),s=this.sampleAes=new Js(this.observer,this.config,t);return this.decrypt(r,s)},t.decrypt=function(e,t){return new Promise((function(i){var r=e.audioTrack,s=e.videoTrack;r.samples&&"aac"===r.segmentCodec?t.decryptAacSamples(r.samples,0,(function(){s.samples?t.decryptAvcSamples(s.samples,0,0,(function(){i(e)})):i(e)})):s.samples&&t.decryptAvcSamples(s.samples,0,0,(function(){i(e)}))}))},t.destroy=function(){this._duration=0},t.parseAACPES=function(e,t){var i,r,s,a=0,n=this.aacOverFlow,o=t.data;if(n){this.aacOverFlow=null;var l=n.missing,d=n.sample.unit.byteLength;if(-1===l)o=We(n.sample.unit,o);else{var h=d-l;n.sample.unit.set(o.subarray(0,l),h),e.samples.push(n.sample),a=n.missing}}for(i=a,r=o.length;i0;)o+=s;else G.warn("[tsdemuxer]: AC3 PES unknown PTS")},t.parseID3PES=function(e,t){if(void 0!==t.pts){var i=c({},t,{type:this._videoTrack?Qt.emsg:Qt.audioId3,duration:Number.POSITIVE_INFINITY});e.samples.push(i)}else G.warn("[tsdemuxer]: ID3 PES unknown PTS")},e}();function ta(e,t){return((31&e[t+1])<<8)+e[t+2]}function ia(e,t){return(31&e[t+10])<<8|e[t+11]}function ra(e,t,i,r){var s={audioPid:-1,videoPid:-1,id3Pid:-1,segmentVideoCodec:"avc",segmentAudioCodec:"aac"},a=t+3+((15&e[t+1])<<8|e[t+2])-4;for(t+=12+((15&e[t+10])<<8|e[t+11]);t0)for(var l=t+5,d=o;d>2;){106===e[l]&&(!0!==i.ac3?G.log("AC-3 audio found, not supported in this browser for now"):(s.audioPid=n,s.segmentAudioCodec="ac3"));var h=e[l+1]+2;l+=h,d-=h}break;case 194:case 135:G.warn("Unsupported EC-3 in M2TS found");break;case 36:-1===s.videoPid&&(s.videoPid=n,s.segmentVideoCodec="hevc",G.log("HEVC in M2TS found"))}t+=o+5}return s}function sa(e){G.log(e+" with AES-128-CBC encryption found in unencrypted stream")}function aa(e){var t,i,r,s,a,n=0,o=e.data;if(!e||0===e.size)return null;for(;o[0].length<19&&o.length>1;)o[0]=We(o[0],o[1]),o.splice(1,1);if(1===((t=o[0])[0]<<16)+(t[1]<<8)+t[2]){if((i=(t[4]<<8)+t[5])&&i>e.size-6)return null;var l=t[7];192&l&&(s=536870912*(14&t[9])+4194304*(255&t[10])+16384*(254&t[11])+128*(255&t[12])+(254&t[13])/2,64&l?s-(a=536870912*(14&t[14])+4194304*(255&t[15])+16384*(254&t[16])+128*(255&t[17])+(254&t[18])/2)>54e5&&(G.warn(Math.round((s-a)/9e4)+"s delta between PTS and DTS, align them"),s=a):a=s);var d=(r=t[8])+9;if(e.size<=d)return null;e.size-=d;for(var h=new Uint8Array(e.size),c=0,u=o.length;cp){d-=p;continue}t=t.subarray(d),p-=d,d=0}h.set(t,n),n+=p}return i&&(i-=r+3),{data:h,pts:s,dts:a,len:i}}return null}var na=function(e){function t(){return e.apply(this,arguments)||this}u(t,e);var i=t.prototype;return i.resetInitSegment=function(t,i,r,s){e.prototype.resetInitSegment.call(this,t,i,r,s),this._audioTrack={container:"audio/mpeg",type:"audio",id:2,pid:-1,sequenceNumber:0,segmentCodec:"mp3",samples:[],manifestCodec:i,duration:s,inputTimeScale:9e4,dropped:0}},t.probe=function(e){if(!e)return!1;var t=ps(e,0),i=(null==t?void 0:t.length)||0;if(t&&11===e[i]&&119===e[i+1]&&void 0!==ms(t)&&js(e,i)<=16)return!1;for(var r=e.length;i1?i-1:0),s=1;s>24&255,o[1]=t>>16&255,o[2]=t>>8&255,o[3]=255&t,o.set(e,4),a=0,t=8;a>24&255,t>>16&255,t>>8&255,255&t,r>>24,r>>16&255,r>>8&255,255&r,s>>24,s>>16&255,s>>8&255,255&s,85,196,0,0]))},e.mdia=function(t){return e.box(e.types.mdia,e.mdhd(t.timescale,t.duration),e.hdlr(t.type),e.minf(t))},e.mfhd=function(t){return e.box(e.types.mfhd,new Uint8Array([0,0,0,0,t>>24,t>>16&255,t>>8&255,255&t]))},e.minf=function(t){return"audio"===t.type?e.box(e.types.minf,e.box(e.types.smhd,e.SMHD),e.DINF,e.stbl(t)):e.box(e.types.minf,e.box(e.types.vmhd,e.VMHD),e.DINF,e.stbl(t))},e.moof=function(t,i,r){return e.box(e.types.moof,e.mfhd(t),e.traf(r,i))},e.moov=function(t){for(var i=t.length,r=[];i--;)r[i]=e.trak(t[i]);return e.box.apply(null,[e.types.moov,e.mvhd(t[0].timescale,t[0].duration)].concat(r).concat(e.mvex(t)))},e.mvex=function(t){for(var i=t.length,r=[];i--;)r[i]=e.trex(t[i]);return e.box.apply(null,[e.types.mvex].concat(r))},e.mvhd=function(t,i){i*=t;var r=Math.floor(i/(la+1)),s=Math.floor(i%(la+1)),a=new Uint8Array([1,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,3,t>>24&255,t>>16&255,t>>8&255,255&t,r>>24,r>>16&255,r>>8&255,255&r,s>>24,s>>16&255,s>>8&255,255&s,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255]);return e.box(e.types.mvhd,a)},e.sdtp=function(t){var i,r,s=t.samples||[],a=new Uint8Array(4+s.length);for(i=0;i>>8&255),a.push(255&s),a=a.concat(Array.prototype.slice.call(r));for(i=0;i>>8&255),n.push(255&s),n=n.concat(Array.prototype.slice.call(r));var o=e.box(e.types.avcC,new Uint8Array([1,a[3],a[4],a[5],255,224|t.sps.length].concat(a).concat([t.pps.length]).concat(n))),l=t.width,d=t.height,h=t.pixelRatio[0],c=t.pixelRatio[1];return e.box(e.types.avc1,new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,l>>8&255,255&l,d>>8&255,255&d,0,72,0,0,0,72,0,0,0,0,0,0,0,1,18,100,97,105,108,121,109,111,116,105,111,110,47,104,108,115,46,106,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,17,17]),o,e.box(e.types.btrt,new Uint8Array([0,28,156,128,0,45,198,192,0,45,198,192])),e.box(e.types.pasp,new Uint8Array([h>>24,h>>16&255,h>>8&255,255&h,c>>24,c>>16&255,c>>8&255,255&c])))},e.esds=function(e){var t=e.config.length;return new Uint8Array([0,0,0,0,3,23+t,0,1,0,4,15+t,64,21,0,0,0,0,0,0,0,0,0,0,0,5].concat([t]).concat(e.config).concat([6,1,2]))},e.audioStsd=function(e){var t=e.samplerate;return new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,e.channelCount,0,16,0,0,0,0,t>>8&255,255&t,0,0])},e.mp4a=function(t){return e.box(e.types.mp4a,e.audioStsd(t),e.box(e.types.esds,e.esds(t)))},e.mp3=function(t){return e.box(e.types[".mp3"],e.audioStsd(t))},e.ac3=function(t){return e.box(e.types["ac-3"],e.audioStsd(t),e.box(e.types.dac3,t.config))},e.stsd=function(t){return"audio"===t.type?"mp3"===t.segmentCodec&&"mp3"===t.codec?e.box(e.types.stsd,e.STSD,e.mp3(t)):"ac3"===t.segmentCodec?e.box(e.types.stsd,e.STSD,e.ac3(t)):e.box(e.types.stsd,e.STSD,e.mp4a(t)):"avc"===t.segmentCodec?e.box(e.types.stsd,e.STSD,e.avc1(t)):e.box(e.types.stsd,e.STSD,e.hvc1(t))},e.tkhd=function(t){var i=t.id,r=t.duration*t.timescale,s=t.width,a=t.height,n=Math.floor(r/(la+1)),o=Math.floor(r%(la+1));return e.box(e.types.tkhd,new Uint8Array([1,0,0,7,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,3,i>>24&255,i>>16&255,i>>8&255,255&i,0,0,0,0,n>>24,n>>16&255,n>>8&255,255&n,o>>24,o>>16&255,o>>8&255,255&o,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,s>>8&255,255&s,0,0,a>>8&255,255&a,0,0]))},e.traf=function(t,i){var r=e.sdtp(t),s=t.id,a=Math.floor(i/(la+1)),n=Math.floor(i%(la+1));return e.box(e.types.traf,e.box(e.types.tfhd,new Uint8Array([0,0,0,0,s>>24,s>>16&255,s>>8&255,255&s])),e.box(e.types.tfdt,new Uint8Array([1,0,0,0,a>>24,a>>16&255,a>>8&255,255&a,n>>24,n>>16&255,n>>8&255,255&n])),e.trun(t,r.length+16+20+8+16+8+8),r)},e.trak=function(t){return t.duration=t.duration||4294967295,e.box(e.types.trak,e.tkhd(t),e.mdia(t))},e.trex=function(t){var i=t.id;return e.box(e.types.trex,new Uint8Array([0,0,0,0,i>>24,i>>16&255,i>>8&255,255&i,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1]))},e.trun=function(t,i){var r,s,a,n,o,l,d=t.samples||[],h=d.length,c=12+16*h,u=new Uint8Array(c);for(i+=8+c,u.set(["video"===t.type?1:0,0,15,1,h>>>24&255,h>>>16&255,h>>>8&255,255&h,i>>>24&255,i>>>16&255,i>>>8&255,255&i],0),r=0;r>>24&255,a>>>16&255,a>>>8&255,255&a,n>>>24&255,n>>>16&255,n>>>8&255,255&n,o.isLeading<<2|o.dependsOn,o.isDependedOn<<6|o.hasRedundancy<<4|o.paddingValue<<1|o.isNonSync,61440&o.degradPrio,15&o.degradPrio,l>>>24&255,l>>>16&255,l>>>8&255,255&l],12+16*r);return e.box(e.types.trun,u)},e.initSegment=function(t){e.types||e.init();var i=e.moov(t);return We(e.FTYP,i)},e.hvc1=function(t){for(var i=t.params,r=[t.vps,t.sps,t.pps],s=4,a=new Uint8Array([1,i.general_profile_space<<6|(i.general_tier_flag?32:0)|i.general_profile_idc,i.general_profile_compatibility_flags[0],i.general_profile_compatibility_flags[1],i.general_profile_compatibility_flags[2],i.general_profile_compatibility_flags[3],i.general_constraint_indicator_flags[0],i.general_constraint_indicator_flags[1],i.general_constraint_indicator_flags[2],i.general_constraint_indicator_flags[3],i.general_constraint_indicator_flags[4],i.general_constraint_indicator_flags[5],i.general_level_idc,240|i.min_spatial_segmentation_idc>>8,255&i.min_spatial_segmentation_idc,252|i.parallelismType,252|i.chroma_format_idc,248|i.bit_depth_luma_minus8,248|i.bit_depth_chroma_minus8,0,parseInt(i.frame_rate.fps),s-1|i.temporal_id_nested<<2|i.num_temporal_layers<<3|(i.frame_rate.fixed?64:0),r.length]),n=a.length,o=0;o>8,255&r[c][u].length]),n),n+=2,d.set(r[c][u],n),n+=r[c][u].length}var p=e.box(e.types.hvcC,d),f=t.width,m=t.height,y=t.pixelRatio[0],g=t.pixelRatio[1];return e.box(e.types.hvc1,new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,f>>8&255,255&f,m>>8&255,255&m,0,72,0,0,0,72,0,0,0,0,0,0,0,1,18,100,97,105,108,121,109,111,116,105,111,110,47,104,108,115,46,106,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,17,17]),p,e.box(e.types.btrt,new Uint8Array([0,28,156,128,0,45,198,192,0,45,198,192])),e.box(e.types.pasp,new Uint8Array([y>>24,y>>16&255,y>>8&255,255&y,g>>24,g>>16&255,g>>8&255,255&g])))},e}();da.types=void 0,da.HDLR_TYPES=void 0,da.STTS=void 0,da.STSC=void 0,da.STCO=void 0,da.STSZ=void 0,da.VMHD=void 0,da.SMHD=void 0,da.STSD=void 0,da.FTYP=void 0,da.DINF=void 0;var ha=9e4;function ca(e,t,i,r){void 0===i&&(i=1),void 0===r&&(r=!1);var s=e*t*i;return r?Math.round(s):s}function ua(e,t,i,r){return void 0===i&&(i=1),void 0===r&&(r=!1),ca(e,t,1/i,r)}function pa(e,t){return void 0===t&&(t=!1),ca(e,1e3,1/ha,t)}function fa(e,t){return void 0===t&&(t=1),ca(e,ha,1/t)}var ma=1e4,ya=1024,ga=1152,Aa=1536,va=null,ba=null,_a=function(){function e(e,t,i,r){if(this.observer=void 0,this.config=void 0,this.typeSupported=void 0,this.ISGenerated=!1,this._initPTS=null,this._initDTS=null,this.nextAvcDts=null,this.nextAudioPts=null,this.videoSampleDuration=null,this.isAudioContiguous=!1,this.isVideoContiguous=!1,this.videoTrackConfig=void 0,this.observer=e,this.config=t,this.typeSupported=i,this.ISGenerated=!1,null===va){var s=(navigator.userAgent||"").match(/Chrome\/(\d+)/i);va=s?parseInt(s[1]):0}if(null===ba){var a=navigator.userAgent.match(/Safari\/(\d+)/i);ba=a?parseInt(a[1]):0}}var t=e.prototype;return t.destroy=function(){this.config=this.videoTrackConfig=this._initPTS=this._initDTS=null},t.resetTimeStamp=function(e){G.log("[mp4-remuxer]: initPTS & initDTS reset"),this._initPTS=this._initDTS=e},t.resetNextTimestamp=function(){G.log("[mp4-remuxer]: reset next timestamp"),this.isVideoContiguous=!1,this.isAudioContiguous=!1},t.resetInitSegment=function(){G.log("[mp4-remuxer]: ISGenerated flag reset"),this.ISGenerated=!1,this.videoTrackConfig=void 0},t.getVideoStartPts=function(e){var t=!1,i=e.reduce((function(e,i){var r=i.pts-e;return r<-4294967296?(t=!0,Ea(e,i.pts)):r>0?e:i.pts}),e[0].pts);return t&&G.debug("PTS rollover detected"),i},t.remux=function(e,t,i,r,s,a,n,o){var l,d,h,c,u,p,f=s,m=s,y=e.pid>-1,g=t.pid>-1,A=t.samples.length,v=e.samples.length>0,b=n&&A>0||A>1;if((!y||v)&&(!g||b)||this.ISGenerated||n){if(this.ISGenerated){var _,E,S,w,T=this.videoTrackConfig;!T||t.width===T.width&&t.height===T.height&&(null==(_=t.pixelRatio)?void 0:_[0])===(null==(E=T.pixelRatio)?void 0:E[0])&&(null==(S=t.pixelRatio)?void 0:S[1])===(null==(w=T.pixelRatio)?void 0:w[1])||this.resetInitSegment()}else h=this.generateIS(e,t,s,a);var k,C=this.isVideoContiguous,R=-1;if(b&&(R=Sa(t.samples),!C&&this.config.forceKeyFrameOnDiscontinuity))if(p=!0,R>0){G.warn("[mp4-remuxer]: Dropped "+R+" out of "+A+" video samples due to a missing keyframe");var D=this.getVideoStartPts(t.samples);t.samples=t.samples.slice(R),t.dropped+=R,k=m+=(t.samples[0].pts-D)/t.inputTimeScale}else-1===R&&(G.warn("[mp4-remuxer]: No keyframe found out of "+A+" video samples"),p=!1);if(this.ISGenerated){if(v&&b){var x=this.getVideoStartPts(t.samples),L=(Ea(e.samples[0].pts,x)-x)/t.inputTimeScale;f+=Math.max(0,L),m+=Math.max(0,-L)}if(v){if(e.samplerate||(G.warn("[mp4-remuxer]: regenerate InitSegment as audio detected"),h=this.generateIS(e,t,s,a)),d=this.remuxAudio(e,f,this.isAudioContiguous,a,g||b||o===Nt.AUDIO?m:void 0),b){var I=d?d.endPTS-d.startPTS:0;t.inputTimeScale||(G.warn("[mp4-remuxer]: regenerate InitSegment as video detected"),h=this.generateIS(e,t,s,a)),l=this.remuxVideo(t,m,C,I)}}else b&&(l=this.remuxVideo(t,m,C,0));l&&(l.firstKeyFrame=R,l.independent=-1!==R,l.firstKeyFramePTS=k)}}return this.ISGenerated&&this._initPTS&&this._initDTS&&(i.samples.length&&(u=wa(i,s,this._initPTS,this._initDTS)),r.samples.length&&(c=Ta(r,s,this._initPTS))),{audio:d,video:l,initSegment:h,independent:p,text:c,id3:u}},t.generateIS=function(e,t,i,r){var s,a,n,o=e.samples,l=t.samples,d=this.typeSupported,h={},c=this._initPTS,u=!c||r,p="audio/mp4";if(u&&(s=a=1/0),e.config&&o.length){switch(e.timescale=e.samplerate,e.segmentCodec){case"mp3":d.mpeg?(p="audio/mpeg",e.codec=""):d.mp3&&(e.codec="mp3");break;case"ac3":e.codec="ac-3"}h.audio={id:"audio",container:p,codec:e.codec,initSegment:"mp3"===e.segmentCodec&&d.mpeg?new Uint8Array(0):da.initSegment([e]),metadata:{channelCount:e.channelCount}},u&&(n=e.inputTimeScale,c&&n===c.timescale?u=!1:s=a=o[0].pts-Math.round(n*i))}if(t.sps&&t.pps&&l.length){if(t.timescale=t.inputTimeScale,h.video={id:"main",container:"video/mp4",codec:t.codec,initSegment:da.initSegment([t]),metadata:{width:t.width,height:t.height}},u)if(n=t.inputTimeScale,c&&n===c.timescale)u=!1;else{var f=this.getVideoStartPts(l),m=Math.round(n*i);a=Math.min(a,Ea(l[0].dts,f)-m),s=Math.min(s,f-m)}this.videoTrackConfig={width:t.width,height:t.height,pixelRatio:t.pixelRatio}}if(Object.keys(h).length)return this.ISGenerated=!0,u?(this._initPTS={baseTime:s,timescale:n},this._initDTS={baseTime:a,timescale:n}):s=n=void 0,{tracks:h,initPTS:s,timescale:n}},t.remuxVideo=function(e,t,i,r){var s,a,n=e.inputTimeScale,o=e.samples,l=[],d=o.length,h=this._initPTS,u=this.nextAvcDts,p=8,f=this.videoSampleDuration,m=Number.POSITIVE_INFINITY,y=Number.NEGATIVE_INFINITY,g=!1;if(!i||null===u){var A=t*n,v=o[0].pts-Ea(o[0].dts,o[0].pts);va&&null!==u&&Math.abs(A-v-u)<15e3?i=!0:u=A-v}for(var b=h.baseTime*n/h.timescale,_=0;_0?_-1:_].dts&&(g=!0)}g&&o.sort((function(e,t){var i=e.dts-t.dts,r=e.pts-t.pts;return i||r})),s=o[0].dts;var S=(a=o[o.length-1].dts)-s,w=S?Math.round(S/(d-1)):f||e.inputTimeScale/30;if(i){var T=s-u,D=T>w,x=T<-1;if((D||x)&&(D?G.warn((e.segmentCodec||"").toUpperCase()+": "+pa(T,!0)+" ms ("+T+"dts) hole between fragments detected at "+t.toFixed(3)):G.warn((e.segmentCodec||"").toUpperCase()+": "+pa(-T,!0)+" ms ("+T+"dts) overlapping between fragments detected at "+t.toFixed(3)),!x||u>=o[0].pts||va)){s=u;var L=o[0].pts-T;if(D)o[0].dts=s,o[0].pts=L;else for(var I=!0,P=0;PL&&I);P++){var B=o[P].pts;if(o[P].dts-=T,o[P].pts-=T,P0?te.dts-o[ee-1].dts:w;if(de=ee>0?te.pts-o[ee-1].pts:w,he.stretchShortVideoTrack&&null!==this.nextAudioPts){var ue=Math.floor(he.maxBufferHole*n),pe=(r?m+r*n:this.nextAudioPts)-te.pts;pe>ue?((f=pe-ce)<0?f=ce:Y=!0,G.log("[mp4-remuxer]: It is approximately "+pe/90+" ms to the next segment; using duration "+f/90+" ms for the last video frame.")):f=ce}else f=ce}var fe=Math.round(te.pts-te.dts);Q=Math.min(Q,f),J=Math.max(J,f),X=Math.min(X,de),Z=Math.max(Z,de),l.push(new Ca(te.key,f,re,fe))}if(l.length)if(va){if(va<70){var me=l[0].flags;me.dependsOn=2,me.isNonSync=0}}else if(ba&&Z-X0&&(r&&Math.abs(g-y)<9e3||Math.abs(Ea(f[0].pts-A,g)-y)<20*l),f.forEach((function(e){e.pts=Ea(e.pts-A,g)})),!i||y<0){if(f=f.filter((function(e){return e.pts>=0})),!f.length)return;y=0===s?0:r&&!p?Math.max(0,g):f[0].pts}if("aac"===e.segmentCodec)for(var v=this.config.maxAudioFramesDrift,b=0,_=y;b=v*l&&T0))return;U+=m;try{P=new Uint8Array(U)}catch(e){return void this.observer.emit(k.ERROR,k.ERROR,{type:C.MUX_ERROR,details:R.REMUX_ALLOC_ERROR,fatal:!1,error:e,bytes:U,reason:"fail allocating audio mdat "+U})}h||(new DataView(P.buffer).setUint32(0,U),P.set(da.types.mdat,4))}P.set(V,m);var W=V.byteLength;m+=W,u.push(new Ca(!0,o,W,0)),M=H}var j=u.length;if(j){var $=u[u.length-1];this.nextAudioPts=y=M+n*$.duration;var K=h?new Uint8Array(0):da.moof(e.sequenceNumber++,B/n,c({},e,{samples:u}));e.samples=[];var q=B/a,Y=y/a,Q={data1:K,data2:P,startPTS:q,endPTS:Y,startDTS:q,endDTS:Y,type:"audio",hasAudio:!0,hasVideo:!1,nb:j};return this.isAudioContiguous=!0,Q}},t.remuxEmptyAudio=function(e,t,i,r){var s=e.inputTimeScale,a=s/(e.samplerate?e.samplerate:s),n=this.nextAudioPts,o=this._initDTS,l=9e4*o.baseTime/o.timescale,d=(null!==n?n:r.startDTS*s)+l,h=r.endDTS*s+l,c=a*ya,u=Math.ceil((h-d)/c),p=oa.getSilentFrame(e.parsedCodec||e.manifestCodec||e.codec,e.channelCount);if(G.warn("[mp4-remuxer]: remux empty Audio"),p){for(var f=[],m=0;m4294967296;)e+=i;return e}function Sa(e){for(var t=0;t0?this.lastEndTime=A:(G.warn("Duration parsed from mp4 should be greater than zero"),this.resetNextTimestamp());var v=!!p.audio,b=!!p.video,_="";v&&(_+="audio"),b&&(_+="video");var E={data1:c,startPTS:g,startDTS:g,endPTS:A,endDTS:A,type:_,hasAudio:v,hasVideo:b,nb:1,dropped:0};return h.audio="audio"===E.type?E:void 0,h.video="audio"!==E.type?E:void 0,h.initSegment=u,h.id3=wa(i,s,l,l),r.samples.length&&(h.text=Ta(r,s,l)),h},e}();function Da(e,t,i,r){if(null===e)return!0;var s=Math.max(r,1),a=t-e.baseTime/e.timescale;return Math.abs(a-i)>s}function xa(e,t){var i=null==e?void 0:e.codec;if(i&&i.length>4)return i;if(t===j.AUDIO){if("ec-3"===i||"ac-3"===i||"alac"===i)return i;if("fLaC"===i||"Opus"===i)return bt(i,!1);var r="mp4a.40.5";return G.info('Parsed audio codec "'+i+'" or audio object type not handled. Using "'+r+'"'),r}return G.warn('Unhandled video codec "'+i+'"'),"hvc1"===i||"hev1"===i?"hvc1.1.6.L120.90":"av01"===i?"av01.0.04M.08":"avc1.42e01e"}try{ka=self.performance.now.bind(self.performance)}catch(e){G.debug("Unable to use Performance API on this environment"),ka=null==ae?void 0:ae.Date.now}var La=[{demux:Ws,remux:Ra},{demux:ea,remux:_a},{demux:Vs,remux:_a},{demux:na,remux:_a}];La.splice(2,0,{demux:$s,remux:_a});var Ia=function(){function e(e,t,i,r,s){this.async=!1,this.observer=void 0,this.typeSupported=void 0,this.config=void 0,this.vendor=void 0,this.id=void 0,this.demuxer=void 0,this.remuxer=void 0,this.decrypter=void 0,this.probe=void 0,this.decryptionPromise=null,this.transmuxConfig=void 0,this.currentTransmuxState=void 0,this.observer=e,this.typeSupported=t,this.config=i,this.vendor=r,this.id=s}var t=e.prototype;return t.configure=function(e){this.transmuxConfig=e,this.decrypter&&this.decrypter.reset()},t.push=function(e,t,i,r){var s=this,a=i.transmuxing;a.executeStart=ka();var n=new Uint8Array(e),o=this.currentTransmuxState,l=this.transmuxConfig;r&&(this.currentTransmuxState=r);var d=r||o,h=d.contiguous,c=d.discontinuity,u=d.trackSwitch,p=d.accurateTimeOffset,f=d.timeOffset,m=d.initSegmentChange,y=l.audioCodec,g=l.videoCodec,A=l.defaultInitPts,v=l.duration,b=l.initSegmentData,_=Pa(n,t);if(_&&re(_.method)){var E=this.getDecrypter(),S=se(_.method);if(!E.isSync())return this.decryptionPromise=E.webCryptoDecrypt(n,_.key.buffer,_.iv.buffer,S).then((function(e){var t=s.push(e,null,i);return s.decryptionPromise=null,t})),this.decryptionPromise;var w=E.softwareDecrypt(n,_.key.buffer,_.iv.buffer,S);if(i.part>-1&&(w=E.flush()),!w)return a.executeEnd=ka(),Ba(i);n=new Uint8Array(w)}var T=this.needsProbing(c,u);if(T){var D=this.configureTransmuxer(n);if(D)return G.warn("[transmuxer] "+D.message),this.observer.emit(k.ERROR,k.ERROR,{type:C.MEDIA_ERROR,details:R.FRAG_PARSING_ERROR,fatal:!1,error:D,reason:D.message}),a.executeEnd=ka(),Ba(i)}(c||u||m||T)&&this.resetInitSegment(b,y,g,v,t),(c||m||T)&&this.resetInitialTimestamp(A),h||this.resetContiguity();var x=this.transmux(n,_,f,p,i),L=this.currentTransmuxState;return L.contiguous=!0,L.discontinuity=!1,L.trackSwitch=!1,a.executeEnd=ka(),x},t.flush=function(e){var t=this,i=e.transmuxing;i.executeStart=ka();var r=this.decrypter,s=this.currentTransmuxState,a=this.decryptionPromise;if(a)return a.then((function(){return t.flush(e)}));var n=[],o=s.timeOffset;if(r){var l=r.flush();l&&n.push(this.push(l,null,e))}var d=this.demuxer,h=this.remuxer;if(!d||!h)return i.executeEnd=ka(),[Ba(e)];var c=d.flush(o);return Ma(c)?c.then((function(i){return t.flushRemux(n,i,e),n})):(this.flushRemux(n,c,e),n)},t.flushRemux=function(e,t,i){var r=t.audioTrack,s=t.videoTrack,a=t.id3Track,n=t.textTrack,o=this.currentTransmuxState,l=o.accurateTimeOffset,d=o.timeOffset;G.log("[transmuxer.ts]: Flushed fragment "+i.sn+(i.part>-1?" p: "+i.part:"")+" of level "+i.level);var h=this.remuxer.remux(r,s,a,n,d,l,!0,this.id);e.push({remuxResult:h,chunkMeta:i}),i.transmuxing.executeEnd=ka()},t.resetInitialTimestamp=function(e){var t=this.demuxer,i=this.remuxer;t&&i&&(t.resetTimeStamp(e),i.resetTimeStamp(e))},t.resetContiguity=function(){var e=this.demuxer,t=this.remuxer;e&&t&&(e.resetContiguity(),t.resetNextTimestamp())},t.resetInitSegment=function(e,t,i,r,s){var a=this.demuxer,n=this.remuxer;a&&n&&(a.resetInitSegment(e,t,i,r),n.resetInitSegment(e,t,i,s))},t.destroy=function(){this.demuxer&&(this.demuxer.destroy(),this.demuxer=void 0),this.remuxer&&(this.remuxer.destroy(),this.remuxer=void 0)},t.transmux=function(e,t,i,r,s){return t&&"SAMPLE-AES"===t.method?this.transmuxSampleAes(e,t,i,r,s):this.transmuxUnencrypted(e,i,r,s)},t.transmuxUnencrypted=function(e,t,i,r){var s=this.demuxer.demux(e,t,!1,!this.config.progressive),a=s.audioTrack,n=s.videoTrack,o=s.id3Track,l=s.textTrack;return{remuxResult:this.remuxer.remux(a,n,o,l,t,i,!1,this.id),chunkMeta:r}},t.transmuxSampleAes=function(e,t,i,r,s){var a=this;return this.demuxer.demuxSampleAes(e,t,i).then((function(e){return{remuxResult:a.remuxer.remux(e.audioTrack,e.videoTrack,e.id3Track,e.textTrack,i,r,!1,a.id),chunkMeta:s}}))},t.configureTransmuxer=function(e){for(var t,i=this.config,r=this.observer,s=this.typeSupported,a=this.vendor,n=0,o=La.length;n0&&null!=(null==t?void 0:t.key)&&null!==t.iv&&null!=t.method&&(i=t),i}var Ba=function(e){return{remuxResult:{},chunkMeta:e}};function Ma(e){return"then"in e&&e.then instanceof Function}var Ua=function(e,t,i,r,s){this.audioCodec=void 0,this.videoCodec=void 0,this.initSegmentData=void 0,this.duration=void 0,this.defaultInitPts=void 0,this.audioCodec=e,this.videoCodec=t,this.initSegmentData=i,this.duration=r,this.defaultInitPts=s||null},Fa=function(e,t,i,r,s,a){this.discontinuity=void 0,this.contiguous=void 0,this.accurateTimeOffset=void 0,this.trackSwitch=void 0,this.timeOffset=void 0,this.initSegmentChange=void 0,this.discontinuity=e,this.contiguous=t,this.accurateTimeOffset=i,this.trackSwitch=r,this.timeOffset=s,this.initSegmentChange=a},Oa={exports:{}};!function(e){var t=Object.prototype.hasOwnProperty,i="~";function r(){}function s(e,t,i){this.fn=e,this.context=t,this.once=i||!1}function a(e,t,r,a,n){if("function"!=typeof r)throw new TypeError("The listener must be a function");var o=new s(r,a||e,n),l=i?i+t:t;return e._events[l]?e._events[l].fn?e._events[l]=[e._events[l],o]:e._events[l].push(o):(e._events[l]=o,e._eventsCount++),e}function n(e,t){0==--e._eventsCount?e._events=new r:delete e._events[t]}function o(){this._events=new r,this._eventsCount=0}Object.create&&(r.prototype=Object.create(null),(new r).__proto__||(i=!1)),o.prototype.eventNames=function(){var e,r,s=[];if(0===this._eventsCount)return s;for(r in e=this._events)t.call(e,r)&&s.push(i?r.slice(1):r);return Object.getOwnPropertySymbols?s.concat(Object.getOwnPropertySymbols(e)):s},o.prototype.listeners=function(e){var t=i?i+e:e,r=this._events[t];if(!r)return[];if(r.fn)return[r.fn];for(var s=0,a=r.length,n=new Array(a);s1&&l.id===(null==y?void 0:y.stats.chunkCount),E=!A&&(1===v||0===v&&(1===b||_&&b<=0)),S=self.performance.now();(A||v||0===s.stats.parsing.start)&&(s.stats.parsing.start=S),!a||!b&&E||(a.stats.parsing.start=S);var w=!(y&&(null==(h=s.initSegment)?void 0:h.url)===(null==(c=y.initSegment)?void 0:c.url)),T=new Fa(g,E,o,A,f,w);if(!E||g||w){G.log("[transmuxer-interface, "+s.type+"]: Starting new transmux session for sn: "+l.sn+" p: "+l.part+" level: "+l.level+" id: "+l.id+"\n discontinuity: "+g+"\n trackSwitch: "+A+"\n contiguous: "+E+"\n accurateTimeOffset: "+o+"\n timeOffset: "+f+"\n initSegmentChange: "+w);var k=new Ua(i,r,t,n,d);this.configureTransmuxer(k)}if(this.frag=s,this.part=a,this.workerContext)this.workerContext.worker.postMessage({cmd:"demux",data:e,decryptdata:m,chunkMeta:l,state:T},e instanceof ArrayBuffer?[e]:[]);else if(p){var C=p.push(e,m,l,T);Ma(C)?(p.async=!0,C.then((function(e){u.handleTransmuxComplete(e)})).catch((function(e){u.transmuxerError(e,l,"transmuxer-interface push error")}))):(p.async=!1,this.handleTransmuxComplete(C))}},t.flush=function(e){var t=this;e.transmuxing.start=self.performance.now();var i=this.transmuxer;if(this.workerContext)this.workerContext.worker.postMessage({cmd:"flush",chunkMeta:e});else if(i){var r=i.flush(e);Ma(r)||i.async?(Ma(r)||(r=Promise.resolve(r)),r.then((function(i){t.handleFlushResult(i,e)})).catch((function(i){t.transmuxerError(i,e,"transmuxer-interface flush error")}))):this.handleFlushResult(r,e)}},t.transmuxerError=function(e,t,i){this.hls&&(this.error=e,this.hls.trigger(k.ERROR,{type:C.MEDIA_ERROR,details:R.FRAG_PARSING_ERROR,chunkMeta:t,fatal:!1,error:e,err:e,reason:i}))},t.handleFlushResult=function(e,t){var i=this;e.forEach((function(e){i.handleTransmuxComplete(e)})),this.onFlush(t)},t.onWorkerMessage=function(e){var t=e.data,i=this.hls;switch(t.event){case"init":var r,s=null==(r=this.workerContext)?void 0:r.objectURL;s&&self.URL.revokeObjectURL(s);break;case"transmuxComplete":this.handleTransmuxComplete(t.data);break;case"flush":this.onFlush(t.data);break;case"workerLog":G[t.data.logType]&&G[t.data.logType](t.data.message);break;default:t.data=t.data||{},t.data.frag=this.frag,t.data.id=this.id,i.trigger(t.event,t.data)}},t.configureTransmuxer=function(e){var t=this.transmuxer;this.workerContext?this.workerContext.worker.postMessage({cmd:"configure",config:e}):t&&t.configure(e)},t.handleTransmuxComplete=function(e){e.chunkMeta.transmuxing.end=self.performance.now(),this.onTransmuxComplete(e)},e}();function Ya(e,t){if(e.length!==t.length)return!1;for(var i=0;i0&&-1===e?(this.log("Override startPosition with lastCurrentTime @"+t.toFixed(3)),e=t,this.state=ls.IDLE):(this.loadedmetadata=!1,this.state=ls.WAITING_TRACK),this.nextLoadPosition=this.startPosition=this.lastCurrentTime=e,this.tick()},i.doTick=function(){switch(this.state){case ls.IDLE:this.doTickIdle();break;case ls.WAITING_TRACK:var t,i=this.levels,r=this.trackId,s=null==i||null==(t=i[r])?void 0:t.details;if(s){if(this.waitForCdnTuneIn(s))break;this.state=ls.WAITING_INIT_PTS}break;case ls.FRAG_LOADING_WAITING_RETRY:var a,n=performance.now(),o=this.retryDate;if(!o||n>=o||null!=(a=this.media)&&a.seeking){var l=this.levels,d=this.trackId;this.log("RetryDate reached, switch back to IDLE state"),this.resetStartWhenNotLoaded((null==l?void 0:l[d])||null),this.state=ls.IDLE}break;case ls.WAITING_INIT_PTS:var h=this.waitingData;if(h){var c=h.frag,u=h.part,p=h.cache,f=h.complete;if(void 0!==this.initPTS[c.cc]){this.waitingData=null,this.waitingVideoCC=-1,this.state=ls.FRAG_LOADING;var m={frag:c,part:u,payload:p.flush(),networkDetails:null};this._handleFragmentLoadProgress(m),f&&e.prototype._handleFragmentLoadComplete.call(this,m)}else if(this.videoTrackCC!==this.waitingVideoCC)this.log("Waiting fragment cc ("+c.cc+") cancelled because video is at cc "+this.videoTrackCC),this.clearWaitingFragment();else{var y=this.getLoadPosition(),g=Fr.bufferInfo(this.mediaBuffer,y,this.config.maxBufferHole);sr(g.end,this.config.maxFragLookUpTolerance,c)<0&&(this.log("Waiting fragment cc ("+c.cc+") @ "+c.start+" cancelled because another fragment at "+g.end+" is needed"),this.clearWaitingFragment())}}else this.state=ls.IDLE}this.onTickEnd()},i.clearWaitingFragment=function(){var e=this.waitingData;e&&(this.fragmentTracker.removeFragment(e.frag),this.waitingData=null,this.waitingVideoCC=-1,this.state!==ls.STOPPED&&(this.state=ls.IDLE))},i.resetLoadingState=function(){this.clearWaitingFragment(),e.prototype.resetLoadingState.call(this)},i.onTickEnd=function(){var e=this.media;null!=e&&e.readyState&&(this.lastCurrentTime=e.currentTime)},i.doTickIdle=function(){var e=this.hls,t=this.levels,i=this.media,r=this.trackId,s=e.config;if(this.buffering&&(i||!this.startFragRequested&&s.startFragPrefetch)&&null!=t&&t[r]){var a=t[r],n=a.details;if(!n||n.live&&this.levelLastLoaded!==a||this.waitForCdnTuneIn(n))this.state=ls.WAITING_TRACK;else{var o=this.mediaBuffer?this.mediaBuffer:this.media;this.bufferFlushed&&o&&(this.bufferFlushed=!1,this.afterBufferFlushed(o,j.AUDIO,Nt.AUDIO));var l=this.getFwdBufferInfo(o,Nt.AUDIO);if(null!==l){var d=this.bufferedTrack,h=this.switchingTrack;if(!h&&this._streamEnded(l,n))return e.trigger(k.BUFFER_EOS,{type:"audio"}),void(this.state=ls.ENDED);var c=l.len,u=e.maxBufferLength,p=n.fragments,f=p[0].start,m=this.flushing?this.getLoadPosition():l.end;if(h&&i){var y=this.getLoadPosition();d&&!Qa(h.attrs,d.attrs)&&(m=y),n.PTSKnown&&yf||l.nextStart)&&(this.log("Alt audio track ahead of main track, seek to start of alt audio track"),i.currentTime=f+.05)}if(!(c>=u&&!h&&mv.end+g.duration){var b=this.fragmentTracker.getFragAtPos(g.start,Nt.MAIN);if(null===b)return;if(A||(A=!!b.gap||0===v.len),!A||l.nextStart&&l.nextStart-1)s=a[o];else{var l=wr(n,this.tracks);s=this.tracks[l]}}var d=this.findTrackId(s);-1===d&&s&&(d=this.findTrackId(null));var h={audioTracks:a};this.log("Updating audio tracks, "+a.length+" track(s) found in group(s): "+(null==i?void 0:i.join(","))),this.hls.trigger(k.AUDIO_TRACKS_UPDATED,h);var c=this.trackId;if(-1!==d&&-1===c)this.setAudioTrack(d);else if(a.length&&-1===c){var u,p=new Error("No audio track selected for current audio group-ID(s): "+(null==(u=this.groupIds)?void 0:u.join(","))+" track count: "+a.length);this.warn(p.message),this.hls.trigger(k.ERROR,{type:C.MEDIA_ERROR,details:R.AUDIO_TRACK_LOAD_ERROR,fatal:!0,error:p})}}else this.shouldReloadPlaylist(s)&&this.setAudioTrack(this.trackId)}},i.onError=function(e,t){!t.fatal&&t.context&&(t.context.type!==Ot.AUDIO_TRACK||t.context.id!==this.trackId||this.groupIds&&-1===this.groupIds.indexOf(t.context.groupId)||(this.requestScheduled=-1,this.checkRetry(t)))},i.setAudioOption=function(e){var t=this.hls;if(t.config.audioPreference=e,e){var i=this.allAudioTracks;if(this.selectDefaultTrack=!1,i.length){var r=this.currentTrack;if(r&&Tr(e,r,Cr))return r;var s=wr(e,this.tracksInGroup,Cr);if(s>-1){var a=this.tracksInGroup[s];return this.setAudioTrack(s),a}if(r){var n=t.loadLevel;-1===n&&(n=t.firstAutoLevel);var o=Rr(e,t.levels,i,n,Cr);if(-1===o)return null;t.nextLoadLevel=o}if(e.channels||e.audioCodec){var l=wr(e,i);if(l>-1)return i[l]}}}return null},i.setAudioTrack=function(e){var t=this.tracksInGroup;if(e<0||e>=t.length)this.warn("Invalid audio track id: "+e);else{this.clearTimer(),this.selectDefaultTrack=!1;var i=this.currentTrack,r=t[e],s=r.details&&!r.details.live;if(!(e===this.trackId&&r===i&&s||(this.log("Switching to audio-track "+e+' "'+r.name+'" lang:'+r.lang+" group:"+r.groupId+" channels:"+r.channels),this.trackId=e,this.currentTrack=r,this.hls.trigger(k.AUDIO_TRACK_SWITCHING,a({},r)),s))){var n=this.switchParams(r.url,null==i?void 0:i.details,r.details);this.loadPlaylist(n)}}},i.findTrackId=function(e){for(var t=this.tracksInGroup,i=0;i=s[o].start&&n<=s[o].end){a=s[o];break}var l=i.start+i.duration;a?a.end=l:(a={start:n,end:l},s.push(a)),this.fragmentTracker.fragBuffered(i),this.fragBufferedComplete(i,null)}}},i.onBufferFlushing=function(e,t){var i=t.startOffset,r=t.endOffset;if(0===i&&r!==Number.POSITIVE_INFINITY){var s=r-1;if(s<=0)return;t.endOffsetSubtitles=Math.max(0,s),this.tracksBuffered.forEach((function(e){for(var t=0;t=s.length||n!==r)&&o){this.log("Subtitle track "+n+" loaded ["+a.startSN+","+a.endSN+"]"+(a.lastPartSn?"[part-"+a.lastPartSn+"-"+a.lastPartIndex+"]":"")+",duration:"+a.totalduration),this.mediaBuffer=this.mediaBufferTimeRanges;var l=0;if(a.live||null!=(i=o.details)&&i.live){var d=this.mainDetails;if(a.deltaUpdateFailed||!d)return;var h,c=d.fragments[0];o.details?0===(l=this.alignPlaylists(a,o.details,null==(h=this.levelLastLoaded)?void 0:h.details))&&c&&Hi(a,l=c.start):a.hasProgramDateTime&&d.hasProgramDateTime?(Kr(a,d),l=a.fragments[0].start):c&&Hi(a,l=c.start)}o.details=a,this.levelLastLoaded=o,this.startFragRequested||!this.mainDetails&&a.live||this.setStartPosition(this.mainDetails||a,l),this.tick(),a.live&&!this.fragCurrent&&this.media&&this.state===ls.IDLE&&(rr(null,a.fragments,this.media.currentTime,0)||(this.warn("Subtitle playlist not aligned with playback"),o.details=void 0))}}else this.warn("Subtitle tracks were reset while loading level "+n)},i._handleFragmentLoadComplete=function(e){var t=this,i=e.frag,r=e.payload,s=i.decryptdata,a=this.hls;if(!this.fragContextChanged(i)&&r&&r.byteLength>0&&null!=s&&s.key&&s.iv&&re(s.method)){var n=performance.now();this.decrypter.decrypt(new Uint8Array(r),s.key.buffer,s.iv.buffer,se(s.method)).catch((function(e){throw a.trigger(k.ERROR,{type:C.MEDIA_ERROR,details:R.FRAG_DECRYPT_ERROR,fatal:!1,error:e,reason:e.message,frag:i}),e})).then((function(e){var t=performance.now();a.trigger(k.FRAG_DECRYPTED,{frag:i,payload:e,stats:{tstart:n,tdecrypt:t}})})).catch((function(e){t.warn(e.name+": "+e.message),t.state=ls.IDLE}))}},i.doTick=function(){if(this.media){if(this.state===ls.IDLE){var e=this.currentTrackId,t=this.levels,i=null==t?void 0:t[e];if(!i||!t.length||!i.details)return;var r=this.config,s=this.getLoadPosition(),a=Fr.bufferedInfo(this.tracksBuffered[this.currentTrackId]||[],s,r.maxBufferHole),n=a.end,o=a.len,l=i.details;if(o>this.hls.maxBufferLength+l.levelTargetDuration)return;var d=l.fragments,h=d.length,c=l.edge,u=null,p=this.fragPrevious;if(nc-f?0:f;!(u=rr(p,d,Math.max(d[0].start,n),m))&&p&&p.start>>=0)>r-1)throw new DOMException("Failed to execute '"+t+"' on 'TimeRanges': The index provided ("+i+") is greater than the maximum bound ("+r+")");return e[i][t]};this.buffered={get length(){return e.length},end:function(i){return t("end",i,e.length)},start:function(i){return t("start",i,e.length)}}},an=function(e){function t(t){var i;return(i=e.call(this,t,"subtitle-track-controller")||this).media=null,i.tracks=[],i.groupIds=null,i.tracksInGroup=[],i.trackId=-1,i.currentTrack=null,i.selectDefaultTrack=!0,i.queuedDefaultTrack=-1,i.useTextTrackPolling=!1,i.subtitlePollingInterval=-1,i._subtitleDisplay=!0,i.asyncPollTrackChange=function(){return i.pollTrackChange(0)},i.onTextTracksChanged=function(){if(i.useTextTrackPolling||self.clearInterval(i.subtitlePollingInterval),i.media&&i.hls.config.renderTextTracksNatively){for(var e=null,t=Yt(i.media.textTracks),r=0;r-1&&(this.subtitleTrack=this.queuedDefaultTrack,this.queuedDefaultTrack=-1),this.useTextTrackPolling=!(this.media.textTracks&&"onchange"in this.media.textTracks),this.useTextTrackPolling?this.pollTrackChange(500):this.media.textTracks.addEventListener("change",this.asyncPollTrackChange))},i.pollTrackChange=function(e){self.clearInterval(this.subtitlePollingInterval),this.subtitlePollingInterval=self.setInterval(this.onTextTracksChanged,e)},i.onMediaDetaching=function(){this.media&&(self.clearInterval(this.subtitlePollingInterval),this.useTextTrackPolling||this.media.textTracks.removeEventListener("change",this.asyncPollTrackChange),this.trackId>-1&&(this.queuedDefaultTrack=this.trackId),Yt(this.media.textTracks).forEach((function(e){jt(e)})),this.subtitleTrack=-1,this.media=null)},i.onManifestLoading=function(){this.tracks=[],this.groupIds=null,this.tracksInGroup=[],this.trackId=-1,this.currentTrack=null,this.selectDefaultTrack=!0},i.onManifestParsed=function(e,t){this.tracks=t.subtitleTracks},i.onSubtitleTrackLoaded=function(e,t){var i=t.id,r=t.groupId,s=t.details,a=this.tracksInGroup[i];if(a&&a.groupId===r){var n=a.details;a.details=t.details,this.log("Subtitle track "+i+' "'+a.name+'" lang:'+a.lang+" group:"+r+" loaded ["+s.startSN+"-"+s.endSN+"]"),i===this.trackId&&this.playlistLoaded(i,t,n)}else this.warn("Subtitle track with id:"+i+" and group:"+r+" not found in active group "+(null==a?void 0:a.groupId))},i.onLevelLoading=function(e,t){this.switchLevel(t.level)},i.onLevelSwitching=function(e,t){this.switchLevel(t.level)},i.switchLevel=function(e){var t=this.hls.levels[e];if(t){var i=t.subtitleGroups||null,r=this.groupIds,s=this.currentTrack;if(!i||(null==r?void 0:r.length)!==(null==i?void 0:i.length)||null!=i&&i.some((function(e){return-1===(null==r?void 0:r.indexOf(e))}))){this.groupIds=i,this.trackId=-1,this.currentTrack=null;var a=this.tracks.filter((function(e){return!i||-1!==i.indexOf(e.groupId)}));if(a.length)this.selectDefaultTrack&&!a.some((function(e){return e.default}))&&(this.selectDefaultTrack=!1),a.forEach((function(e,t){e.id=t}));else if(!s&&!this.tracksInGroup.length)return;this.tracksInGroup=a;var n=this.hls.config.subtitlePreference;if(!s&&n){this.selectDefaultTrack=!1;var o=wr(n,a);if(o>-1)s=a[o];else{var l=wr(n,this.tracks);s=this.tracks[l]}}var d=this.findTrackId(s);-1===d&&s&&(d=this.findTrackId(null));var h={subtitleTracks:a};this.log("Updating subtitle tracks, "+a.length+' track(s) found in "'+(null==i?void 0:i.join(","))+'" group-id'),this.hls.trigger(k.SUBTITLE_TRACKS_UPDATED,h),-1!==d&&-1===this.trackId&&this.setSubtitleTrack(d)}else this.shouldReloadPlaylist(s)&&this.setSubtitleTrack(this.trackId)}},i.findTrackId=function(e){for(var t=this.tracksInGroup,i=this.selectDefaultTrack,r=0;r-1){var s=this.tracksInGroup[r];return this.setSubtitleTrack(r),s}if(i)return null;var a=wr(e,t);if(a>-1)return t[a]}}return null},i.loadPlaylist=function(t){e.prototype.loadPlaylist.call(this);var i=this.currentTrack;if(this.shouldLoadPlaylist(i)&&i){var r=i.id,s=i.groupId,a=i.url;if(t)try{a=t.addDirectives(a)}catch(e){this.warn("Could not construct new URL with HLS Delivery Directives: "+e)}this.log("Loading subtitle playlist for id "+r),this.hls.trigger(k.SUBTITLE_TRACK_LOADING,{url:a,id:r,groupId:s,deliveryDirectives:t||null})}},i.toggleTrackModes=function(){var e=this.media;if(e){var t,i=Yt(e.textTracks),r=this.currentTrack;if(r&&((t=i.filter((function(e){return Xa(r,e)}))[0])||this.warn('Unable to find subtitle TextTrack with name "'+r.name+'" and language "'+r.lang+'"')),[].slice.call(i).forEach((function(e){"disabled"!==e.mode&&e!==t&&(e.mode="disabled")})),t){var s=this.subtitleDisplay?"showing":"hidden";t.mode!==s&&(t.mode=s)}}},i.setSubtitleTrack=function(e){var t=this.tracksInGroup;if(this.media)if(e<-1||e>=t.length||!S(e))this.warn("Invalid subtitle track id: "+e);else{this.clearTimer(),this.selectDefaultTrack=!1;var i=this.currentTrack,r=t[e]||null;if(this.trackId=e,this.currentTrack=r,this.toggleTrackModes(),r){var s=!!r.details&&!r.details.live;if(e!==this.trackId||r!==i||!s){this.log("Switching to subtitle-track "+e+(r?' "'+r.name+'" lang:'+r.lang+" group:"+r.groupId:""));var a=r.id,n=r.groupId,o=void 0===n?"":n,l=r.name,d=r.type,h=r.url;this.hls.trigger(k.SUBTITLE_TRACK_SWITCH,{id:a,groupId:o,name:l,type:d,url:h});var c=this.switchParams(r.url,null==i?void 0:i.details,r.details);this.loadPlaylist(c)}}else this.hls.trigger(k.SUBTITLE_TRACK_SWITCH,{id:e})}else this.queuedDefaultTrack=e},d(t,[{key:"subtitleDisplay",get:function(){return this._subtitleDisplay},set:function(e){this._subtitleDisplay=e,this.trackId>-1&&this.toggleTrackModes()}},{key:"allSubtitleTracks",get:function(){return this.tracks}},{key:"subtitleTracks",get:function(){return this.tracksInGroup}},{key:"subtitleTrack",get:function(){return this.trackId},set:function(e){this.selectDefaultTrack=!1,this.setSubtitleTrack(e)}}])}(hr),nn=function(){function e(e){this.buffers=void 0,this.queues={video:[],audio:[],audiovideo:[]},this.buffers=e}var t=e.prototype;return t.append=function(e,t,i){var r=this.queues[t];r.push(e),1!==r.length||i||this.executeNext(t)},t.appendBlocker=function(e){var t=this;return new Promise((function(i){var r={execute:i,onStart:function(){},onComplete:function(){},onError:function(){}};t.append(r,e)}))},t.unblockAudio=function(e){this.queues.audio[0]===e&&this.shiftAndExecuteNext("audio")},t.executeNext=function(e){var t=this.queues[e];if(t.length){var i=t[0];try{i.execute()}catch(t){G.warn('[buffer-operation-queue]: Exception executing "'+e+'" SourceBuffer operation: '+t),i.onError(t);var r=this.buffers[e];null!=r&&r.updating||this.shiftAndExecuteNext(e)}}},t.shiftAndExecuteNext=function(e){this.queues[e].shift(),this.executeNext(e)},t.current=function(e){return this.queues[e][0]},e}(),on=/(avc[1234]|hvc1|hev1|dvh[1e]|vp09|av01)(?:\.[^.,]+)+/,ln=function(e){function t(t,i){var r;return(r=e.call(this,"buffer-controller",t.logger)||this).details=null,r._objectUrl=null,r.operationQueue=void 0,r.listeners=void 0,r.hls=void 0,r.fragmentTracker=void 0,r.bufferCodecEventsExpected=0,r._bufferCodecEventsTotal=0,r.media=null,r.mediaSource=null,r.lastMpegAudioChunk=null,r.blockedAudioAppend=null,r.lastVideoAppendEnd=0,r.appendSource=void 0,r.appendErrors={audio:0,video:0,audiovideo:0},r.tracks={},r.pendingTracks={},r.sourceBuffer=void 0,r._onEndStreaming=function(e){r.hls&&r.hls.pauseBuffering()},r._onStartStreaming=function(e){r.hls&&r.hls.resumeBuffering()},r._onMediaSourceOpen=function(){var e=r,t=e.media,i=e.mediaSource;if(r.log("Media source opened"),t){t.removeEventListener("emptied",r._onMediaEmptied);var s=r.getDurationAndRange();s&&r.updateMediaSource(s),r.hls.trigger(k.MEDIA_ATTACHED,{media:t,mediaSource:i})}i&&i.removeEventListener("sourceopen",r._onMediaSourceOpen),r.checkPendingTracks()},r._onMediaSourceClose=function(){r.log("Media source closed")},r._onMediaSourceEnded=function(){r.log("Media source ended")},r._onMediaEmptied=function(){var e=r,t=e.mediaSrc,i=e._objectUrl;t!==i&&r.error("Media element src was set while attaching MediaSource ("+i+" > "+t+")")},r.hls=t,r.fragmentTracker=i,r.appendSource=t.config.preferManagedMediaSource&&"undefined"!=typeof self&&self.ManagedMediaSource,r._initSourceBuffer(),r.registerListeners(),r}u(t,e);var i=t.prototype;return i.hasSourceTypes=function(){return this.getSourceBufferTypes().length>0||Object.keys(this.pendingTracks).length>0},i.destroy=function(){this.unregisterListeners(),this.details=null,this.lastMpegAudioChunk=null,this.hls=this.fragmentTracker=null,this._onMediaSourceOpen=this._onMediaSourceClose=null,this._onMediaSourceEnded=null,this._onStartStreaming=this._onEndStreaming=null},i.registerListeners=function(){var e=this.hls;e.on(k.MEDIA_ATTACHING,this.onMediaAttaching,this),e.on(k.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(k.MANIFEST_LOADING,this.onManifestLoading,this),e.on(k.MANIFEST_PARSED,this.onManifestParsed,this),e.on(k.BUFFER_RESET,this.onBufferReset,this),e.on(k.BUFFER_APPENDING,this.onBufferAppending,this),e.on(k.BUFFER_CODECS,this.onBufferCodecs,this),e.on(k.BUFFER_EOS,this.onBufferEos,this),e.on(k.BUFFER_FLUSHING,this.onBufferFlushing,this),e.on(k.LEVEL_UPDATED,this.onLevelUpdated,this),e.on(k.FRAG_PARSED,this.onFragParsed,this),e.on(k.FRAG_CHANGED,this.onFragChanged,this)},i.unregisterListeners=function(){var e=this.hls;e.off(k.MEDIA_ATTACHING,this.onMediaAttaching,this),e.off(k.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(k.MANIFEST_LOADING,this.onManifestLoading,this),e.off(k.MANIFEST_PARSED,this.onManifestParsed,this),e.off(k.BUFFER_RESET,this.onBufferReset,this),e.off(k.BUFFER_APPENDING,this.onBufferAppending,this),e.off(k.BUFFER_CODECS,this.onBufferCodecs,this),e.off(k.BUFFER_EOS,this.onBufferEos,this),e.off(k.BUFFER_FLUSHING,this.onBufferFlushing,this),e.off(k.LEVEL_UPDATED,this.onLevelUpdated,this),e.off(k.FRAG_PARSED,this.onFragParsed,this),e.off(k.FRAG_CHANGED,this.onFragChanged,this)},i._initSourceBuffer=function(){this.sourceBuffer={},this.operationQueue=new nn(this.sourceBuffer),this.listeners={audio:[],video:[],audiovideo:[]},this.appendErrors={audio:0,video:0,audiovideo:0},this.lastMpegAudioChunk=null,this.blockedAudioAppend=null,this.lastVideoAppendEnd=0},i.onManifestLoading=function(){this.bufferCodecEventsExpected=this._bufferCodecEventsTotal=0,this.details=null},i.onManifestParsed=function(e,t){var i=2;(t.audio&&!t.video||!t.altAudio)&&(i=1),this.bufferCodecEventsExpected=this._bufferCodecEventsTotal=i,this.log(this.bufferCodecEventsExpected+" bufferCodec event(s) expected")},i.onMediaAttaching=function(e,t){var i=this.media=t.media,r=dt(this.appendSource);if(i&&r){var s,a=this.mediaSource=new r;this.log("created media source: "+(null==(s=a.constructor)?void 0:s.name)),a.addEventListener("sourceopen",this._onMediaSourceOpen),a.addEventListener("sourceended",this._onMediaSourceEnded),a.addEventListener("sourceclose",this._onMediaSourceClose),this.appendSource&&(a.addEventListener("startstreaming",this._onStartStreaming),a.addEventListener("endstreaming",this._onEndStreaming));var n=this._objectUrl=self.URL.createObjectURL(a);if(this.appendSource)try{i.removeAttribute("src");var o=self.ManagedMediaSource;i.disableRemotePlayback=i.disableRemotePlayback||o&&a instanceof o,dn(i),hn(i,n),i.load()}catch(e){i.src=n}else i.src=n;i.addEventListener("emptied",this._onMediaEmptied)}},i.onMediaDetaching=function(){var e=this.media,t=this.mediaSource,i=this._objectUrl;if(t){if(this.log("media source detaching"),"open"===t.readyState)try{t.endOfStream()}catch(e){this.warn("onMediaDetaching: "+e.message+" while calling endOfStream")}this.onBufferReset(),t.removeEventListener("sourceopen",this._onMediaSourceOpen),t.removeEventListener("sourceended",this._onMediaSourceEnded),t.removeEventListener("sourceclose",this._onMediaSourceClose),this.appendSource&&(t.removeEventListener("startstreaming",this._onStartStreaming),t.removeEventListener("endstreaming",this._onEndStreaming)),this.mediaSource=null,this._objectUrl=null}e&&(e.removeEventListener("emptied",this._onMediaEmptied),i&&self.URL.revokeObjectURL(i),this.mediaSrc===i?(e.removeAttribute("src"),this.appendSource&&dn(e),e.load()):this.warn("media|source.src was changed by a third party - skip cleanup"),this.media=null),this.bufferCodecEventsExpected=this._bufferCodecEventsTotal,this.pendingTracks={},this.tracks={},this.hls.trigger(k.MEDIA_DETACHED,void 0)},i.onBufferReset=function(){var e=this;this.getSourceBufferTypes().forEach((function(t){e.resetBuffer(t)})),this._initSourceBuffer(),this.hls.resumeBuffering()},i.resetBuffer=function(e){var t=this.sourceBuffer[e];try{var i;t&&(this.removeBufferListeners(e),this.sourceBuffer[e]=void 0,null!=(i=this.mediaSource)&&i.sourceBuffers.length&&this.mediaSource.removeSourceBuffer(t))}catch(t){this.warn("onBufferReset "+e,t)}},i.onBufferCodecs=function(e,t){var i=this,r=this.getSourceBufferTypes().length,s=Object.keys(t);if(s.forEach((function(e){if(r){var s,a=i.tracks[e];if(a&&"function"==typeof(null==(s=a.buffer)?void 0:s.changeType)){var n,o=t[e],l=o.id,d=o.codec,h=o.levelCodec,c=o.container,u=o.metadata,p=_t(a.codec,a.levelCodec),f=null==p?void 0:p.replace(on,"$1"),m=_t(d,h),y=null==(n=m)?void 0:n.replace(on,"$1");if(m&&f!==y){"audio"===e.slice(0,5)&&(m=bt(m,i.appendSource));var g=c+";codecs="+m;i.appendChangeType(e,g),i.log("switching codec "+p+" to "+m),i.tracks[e]={buffer:a.buffer,codec:d,container:c,levelCodec:h,metadata:u,id:l}}}}else i.pendingTracks[e]=t[e]})),!r){var a=Math.max(this.bufferCodecEventsExpected-1,0);this.bufferCodecEventsExpected!==a&&(this.log(a+" bufferCodec event(s) expected "+s.join(",")),this.bufferCodecEventsExpected=a),this.mediaSource&&"open"===this.mediaSource.readyState&&this.checkPendingTracks()}},i.appendChangeType=function(e,t){var i=this,r=this.operationQueue,s={execute:function(){var s=i.sourceBuffer[e];s&&(i.log("changing "+e+" sourceBuffer type to "+t),s.changeType(t)),r.shiftAndExecuteNext(e)},onStart:function(){},onComplete:function(){},onError:function(t){i.warn("Failed to change "+e+" SourceBuffer type",t)}};r.append(s,e,!!this.pendingTracks[e])},i.blockAudio=function(e){var t,i=this,r=e.start,s=r+.05*e.duration;if(!0!==(null==(t=this.fragmentTracker.getAppendedFrag(r,Nt.MAIN))?void 0:t.gap)){var a={execute:function(){var e;(i.lastVideoAppendEnd>s||i.sourceBuffer.video&&Fr.isBuffered(i.sourceBuffer.video,s)||!0===(null==(e=i.fragmentTracker.getAppendedFrag(s,Nt.MAIN))?void 0:e.gap))&&(i.blockedAudioAppend=null,i.operationQueue.shiftAndExecuteNext("audio"))},onStart:function(){},onComplete:function(){},onError:function(){}};this.blockedAudioAppend={op:a,frag:e},this.operationQueue.append(a,"audio",!0)}},i.unblockAudio=function(){var e=this.blockedAudioAppend;e&&(this.blockedAudioAppend=null,this.operationQueue.unblockAudio(e.op))},i.onBufferAppending=function(e,t){var i=this,r=this.operationQueue,s=this.tracks,a=t.data,n=t.type,o=t.parent,l=t.frag,d=t.part,h=t.chunkMeta,c=h.buffering[n],u=l.sn,p=self.performance.now();c.start=p;var f=l.stats.buffering,m=d?d.stats.buffering:null;0===f.start&&(f.start=p),m&&0===m.start&&(m.start=p);var y=s.audio,g=!1;"audio"===n&&"audio/mpeg"===(null==y?void 0:y.container)&&(g=!this.lastMpegAudioChunk||1===h.id||this.lastMpegAudioChunk.sn!==h.sn,this.lastMpegAudioChunk=h);var A=this.sourceBuffer.video;if(A&&"initSegment"!==u){var v=d||l,b=this.blockedAudioAppend;if("audio"!==n||"main"===o||this.blockedAudioAppend){if("video"===n){var _=v.end;if(b){var E=b.frag.start;(_>E||_=.1&&(i.log("Updating audio SourceBuffer timestampOffset to "+D+" (delta: "+t+") sn: "+u+")"),e.timestampOffset=D)}}i.appendExecutor(a,n)},onStart:function(){},onComplete:function(){var e=self.performance.now();c.executeEnd=c.end=e,0===f.first&&(f.first=e),m&&0===m.first&&(m.first=e);var t=i.sourceBuffer,r={};for(var s in t)r[s]=Fr.getBuffered(t[s]);i.appendErrors[n]=0,"audio"===n||"video"===n?i.appendErrors.audiovideo=0:(i.appendErrors.audio=0,i.appendErrors.video=0),i.hls.trigger(k.BUFFER_APPENDED,{type:n,frag:l,part:d,chunkMeta:h,parent:l.type,timeRanges:r})},onError:function(e){var t={type:C.MEDIA_ERROR,parent:l.type,details:R.BUFFER_APPEND_ERROR,sourceBufferName:n,frag:l,part:d,chunkMeta:h,error:e,err:e,fatal:!1};if(e.code===DOMException.QUOTA_EXCEEDED_ERR)t.details=R.BUFFER_FULL_ERROR;else{var r=++i.appendErrors[n];t.details=R.BUFFER_APPEND_ERROR,i.warn("Failed "+r+"/"+i.hls.config.appendErrorMaxRetry+' times to append segment in "'+n+'" sourceBuffer'),r>=i.hls.config.appendErrorMaxRetry&&(t.fatal=!0)}i.hls.trigger(k.ERROR,t)}};r.append(x,n,!!this.pendingTracks[n])},i.getFlushOp=function(e,t,i){var r=this;return{execute:function(){r.removeExecutor(e,t,i)},onStart:function(){},onComplete:function(){r.hls.trigger(k.BUFFER_FLUSHED,{type:e})},onError:function(t){r.warn("Failed to remove from "+e+" SourceBuffer",t)}}},i.onBufferFlushing=function(e,t){var i=this,r=this.operationQueue,s=t.type,a=t.startOffset,n=t.endOffset;s?r.append(this.getFlushOp(s,a,n),s):this.getSourceBufferTypes().forEach((function(e){r.append(i.getFlushOp(e,a,n),e)}))},i.onFragParsed=function(e,t){var i=this,r=t.frag,s=t.part,a=[],n=s?s.elementaryStreams:r.elementaryStreams;n[j.AUDIOVIDEO]?a.push("audiovideo"):(n[j.AUDIO]&&a.push("audio"),n[j.VIDEO]&&a.push("video"));var o=function(){var e=self.performance.now();r.stats.buffering.end=e,s&&(s.stats.buffering.end=e);var t=s?s.stats:r.stats;i.hls.trigger(k.FRAG_BUFFERED,{frag:r,part:s,stats:t,id:r.type})};0===a.length&&this.warn("Fragments must have at least one ElementaryStreamType set. type: "+r.type+" level: "+r.level+" sn: "+r.sn),this.blockBuffers(o,a)},i.onFragChanged=function(e,t){this.trimBuffers()},i.onBufferEos=function(e,t){var i=this;"video"===t.type&&this.unblockAudio(),this.getSourceBufferTypes().reduce((function(e,r){var s=i.sourceBuffer[r];return!s||t.type&&t.type!==r||(s.ending=!0,s.ended||(s.ended=!0,i.log(r+" sourceBuffer now EOS"))),e&&!(s&&!s.ended)}),!0)&&(this.log("Queueing mediaSource.endOfStream()"),this.blockBuffers((function(){i.getSourceBufferTypes().forEach((function(e){var t=i.sourceBuffer[e];t&&(t.ending=!1)}));var e=i.mediaSource;e&&"open"===e.readyState?(i.log("Calling mediaSource.endOfStream()"),e.endOfStream()):e&&i.log("Could not call mediaSource.endOfStream(). mediaSource.readyState: "+e.readyState)})))},i.onLevelUpdated=function(e,t){var i=this,r=t.details;if(r.fragments.length){this.details=r;var s=this.getDurationAndRange();s&&(this.getSourceBufferTypes().length?this.blockBuffers((function(){return i.updateMediaSource(s)})):this.updateMediaSource(s))}},i.trimBuffers=function(){var e=this.hls,t=this.details,i=this.media;if(i&&null!==t&&this.getSourceBufferTypes().length){var r=e.config,s=i.currentTime,a=t.levelTargetDuration,n=t.live&&null!==r.liveBackBufferLength?r.liveBackBufferLength:r.backBufferLength;if(S(n)&&n>0){var o=Math.max(n,a),l=Math.floor(s/a)*a-o;this.flushBackBuffer(s,a,l)}if(S(r.frontBufferFlushThreshold)&&r.frontBufferFlushThreshold>0){var d=Math.max(r.maxBufferLength,r.frontBufferFlushThreshold),h=Math.max(d,a),c=Math.floor(s/a)*a+h;this.flushFrontBuffer(s,a,c)}}},i.flushBackBuffer=function(e,t,i){var r=this,s=this.details,a=this.sourceBuffer;this.getSourceBufferTypes().forEach((function(n){var o=a[n];if(o){var l=Fr.getBuffered(o);if(l.length>0&&i>l.start(0)){if(r.hls.trigger(k.BACK_BUFFER_REACHED,{bufferEnd:i}),null!=s&&s.live)r.hls.trigger(k.LIVE_BACK_BUFFER_REACHED,{bufferEnd:i});else if(o.ended&&l.end(l.length-1)-e<2*t)return void r.log("Cannot flush "+n+" back buffer while SourceBuffer is in ended state");r.hls.trigger(k.BUFFER_FLUSHING,{startOffset:0,endOffset:i,type:n})}}}))},i.flushFrontBuffer=function(e,t,i){var r=this,s=this.sourceBuffer;this.getSourceBufferTypes().forEach((function(a){var n=s[a];if(n){var o=Fr.getBuffered(n),l=o.length;if(l<2)return;var d=o.start(l-1),h=o.end(l-1);if(i>d||e>=d&&e<=h)return;if(n.ended&&e-h<2*t)return void r.log("Cannot flush "+a+" front buffer while SourceBuffer is in ended state");r.hls.trigger(k.BUFFER_FLUSHING,{startOffset:d,endOffset:1/0,type:a})}}))},i.getDurationAndRange=function(){if(!this.details||!this.media||!this.mediaSource||"open"!==this.mediaSource.readyState)return null;var e=this.details,t=this.hls,i=this.media,r=this.mediaSource,s=e.fragments[0].start+e.totalduration,a=i.duration,n=S(r.duration)?r.duration:0;if(e.live&&t.config.liveDurationInfinity){if(r.duration=1/0,e.fragments.length&&e.live&&r.setLiveSeekableRange){var o=Math.max(0,e.fragments[0].start);return{duration:1/0,start:o,end:Math.max(o,o+e.totalduration)}}return{duration:1/0}}return s>n&&s>a||!S(a)?{duration:s}:null},i.updateMediaSource=function(e){var t=e.duration,i=e.start,r=e.end;this.media&&this.mediaSource&&"open"===this.mediaSource.readyState&&(S(t)&&this.log("Updating Media Source duration to "+t.toFixed(3)),this.mediaSource.duration=t,void 0!==i&&void 0!==r&&(this.log("Media Source duration is set to "+this.mediaSource.duration+". Setting seekable range to "+i+"-"+r+"."),this.mediaSource.setLiveSeekableRange(i,r)))},i.checkPendingTracks=function(){var e=this.bufferCodecEventsExpected,t=this.operationQueue,i=this.pendingTracks,r=Object.keys(i).length;if(r&&(!e||2===r||"audiovideo"in i)){this.createSourceBuffers(i),this.pendingTracks={};var s=this.getSourceBufferTypes();if(s.length)this.hls.trigger(k.BUFFER_CREATED,{tracks:this.tracks}),s.forEach((function(e){t.executeNext(e)}));else{var a=new Error("could not create source buffer for media codec(s)");this.hls.trigger(k.ERROR,{type:C.MEDIA_ERROR,details:R.BUFFER_INCOMPATIBLE_CODECS_ERROR,fatal:!0,error:a,reason:a.message})}}},i.createSourceBuffers=function(e){var t=this,i=this.sourceBuffer,r=this.mediaSource;if(!r)throw Error("createSourceBuffers called when mediaSource was null");var s=function(s){if(!i[s]){var a=e[s];if(!a)throw Error("source buffer exists for track "+s+", however track does not");var n=a.levelCodec||a.codec;n&&"audio"===s.slice(0,5)&&(n=bt(n,t.appendSource));var o=a.container+";codecs="+n;t.log("creating sourceBuffer("+o+")");try{var l=i[s]=r.addSourceBuffer(o),d=s;t.addBufferListener(d,"updatestart",t._onSBUpdateStart),t.addBufferListener(d,"updateend",t._onSBUpdateEnd),t.addBufferListener(d,"error",t._onSBUpdateError),t.appendSource&&t.addBufferListener(d,"bufferedchange",(function(e,i){var r=i.removedRanges;null!=r&&r.length&&t.hls.trigger(k.BUFFER_FLUSHED,{type:s})})),t.tracks[s]={buffer:l,codec:n,container:a.container,levelCodec:a.levelCodec,metadata:a.metadata,id:a.id}}catch(e){t.error("error while trying to add sourceBuffer: "+e.message),t.hls.trigger(k.ERROR,{type:C.MEDIA_ERROR,details:R.BUFFER_ADD_CODEC_ERROR,fatal:!1,error:e,sourceBufferName:s,mimeType:o})}}};for(var a in e)s(a)},i._onSBUpdateStart=function(e){this.operationQueue.current(e).onStart()},i._onSBUpdateEnd=function(e){var t;if("closed"!==(null==(t=this.mediaSource)?void 0:t.readyState)){var i=this.operationQueue;i.current(e).onComplete(),i.shiftAndExecuteNext(e)}else this.resetBuffer(e)},i._onSBUpdateError=function(e,t){var i,r=new Error(e+" SourceBuffer error. MediaSource readyState: "+(null==(i=this.mediaSource)?void 0:i.readyState));this.error(""+r,t),this.hls.trigger(k.ERROR,{type:C.MEDIA_ERROR,details:R.BUFFER_APPENDING_ERROR,sourceBufferName:e,error:r,fatal:!1});var s=this.operationQueue.current(e);s&&s.onError(r)},i.removeExecutor=function(e,t,i){var r=this.media,s=this.mediaSource,a=this.operationQueue,n=this.sourceBuffer[e];if(!r||!s||!n)return this.warn("Attempting to remove from the "+e+" SourceBuffer, but it does not exist"),void a.shiftAndExecuteNext(e);var o=S(r.duration)?r.duration:1/0,l=S(s.duration)?s.duration:1/0,d=Math.max(0,t),h=Math.min(i,o,l);h>d&&(!n.ending||n.ended)?(n.ended=!1,this.log("Removing ["+d+","+h+"] from the "+e+" SourceBuffer"),n.remove(d,h)):a.shiftAndExecuteNext(e)},i.appendExecutor=function(e,t){var i=this.sourceBuffer[t];if(i)i.ending=!1,i.ended=!1,i.appendBuffer(e);else if(!this.pendingTracks[t])throw new Error("Attempting to append to the "+t+" SourceBuffer, but it does not exist")},i.blockBuffers=function(e,t){var i=this;if(void 0===t&&(t=this.getSourceBufferTypes()),!t.length)return this.log("Blocking operation requested, but no SourceBuffers exist"),void Promise.resolve().then(e);var r=this.operationQueue,s=t.map((function(e){return r.appendBlocker(e)}));t.length>1&&!!this.blockedAudioAppend&&this.unblockAudio(),Promise.all(s).then((function(s){e(),t.forEach((function(e,t){var s=i.sourceBuffer[e];null!=s&&s.updating||r.shiftAndExecuteNext(e)}))}))},i.getSourceBufferTypes=function(){return Object.keys(this.sourceBuffer)},i.addBufferListener=function(e,t,i){var r=this.sourceBuffer[e];if(r){var s=i.bind(this,e);this.listeners[e].push({event:t,listener:s}),r.addEventListener(t,s)}},i.removeBufferListeners=function(e){var t=this.sourceBuffer[e];t&&this.listeners[e].forEach((function(e){t.removeEventListener(e.event,e.listener)}))},d(t,[{key:"mediaSrc",get:function(){var e,t=(null==(e=this.media)?void 0:e.firstChild)||this.media;return null==t?void 0:t.src}}])}(I);function dn(e){var t=e.querySelectorAll("source");[].slice.call(t).forEach((function(t){e.removeChild(t)}))}function hn(e,t){var i=self.document.createElement("source");i.type="video/mp4",i.src=t,e.appendChild(i)}var cn={42:225,92:233,94:237,95:243,96:250,123:231,124:247,125:209,126:241,127:9608,128:174,129:176,130:189,131:191,132:8482,133:162,134:163,135:9834,136:224,137:32,138:232,139:226,140:234,141:238,142:244,143:251,144:193,145:201,146:211,147:218,148:220,149:252,150:8216,151:161,152:42,153:8217,154:9473,155:169,156:8480,157:8226,158:8220,159:8221,160:192,161:194,162:199,163:200,164:202,165:203,166:235,167:206,168:207,169:239,170:212,171:217,172:249,173:219,174:171,175:187,176:195,177:227,178:205,179:204,180:236,181:210,182:242,183:213,184:245,185:123,186:125,187:92,188:94,189:95,190:124,191:8764,192:196,193:228,194:214,195:246,196:223,197:165,198:164,199:9475,200:197,201:229,202:216,203:248,204:9487,205:9491,206:9495,207:9499},un=function(e){var t=e;return cn.hasOwnProperty(e)&&(t=cn[e]),String.fromCharCode(t)},pn=15,fn=100,mn={17:1,18:3,21:5,22:7,23:9,16:11,19:12,20:14},yn={17:2,18:4,21:6,22:8,23:10,19:13,20:15},gn={25:1,26:3,29:5,30:7,31:9,24:11,27:12,28:14},An={25:2,26:4,29:6,30:8,31:10,27:13,28:15},vn=["white","green","blue","cyan","red","yellow","magenta","black","transparent"],bn=function(){function e(){this.time=null,this.verboseLevel=0}return e.prototype.log=function(e,t){if(this.verboseLevel>=e){var i="function"==typeof t?t():t;G.log(this.time+" ["+e+"] "+i)}},e}(),_n=function(e){for(var t=[],i=0;ifn&&(this.logger.log(3,"Too large cursor position "+this.pos),this.pos=fn)},t.moveCursor=function(e){var t=this.pos+e;if(e>1)for(var i=this.pos+1;i=144&&this.backSpace();var i=un(e);this.pos>=fn?this.logger.log(0,(function(){return"Cannot insert "+e.toString(16)+" ("+i+") at position "+t.pos+". Skipping it!"})):(this.chars[this.pos].setChar(i,this.currPenState),this.moveCursor(1))},t.clearFromPos=function(e){var t;for(t=e;t0&&(i=e?"["+t.join(" | ")+"]":t.join("\n")),i},t.getTextAndFormat=function(){return this.rows},e}(),kn=function(){function e(e,t,i){this.chNr=void 0,this.outputFilter=void 0,this.mode=void 0,this.verbose=void 0,this.displayedMemory=void 0,this.nonDisplayedMemory=void 0,this.lastOutputScreen=void 0,this.currRollUpRow=void 0,this.writeScreen=void 0,this.cueStartTime=void 0,this.logger=void 0,this.chNr=e,this.outputFilter=t,this.mode=null,this.verbose=0,this.displayedMemory=new Tn(i),this.nonDisplayedMemory=new Tn(i),this.lastOutputScreen=new Tn(i),this.currRollUpRow=this.displayedMemory.rows[pn-1],this.writeScreen=this.displayedMemory,this.mode=null,this.cueStartTime=null,this.logger=i}var t=e.prototype;return t.reset=function(){this.mode=null,this.displayedMemory.reset(),this.nonDisplayedMemory.reset(),this.lastOutputScreen.reset(),this.outputFilter.reset(),this.currRollUpRow=this.displayedMemory.rows[pn-1],this.writeScreen=this.displayedMemory,this.mode=null,this.cueStartTime=null},t.getHandler=function(){return this.outputFilter},t.setHandler=function(e){this.outputFilter=e},t.setPAC=function(e){this.writeScreen.setPAC(e)},t.setBkgData=function(e){this.writeScreen.setBkgData(e)},t.setMode=function(e){e!==this.mode&&(this.mode=e,this.logger.log(2,(function(){return"MODE="+e})),"MODE_POP-ON"===this.mode?this.writeScreen=this.nonDisplayedMemory:(this.writeScreen=this.displayedMemory,this.writeScreen.reset()),"MODE_ROLL-UP"!==this.mode&&(this.displayedMemory.nrRollUpRows=null,this.nonDisplayedMemory.nrRollUpRows=null),this.mode=e)},t.insertChars=function(e){for(var t=this,i=0;i=46,t.italics)t.foreground="white";else{var i=Math.floor(e/2)-16,r=["white","green","blue","cyan","red","yellow","magenta"];t.foreground=r[i]}this.logger.log(2,"MIDROW: "+JSON.stringify(t)),this.writeScreen.setPen(t)},t.outputDataUpdate=function(e){void 0===e&&(e=!1);var t=this.logger.time;null!==t&&this.outputFilter&&(null!==this.cueStartTime||this.displayedMemory.isEmpty()?this.displayedMemory.equals(this.lastOutputScreen)||(this.outputFilter.newCue(this.cueStartTime,t,this.lastOutputScreen),e&&this.outputFilter.dispatchCue&&this.outputFilter.dispatchCue(),this.cueStartTime=this.displayedMemory.isEmpty()?null:t):this.cueStartTime=t,this.lastOutputScreen.copy(this.displayedMemory))},t.cueSplitAtTime=function(e){this.outputFilter&&(this.displayedMemory.isEmpty()||(this.outputFilter.newCue&&this.outputFilter.newCue(this.cueStartTime,e,this.displayedMemory),this.cueStartTime=e))},e}(),Cn=function(){function e(e,t,i){this.channels=void 0,this.currentChannel=0,this.cmdHistory=xn(),this.logger=void 0;var r=this.logger=new bn;this.channels=[null,new kn(e,t,r),new kn(e+1,i,r)]}var t=e.prototype;return t.getHandler=function(e){return this.channels[e].getHandler()},t.setHandler=function(e,t){this.channels[e].setHandler(t)},t.addData=function(e,t){var i,r,s,a=!1;this.logger.time=e;for(var n=0;n ("+_n([r,s])+")"),(i=this.parseCmd(r,s))||(i=this.parseMidrow(r,s)),i||(i=this.parsePAC(r,s)),i||(i=this.parseBackgroundAttributes(r,s)),!i&&(a=this.parseChars(r,s))){var o=this.currentChannel;o&&o>0?this.channels[o].insertChars(a):this.logger.log(2,"No channel found yet. TEXT-MODE?")}i||a||this.logger.log(2,"Couldn't parse cleaned data "+_n([r,s])+" orig: "+_n([t[n],t[n+1]]))}},t.parseCmd=function(e,t){var i=this.cmdHistory;if(!((20===e||28===e||21===e||29===e)&&t>=32&&t<=47||(23===e||31===e)&&t>=33&&t<=35))return!1;if(Dn(e,t,i))return Rn(null,null,i),this.logger.log(3,"Repeated command ("+_n([e,t])+") is dropped"),!0;var r=20===e||21===e||23===e?1:2,s=this.channels[r];return 20===e||21===e||28===e||29===e?32===t?s.ccRCL():33===t?s.ccBS():34===t?s.ccAOF():35===t?s.ccAON():36===t?s.ccDER():37===t?s.ccRU(2):38===t?s.ccRU(3):39===t?s.ccRU(4):40===t?s.ccFON():41===t?s.ccRDC():42===t?s.ccTR():43===t?s.ccRTD():44===t?s.ccEDM():45===t?s.ccCR():46===t?s.ccENM():47===t&&s.ccEOC():s.ccTO(t-32),Rn(e,t,i),this.currentChannel=r,!0},t.parseMidrow=function(e,t){var i=0;if((17===e||25===e)&&t>=32&&t<=47){if((i=17===e?1:2)!==this.currentChannel)return this.logger.log(0,"Mismatch channel in midrow parsing"),!1;var r=this.channels[i];return!!r&&(r.ccMIDROW(t),this.logger.log(3,"MIDROW ("+_n([e,t])+")"),!0)}return!1},t.parsePAC=function(e,t){var i,r=this.cmdHistory;if(!((e>=17&&e<=23||e>=25&&e<=31)&&t>=64&&t<=127||(16===e||24===e)&&t>=64&&t<=95))return!1;if(Dn(e,t,r))return Rn(null,null,r),!0;var s=e<=23?1:2;i=t>=64&&t<=95?1===s?mn[e]:gn[e]:1===s?yn[e]:An[e];var a=this.channels[s];return!!a&&(a.setPAC(this.interpretPAC(i,t)),Rn(e,t,r),this.currentChannel=s,!0)},t.interpretPAC=function(e,t){var i,r={color:null,italics:!1,indent:null,underline:!1,row:e};return i=t>95?t-96:t-64,r.underline=!(1&~i),i<=13?r.color=["white","green","blue","cyan","red","yellow","magenta","white"][Math.floor(i/2)]:i<=15?(r.italics=!0,r.color="white"):r.indent=4*Math.floor((i-16)/2),r},t.parseChars=function(e,t){var i,r,s=null,a=null;if(e>=25?(i=2,a=e-8):(i=1,a=e),a>=17&&a<=19?(r=17===a?t+80:18===a?t+112:t+144,this.logger.log(2,"Special char '"+un(r)+"' in channel "+i),s=[r]):e>=32&&e<=127&&(s=0===t?[e]:[e,t]),s){var n=_n(s);this.logger.log(3,"Char codes = "+n.join(",")),Rn(e,t,this.cmdHistory)}return s},t.parseBackgroundAttributes=function(e,t){var i;if(!((16===e||24===e)&&t>=32&&t<=47||(23===e||31===e)&&t>=45&&t<=47))return!1;var r={};16===e||24===e?(i=Math.floor((t-32)/2),r.background=vn[i],t%2==1&&(r.background=r.background+"_semi")):45===t?r.background="transparent":(r.foreground="black",47===t&&(r.underline=!0));var s=e<=23?1:2;return this.channels[s].setBkgData(r),Rn(e,t,this.cmdHistory),!0},t.reset=function(){for(var e=0;ee)&&(this.startTime=e),this.endTime=t,this.screen=i,this.timelineController.createCaptionsTrack(this.trackName)},t.reset=function(){this.cueRanges=[],this.startTime=null},e}(),In=function(){if(null!=ae&&ae.VTTCue)return self.VTTCue;var e=["","lr","rl"],t=["start","middle","end","left","right"];function i(e,t){if("string"!=typeof t)return!1;if(!Array.isArray(e))return!1;var i=t.toLowerCase();return!!~e.indexOf(i)&&i}function r(t){return i(e,t)}function s(e){return i(t,e)}function a(e){for(var t=arguments.length,i=new Array(t>1?t-1:0),r=1;r100)throw new Error("Position must be between 0 and 100.");A=e,this.hasBeenReset=!0}})),Object.defineProperty(n,"positionAlign",a({},o,{get:function(){return v},set:function(e){var t=s(e);if(!t)throw new SyntaxError("An invalid or illegal string was specified.");v=t,this.hasBeenReset=!0}})),Object.defineProperty(n,"size",a({},o,{get:function(){return b},set:function(e){if(e<0||e>100)throw new Error("Size must be between 0 and 100.");b=e,this.hasBeenReset=!0}})),Object.defineProperty(n,"align",a({},o,{get:function(){return _},set:function(e){var t=s(e);if(!t)throw new SyntaxError("An invalid or illegal string was specified.");_=t,this.hasBeenReset=!0}})),n.displayState=void 0}return n.prototype.getCueAsHTML=function(){return self.WebVTT.convertCueToDOMTree(self,this.text)},n}(),Pn=function(){function e(){}return e.prototype.decode=function(e,t){if(!e)return"";if("string"!=typeof e)throw new Error("Error - expected string data.");return decodeURIComponent(encodeURIComponent(e))},e}();function Bn(e){function t(e,t,i,r){return 3600*(0|e)+60*(0|t)+(0|i)+parseFloat(r||0)}var i=e.match(/^(?:(\d+):)?(\d{2}):(\d{2})(\.\d+)?/);return i?parseFloat(i[2])>59?t(i[2],i[3],0,i[4]):t(i[1],i[2],i[3],i[4]):null}var Mn=function(){function e(){this.values=Object.create(null)}var t=e.prototype;return t.set=function(e,t){this.get(e)||""===t||(this.values[e]=t)},t.get=function(e,t,i){return i?this.has(e)?this.values[e]:t[i]:this.has(e)?this.values[e]:t},t.has=function(e){return e in this.values},t.alt=function(e,t,i){for(var r=0;r=0&&i<=100)return this.set(e,i),!0}return!1},e}();function Un(e,t,i,r){var s=r?e.split(r):[e];for(var a in s)if("string"==typeof s[a]){var n=s[a].split(i);2===n.length&&t(n[0],n[1])}}var Fn=new In(0,0,""),On="middle"===Fn.align?"middle":"center";function Nn(e,t,i){var r=e;function s(){var t=Bn(e);if(null===t)throw new Error("Malformed timestamp: "+r);return e=e.replace(/^[^\sa-zA-Z-]+/,""),t}function a(e,t){var r=new Mn;Un(e,(function(e,t){var s;switch(e){case"region":for(var a=i.length-1;a>=0;a--)if(i[a].id===t){r.set(e,i[a].region);break}break;case"vertical":r.alt(e,t,["rl","lr"]);break;case"line":s=t.split(","),r.integer(e,s[0]),r.percent(e,s[0])&&r.set("snapToLines",!1),r.alt(e,s[0],["auto"]),2===s.length&&r.alt("lineAlign",s[1],["start",On,"end"]);break;case"position":s=t.split(","),r.percent(e,s[0]),2===s.length&&r.alt("positionAlign",s[1],["start",On,"end","line-left","line-right","auto"]);break;case"size":r.percent(e,t);break;case"align":r.alt(e,t,["start",On,"end","left","right"])}}),/:/,/\s/),t.region=r.get("region",null),t.vertical=r.get("vertical","");var s=r.get("line","auto");"auto"===s&&-1===Fn.line&&(s=-1),t.line=s,t.lineAlign=r.get("lineAlign","start"),t.snapToLines=r.get("snapToLines",!0),t.size=r.get("size",100),t.align=r.get("align",On);var a=r.get("position","auto");"auto"===a&&50===Fn.position&&(a="start"===t.align||"left"===t.align?0:"end"===t.align||"right"===t.align?100:50),t.position=a}function n(){e=e.replace(/^\s+/,"")}if(n(),t.startTime=s(),n(),"--\x3e"!==e.slice(0,3))throw new Error("Malformed time stamp (time stamps must be separated by '--\x3e'): "+r);e=e.slice(3),n(),t.endTime=s(),n(),a(e,t)}function Gn(e){return e.replace(//gi,"\n")}var zn=function(){function e(){this.state="INITIAL",this.buffer="",this.decoder=new Pn,this.regionList=[],this.cue=null,this.oncue=void 0,this.onparsingerror=void 0,this.onflush=void 0}var t=e.prototype;return t.parse=function(e){var t=this;function i(){var e=t.buffer,i=0;for(e=Gn(e);i9?parseInt(e.substring(0,e.indexOf(":"))):0;if(!(S(t)&&S(i)&&S(r)&&S(s)))throw Error("Malformed X-TIMESTAMP-MAP: Local:"+e);return t+=1e3*i,t+=6e4*r,t+=36e5*s},jn=function(e){for(var t=5381,i=e.length;i;)t=33*t^e.charCodeAt(--i);return(t>>>0).toString()};function $n(e,t,i){return jn(e.toString())+jn(t.toString())+jn(i)}var Kn=function(e,t,i){var r=e[t],s=e[r.prevCC];if(!s||!s.new&&r.new)return e.ccOffset=e.presentationOffset=r.start,void(r.new=!1);for(;null!=(a=s)&&a.new;){var a;e.ccOffset+=r.start-s.start,r.new=!1,s=e[(r=s).prevCC]}e.presentationOffset=i};function qn(e,t,i,r,s,a,n){var o,l=new zn,d=Ae(new Uint8Array(e)).trim().replace(Vn,"\n").split("\n"),h=[],c=t?fa(t.baseTime,t.timescale):0,u="00:00.000",p=0,f=0,m=!0;l.oncue=function(e){var a=i[r],n=i.ccOffset,l=(p-c)/9e4;if(null!=a&&a.new&&(void 0!==f?n=i.ccOffset=a.start:Kn(i,r,l)),l){if(!t)return void(o=new Error("Missing initPTS for VTT MPEGTS"));n=l-i.presentationOffset}var d=e.endTime-e.startTime,u=Ea(9e4*(e.startTime+n-f),9e4*s)/9e4;e.startTime=Math.max(u,0),e.endTime=Math.max(u+d,0);var m=e.text.trim();e.text=decodeURIComponent(encodeURIComponent(m)),e.id||(e.id=$n(e.startTime,e.endTime,m)),e.endTime>0&&h.push(e)},l.onparsingerror=function(e){o=e},l.onflush=function(){o?n(o):a(h)},d.forEach((function(e){if(m){if(Hn(e,"X-TIMESTAMP-MAP=")){m=!1,e.slice(16).split(",").forEach((function(e){Hn(e,"LOCAL:")?u=e.slice(6):Hn(e,"MPEGTS:")&&(p=parseInt(e.slice(7)))}));try{f=Wn(u)/1e3}catch(e){o=e}return}""===e&&(m=!1)}l.parse(e+"\n")})),l.flush()}var Yn="stpp.ttml.im1t",Qn=/^(\d{2,}):(\d{2}):(\d{2}):(\d{2})\.?(\d+)?$/,Xn=/^(\d*(?:\.\d*)?)(h|m|s|ms|f|t)$/,Jn={left:"start",center:"center",right:"end",start:"start",end:"end"};function Zn(e,t,i,r){var s=xe(new Uint8Array(e),["mdat"]);if(0!==s.length){var a=s.map((function(e){return Ae(e)})),n=ua(t.baseTime,1,t.timescale);try{a.forEach((function(e){return i(eo(e,n))}))}catch(e){r(e)}}else r(new Error("Could not parse IMSC1 mdat"))}function eo(e,t){var i=(new DOMParser).parseFromString(e,"text/xml").getElementsByTagName("tt")[0];if(!i)throw new Error("Invalid ttml");var r={frameRate:30,subFrameRate:1,frameRateMultiplier:0,tickRate:0},s=Object.keys(r).reduce((function(e,t){return e[t]=i.getAttribute("ttp:"+t)||r[t],e}),{}),a="preserve"!==i.getAttribute("xml:space"),n=io(to(i,"styling","style")),o=io(to(i,"layout","region")),l=to(i,"body","[begin]");return[].map.call(l,(function(e){var i=ro(e,a);if(!i||!e.hasAttribute("begin"))return null;var r=oo(e.getAttribute("begin"),s),l=oo(e.getAttribute("dur"),s),d=oo(e.getAttribute("end"),s);if(null===r)throw no(e);if(null===d){if(null===l)throw no(e);d=r+l}var h=new In(r-t,d-t,i);h.id=$n(h.startTime,h.endTime,h.text);var u=so(o[e.getAttribute("region")],n[e.getAttribute("style")],n),p=u.textAlign;if(p){var f=Jn[p];f&&(h.lineAlign=f),h.align=p}return c(h,u),h})).filter((function(e){return null!==e}))}function to(e,t,i){var r=e.getElementsByTagName(t)[0];return r?[].slice.call(r.querySelectorAll(i)):[]}function io(e){return e.reduce((function(e,t){var i=t.getAttribute("xml:id");return i&&(e[i]=t),e}),{})}function ro(e,t){return[].slice.call(e.childNodes).reduce((function(e,i,r){var s;return"br"===i.nodeName&&r?e+"\n":null!=(s=i.childNodes)&&s.length?ro(i,t):t?e+i.textContent.trim().replace(/\s+/g," "):e+i.textContent}),"")}function so(e,t,i){var r="http://www.w3.org/ns/ttml#styling",s=null,a=["displayAlign","textAlign","color","backgroundColor","fontSize","fontFamily"],n=null!=e&&e.hasAttribute("style")?e.getAttribute("style"):null;return n&&i.hasOwnProperty(n)&&(s=i[n]),a.reduce((function(i,a){var n=ao(t,r,a)||ao(e,r,a)||ao(s,r,a);return n&&(i[a]=n),i}),{})}function ao(e,t,i){return e&&e.hasAttributeNS(t,i)?e.getAttributeNS(t,i):null}function no(e){return new Error("Could not parse ttml timestamp "+e)}function oo(e,t){if(!e)return null;var i=Bn(e);return null===i&&(Qn.test(e)?i=lo(e,t):Xn.test(e)&&(i=ho(e,t))),i}function lo(e,t){var i=Qn.exec(e),r=(0|i[4])+(0|i[5])/t.subFrameRate;return 3600*(0|i[1])+60*(0|i[2])+(0|i[3])+r/t.frameRate}function ho(e,t){var i=Xn.exec(e),r=Number(i[1]);switch(i[2]){case"h":return 3600*r;case"m":return 60*r;case"ms":return 1e3*r;case"f":return r/t.frameRate;case"t":return r/t.tickRate}return r}var co=function(){function e(e){this.hls=void 0,this.media=null,this.config=void 0,this.enabled=!0,this.Cues=void 0,this.textTracks=[],this.tracks=[],this.initPTS=[],this.unparsedVttFrags=[],this.captionsTracks={},this.nonNativeCaptionsTracks={},this.cea608Parser1=void 0,this.cea608Parser2=void 0,this.lastCc=-1,this.lastSn=-1,this.lastPartIndex=-1,this.prevCC=-1,this.vttCCs=mo(),this.captionsProperties=void 0,this.hls=e,this.config=e.config,this.Cues=e.config.cueHandler,this.captionsProperties={textTrack1:{label:this.config.captionsTextTrack1Label,languageCode:this.config.captionsTextTrack1LanguageCode},textTrack2:{label:this.config.captionsTextTrack2Label,languageCode:this.config.captionsTextTrack2LanguageCode},textTrack3:{label:this.config.captionsTextTrack3Label,languageCode:this.config.captionsTextTrack3LanguageCode},textTrack4:{label:this.config.captionsTextTrack4Label,languageCode:this.config.captionsTextTrack4LanguageCode}},e.on(k.MEDIA_ATTACHING,this.onMediaAttaching,this),e.on(k.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(k.MANIFEST_LOADING,this.onManifestLoading,this),e.on(k.MANIFEST_LOADED,this.onManifestLoaded,this),e.on(k.SUBTITLE_TRACKS_UPDATED,this.onSubtitleTracksUpdated,this),e.on(k.FRAG_LOADING,this.onFragLoading,this),e.on(k.FRAG_LOADED,this.onFragLoaded,this),e.on(k.FRAG_PARSING_USERDATA,this.onFragParsingUserdata,this),e.on(k.FRAG_DECRYPTED,this.onFragDecrypted,this),e.on(k.INIT_PTS_FOUND,this.onInitPtsFound,this),e.on(k.SUBTITLE_TRACKS_CLEARED,this.onSubtitleTracksCleared,this),e.on(k.BUFFER_FLUSHING,this.onBufferFlushing,this)}var t=e.prototype;return t.destroy=function(){var e=this.hls;e.off(k.MEDIA_ATTACHING,this.onMediaAttaching,this),e.off(k.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(k.MANIFEST_LOADING,this.onManifestLoading,this),e.off(k.MANIFEST_LOADED,this.onManifestLoaded,this),e.off(k.SUBTITLE_TRACKS_UPDATED,this.onSubtitleTracksUpdated,this),e.off(k.FRAG_LOADING,this.onFragLoading,this),e.off(k.FRAG_LOADED,this.onFragLoaded,this),e.off(k.FRAG_PARSING_USERDATA,this.onFragParsingUserdata,this),e.off(k.FRAG_DECRYPTED,this.onFragDecrypted,this),e.off(k.INIT_PTS_FOUND,this.onInitPtsFound,this),e.off(k.SUBTITLE_TRACKS_CLEARED,this.onSubtitleTracksCleared,this),e.off(k.BUFFER_FLUSHING,this.onBufferFlushing,this),this.hls=this.config=this.media=null,this.cea608Parser1=this.cea608Parser2=void 0},t.initCea608Parsers=function(){var e=new Ln(this,"textTrack1"),t=new Ln(this,"textTrack2"),i=new Ln(this,"textTrack3"),r=new Ln(this,"textTrack4");this.cea608Parser1=new Cn(1,e,t),this.cea608Parser2=new Cn(3,i,r)},t.addCues=function(e,t,i,r,s){for(var a=!1,n=s.length;n--;){var o=s[n],l=fo(o[0],o[1],t,i);if(l>=0&&(o[0]=Math.min(o[0],t),o[1]=Math.max(o[1],i),a=!0,l/(i-t)>.5))return}if(a||s.push([t,i]),this.config.renderTextTracksNatively){var d=this.captionsTracks[e];this.Cues.newCue(d,t,i,r)}else{var h=this.Cues.newCue(null,t,i,r);this.hls.trigger(k.CUES_PARSED,{type:"captions",cues:h,track:e})}},t.onInitPtsFound=function(e,t){var i=this,r=t.frag,s=t.id,a=t.initPTS,n=t.timescale,o=this.unparsedVttFrags;"main"===s&&(this.initPTS[r.cc]={baseTime:a,timescale:n}),o.length&&(this.unparsedVttFrags=[],o.forEach((function(e){i.onFragLoaded(k.FRAG_LOADED,e)})))},t.getExistingTrack=function(e,t){var i=this.media;if(i)for(var r=0;rr.cc||l.trigger(k.SUBTITLE_FRAG_PROCESSED,{success:!1,frag:r,error:t})}))}else n.push(e)},t._fallbackToIMSC1=function(e,t){var i=this,r=this.tracks[e.level];r.textCodec||Zn(t,this.initPTS[e.cc],(function(){r.textCodec=Yn,i._parseIMSC1(e,t)}),(function(){r.textCodec="wvtt"}))},t._appendCues=function(e,t){var i=this.hls;if(this.config.renderTextTracksNatively){var r=this.textTracks[t];if(!r||"disabled"===r.mode)return;e.forEach((function(e){return Wt(r,e)}))}else{var s=this.tracks[t];if(!s)return;var a=s.default?"default":"subtitles"+t;i.trigger(k.CUES_PARSED,{type:"subtitles",cues:e,track:a})}},t.onFragDecrypted=function(e,t){t.frag.type===Nt.SUBTITLE&&this.onFragLoaded(k.FRAG_LOADED,t)},t.onSubtitleTracksCleared=function(){this.tracks=[],this.captionsTracks={}},t.onFragParsingUserdata=function(e,t){if(this.enabled&&this.config.enableCEA708Captions){var i=t.frag,r=t.samples;if(i.type!==Nt.MAIN||"NONE"!==this.closedCaptionsForLevel(i))for(var s=0;sthis.autoLevelCapping&&this.streamController&&this.streamController.nextLevelSwitch(),this.autoLevelCapping=t.autoLevelCapping}}},t.getMaxLevel=function(t){var i=this,r=this.hls.levels;if(!r.length)return-1;var s=r.filter((function(e,r){return i.isLevelAllowed(e)&&r<=t}));return this.clientRect=null,e.getMaxLevelByMediaSize(s,this.mediaWidth,this.mediaHeight)},t.startCapping=function(){this.timer||(this.autoLevelCapping=Number.POSITIVE_INFINITY,self.clearInterval(this.timer),this.timer=self.setInterval(this.detectPlayerSize.bind(this),1e3),this.detectPlayerSize())},t.stopCapping=function(){this.restrictedLevels=[],this.firstLevel=-1,this.autoLevelCapping=Number.POSITIVE_INFINITY,this.timer&&(self.clearInterval(this.timer),this.timer=void 0)},t.getDimensions=function(){if(this.clientRect)return this.clientRect;var e=this.media,t={width:0,height:0};if(e){var i=e.getBoundingClientRect();t.width=i.width,t.height=i.height,t.width||t.height||(t.width=i.right-i.left||e.width||0,t.height=i.bottom-i.top||e.height||0)}return this.clientRect=t,t},t.isLevelAllowed=function(e){return!this.restrictedLevels.some((function(t){return e.bitrate===t.bitrate&&e.width===t.width&&e.height===t.height}))},e.getMaxLevelByMediaSize=function(e,t,i){if(null==e||!e.length)return-1;for(var r=function(e,t){return!t||e.width!==t.width||e.height!==t.height},s=e.length-1,a=Math.max(t,i),n=0;n=a||o.height>=a)&&r(o,e[n+1])){s=n;break}}return s},d(e,[{key:"mediaWidth",get:function(){return this.getDimensions().width*this.contentScaleFactor}},{key:"mediaHeight",get:function(){return this.getDimensions().height*this.contentScaleFactor}},{key:"contentScaleFactor",get:function(){var e=1;if(!this.hls.config.ignoreDevicePixelRatio)try{e=self.devicePixelRatio}catch(e){}return e}}])}(),go=function(){function e(e){this.hls=void 0,this.isVideoPlaybackQualityAvailable=!1,this.timer=void 0,this.media=null,this.lastTime=void 0,this.lastDroppedFrames=0,this.lastDecodedFrames=0,this.streamController=void 0,this.hls=e,this.registerListeners()}var t=e.prototype;return t.setStreamController=function(e){this.streamController=e},t.registerListeners=function(){this.hls.on(k.MEDIA_ATTACHING,this.onMediaAttaching,this),this.hls.on(k.MEDIA_DETACHING,this.onMediaDetaching,this)},t.unregisterListeners=function(){this.hls.off(k.MEDIA_ATTACHING,this.onMediaAttaching,this),this.hls.off(k.MEDIA_DETACHING,this.onMediaDetaching,this)},t.destroy=function(){this.timer&&clearInterval(this.timer),this.unregisterListeners(),this.isVideoPlaybackQualityAvailable=!1,this.media=null},t.onMediaAttaching=function(e,t){var i=this.hls.config;if(i.capLevelOnFPSDrop){var r=t.media instanceof self.HTMLVideoElement?t.media:null;this.media=r,r&&"function"==typeof r.getVideoPlaybackQuality&&(this.isVideoPlaybackQualityAvailable=!0),self.clearInterval(this.timer),this.timer=self.setInterval(this.checkFPSInterval.bind(this),i.fpsDroppedMonitoringPeriod)}},t.onMediaDetaching=function(){this.media=null},t.checkFPS=function(e,t,i){var r=performance.now();if(t){if(this.lastTime){var s=r-this.lastTime,a=i-this.lastDroppedFrames,n=t-this.lastDecodedFrames,o=1e3*a/s,l=this.hls;if(l.trigger(k.FPS_DROP,{currentDropped:a,currentDecoded:n,totalDroppedFrames:i}),o>0&&a>l.config.fpsDroppedMonitoringThreshold*n){var d=l.currentLevel;l.logger.warn("drop FPS ratio greater than max allowed value for currentLevel: "+d),d>0&&(-1===l.autoLevelCapping||l.autoLevelCapping>=d)&&(d-=1,l.trigger(k.FPS_DROP_LEVEL_CAPPING,{level:d,droppedLevel:l.currentLevel}),l.autoLevelCapping=d,this.streamController.nextLevelSwitch())}}this.lastTime=r,this.lastDroppedFrames=i,this.lastDecodedFrames=t}},t.checkFPSInterval=function(){var e=this.media;if(e)if(this.isVideoPlaybackQualityAvailable){var t=e.getVideoPlaybackQuality();this.checkFPS(e,t.totalVideoFrames,t.droppedVideoFrames)}else this.checkFPS(e,e.webkitDecodedFrameCount,e.webkitDroppedFrameCount)},e}(),Ao=function(e){function t(i){var r;return(r=e.call(this,"eme",i.logger)||this).hls=void 0,r.config=void 0,r.media=null,r.keyFormatPromise=null,r.keySystemAccessPromises={},r._requestLicenseFailureCount=0,r.mediaKeySessions=[],r.keyIdToKeySessionPromise={},r.setMediaKeysQueue=t.CDMCleanupPromise?[t.CDMCleanupPromise]:[],r.onMediaEncrypted=function(e){var t=e.initDataType,i=e.initData;if(r.debug('"'+e.type+'" event: init data type: "'+t+'"'),null!==i){var s,a;if("sinf"===t&&r.config.drmSystems[ne.FAIRPLAY]){var n=Se(new Uint8Array(i));try{var o=X(JSON.parse(n).sinf),l=Oe(new Uint8Array(o));if(!l)return;s=l.subarray(8,24),a=ne.FAIRPLAY}catch(e){return void r.warn('Failed to parse sinf "encrypted" event message initData')}}else{var d=Ze(i);if(null===d)return;0===d.version&&d.systemId===de.WIDEVINE&&d.data&&(s=d.data.subarray(8,24)),a=he(d.systemId)}if(a&&s){for(var h,c=ve.hexDump(s),u=r,p=u.keyIdToKeySessionPromise,f=u.mediaKeySessions,m=p[c],y=function(){var e=f[g],a=e.decryptdata;if(a.pssh||!a.keyId)return 0;var n=ve.hexDump(a.keyId);return c===n||-1!==a.uri.replace(/-/g,"").indexOf(c)?(m=p[n],delete p[n],a.pssh=new Uint8Array(i),a.keyId=s,m=p[c]=m.then((function(){return r.generateRequestWithPreferredKeySession(e,t,i,"encrypted-event-key-match")})),1):void 0},g=0;g0)for(var a,n=0,o=s.length;n in key message");return J(atob(p))},i.setupLicenseXHR=function(e,t,i,r){var s=this,a=this.config.licenseXhrSetup;return a?Promise.resolve().then((function(){if(!i.decryptdata)throw new Error("Key removed");return a.call(s.hls,e,t,i,r)})).catch((function(n){if(!i.decryptdata)throw n;return e.open("POST",t,!0),a.call(s.hls,e,t,i,r)})).then((function(i){return e.readyState||e.open("POST",t,!0),{xhr:e,licenseChallenge:i||r}})):(e.open("POST",t,!0),Promise.resolve({xhr:e,licenseChallenge:r}))},i.requestLicense=function(e,t){var i=this,r=this.config.keyLoadPolicy.default;return new Promise((function(s,a){var n=i.getLicenseServerUrl(e.keySystem);i.log("Sending license request to URL: "+n);var o=new XMLHttpRequest;o.responseType="arraybuffer",o.onreadystatechange=function(){if(!i.hls||!e.mediaKeysSession)return a(new Error("invalid state"));if(4===o.readyState)if(200===o.status){i._requestLicenseFailureCount=0;var l=o.response;i.log("License received "+(l instanceof ArrayBuffer?l.byteLength:l));var d=i.config.licenseResponseCallback;if(d)try{l=d.call(i.hls,o,n,e)}catch(e){i.error(e)}s(l)}else{var h=r.errorRetry,c=h?h.maxNumRetry:0;if(i._requestLicenseFailureCount++,i._requestLicenseFailureCount>c||o.status>=400&&o.status<500)a(new So({type:C.KEY_SYSTEM_ERROR,details:R.KEY_SYSTEM_LICENSE_REQUEST_FAILED,fatal:!0,networkDetails:o,response:{url:n,data:void 0,code:o.status,text:o.statusText}},"License Request XHR failed ("+n+"). Status: "+o.status+" ("+o.statusText+")"));else{var u=c-i._requestLicenseFailureCount+1;i.warn("Retrying license request, "+u+" attempts left"),i.requestLicense(e,t).then(s,a)}}},e.licenseXhr&&e.licenseXhr.readyState!==XMLHttpRequest.DONE&&e.licenseXhr.abort(),e.licenseXhr=o,i.setupLicenseXHR(o,n,e,t).then((function(t){var r=t.xhr,s=t.licenseChallenge;e.keySystem==ne.PLAYREADY&&(s=i.unpackPlayReadyKeyMessage(r,s)),r.send(s)}))}))},i.onMediaAttached=function(e,t){if(this.config.emeEnabled){var i=t.media;this.media=i,i.addEventListener("encrypted",this.onMediaEncrypted),i.addEventListener("waitingforkey",this.onWaitingForKey)}},i.onMediaDetached=function(){var e=this,i=this.media,r=this.mediaKeySessions;i&&(i.removeEventListener("encrypted",this.onMediaEncrypted),i.removeEventListener("waitingforkey",this.onWaitingForKey),this.media=null),this._requestLicenseFailureCount=0,this.setMediaKeysQueue=[],this.mediaKeySessions=[],this.keyIdToKeySessionPromise={},tt.clearKeyUriToKeyIdMap();var s=r.length;t.CDMCleanupPromise=Promise.all(r.map((function(t){return e.removeSession(t)})).concat(null==i?void 0:i.setMediaKeys(null).catch((function(t){e.log("Could not clear media keys: "+t)})))).then((function(){s&&(e.log("finished closing key sessions and clearing media keys"),r.length=0)})).catch((function(t){e.log("Could not close sessions and clear media keys: "+t)}))},i.onManifestLoading=function(){this.keyFormatPromise=null},i.onManifestLoaded=function(e,t){var i=t.sessionKeys;if(i&&this.config.emeEnabled&&!this.keyFormatPromise){var r=i.reduce((function(e,t){return-1===e.indexOf(t.keyFormat)&&e.push(t.keyFormat),e}),[]);this.log("Selecting key-system from session-keys "+r.join(", ")),this.keyFormatPromise=this.getKeyFormatPromise(r)}},i.removeSession=function(e){var t=this,i=e.mediaKeysSession,r=e.licenseXhr;if(i){this.log("Remove licenses and keys and close session "+i.sessionId),e._onmessage&&(i.removeEventListener("message",e._onmessage),e._onmessage=void 0),e._onkeystatuseschange&&(i.removeEventListener("keystatuseschange",e._onkeystatuseschange),e._onkeystatuseschange=void 0),r&&r.readyState!==XMLHttpRequest.DONE&&r.abort(),e.mediaKeysSession=e.decryptdata=e.licenseXhr=void 0;var s=this.mediaKeySessions.indexOf(e);return s>-1&&this.mediaKeySessions.splice(s,1),i.remove().catch((function(e){t.log("Could not remove session: "+e)})).then((function(){return i.close()})).catch((function(e){t.log("Could not close session: "+e)}))}},t}(I);Ao.CDMCleanupPromise=void 0;var vo,bo,_o,Eo,So=function(e){function t(t,i){var r;return(r=e.call(this,i)||this).data=void 0,t.error||(t.error=new Error(i)),r.data=t,t.err=t.error,r}return u(t,e),t}(y(Error));(function(e){e.MANIFEST="m",e.AUDIO="a",e.VIDEO="v",e.MUXED="av",e.INIT="i",e.CAPTION="c",e.TIMED_TEXT="tt",e.KEY="k",e.OTHER="o"})(vo||(vo={})),function(e){e.DASH="d",e.HLS="h",e.SMOOTH="s",e.OTHER="o"}(bo||(bo={})),function(e){e.OBJECT="CMCD-Object",e.REQUEST="CMCD-Request",e.SESSION="CMCD-Session",e.STATUS="CMCD-Status"}(_o||(_o={}));var wo=((Eo={})[_o.OBJECT]=["br","d","ot","tb"],Eo[_o.REQUEST]=["bl","dl","mtp","nor","nrr","su"],Eo[_o.SESSION]=["cid","pr","sf","sid","st","v"],Eo[_o.STATUS]=["bs","rtp"],Eo),To=function e(t,i){Array.isArray(t)&&(t=t.map((function(t){return t instanceof e?t:new e(t)}))),this.value=t,this.params=i},ko="Dict";function Co(e){return Array.isArray(e)?JSON.stringify(e):e instanceof Map?"Map{}":e instanceof Set?"Set{}":"object"==typeof e?JSON.stringify(e):String(e)}function Ro(e,t,i,r){return new Error("failed to "+e+' "'+Co(t)+'" as '+i,{cause:r})}function Do(e,t,i){return Ro("serialize",e,t,i)}var xo=function(e){this.description=e},Lo="Bare Item",Io="Boolean";function Po(e){if("boolean"!=typeof e)throw Do(e,Io);return e?"?1":"?0"}var Bo="Byte Sequence";function Mo(e){if(!1===ArrayBuffer.isView(e))throw Do(e,Bo);return":"+ai(e)+":"}var Uo="Integer";function Fo(e){return e<-999999999999999||99999999999999912)throw Do(e,Go);var i=t.toString();return i.includes(".")?i:i+".0"}var Vo="String",Ho=/[\x00-\x1f\x7f]+/;function Wo(e){if(Ho.test(e))throw Do(e,Vo);return'"'+e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')+'"'}function jo(e){return e.description||e.toString().slice(7,-1)}var $o="Token";function Ko(e){var t=jo(e);if(!1===/^([a-zA-Z*])([!#$%&'*+\-.^_`|~\w:/]*)$/.test(t))throw Do(t,$o);return t}function qo(e){switch(typeof e){case"number":if(!S(e))throw Do(e,Lo);return Number.isInteger(e)?Oo(e):zo(e);case"string":return Wo(e);case"symbol":return Ko(e);case"boolean":return Po(e);case"object":if(e instanceof Date)return No(e);if(e instanceof Uint8Array)return Mo(e);if(e instanceof xo)return Ko(e);default:throw Do(e,Lo)}}var Yo="Key";function Qo(e){if(!1===/^[a-z*][a-z0-9\-_.*]*$/.test(e))throw Do(e,Yo);return e}function Xo(e){return null==e?"":Object.entries(e).map((function(e){var t=e[0],i=e[1];return!0===i?";"+Qo(t):";"+Qo(t)+"="+qo(i)})).join("")}function Jo(e){return e instanceof To?""+qo(e.value)+Xo(e.params):qo(e)}function Zo(e){return"("+e.value.map(Jo).join(" ")+")"+Xo(e.params)}function el(e,t){if(void 0===t&&(t={whitespace:!0}),"object"!=typeof e)throw Do(e,ko);var i=e instanceof Map?e.entries():Object.entries(e),r=(null==t?void 0:t.whitespace)?" ":"";return Array.from(i).map((function(e){var t=e[0],i=e[1];i instanceof To==0&&(i=new To(i));var r=Qo(t);return!0===i.value?r+=Xo(i.params):(r+="=",Array.isArray(i.value)?r+=Zo(i):r+=Jo(i)),r})).join(","+r)}function tl(e,t){return el(e,t)}var il=function(e){return"ot"===e||"sf"===e||"st"===e},rl=function(e){return"number"==typeof e?S(e):null!=e&&""!==e&&!1!==e},sl=function(e){return Math.round(e)},al=function(e){return 100*sl(e/100)},nl={br:sl,d:sl,bl:al,dl:al,mtp:al,nor:function(e,t){return(null==t?void 0:t.baseUrl)&&(e=oi(e,t.baseUrl)),encodeURIComponent(e)},rtp:al,tb:sl};function ol(e,t){var i={};if(null==e||"object"!=typeof e)return i;var r=Object.keys(e).sort(),s=c({},nl,null==t?void 0:t.formatters),a=null==t?void 0:t.filter;return r.forEach((function(r){if(!(null==a?void 0:a(r))){var n=e[r],o=s[r];o&&(n=o(n,t)),"v"===r&&1===n||"pr"==r&&1===n||rl(n)&&(il(r)&&"string"==typeof n&&(n=new xo(n)),i[r]=n)}})),i}function ll(e,t){return void 0===t&&(t={}),e?tl(ol(e,t),c({whitespace:!1},t)):""}function dl(e,t){if(void 0===t&&(t={}),!e)return{};var i=Object.entries(e),r=Object.entries(wo).concat(Object.entries((null==t?void 0:t.customHeaderMap)||{})),s=i.reduce((function(e,t){var i,s,a=t[0],n=t[1],o=(null===(i=r.find((function(e){return e[1].includes(a)})))||void 0===i?void 0:i[0])||_o.REQUEST;return null!==(s=e[o])&&void 0!==s||(e[o]={}),e[o][a]=n,e}),{});return Object.entries(s).reduce((function(e,i){var r=i[0],s=i[1];return e[r]=ll(s,t),e}),{})}function hl(e,t,i){return c(e,dl(t,i))}var cl="CMCD";function ul(e,t){if(void 0===t&&(t={}),!e)return"";var i=ll(e,t);return cl+"="+encodeURIComponent(i)}var pl=/CMCD=[^&#]+/;function fl(e,t,i){var r=ul(t,i);if(!r)return e;if(pl.test(e))return e.replace(pl,r);var s=e.includes("?")?"&":"?";return""+e+s+r}var ml=function(){function e(e){var t=this;this.hls=void 0,this.config=void 0,this.media=void 0,this.sid=void 0,this.cid=void 0,this.useHeaders=!1,this.includeKeys=void 0,this.initialized=!1,this.starved=!1,this.buffering=!0,this.audioBuffer=void 0,this.videoBuffer=void 0,this.onWaiting=function(){t.initialized&&(t.starved=!0),t.buffering=!0},this.onPlaying=function(){t.initialized||(t.initialized=!0),t.buffering=!1},this.applyPlaylistData=function(e){try{t.apply(e,{ot:vo.MANIFEST,su:!t.initialized})}catch(e){t.hls.logger.warn("Could not generate manifest CMCD data.",e)}},this.applyFragmentData=function(e){try{var i=e.frag,r=t.hls.levels[i.level],s=t.getObjectType(i),a={d:1e3*i.duration,ot:s};s!==vo.VIDEO&&s!==vo.AUDIO&&s!=vo.MUXED||(a.br=r.bitrate/1e3,a.tb=t.getTopBandwidth(s)/1e3,a.bl=t.getBufferLength(s));var n=t.getNextFrag(i);n&&n.url&&n.url!==i.url&&(a.nor=n.url),t.apply(e,a)}catch(e){t.hls.logger.warn("Could not generate segment CMCD data.",e)}},this.hls=e;var i=this.config=e.config,r=i.cmcd;null!=r&&(i.pLoader=this.createPlaylistLoader(),i.fLoader=this.createFragmentLoader(),this.sid=r.sessionId||li(),this.cid=r.contentId,this.useHeaders=!0===r.useHeaders,this.includeKeys=r.includeKeys,this.registerListeners())}var t=e.prototype;return t.registerListeners=function(){var e=this.hls;e.on(k.MEDIA_ATTACHED,this.onMediaAttached,this),e.on(k.MEDIA_DETACHED,this.onMediaDetached,this),e.on(k.BUFFER_CREATED,this.onBufferCreated,this)},t.unregisterListeners=function(){var e=this.hls;e.off(k.MEDIA_ATTACHED,this.onMediaAttached,this),e.off(k.MEDIA_DETACHED,this.onMediaDetached,this),e.off(k.BUFFER_CREATED,this.onBufferCreated,this)},t.destroy=function(){this.unregisterListeners(),this.onMediaDetached(),this.hls=this.config=this.audioBuffer=this.videoBuffer=null,this.onWaiting=this.onPlaying=this.media=null},t.onMediaAttached=function(e,t){this.media=t.media,this.media.addEventListener("waiting",this.onWaiting),this.media.addEventListener("playing",this.onPlaying)},t.onMediaDetached=function(){this.media&&(this.media.removeEventListener("waiting",this.onWaiting),this.media.removeEventListener("playing",this.onPlaying),this.media=null)},t.onBufferCreated=function(e,t){var i,r;this.audioBuffer=null==(i=t.tracks.audio)?void 0:i.buffer,this.videoBuffer=null==(r=t.tracks.video)?void 0:r.buffer},t.createData=function(){var e;return{v:1,sf:bo.HLS,sid:this.sid,cid:this.cid,pr:null==(e=this.media)?void 0:e.playbackRate,mtp:this.hls.bandwidthEstimate/1e3}},t.apply=function(e,t){void 0===t&&(t={}),c(t,this.createData());var i=t.ot===vo.INIT||t.ot===vo.VIDEO||t.ot===vo.MUXED;this.starved&&i&&(t.bs=!0,t.su=!0,this.starved=!1),null==t.su&&(t.su=this.buffering);var r=this.includeKeys;r&&(t=Object.keys(t).reduce((function(e,i){return r.includes(i)&&(e[i]=t[i]),e}),{}));var s={baseUrl:e.url};this.useHeaders?(e.headers||(e.headers={}),hl(e.headers,t,s)):e.url=fl(e.url,t,s)},t.getNextFrag=function(e){var t,i=null==(t=this.hls.levels[e.level])?void 0:t.details;if(i){var r=e.sn-i.startSN;return i.fragments[r+1]}},t.getObjectType=function(e){var t=e.type;return"subtitle"===t?vo.TIMED_TEXT:"initSegment"===e.sn?vo.INIT:"audio"===t?vo.AUDIO:"main"===t?this.hls.audioTracks.length?vo.VIDEO:vo.MUXED:void 0},t.getTopBandwidth=function(e){var t,i=0,r=this.hls;if(e===vo.AUDIO)t=r.audioTracks;else{var s=r.maxAutoLevel,a=s>-1?s+1:r.levels.length;t=r.levels.slice(0,a)}for(var n,o=v(t);!(n=o()).done;){var l=n.value;l.bitrate>i&&(i=l.bitrate)}return i>0?i:NaN},t.getBufferLength=function(e){var t=this.media,i=e===vo.AUDIO?this.audioBuffer:this.videoBuffer;return i&&t?1e3*Fr.bufferInfo(i,t.currentTime,this.config.maxBufferHole).len:NaN},t.createPlaylistLoader=function(){var e=this.config.pLoader,t=this.applyPlaylistData,i=e||this.config.loader;return function(){function e(e){this.loader=void 0,this.loader=new i(e)}var r=e.prototype;return r.destroy=function(){this.loader.destroy()},r.abort=function(){this.loader.abort()},r.load=function(e,i,r){t(e),this.loader.load(e,i,r)},d(e,[{key:"stats",get:function(){return this.loader.stats}},{key:"context",get:function(){return this.loader.context}}])}()},t.createFragmentLoader=function(){var e=this.config.fLoader,t=this.applyFragmentData,i=e||this.config.loader;return function(){function e(e){this.loader=void 0,this.loader=new i(e)}var r=e.prototype;return r.destroy=function(){this.loader.destroy()},r.abort=function(){this.loader.abort()},r.load=function(e,i,r){t(e),this.loader.load(e,i,r)},d(e,[{key:"stats",get:function(){return this.loader.stats}},{key:"context",get:function(){return this.loader.context}}])}()},e}(),yl=3e5,gl=function(e){function t(t){var i;return(i=e.call(this,"content-steering",t.logger)||this).hls=void 0,i.loader=null,i.uri=null,i.pathwayId=".",i.pathwayPriority=null,i.timeToLoad=300,i.reloadTimer=-1,i.updated=0,i.started=!1,i.enabled=!0,i.levels=null,i.audioTracks=null,i.subtitleTracks=null,i.penalizedPathways={},i.hls=t,i.registerListeners(),i}u(t,e);var i=t.prototype;return i.registerListeners=function(){var e=this.hls;e.on(k.MANIFEST_LOADING,this.onManifestLoading,this),e.on(k.MANIFEST_LOADED,this.onManifestLoaded,this),e.on(k.MANIFEST_PARSED,this.onManifestParsed,this),e.on(k.ERROR,this.onError,this)},i.unregisterListeners=function(){var e=this.hls;e&&(e.off(k.MANIFEST_LOADING,this.onManifestLoading,this),e.off(k.MANIFEST_LOADED,this.onManifestLoaded,this),e.off(k.MANIFEST_PARSED,this.onManifestParsed,this),e.off(k.ERROR,this.onError,this))},i.startLoad=function(){if(this.started=!0,this.clearTimeout(),this.enabled&&this.uri){if(this.updated){var e=1e3*this.timeToLoad-(performance.now()-this.updated);if(e>0)return void this.scheduleRefresh(this.uri,e)}this.loadSteeringManifest(this.uri)}},i.stopLoad=function(){this.started=!1,this.loader&&(this.loader.destroy(),this.loader=null),this.clearTimeout()},i.clearTimeout=function(){-1!==this.reloadTimer&&(self.clearTimeout(this.reloadTimer),this.reloadTimer=-1)},i.destroy=function(){this.unregisterListeners(),this.stopLoad(),this.hls=null,this.levels=this.audioTracks=this.subtitleTracks=null},i.removeLevel=function(e){var t=this.levels;t&&(this.levels=t.filter((function(t){return t!==e})))},i.onManifestLoading=function(){this.stopLoad(),this.enabled=!0,this.timeToLoad=300,this.updated=0,this.uri=null,this.pathwayId=".",this.levels=this.audioTracks=this.subtitleTracks=null},i.onManifestLoaded=function(e,t){var i=t.contentSteering;null!==i&&(this.pathwayId=i.pathwayId,this.uri=i.uri,this.started&&this.startLoad())},i.onManifestParsed=function(e,t){this.audioTracks=t.audioTracks,this.subtitleTracks=t.subtitleTracks},i.onError=function(e,t){var i=t.errorAction;if((null==i?void 0:i.action)===or.SendAlternateToPenaltyBox&&i.flags===lr.MoveAllAlternatesMatchingHost){var r=this.levels,s=this.pathwayPriority,a=this.pathwayId;if(t.context){var n=t.context,o=n.groupId,l=n.pathwayId,d=n.type;o&&r?a=this.getPathwayForGroupId(o,d,a):l&&(a=l)}a in this.penalizedPathways||(this.penalizedPathways[a]=performance.now()),!s&&r&&(s=r.reduce((function(e,t){return-1===e.indexOf(t.pathwayId)&&e.push(t.pathwayId),e}),[])),s&&s.length>1&&(this.updatePathwayPriority(s),i.resolved=this.pathwayId!==a),i.resolved||this.warn("Could not resolve "+t.details+' ("'+t.error.message+'") with content-steering for Pathway: '+a+" levels: "+(r?r.length:r)+" priorities: "+JSON.stringify(s)+" penalized: "+JSON.stringify(this.penalizedPathways))}},i.filterParsedLevels=function(e){this.levels=e;var t=this.getLevelsForPathway(this.pathwayId);if(0===t.length){var i=e[0].pathwayId;this.log("No levels found in Pathway "+this.pathwayId+'. Setting initial Pathway to "'+i+'"'),t=this.getLevelsForPathway(i),this.pathwayId=i}return t.length!==e.length?(this.log("Found "+t.length+"/"+e.length+' levels in Pathway "'+this.pathwayId+'"'),t):e},i.getLevelsForPathway=function(e){return null===this.levels?[]:this.levels.filter((function(t){return e===t.pathwayId}))},i.updatePathwayPriority=function(e){var t;this.pathwayPriority=e;var i=this.penalizedPathways,r=performance.now();Object.keys(i).forEach((function(e){r-i[e]>yl&&delete i[e]}));for(var s=0;s0){this.log('Setting Pathway to "'+a+'"'),this.pathwayId=a,qi(t),this.hls.trigger(k.LEVELS_UPDATED,{levels:t});var l=this.hls.levels[n];o&&l&&this.levels&&(l.attrs["STABLE-VARIANT-ID"]!==o.attrs["STABLE-VARIANT-ID"]&&l.bitrate!==o.bitrate&&this.log("Unstable Pathways change from bitrate "+o.bitrate+" to "+l.bitrate),this.hls.nextLoadLevel=n);break}}}},i.getPathwayForGroupId=function(e,t,i){for(var r=this.getLevelsForPathway(i).concat(this.levels||[]),s=0;s=2&&(0===i.loading.first&&(i.loading.first=Math.max(self.performance.now(),i.loading.start),s.timeout!==s.loadPolicy.maxLoadTimeMs&&(self.clearTimeout(this.requestTimeout),s.timeout=s.loadPolicy.maxLoadTimeMs,this.requestTimeout=self.setTimeout(this.loadtimeout.bind(this),s.loadPolicy.maxLoadTimeMs-(i.loading.first-i.loading.start)))),4===r)){self.clearTimeout(this.requestTimeout),t.onreadystatechange=null,t.onprogress=null;var a=t.status,n="text"!==t.responseType;if(a>=200&&a<300&&(n&&t.response||null!==t.responseText)){i.loading.end=Math.max(self.performance.now(),i.loading.first);var o=n?t.response:t.responseText,l="arraybuffer"===t.responseType?o.byteLength:o.length;if(i.loaded=i.total=l,i.bwEstimate=8e3*i.total/(i.loading.end-i.loading.first),!this.callbacks)return;var d=this.callbacks.onProgress;if(d&&d(i,e,o,t),!this.callbacks)return;var h={url:t.responseURL,data:o,code:a};this.callbacks.onSuccess(h,i,e,t)}else{var c=s.loadPolicy.errorRetry;Zi(c,i.retry,!1,{url:e.url,data:void 0,code:a})?this.retry(c):(G.error(a+" while loading "+e.url),this.callbacks.onError({code:a,text:t.statusText},e,t,i))}}}},t.loadtimeout=function(){var e,t=null==(e=this.config)?void 0:e.loadPolicy.timeoutRetry;if(Zi(t,this.stats.retry,!0))this.retry(t);else{var i;G.warn("timeout while loading "+(null==(i=this.context)?void 0:i.url));var r=this.callbacks;r&&(this.abortInternal(),r.onTimeout(this.stats,this.context,this.loader))}},t.retry=function(e){var t=this.context,i=this.stats;this.retryDelay=Xi(e,i.retry),i.retry++,G.warn((status?"HTTP Status "+status:"Timeout")+" while loading "+(null==t?void 0:t.url)+", retrying "+i.retry+"/"+e.maxNumRetry+" in "+this.retryDelay+"ms"),this.abortInternal(),this.loader=null,self.clearTimeout(this.retryTimeout),this.retryTimeout=self.setTimeout(this.loadInternal.bind(this),this.retryDelay)},t.loadprogress=function(e){var t=this.stats;t.loaded=e.loaded,e.lengthComputable&&(t.total=e.total)},t.getCacheAge=function(){var e=null;if(this.loader&&bl.test(this.loader.getAllResponseHeaders())){var t=this.loader.getResponseHeader("age");e=t?parseFloat(t):null}return e},t.getResponseHeader=function(e){return this.loader&&new RegExp("^"+e+":\\s*[\\d.]+\\s*$","im").test(this.loader.getAllResponseHeaders())?this.loader.getResponseHeader(e):null},e}();function El(){if(self.fetch&&self.AbortController&&self.ReadableStream&&self.Request)try{return new self.ReadableStream({}),!0}catch(e){}return!1}var Sl=/(\d+)-(\d+)\/(\d+)/,wl=function(){function e(e){this.fetchSetup=void 0,this.requestTimeout=void 0,this.request=null,this.response=null,this.controller=void 0,this.context=null,this.config=null,this.callbacks=null,this.stats=void 0,this.loader=null,this.fetchSetup=e.fetchSetup||Rl,this.controller=new self.AbortController,this.stats=new W}var t=e.prototype;return t.destroy=function(){this.loader=this.callbacks=this.context=this.config=this.request=null,this.abortInternal(),this.response=null,this.fetchSetup=this.controller=this.stats=null},t.abortInternal=function(){this.controller&&!this.stats.loading.end&&(this.stats.aborted=!0,this.controller.abort())},t.abort=function(){var e;this.abortInternal(),null!=(e=this.callbacks)&&e.onAbort&&this.callbacks.onAbort(this.stats,this.context,this.response)},t.load=function(e,t,i){var r=this,s=this.stats;if(s.loading.start)throw new Error("Loader can only be used once.");s.loading.start=self.performance.now();var a=Tl(e,this.controller.signal),n=i.onProgress,o="arraybuffer"===e.responseType,l=o?"byteLength":"length",d=t.loadPolicy,h=d.maxTimeToFirstByteMs,c=d.maxLoadTimeMs;this.context=e,this.config=t,this.callbacks=i,this.request=this.fetchSetup(e,a),self.clearTimeout(this.requestTimeout),t.timeout=h&&S(h)?h:c,this.requestTimeout=self.setTimeout((function(){r.abortInternal(),i.onTimeout(s,e,r.response)}),t.timeout),self.fetch(this.request).then((function(a){r.response=r.loader=a;var l=Math.max(self.performance.now(),s.loading.start);if(self.clearTimeout(r.requestTimeout),t.timeout=c,r.requestTimeout=self.setTimeout((function(){r.abortInternal(),i.onTimeout(s,e,r.response)}),c-(l-s.loading.start)),!a.ok){var d=a.status,h=a.statusText;throw new Dl(h||"fetch, bad network response",d,a)}return s.loading.first=l,s.total=Cl(a.headers)||s.total,n&&S(t.highWaterMark)?r.loadProgressively(a,s,e,t.highWaterMark,n):o?a.arrayBuffer():"json"===e.responseType?a.json():a.text()})).then((function(a){var o=r.response;if(!o)throw new Error("loader destroyed");self.clearTimeout(r.requestTimeout),s.loading.end=Math.max(self.performance.now(),s.loading.first);var d=a[l];d&&(s.loaded=s.total=d);var h={url:o.url,data:a,code:o.status};n&&!S(t.highWaterMark)&&n(s,e,a,o),i.onSuccess(h,s,e,o)})).catch((function(t){if(self.clearTimeout(r.requestTimeout),!s.aborted){var a=t&&t.code||0,n=t?t.message:null;i.onError({code:a,text:n},e,t?t.details:null,s)}}))},t.getCacheAge=function(){var e=null;if(this.response){var t=this.response.headers.get("age");e=t?parseFloat(t):null}return e},t.getResponseHeader=function(e){return this.response?this.response.headers.get(e):null},t.loadProgressively=function(e,t,i,r,s){void 0===r&&(r=0);var a=new hs,n=e.body.getReader();return function o(){return n.read().then((function(n){if(n.done)return a.dataLength&&s(t,i,a.flush(),e),Promise.resolve(new ArrayBuffer(0));var l=n.value,d=l.length;return t.loaded+=d,d=r&&s(t,i,a.flush(),e)):s(t,i,l,e),o()})).catch((function(){return Promise.reject()}))}()},e}();function Tl(e,t){var i={method:"GET",mode:"cors",credentials:"same-origin",signal:t,headers:new self.Headers(c({},e.headers))};return e.rangeEnd&&i.headers.set("Range","bytes="+e.rangeStart+"-"+String(e.rangeEnd-1)),i}function kl(e){var t=Sl.exec(e);if(t)return parseInt(t[2])-parseInt(t[1])+1}function Cl(e){var t=e.get("Content-Range");if(t){var i=kl(t);if(S(i))return i}var r=e.get("Content-Length");if(r)return parseInt(r)}function Rl(e,t){return new self.Request(e.url,t)}var Dl=function(e){function t(t,i,r){var s;return(s=e.call(this,t)||this).code=void 0,s.details=void 0,s.code=i,s.details=r,s}return u(t,e),t}(y(Error)),xl=/\s/,Ll={newCue:function(e,t,i,r){for(var s,a,n,o,l,d=[],h=self.VTTCue||self.TextTrackCue,c=0;c=16?o--:o++;var f=Gn(l.trim()),m=$n(t,i,f);null!=e&&null!=(u=e.cues)&&u.getCueById(m)||((a=new h(t,i,f)).id=m,a.line=c+1,a.align="left",a.position=10+Math.min(80,10*Math.floor(8*o/32)),d.push(a))}return e&&d.length&&(d.sort((function(e,t){return"auto"===e.line||"auto"===t.line?0:e.line>8&&t.line>8?t.line-e.line:e.line-t.line})),d.forEach((function(t){return Wt(e,t)}))),d}},Il=a(a({autoStartLoad:!0,startPosition:-1,defaultAudioCodec:void 0,debug:!1,capLevelOnFPSDrop:!1,capLevelToPlayerSize:!1,ignoreDevicePixelRatio:!1,preferManagedMediaSource:!0,initialLiveManifestSize:1,maxBufferLength:30,backBufferLength:1/0,frontBufferFlushThreshold:1/0,maxBufferSize:6e7,maxBufferHole:.1,highBufferWatchdogPeriod:2,nudgeOffset:.1,nudgeMaxRetry:3,maxFragLookUpTolerance:.25,liveSyncDurationCount:3,liveMaxLatencyDurationCount:1/0,liveSyncDuration:void 0,liveMaxLatencyDuration:void 0,maxLiveSyncPlaybackRate:1,liveDurationInfinity:!1,liveBackBufferLength:null,maxMaxBufferLength:600,enableWorker:!0,workerPath:null,enableSoftwareAES:!0,startLevel:void 0,startFragPrefetch:!1,fpsDroppedMonitoringPeriod:5e3,fpsDroppedMonitoringThreshold:.2,appendErrorMaxRetry:3,loader:_l,fLoader:void 0,pLoader:void 0,xhrSetup:void 0,licenseXhrSetup:void 0,licenseResponseCallback:void 0,abrController:xr,bufferController:ln,capLevelController:yo,errorController:dr,fpsController:go,stretchShortVideoTrack:!1,maxAudioFramesDrift:1,forceKeyFrameOnDiscontinuity:!0,abrEwmaFastLive:3,abrEwmaSlowLive:9,abrEwmaFastVoD:3,abrEwmaSlowVoD:9,abrEwmaDefaultEstimate:5e5,abrEwmaDefaultEstimateMax:5e6,abrBandWidthFactor:.95,abrBandWidthUpFactor:.7,abrMaxWithRealBitrate:!1,maxStarvationDelay:4,maxLoadingDelay:4,minAutoBitrate:0,emeEnabled:!1,widevineLicenseUrl:void 0,drmSystems:{},drmSystemOptions:{},requestMediaKeySystemAccessFunc:fe,testBandwidth:!0,progressive:!1,lowLatencyMode:!0,cmcd:void 0,enableDateRangeMetadataCues:!0,enableEmsgMetadataCues:!0,enableID3MetadataCues:!0,useMediaCapabilities:!0,certLoadPolicy:{default:{maxTimeToFirstByteMs:8e3,maxLoadTimeMs:2e4,timeoutRetry:null,errorRetry:null}},keyLoadPolicy:{default:{maxTimeToFirstByteMs:8e3,maxLoadTimeMs:2e4,timeoutRetry:{maxNumRetry:1,retryDelayMs:1e3,maxRetryDelayMs:2e4,backoff:"linear"},errorRetry:{maxNumRetry:8,retryDelayMs:1e3,maxRetryDelayMs:2e4,backoff:"linear"}}},manifestLoadPolicy:{default:{maxTimeToFirstByteMs:1/0,maxLoadTimeMs:2e4,timeoutRetry:{maxNumRetry:2,retryDelayMs:0,maxRetryDelayMs:0},errorRetry:{maxNumRetry:1,retryDelayMs:1e3,maxRetryDelayMs:8e3}}},playlistLoadPolicy:{default:{maxTimeToFirstByteMs:1e4,maxLoadTimeMs:2e4,timeoutRetry:{maxNumRetry:2,retryDelayMs:0,maxRetryDelayMs:0},errorRetry:{maxNumRetry:2,retryDelayMs:1e3,maxRetryDelayMs:8e3}}},fragLoadPolicy:{default:{maxTimeToFirstByteMs:1e4,maxLoadTimeMs:12e4,timeoutRetry:{maxNumRetry:4,retryDelayMs:0,maxRetryDelayMs:0},errorRetry:{maxNumRetry:6,retryDelayMs:1e3,maxRetryDelayMs:8e3}}},steeringManifestLoadPolicy:{default:{maxTimeToFirstByteMs:1e4,maxLoadTimeMs:2e4,timeoutRetry:{maxNumRetry:2,retryDelayMs:0,maxRetryDelayMs:0},errorRetry:{maxNumRetry:1,retryDelayMs:1e3,maxRetryDelayMs:8e3}}},manifestLoadingTimeOut:1e4,manifestLoadingMaxRetry:1,manifestLoadingRetryDelay:1e3,manifestLoadingMaxRetryTimeout:64e3,levelLoadingTimeOut:1e4,levelLoadingMaxRetry:4,levelLoadingRetryDelay:1e3,levelLoadingMaxRetryTimeout:64e3,fragLoadingTimeOut:2e4,fragLoadingMaxRetry:6,fragLoadingRetryDelay:1e3,fragLoadingMaxRetryTimeout:64e3},Pl()),{},{subtitleStreamController:rn,subtitleTrackController:an,timelineController:co,audioStreamController:Za,audioTrackController:en,emeController:Ao,cmcdController:ml,contentSteeringController:gl});function Pl(){return{cueHandler:Ll,enableWebVTT:!0,enableIMSC1:!0,enableCEA708Captions:!0,captionsTextTrack1Label:"English",captionsTextTrack1LanguageCode:"en",captionsTextTrack2Label:"Spanish",captionsTextTrack2LanguageCode:"es",captionsTextTrack3Label:"Unknown CC",captionsTextTrack3LanguageCode:"",captionsTextTrack4Label:"Unknown CC",captionsTextTrack4LanguageCode:"",renderTextTracksNatively:!0}}function Bl(e,t,i){if((t.liveSyncDurationCount||t.liveMaxLatencyDurationCount)&&(t.liveSyncDuration||t.liveMaxLatencyDuration))throw new Error("Illegal hls.js config: don't mix up liveSyncDurationCount/liveMaxLatencyDurationCount and liveSyncDuration/liveMaxLatencyDuration");if(void 0!==t.liveMaxLatencyDurationCount&&(void 0===t.liveSyncDurationCount||t.liveMaxLatencyDurationCount<=t.liveSyncDurationCount))throw new Error('Illegal hls.js config: "liveMaxLatencyDurationCount" must be greater than "liveSyncDurationCount"');if(void 0!==t.liveMaxLatencyDuration&&(void 0===t.liveSyncDuration||t.liveMaxLatencyDuration<=t.liveSyncDuration))throw new Error('Illegal hls.js config: "liveMaxLatencyDuration" must be greater than "liveSyncDuration"');var r=Ml(e),s=["TimeOut","MaxRetry","RetryDelay","MaxRetryTimeout"];return["manifest","level","frag"].forEach((function(e){var a=("level"===e?"playlist":e)+"LoadPolicy",n=void 0===t[a],o=[];s.forEach((function(i){var s=e+"Loading"+i,l=t[s];if(void 0!==l&&n){o.push(s);var d=r[a].default;switch(t[a]={default:d},i){case"TimeOut":d.maxLoadTimeMs=l,d.maxTimeToFirstByteMs=l;break;case"MaxRetry":d.errorRetry.maxNumRetry=l,d.timeoutRetry.maxNumRetry=l;break;case"RetryDelay":d.errorRetry.retryDelayMs=l,d.timeoutRetry.retryDelayMs=l;break;case"MaxRetryTimeout":d.errorRetry.maxRetryDelayMs=l,d.timeoutRetry.maxRetryDelayMs=l}}})),o.length&&i.warn('hls.js config: "'+o.join('", "')+'" setting(s) are deprecated, use "'+a+'": '+JSON.stringify(t[a]))})),a(a({},r),t)}function Ml(e){return e&&"object"==typeof e?Array.isArray(e)?e.map(Ml):Object.keys(e).reduce((function(t,i){return t[i]=Ml(e[i]),t}),{}):e}function Ul(e,t){var i=e.loader;i!==wl&&i!==_l?(t.log("[config]: Custom loader detected, cannot enable progressive streaming"),e.progressive=!1):El()&&(e.loader=wl,e.progressive=!0,e.enableSoftwareAES=!0,t.log("[config]: Progressive streaming enabled, using FetchLoader"))}var Fl=function(e){function t(t,i){var r;return(r=e.call(this,t,"level-controller")||this)._levels=[],r._firstLevel=-1,r._maxAutoLevel=-1,r._startLevel=void 0,r.currentLevel=null,r.currentLevelIndex=-1,r.manualLevelIndex=-1,r.steering=void 0,r.onParsedComplete=void 0,r.steering=i,r._registerListeners(),r}u(t,e);var i=t.prototype;return i._registerListeners=function(){var e=this.hls;e.on(k.MANIFEST_LOADING,this.onManifestLoading,this),e.on(k.MANIFEST_LOADED,this.onManifestLoaded,this),e.on(k.LEVEL_LOADED,this.onLevelLoaded,this),e.on(k.LEVELS_UPDATED,this.onLevelsUpdated,this),e.on(k.FRAG_BUFFERED,this.onFragBuffered,this),e.on(k.ERROR,this.onError,this)},i._unregisterListeners=function(){var e=this.hls;e.off(k.MANIFEST_LOADING,this.onManifestLoading,this),e.off(k.MANIFEST_LOADED,this.onManifestLoaded,this),e.off(k.LEVEL_LOADED,this.onLevelLoaded,this),e.off(k.LEVELS_UPDATED,this.onLevelsUpdated,this),e.off(k.FRAG_BUFFERED,this.onFragBuffered,this),e.off(k.ERROR,this.onError,this)},i.destroy=function(){this._unregisterListeners(),this.steering=null,this.resetLevels(),e.prototype.destroy.call(this)},i.stopLoad=function(){this._levels.forEach((function(e){e.loadError=0,e.fragmentError=0})),e.prototype.stopLoad.call(this)},i.resetLevels=function(){this._startLevel=void 0,this.manualLevelIndex=-1,this.currentLevelIndex=-1,this.currentLevel=null,this._levels=[],this._maxAutoLevel=-1},i.onManifestLoading=function(e,t){this.resetLevels()},i.onManifestLoaded=function(e,t){var i=this.hls.config.preferManagedMediaSource,r=[],s={},a={},n=!1,o=!1,l=!1;t.levels.forEach((function(e){var t,d=e.attrs,h=e.audioCodec,c=e.videoCodec;h&&(e.audioCodec=h=bt(h,i)||void 0),0===(null==(t=c)?void 0:t.indexOf("avc1"))&&(c=e.videoCodec=Et(c));var u=e.width,p=e.height,f=e.unknownCodecs;if(n||(n=!(!u||!p)),o||(o=!!c),l||(l=!!h),!(null!=f&&f.length||h&&!ut(h,"audio",i)||c&&!ut(c,"video",i))){var m=d.CODECS,y=d["FRAME-RATE"],g=d["HDCP-LEVEL"],A=d["PATHWAY-ID"],v=d.RESOLUTION,b=d["VIDEO-RANGE"],_=(A||".")+"-"+e.bitrate+"-"+v+"-"+y+"-"+m+"-"+b+"-"+g;if(s[_])if(s[_].uri===e.url||e.attrs["PATHWAY-ID"])s[_].addGroupId("audio",d.AUDIO),s[_].addGroupId("text",d.SUBTITLES);else{var E=a[_]+=1;e.attrs["PATHWAY-ID"]=new Array(E+1).join(".");var S=new Bi(e);s[_]=S,r.push(S)}else{var w=new Bi(e);s[_]=w,a[_]=1,r.push(w)}}})),this.filterAndSortMediaOptions(r,t,n,o,l)},i.filterAndSortMediaOptions=function(e,t,i,r,s){var a=this,n=[],o=[],l=e;if((i||r)&&s&&(l=l.filter((function(e){var t=e.videoCodec,i=e.videoRange,r=e.width,s=e.height;return(!!t||!(!r||!s))&&xi(i)}))),0!==l.length){if(t.audioTracks){var d=this.hls.config.preferManagedMediaSource;Ol(n=t.audioTracks.filter((function(e){return!e.audioCodec||ut(e.audioCodec,"audio",d)})))}t.subtitles&&Ol(o=t.subtitles);var h=l.slice(0);l.sort((function(e,t){if(e.attrs["HDCP-LEVEL"]!==t.attrs["HDCP-LEVEL"])return(e.attrs["HDCP-LEVEL"]||"")>(t.attrs["HDCP-LEVEL"]||"")?1:-1;if(i&&e.height!==t.height)return e.height-t.height;if(e.frameRate!==t.frameRate)return e.frameRate-t.frameRate;if(e.videoRange!==t.videoRange)return Di.indexOf(e.videoRange)-Di.indexOf(t.videoRange);if(e.videoCodec!==t.videoCodec){var r=mt(e.videoCodec),s=mt(t.videoCodec);if(r!==s)return s-r}if(e.uri===t.uri&&e.codecSet!==t.codecSet){var a=yt(e.codecSet),n=yt(t.codecSet);if(a!==n)return n-a}return e.averageBitrate!==t.averageBitrate?e.averageBitrate-t.averageBitrate:0}));var c=h[0];if(this.steering&&(l=this.steering.filterParsedLevels(l)).length!==h.length)for(var u=0;uy&&y===Il.abrEwmaDefaultEstimate&&(this.hls.bandwidthEstimate=g)}break}var A=s&&!r,v={levels:l,audioTracks:n,subtitleTracks:o,sessionData:t.sessionData,sessionKeys:t.sessionKeys,firstLevel:this._firstLevel,stats:t.stats,audio:s,video:r,altAudio:!A&&n.some((function(e){return!!e.url}))};this.hls.trigger(k.MANIFEST_PARSED,v),(this.hls.config.autoStartLoad||this.hls.forceStartLoad)&&this.hls.startLoad(this.hls.config.startPosition)}else Promise.resolve().then((function(){if(a.hls){t.levels.length&&a.warn("One or more CODECS in variant not supported: "+JSON.stringify(t.levels[0].attrs));var e=new Error("no level with compatible codecs found in manifest");a.hls.trigger(k.ERROR,{type:C.MEDIA_ERROR,details:R.MANIFEST_INCOMPATIBLE_CODECS_ERROR,fatal:!0,url:t.url,error:e,reason:e.message})}}))},i.onError=function(e,t){!t.fatal&&t.context&&t.context.type===Ot.LEVEL&&t.context.level===this.level&&this.checkRetry(t)},i.onFragBuffered=function(e,t){var i=t.frag;if(void 0!==i&&i.type===Nt.MAIN){var r=i.elementaryStreams;if(!Object.keys(r).some((function(e){return!!r[e]})))return;var s=this._levels[i.level];null!=s&&s.loadError&&(this.log("Resetting level error count of "+s.loadError+" on frag buffered"),s.loadError=0)}},i.onLevelLoaded=function(e,t){var i,r,s=t.level,a=t.details,n=this._levels[s];if(!n)return this.warn("Invalid level index "+s),void(null!=(r=t.deliveryDirectives)&&r.skip&&(a.deltaUpdateFailed=!0));if(s===this.currentLevelIndex){0===n.fragmentError&&(n.loadError=0);var o=n.details;o===t.details&&o.advanced&&(o=void 0),this.playlistLoaded(s,t,o)}else null!=(i=t.deliveryDirectives)&&i.skip&&(a.deltaUpdateFailed=!0)},i.loadPlaylist=function(t){e.prototype.loadPlaylist.call(this);var i=this.currentLevelIndex,r=this.currentLevel;if(r&&this.shouldLoadPlaylist(r)){var s=r.uri;if(t)try{s=t.addDirectives(s)}catch(e){this.warn("Could not construct new URL with HLS Delivery Directives: "+e)}var a=r.attrs["PATHWAY-ID"];this.log("Loading level index "+i+(void 0!==(null==t?void 0:t.msn)?" at sn "+t.msn+" part "+t.part:"")+" with"+(a?" Pathway "+a:"")+" "+s),this.clearTimer(),this.hls.trigger(k.LEVEL_LOADING,{url:s,level:i,pathwayId:r.attrs["PATHWAY-ID"],id:0,deliveryDirectives:t||null})}},i.removeLevel=function(e){var t,i=this,r=this._levels.filter((function(t,r){return r!==e||(i.steering&&i.steering.removeLevel(t),t===i.currentLevel&&(i.currentLevel=null,i.currentLevelIndex=-1,t.details&&t.details.fragments.forEach((function(e){return e.level=-1}))),!1)}));qi(r),this._levels=r,this.currentLevelIndex>-1&&null!=(t=this.currentLevel)&&t.details&&(this.currentLevelIndex=this.currentLevel.details.fragments[0].level),this.hls.trigger(k.LEVELS_UPDATED,{levels:r})},i.onLevelsUpdated=function(e,t){var i=t.levels;this._levels=i},i.checkMaxAutoUpdated=function(){var e=this.hls,t=e.autoLevelCapping,i=e.maxAutoLevel,r=e.maxHdcpLevel;this._maxAutoLevel!==i&&(this._maxAutoLevel=i,this.hls.trigger(k.MAX_AUTO_LEVEL_UPDATED,{autoLevelCapping:t,levels:this.levels,maxAutoLevel:i,minAutoLevel:this.hls.minAutoLevel,maxHdcpLevel:r}))},d(t,[{key:"levels",get:function(){return 0===this._levels.length?null:this._levels}},{key:"level",get:function(){return this.currentLevelIndex},set:function(e){var t=this._levels;if(0!==t.length){if(e<0||e>=t.length){var i=new Error("invalid level idx"),r=e<0;if(this.hls.trigger(k.ERROR,{type:C.OTHER_ERROR,details:R.LEVEL_SWITCH_ERROR,level:e,fatal:r,error:i,reason:i.message}),r)return;e=Math.min(e,t.length-1)}var s=this.currentLevelIndex,a=this.currentLevel,n=a?a.attrs["PATHWAY-ID"]:void 0,o=t[e],l=o.attrs["PATHWAY-ID"];if(this.currentLevelIndex=e,this.currentLevel=o,s!==e||!o.details||!a||n!==l){this.log("Switching to level "+e+" ("+(o.height?o.height+"p ":"")+(o.videoRange?o.videoRange+" ":"")+(o.codecSet?o.codecSet+" ":"")+"@"+o.bitrate+")"+(l?" with Pathway "+l:"")+" from level "+s+(n?" with Pathway "+n:""));var d={level:e,attrs:o.attrs,details:o.details,bitrate:o.bitrate,averageBitrate:o.averageBitrate,maxBitrate:o.maxBitrate,realBitrate:o.realBitrate,width:o.width,height:o.height,codecSet:o.codecSet,audioCodec:o.audioCodec,videoCodec:o.videoCodec,audioGroups:o.audioGroups,subtitleGroups:o.subtitleGroups,loaded:o.loaded,loadError:o.loadError,fragmentError:o.fragmentError,name:o.name,id:o.id,uri:o.uri,url:o.url,urlId:0,audioGroupIds:o.audioGroupIds,textGroupIds:o.textGroupIds};this.hls.trigger(k.LEVEL_SWITCHING,d);var h=o.details;if(!h||h.live){var c=this.switchParams(o.uri,null==a?void 0:a.details,h);this.loadPlaylist(c)}}}}},{key:"manualLevel",get:function(){return this.manualLevelIndex},set:function(e){this.manualLevelIndex=e,void 0===this._startLevel&&(this._startLevel=e),-1!==e&&(this.level=e)}},{key:"firstLevel",get:function(){return this._firstLevel},set:function(e){this._firstLevel=e}},{key:"startLevel",get:function(){if(void 0===this._startLevel){var e=this.hls.config.startLevel;return void 0!==e?e:this.hls.firstAutoLevel}return this._startLevel},set:function(e){this._startLevel=e}},{key:"nextLoadLevel",get:function(){return-1!==this.manualLevelIndex?this.manualLevelIndex:this.hls.nextAutoLevel},set:function(e){this.level=e,-1===this.manualLevelIndex&&(this.hls.nextAutoLevel=e)}}])}(hr);function Ol(e){var t={};e.forEach((function(e){var i=e.groupId||"";e.id=t[i]=t[i]||0,t[i]++}))}var Nl=function(){function e(e){this.config=void 0,this.keyUriToKeyInfo={},this.emeController=null,this.config=e}var t=e.prototype;return t.abort=function(e){for(var t in this.keyUriToKeyInfo){var i=this.keyUriToKeyInfo[t].loader;if(i){var r;if(e&&e!==(null==(r=i.context)?void 0:r.frag.type))return;i.abort()}}},t.detach=function(){for(var e in this.keyUriToKeyInfo){var t=this.keyUriToKeyInfo[e];(t.mediaKeySessionContext||t.decryptdata.isCommonEncryption)&&delete this.keyUriToKeyInfo[e]}},t.destroy=function(){for(var e in this.detach(),this.keyUriToKeyInfo){var t=this.keyUriToKeyInfo[e].loader;t&&t.destroy()}this.keyUriToKeyInfo={}},t.createKeyLoadError=function(e,t,i,r,s){return void 0===t&&(t=R.KEY_LOAD_ERROR),new Zr({type:C.NETWORK_ERROR,details:t,fatal:!1,frag:e,response:s,error:i,networkDetails:r})},t.loadClear=function(e,t){var i=this;if(this.emeController&&this.config.emeEnabled)for(var r=e.sn,s=e.cc,a=function(){var e=t[n];if(s<=e.cc&&("initSegment"===r||"initSegment"===e.sn||rjl,f=!u||t&&t.start<=o||u-o>jl&&!this.fragmentTracker.getPartialFragment(o);if(p||f)return;this.moved=!1}if(!this.moved&&null!==this.stalled){if(!(c.len>0||u))return;var m=Math.max(u,c.start||0)-o,y=null!=i&&i.live?2*i.targetduration:jl,g=this.fragmentTracker.getPartialFragment(o);if(m>0&&(m<=y||g))return void(a.paused||this._trySkipBufferHole(g))}var A=self.performance.now();if(null!==n){var v=A-n;if(!l&&v>=Wl){if(r===ls.ENDED&&(null==i||!i.live)&&Math.abs(o-((null==i?void 0:i.edge)||0))<1){if(v<1e3||this.ended)return;return this.ended=o,void this.hls.trigger(k.MEDIA_ENDED,{stalled:!0})}if(this._reportStall(c),!this.media)return}var b=Fr.bufferInfo(a,o,s.maxBufferHole);this._tryFixBufferStall(b,v)}else this.stalled=A}else if(this.ended=0,this.moved=!0,l||(this.nudgeRetry=0),null!==n){if(this.stallReported){var _=self.performance.now()-n;this.warn("playback not stuck anymore @"+o+", after "+Math.round(_)+"ms"),this.stallReported=!1}this.stalled=null}}},i._tryFixBufferStall=function(e,t){var i=this.config,r=this.fragmentTracker,s=this.media;if(null!==s){var a=s.currentTime,n=r.getPartialFragment(a);if(n&&(this._trySkipBufferHole(n)||!this.media))return;(e.len>i.maxBufferHole||e.nextStart&&e.nextStart-a1e3*i.highBufferWatchdogPeriod&&(this.warn("Trying to nudge playhead over buffer-hole"),this.stalled=null,this._tryNudgeBuffer())}},i._reportStall=function(e){var t=this.hls,i=this.media;if(!this.stallReported&&i){this.stallReported=!0;var r=new Error("Playback stalling at @"+i.currentTime+" due to low buffer ("+JSON.stringify(e)+")");this.warn(r.message),t.trigger(k.ERROR,{type:C.MEDIA_ERROR,details:R.BUFFER_STALLED_ERROR,fatal:!1,error:r,buffer:e.len})}},i._trySkipBufferHole=function(e){var t=this.config,i=this.hls,r=this.media;if(null===r)return 0;var s=r.currentTime,a=Fr.bufferInfo(r,s,0),n=s0&&a.len<1&&r.readyState<3,d=n-s;if(d>0&&(o||l)){if(d>t.maxBufferHole){var h=this.fragmentTracker,c=!1;if(0===s){var u=h.getAppendedFrag(0,Nt.MAIN);u&&n1?(r=0,this.bitrateTest=!0):r=i.firstAutoLevel),i.nextLoadLevel=r,this.level=i.loadLevel,this.loadedmetadata=!1}t>0&&-1===e&&(this.log("Override startPosition with lastCurrentTime @"+t.toFixed(3)),e=t),this.state=ls.IDLE,this.nextLoadPosition=this.startPosition=this.lastCurrentTime=e,this.tick()}else this._forceStartLoad=!0,this.state=ls.STOPPED},i.stopLoad=function(){this._forceStartLoad=!1,e.prototype.stopLoad.call(this)},i.doTick=function(){switch(this.state){case ls.WAITING_LEVEL:var e=this.levels,t=this.level,i=null==e?void 0:e[t],r=null==i?void 0:i.details;if(r&&(!r.live||this.levelLastLoaded===i)){if(this.waitForCdnTuneIn(r))break;this.state=ls.IDLE;break}if(this.hls.nextLoadLevel!==this.level){this.state=ls.IDLE;break}break;case ls.FRAG_LOADING_WAITING_RETRY:var s,a=self.performance.now(),n=this.retryDate;if(!n||a>=n||null!=(s=this.media)&&s.seeking){var o=this.levels,l=this.level,d=null==o?void 0:o[l];this.resetStartWhenNotLoaded(d||null),this.state=ls.IDLE}}this.state===ls.IDLE&&this.doTickIdle(),this.onTickEnd()},i.onTickEnd=function(){e.prototype.onTickEnd.call(this),this.checkBuffer(),this.checkFragmentChanged()},i.doTickIdle=function(){if(this.buffering){var e=this.hls,t=this.levelLastLoaded,i=this.levels,r=this.media;if(null!==t&&(r||!this.startFragRequested&&e.config.startFragPrefetch)&&(!this.altAudio||!this.audioOnly)){var s=e.nextLoadLevel;if(null!=i&&i[s]){var a=i[s],n=this.getMainFwdBufferInfo();if(null!==n){var o=this.getLevelDetails();if(o&&this._streamEnded(n,o)){var l={};return this.altAudio&&(l.type="video"),this.hls.trigger(k.BUFFER_EOS,l),void(this.state=ls.ENDED)}e.loadLevel!==s&&-1===e.manualLevel&&this.log("Adapting to level "+s+" from level "+this.level),this.level=e.nextLoadLevel=s;var d=a.details;if(!d||this.state===ls.WAITING_LEVEL||d.live&&this.levelLastLoaded!==a)return this.level=s,void(this.state=ls.WAITING_LEVEL);var h=n.len,c=this.getMaxBufferLength(a.maxBitrate);if(!(h>=c)){this.backtrackFragment&&this.backtrackFragment.start>n.end&&(this.backtrackFragment=null);var u=this.backtrackFragment?this.backtrackFragment.start:n.end,p=this.getNextFragment(u,d);if(this.couldBacktrack&&!this.fragPrevious&&p&&"initSegment"!==p.sn&&this.fragmentTracker.getState(p)!==Ir.OK){var f,m=(null!=(f=this.backtrackFragment)?f:p).sn-d.startSN,y=d.fragments[m-1];y&&p.cc===y.cc&&(p=y,this.fragmentTracker.removeFragment(y))}else this.backtrackFragment&&n.len&&(this.backtrackFragment=null);if(p&&this.isLoopLoading(p,u)){if(!p.gap){var g=this.audioOnly&&!this.altAudio?j.AUDIO:j.VIDEO,A=(g===j.VIDEO?this.videoBuffer:this.mediaBuffer)||this.media;A&&this.afterBufferFlushed(A,g,Nt.MAIN)}p=this.getNextFragmentLoopLoading(p,d,n,Nt.MAIN,c)}p&&(!p.initSegment||p.initSegment.data||this.bitrateTest||(p=p.initSegment),this.loadFragment(p,a,u))}}}}}},i.loadFragment=function(t,i,r){var s=this.fragmentTracker.getState(t);this.fragCurrent=t,s===Ir.NOT_LOADED||s===Ir.PARTIAL?"initSegment"===t.sn?this._loadInitSegment(t,i):this.bitrateTest?(this.log("Fragment "+t.sn+" of level "+t.level+" is being downloaded to test bitrate and will not be buffered"),this._loadBitrateTestFrag(t,i)):(this.startFragRequested=!0,e.prototype.loadFragment.call(this,t,i,r)):this.clearTrackerIfNeeded(t)},i.getBufferedFrag=function(e){return this.fragmentTracker.getBufferedFrag(e,Nt.MAIN)},i.followingBufferedFrag=function(e){return e?this.getBufferedFrag(e.end+.5):null},i.immediateLevelSwitch=function(){this.abortCurrentFrag(),this.flushMainBuffer(0,Number.POSITIVE_INFINITY)},i.nextLevelSwitch=function(){var e=this.levels,t=this.media;if(null!=t&&t.readyState){var i,r=this.getAppendedFrag(t.currentTime);r&&r.start>1&&this.flushMainBuffer(0,r.start-1);var s=this.getLevelDetails();if(null!=s&&s.live){var a=this.getMainFwdBufferInfo();if(!a||a.len<2*s.targetduration)return}if(!t.paused&&e){var n=e[this.hls.nextLoadLevel],o=this.fragLastKbps;i=o&&this.fragCurrent?this.fragCurrent.duration*n.maxBitrate/(1e3*o)+1:0}else i=0;var l=this.getBufferedFrag(t.currentTime+i);if(l){var d=this.followingBufferedFrag(l);if(d){this.abortCurrentFrag();var h=d.maxStartPTS?d.maxStartPTS:d.start,c=d.duration,u=Math.max(l.end,h+Math.min(Math.max(c-this.config.maxFragLookUpTolerance,c*(this.couldBacktrack?.5:.125)),c*(this.couldBacktrack?.75:.25)));this.flushMainBuffer(u,Number.POSITIVE_INFINITY)}}}},i.abortCurrentFrag=function(){var e=this.fragCurrent;switch(this.fragCurrent=null,this.backtrackFragment=null,e&&(e.abortRequests(),this.fragmentTracker.removeFragment(e)),this.state){case ls.KEY_LOADING:case ls.FRAG_LOADING:case ls.FRAG_LOADING_WAITING_RETRY:case ls.PARSING:case ls.PARSED:this.state=ls.IDLE}this.nextLoadPosition=this.getLoadPosition()},i.flushMainBuffer=function(t,i){e.prototype.flushMainBuffer.call(this,t,i,this.altAudio?"video":null)},i.onMediaAttached=function(t,i){e.prototype.onMediaAttached.call(this,t,i);var r=i.media;r.addEventListener("playing",this.onMediaPlaying),r.addEventListener("seeked",this.onMediaSeeked),this.gapController=new ql(this.config,r,this.fragmentTracker,this.hls)},i.onMediaDetaching=function(){var t=this.media;t&&(t.removeEventListener("playing",this.onMediaPlaying),t.removeEventListener("seeked",this.onMediaSeeked)),this.videoBuffer=null,this.fragPlaying=null,this.gapController&&(this.gapController.destroy(),this.gapController=null),e.prototype.onMediaDetaching.call(this)},i.onManifestLoading=function(){this.log("Trigger BUFFER_RESET"),this.hls.trigger(k.BUFFER_RESET,void 0),this.fragmentTracker.removeAllFragments(),this.couldBacktrack=!1,this.startPosition=this.lastCurrentTime=this.fragLastKbps=0,this.levels=this.fragPlaying=this.backtrackFragment=this.levelLastLoaded=null,this.altAudio=this.audioOnly=this.startFragRequested=!1},i.onManifestParsed=function(e,t){var i=!1,r=!1;t.levels.forEach((function(e){var t=e.audioCodec;t&&(i=i||-1!==t.indexOf("mp4a.40.2"),r=r||-1!==t.indexOf("mp4a.40.5"))})),this.audioCodecSwitch=i&&r&&!Hl(),this.audioCodecSwitch&&this.log("Both AAC/HE-AAC audio found in levels; declaring level codec as HE-AAC"),this.levels=t.levels,this.startFragRequested=!1},i.onLevelLoading=function(e,t){var i=this.levels;if(i&&this.state===ls.IDLE){var r=i[t.level];(!r.details||r.details.live&&this.levelLastLoaded!==r||this.waitForCdnTuneIn(r.details))&&(this.state=ls.WAITING_LEVEL)}},i.onLevelLoaded=function(e,t){var i,r=this.levels,s=t.level,a=t.details,n=a.totalduration;if(r){this.log("Level "+s+" loaded ["+a.startSN+","+a.endSN+"]"+(a.lastPartSn?"[part-"+a.lastPartSn+"-"+a.lastPartIndex+"]":"")+", cc ["+a.startCC+", "+a.endCC+"] duration:"+n);var o=r[s],l=this.fragCurrent;!l||this.state!==ls.FRAG_LOADING&&this.state!==ls.FRAG_LOADING_WAITING_RETRY||l.level!==t.level&&l.loader&&this.abortCurrentFrag();var d=0;if(a.live||null!=(i=o.details)&&i.live){var h;if(this.checkLiveUpdate(a),a.deltaUpdateFailed)return;d=this.alignPlaylists(a,o.details,null==(h=this.levelLastLoaded)?void 0:h.details)}if(o.details=a,this.levelLastLoaded=o,this.hls.trigger(k.LEVEL_UPDATED,{details:a,level:s}),this.state===ls.WAITING_LEVEL){if(this.waitForCdnTuneIn(a))return;this.state=ls.IDLE}this.startFragRequested?a.live&&this.synchronizeToLiveEdge(a):this.setStartPosition(a,d),this.tick()}else this.warn("Levels were reset while loading level "+s)},i._handleFragmentLoadProgress=function(e){var t,i=e.frag,r=e.part,s=e.payload,a=this.levels;if(a){var n=a[i.level],o=n.details;if(!o)return this.warn("Dropping fragment "+i.sn+" of level "+i.level+" after level details were reset"),void this.fragmentTracker.removeFragment(i);var l=n.videoCodec,d=o.PTSKnown||!o.live,h=null==(t=i.initSegment)?void 0:t.data,c=this._getAudioCodec(n),u=this.transmuxer=this.transmuxer||new qa(this.hls,Nt.MAIN,this._handleTransmuxComplete.bind(this),this._handleTransmuxerFlush.bind(this)),p=r?r.index:-1,f=-1!==p,m=new Or(i.level,i.sn,i.stats.chunkCount,s.byteLength,p,f),y=this.initPTS[i.cc];u.push(s,h,c,l,i,r,o.totalduration,d,m,y)}else this.warn("Levels were reset while fragment load was in progress. Fragment "+i.sn+" of level "+i.level+" will not be buffered")},i.onAudioTrackSwitching=function(e,t){var i=this.altAudio;if(!t.url){if(this.mediaBuffer!==this.media){this.log("Switching on main audio, use media.buffered to schedule main fragment loading"),this.mediaBuffer=this.media;var r=this.fragCurrent;r&&(this.log("Switching to main audio track, cancel main fragment load"),r.abortRequests(),this.fragmentTracker.removeFragment(r)),this.resetTransmuxer(),this.resetLoadingState()}else this.audioOnly&&this.resetTransmuxer();var s=this.hls;i&&(s.trigger(k.BUFFER_FLUSHING,{startOffset:0,endOffset:Number.POSITIVE_INFINITY,type:null}),this.fragmentTracker.removeAllFragments()),s.trigger(k.AUDIO_TRACK_SWITCHED,t)}},i.onAudioTrackSwitched=function(e,t){var i=t.id,r=!!this.hls.audioTracks[i].url;if(r){var s=this.videoBuffer;s&&this.mediaBuffer!==s&&(this.log("Switching on alternate audio, use video.buffered to schedule main fragment loading"),this.mediaBuffer=s)}this.altAudio=r,this.tick()},i.onBufferCreated=function(e,t){var i,r,s=t.tracks,a=!1;for(var n in s){var o=s[n];if("main"===o.id){if(r=n,i=o,"video"===n){var l=s[n];l&&(this.videoBuffer=l.buffer)}}else a=!0}a&&i?(this.log("Alternate track found, use "+r+".buffered to schedule main fragment loading"),this.mediaBuffer=i.buffer):this.mediaBuffer=this.media},i.onFragBuffered=function(e,t){var i=t.frag,r=t.part;if(!i||i.type===Nt.MAIN){if(this.fragContextChanged(i))return this.warn("Fragment "+i.sn+(r?" p: "+r.index:"")+" of level "+i.level+" finished buffering, but was aborted. state: "+this.state),void(this.state===ls.PARSED&&(this.state=ls.IDLE));var s=r?r.stats:i.stats;this.fragLastKbps=Math.round(8*s.total/(s.buffering.end-s.loading.first)),"initSegment"!==i.sn&&(this.fragPrevious=i),this.fragBufferedComplete(i,r)}},i.onError=function(e,t){var i;if(t.fatal)this.state=ls.ERROR;else switch(t.details){case R.FRAG_GAP:case R.FRAG_PARSING_ERROR:case R.FRAG_DECRYPT_ERROR:case R.FRAG_LOAD_ERROR:case R.FRAG_LOAD_TIMEOUT:case R.KEY_LOAD_ERROR:case R.KEY_LOAD_TIMEOUT:this.onFragmentOrKeyLoadError(Nt.MAIN,t);break;case R.LEVEL_LOAD_ERROR:case R.LEVEL_LOAD_TIMEOUT:case R.LEVEL_PARSING_ERROR:t.levelRetry||this.state!==ls.WAITING_LEVEL||(null==(i=t.context)?void 0:i.type)!==Ot.LEVEL||(this.state=ls.IDLE);break;case R.BUFFER_APPEND_ERROR:case R.BUFFER_FULL_ERROR:if(!t.parent||"main"!==t.parent)return;if(t.details===R.BUFFER_APPEND_ERROR)return void this.resetLoadingState();this.reduceLengthAndFlushBuffer(t)&&this.flushMainBuffer(0,Number.POSITIVE_INFINITY);break;case R.INTERNAL_EXCEPTION:this.recoverWorkerError(t)}},i.checkBuffer=function(){var e=this.media,t=this.gapController;if(e&&t&&e.readyState){if(this.loadedmetadata||!Fr.getBuffered(e).length){var i=this.state,r=i!==ls.IDLE?this.fragCurrent:null,s=this.getLevelDetails();t.poll(this.lastCurrentTime,r,s,i)}this.lastCurrentTime=e.currentTime}},i.onFragLoadEmergencyAborted=function(){this.state=ls.IDLE,this.loadedmetadata||(this.startFragRequested=!1,this.nextLoadPosition=this.startPosition),this.tickImmediate()},i.onBufferFlushed=function(e,t){var i=t.type;if(i!==j.AUDIO||this.audioOnly&&!this.altAudio){var r=(i===j.VIDEO?this.videoBuffer:this.mediaBuffer)||this.media;this.afterBufferFlushed(r,i,Nt.MAIN),this.tick()}},i.onLevelsUpdated=function(e,t){this.level>-1&&this.fragCurrent&&(this.level=this.fragCurrent.level),this.levels=t.levels},i.swapAudioCodec=function(){this.audioCodecSwap=!this.audioCodecSwap},i.seekToStartPos=function(){var e=this.media;if(e){var t=e.currentTime,i=this.startPosition;if(i>=0&&t0&&(sv.cc;if(!1!==s.independent){var E=h.startPTS,w=h.endPTS,T=h.startDTS,C=h.endDTS;if(l)l.elementaryStreams[h.type]={startPTS:E,endPTS:w,startDTS:T,endDTS:C};else if(h.firstKeyFrame&&h.independent&&1===a.id&&!_&&(this.couldBacktrack=!0),h.dropped&&h.independent){var R=this.getMainFwdBufferInfo(),D=(R?R.end:this.getLoadPosition())+this.config.maxBufferHole,x=h.firstKeyFramePTS?h.firstKeyFramePTS:E;if(!b&&Djl&&(o.gap=!0);o.setElementaryStreamInfo(h.type,E,w,T,C),this.backtrackFragment&&(this.backtrackFragment=o),this.bufferFragmentData(h,o,l,a,b||_)}else{if(!b&&!_)return void this.backtrack(o);o.gap=!0}}if(m){var L=m.startPTS,I=m.endPTS,P=m.startDTS,B=m.endDTS;l&&(l.elementaryStreams[j.AUDIO]={startPTS:L,endPTS:I,startDTS:P,endDTS:B}),o.setElementaryStreamInfo(j.AUDIO,L,I,P,B),this.bufferFragmentData(m,o,l,a)}if(f&&null!=u&&null!=(t=u.samples)&&t.length){var M={id:i,frag:o,details:f,samples:u.samples};r.trigger(k.FRAG_PARSING_METADATA,M)}if(f&&c){var U={id:i,frag:o,details:f,samples:c.samples};r.trigger(k.FRAG_PARSING_USERDATA,U)}}}else this.resetWhenMissingContext(a)},i._bufferInitSegment=function(e,t,i,r){var s=this;if(this.state===ls.PARSING){this.audioOnly=!!t.audio&&!t.video,this.altAudio&&!this.audioOnly&&delete t.audio;var a=t.audio,n=t.video,o=t.audiovideo;if(a){var l=e.audioCodec,d=navigator.userAgent.toLowerCase();this.audioCodecSwitch&&(l&&(l=-1!==l.indexOf("mp4a.40.5")?"mp4a.40.2":"mp4a.40.5"),1!==a.metadata.channelCount&&-1===d.indexOf("firefox")&&(l="mp4a.40.5")),l&&-1!==l.indexOf("mp4a.40.5")&&-1!==d.indexOf("android")&&"audio/mpeg"!==a.container&&(l="mp4a.40.2",this.log("Android: force audio codec to "+l)),e.audioCodec&&e.audioCodec!==l&&this.log('Swapping manifest audio codec "'+e.audioCodec+'" for "'+l+'"'),a.levelCodec=l,a.id="main",this.log("Init audio buffer, container:"+a.container+", codecs[selected/level/parsed]=["+(l||"")+"/"+(e.audioCodec||"")+"/"+a.codec+"]")}n&&(n.levelCodec=e.videoCodec,n.id="main",this.log("Init video buffer, container:"+n.container+", codecs[level/parsed]=["+(e.videoCodec||"")+"/"+n.codec+"]")),o&&this.log("Init audiovideo buffer, container:"+o.container+", codecs[level/parsed]=["+e.codecs+"/"+o.codec+"]"),this.hls.trigger(k.BUFFER_CODECS,t),Object.keys(t).forEach((function(e){var a=t[e].initSegment;null!=a&&a.byteLength&&s.hls.trigger(k.BUFFER_APPENDING,{type:e,data:a,frag:i,part:null,chunkMeta:r,parent:i.type})})),this.tickImmediate()}},i.getMainFwdBufferInfo=function(){return this.getFwdBufferInfo(this.mediaBuffer?this.mediaBuffer:this.media,Nt.MAIN)},i.backtrack=function(e){this.couldBacktrack=!0,this.backtrackFragment=e,this.resetTransmuxer(),this.flushBufferGap(e),this.fragmentTracker.removeFragment(e),this.fragPrevious=null,this.nextLoadPosition=e.start,this.state=ls.IDLE},i.checkFragmentChanged=function(){var e=this.media,t=null;if(e&&e.readyState>1&&!1===e.seeking){var i=e.currentTime;if(Fr.isBuffered(e,i)?t=this.getAppendedFrag(i):Fr.isBuffered(e,i+.1)&&(t=this.getAppendedFrag(i+.1)),t){this.backtrackFragment=null;var r=this.fragPlaying,s=t.level;r&&t.sn===r.sn&&r.level===s||(this.fragPlaying=t,this.hls.trigger(k.FRAG_CHANGED,{frag:t}),r&&r.level===s||this.hls.trigger(k.LEVEL_SWITCHED,{level:s}))}}},d(t,[{key:"maxBufferLength",get:function(){var e=this.levels,t=this.level,i=null==e?void 0:e[t];return i?this.getMaxBufferLength(i.maxBitrate):this.config.maxBufferLength}},{key:"nextLevel",get:function(){var e=this.nextBufferedFrag;return e?e.level:-1}},{key:"currentFrag",get:function(){var e=this.media;return e?this.fragPlaying||this.getAppendedFrag(e.currentTime):null}},{key:"currentProgramDateTime",get:function(){var e=this.media;if(e){var t=e.currentTime,i=this.currentFrag;if(i&&S(t)&&S(i.programDateTime)){var r=i.programDateTime+1e3*(t-i.start);return new Date(r)}}return null}},{key:"currentLevel",get:function(){var e=this.currentFrag;return e?e.level:-1}},{key:"nextBufferedFrag",get:function(){var e=this.currentFrag;return e?this.followingBufferedFrag(e):null}},{key:"forceStartLoad",get:function(){return this._forceStartLoad}}])}(ds),Xl=function(){function e(t){void 0===t&&(t={}),this.config=void 0,this.userConfig=void 0,this.logger=void 0,this.coreComponents=void 0,this.networkControllers=void 0,this._emitter=new Na,this._autoLevelCapping=-1,this._maxHdcpLevel=null,this.abrController=void 0,this.bufferController=void 0,this.capLevelController=void 0,this.latencyController=void 0,this.levelController=void 0,this.streamController=void 0,this.audioTrackController=void 0,this.subtitleTrackController=void 0,this.emeController=void 0,this.cmcdController=void 0,this._media=null,this.url=null,this.triggeringException=void 0;var i=this.logger=N(t.debug||!1,"Hls instance"),r=this.config=Bl(e.DefaultConfig,t,i);this.userConfig=t,r.progressive&&Ul(r,i);var s=r.abrController,a=r.bufferController,n=r.capLevelController,o=r.errorController,l=r.fpsController,d=new o(this),h=this.abrController=new s(this),c=new Pr(this),u=this.bufferController=new a(this,c),p=this.capLevelController=new n(this),f=new l(this),m=new Vt(this),y=new Ti(this),g=r.contentSteeringController,A=g?new g(this):null,v=this.levelController=new Fl(this,A),b=new Nl(this.config),_=this.streamController=new Ql(this,c,b);p.setStreamController(_),f.setStreamController(_);var E=[m,v,_];A&&E.splice(1,0,A),this.networkControllers=E;var S=[h,u,p,f,y,c];this.audioTrackController=this.createController(r.audioTrackController,E);var w=r.audioStreamController;w&&E.push(new w(this,c,b)),this.subtitleTrackController=this.createController(r.subtitleTrackController,E);var T=r.subtitleStreamController;T&&E.push(new T(this,c,b)),this.createController(r.timelineController,S),b.emeController=this.emeController=this.createController(r.emeController,S),this.cmcdController=this.createController(r.cmcdController,S),this.latencyController=this.createController(ki,S),this.coreComponents=S,E.push(d);var C=d.onErrorOut;"function"==typeof C&&this.on(k.ERROR,C,d)}e.isMSESupported=function(){return zl()},e.isSupported=function(){return Vl()},e.getMediaSource=function(){return dt()};var t=e.prototype;return t.createController=function(e,t){if(e){var i=new e(this);return t&&t.push(i),i}return null},t.on=function(e,t,i){void 0===i&&(i=this),this._emitter.on(e,t,i)},t.once=function(e,t,i){void 0===i&&(i=this),this._emitter.once(e,t,i)},t.removeAllListeners=function(e){this._emitter.removeAllListeners(e)},t.off=function(e,t,i,r){void 0===i&&(i=this),this._emitter.off(e,t,i,r)},t.listeners=function(e){return this._emitter.listeners(e)},t.emit=function(e,t,i){return this._emitter.emit(e,t,i)},t.trigger=function(e,t){if(this.config.debug)return this.emit(e,e,t);try{return this.emit(e,e,t)}catch(t){if(this.logger.error("An internal error happened while handling event "+e+'. Error message: "'+t.message+'". Here is a stacktrace:',t),!this.triggeringException){this.triggeringException=!0;var i=e===k.ERROR;this.trigger(k.ERROR,{type:C.OTHER_ERROR,details:R.INTERNAL_EXCEPTION,fatal:i,event:e,error:t}),this.triggeringException=!1}}return!1},t.listenerCount=function(e){return this._emitter.listenerCount(e)},t.destroy=function(){this.logger.log("destroy"),this.trigger(k.DESTROYING,void 0),this.detachMedia(),this.removeAllListeners(),this._autoLevelCapping=-1,this.url=null,this.networkControllers.forEach((function(e){return e.destroy()})),this.networkControllers.length=0,this.coreComponents.forEach((function(e){return e.destroy()})),this.coreComponents.length=0;var e=this.config;e.xhrSetup=e.fetchSetup=void 0,this.userConfig=null},t.attachMedia=function(e){this.logger.log("attachMedia"),this._media=e,this.trigger(k.MEDIA_ATTACHING,{media:e})},t.detachMedia=function(){this.logger.log("detachMedia"),this.trigger(k.MEDIA_DETACHING,void 0),this._media=null},t.loadSource=function(e){this.stopLoad();var t=this.media,i=this.url,r=this.url=E.buildAbsoluteURL(self.location.href,e,{alwaysNormalize:!0});this._autoLevelCapping=-1,this._maxHdcpLevel=null,this.logger.log("loadSource:"+r),t&&i&&(i!==r||this.bufferController.hasSourceTypes())&&(this.detachMedia(),this.attachMedia(t)),this.trigger(k.MANIFEST_LOADING,{url:e})},t.startLoad=function(e){void 0===e&&(e=-1),this.logger.log("startLoad("+e+")"),this.networkControllers.forEach((function(t){t.startLoad(e)}))},t.stopLoad=function(){this.logger.log("stopLoad"),this.networkControllers.forEach((function(e){e.stopLoad()}))},t.resumeBuffering=function(){this.networkControllers.forEach((function(e){e.resumeBuffering&&e.resumeBuffering()}))},t.pauseBuffering=function(){this.networkControllers.forEach((function(e){e.pauseBuffering&&e.pauseBuffering()}))},t.swapAudioCodec=function(){this.logger.log("swapAudioCodec"),this.streamController.swapAudioCodec()},t.recoverMediaError=function(){this.logger.log("recoverMediaError");var e=this._media;this.detachMedia(),e&&this.attachMedia(e)},t.removeLevel=function(e){this.levelController.removeLevel(e)},t.setAudioOption=function(e){var t;return null==(t=this.audioTrackController)?void 0:t.setAudioOption(e)},t.setSubtitleOption=function(e){var t;return null==(t=this.subtitleTrackController)||t.setSubtitleOption(e),null},d(e,[{key:"levels",get:function(){var e=this.levelController.levels;return e||[]}},{key:"currentLevel",get:function(){return this.streamController.currentLevel},set:function(e){this.logger.log("set currentLevel:"+e),this.levelController.manualLevel=e,this.streamController.immediateLevelSwitch()}},{key:"nextLevel",get:function(){return this.streamController.nextLevel},set:function(e){this.logger.log("set nextLevel:"+e),this.levelController.manualLevel=e,this.streamController.nextLevelSwitch()}},{key:"loadLevel",get:function(){return this.levelController.level},set:function(e){this.logger.log("set loadLevel:"+e),this.levelController.manualLevel=e}},{key:"nextLoadLevel",get:function(){return this.levelController.nextLoadLevel},set:function(e){this.levelController.nextLoadLevel=e}},{key:"firstLevel",get:function(){return Math.max(this.levelController.firstLevel,this.minAutoLevel)},set:function(e){this.logger.log("set firstLevel:"+e),this.levelController.firstLevel=e}},{key:"startLevel",get:function(){var e=this.levelController.startLevel;return-1===e&&this.abrController.forcedAutoLevel>-1?this.abrController.forcedAutoLevel:e},set:function(e){this.logger.log("set startLevel:"+e),-1!==e&&(e=Math.max(e,this.minAutoLevel)),this.levelController.startLevel=e}},{key:"capLevelToPlayerSize",get:function(){return this.config.capLevelToPlayerSize},set:function(e){var t=!!e;t!==this.config.capLevelToPlayerSize&&(t?this.capLevelController.startCapping():(this.capLevelController.stopCapping(),this.autoLevelCapping=-1,this.streamController.nextLevelSwitch()),this.config.capLevelToPlayerSize=t)}},{key:"autoLevelCapping",get:function(){return this._autoLevelCapping},set:function(e){this._autoLevelCapping!==e&&(this.logger.log("set autoLevelCapping:"+e),this._autoLevelCapping=e,this.levelController.checkMaxAutoUpdated())}},{key:"bandwidthEstimate",get:function(){var e=this.abrController.bwEstimator;return e?e.getEstimate():NaN},set:function(e){this.abrController.resetEstimator(e)}},{key:"ttfbEstimate",get:function(){var e=this.abrController.bwEstimator;return e?e.getEstimateTTFB():NaN}},{key:"maxHdcpLevel",get:function(){return this._maxHdcpLevel},set:function(e){Ri(e)&&this._maxHdcpLevel!==e&&(this._maxHdcpLevel=e,this.levelController.checkMaxAutoUpdated())}},{key:"autoLevelEnabled",get:function(){return-1===this.levelController.manualLevel}},{key:"manualLevel",get:function(){return this.levelController.manualLevel}},{key:"minAutoLevel",get:function(){var e=this.levels,t=this.config.minAutoBitrate;if(!e)return 0;for(var i=e.length,r=0;r=t)return r;return 0}},{key:"maxAutoLevel",get:function(){var e,t=this.levels,i=this.autoLevelCapping,r=this.maxHdcpLevel;if(e=-1===i&&null!=t&&t.length?t.length-1:i,r)for(var s=e;s--;){var a=t[s].attrs["HDCP-LEVEL"];if(a&&a<=r)return s}return e}},{key:"firstAutoLevel",get:function(){return this.abrController.firstAutoLevel}},{key:"nextAutoLevel",get:function(){return this.abrController.nextAutoLevel},set:function(e){this.abrController.nextAutoLevel=e}},{key:"playingDate",get:function(){return this.streamController.currentProgramDateTime}},{key:"mainForwardBufferInfo",get:function(){return this.streamController.getMainFwdBufferInfo()}},{key:"maxBufferLength",get:function(){return this.streamController.maxBufferLength}},{key:"allAudioTracks",get:function(){var e=this.audioTrackController;return e?e.allAudioTracks:[]}},{key:"audioTracks",get:function(){var e=this.audioTrackController;return e?e.audioTracks:[]}},{key:"audioTrack",get:function(){var e=this.audioTrackController;return e?e.audioTrack:-1},set:function(e){var t=this.audioTrackController;t&&(t.audioTrack=e)}},{key:"allSubtitleTracks",get:function(){var e=this.subtitleTrackController;return e?e.allSubtitleTracks:[]}},{key:"subtitleTracks",get:function(){var e=this.subtitleTrackController;return e?e.subtitleTracks:[]}},{key:"subtitleTrack",get:function(){var e=this.subtitleTrackController;return e?e.subtitleTrack:-1},set:function(e){var t=this.subtitleTrackController;t&&(t.subtitleTrack=e)}},{key:"media",get:function(){return this._media}},{key:"subtitleDisplay",get:function(){var e=this.subtitleTrackController;return!!e&&e.subtitleDisplay},set:function(e){var t=this.subtitleTrackController;t&&(t.subtitleDisplay=e)}},{key:"lowLatencyMode",get:function(){return this.config.lowLatencyMode},set:function(e){this.config.lowLatencyMode=e}},{key:"liveSyncPosition",get:function(){return this.latencyController.liveSyncPosition}},{key:"latency",get:function(){return this.latencyController.latency}},{key:"maxLatency",get:function(){return this.latencyController.maxLatency}},{key:"targetLatency",get:function(){return this.latencyController.targetLatency}},{key:"drift",get:function(){return this.latencyController.drift}},{key:"forceStartLoad",get:function(){return this.streamController.forceStartLoad}}],[{key:"version",get:function(){}},{key:"Events",get:function(){return k}},{key:"ErrorTypes",get:function(){return C}},{key:"ErrorDetails",get:function(){return R}},{key:"DefaultConfig",get:function(){return e.defaultConfig?e.defaultConfig:Il},set:function(t){e.defaultConfig=t}}])}();return Xl.defaultConfig=void 0,Xl}()}(!1)})),Cd=(Td=kd)&&Td.__esModule&&Object.prototype.hasOwnProperty.call(Td,"default")?Td.default:Td;class Rd extends Ra{constructor(e){super(),this.player=e,this.TAG_NAME="HlsDecoder",e._opt,this.canVideoPlay=!1,this.$videoElement=null,this.canvasRenderInterval=null,this.bandwidthEstimateInterval=null,this.fpsInterval=null,this.hlsFps=0,this.hlsPrevFrams=0,this.isInitInfo=!1,this.eventsDestroy=[],this.supportVideoFrameCallbackHandle=null,this.player.isHlsCanVideoPlay()?(this.$videoElement=this.player.video.$videoElement,this.canVideoPlay=!0):Cd.isSupported()?(this.$videoElement=this.player.video.$videoElement,this.hls=new Cd({}),this._initHls(),this._bindEvents()):this.player.debug.error(this.TAG_NAME,"init hls error ,not support "),this.player.debug.log(this.TAG_NAME,"init")}destroy(){return new Promise(((e,t)=>{this.supportVideoFrameCallbackHandle&&this.$videoElement&&(this.$videoElement.cancelVideoFrameCallback(this.supportVideoFrameCallbackHandle),this.supportVideoFrameCallbackHandle=null),this.hls&&(this.hls.destroy(),this.hls=null),this.eventsDestroy.length&&(this.eventsDestroy.forEach((e=>e())),this.eventsDestroy=[]),this.isInitInfo=!1,this._stopCanvasRender(),this._stopBandwidthEstimateInterval(),this._stopFpsInterval(),this.$videoElement=null,this.hlsFps=0,this.player.debug.log(this.TAG_NAME,"destroy"),setTimeout((()=>{e()}),0)}))}checkHlsBufferedDelay(){const e=this.$videoElement;let t=0;const i=e.buffered,r=i.length?i.end(i.length-1):0;return t=r-e.currentTime,t<0&&(this.player.debug.warn(this.TAG_NAME,`checkHlsBufferedDelay ${t} < 0, and buffered is ${r} ,currentTime is ${e.currentTime} , try to seek ${e.currentTime} to ${r}`),e.currentTime=r,t=0),t}getFps(){return this.hlsFps}_startCanvasRender(){Ta()?this.supportVideoFrameCallbackHandle=this.$videoElement.requestVideoFrameCallback(this.videoFrameCallback.bind(this)):(this._stopCanvasRender(),this.canvasRenderInterval=setInterval((()=>{this.player.video.render({$video:this.$videoElement,ts:parseInt(1e3*this.$videoElement.currentTime,10)||0})}),40))}_stopCanvasRender(){this.canvasRenderInterval&&(clearInterval(this.canvasRenderInterval),this.canvasRenderInterval=null)}videoFrameCallback(e,t={}){if(this.player.isDestroyedOrClosed())return void this.player.debug.log(this.TAG_NAME,"videoFrameCallback() player is destroyed");const i=parseInt(1e3*Math.max(t.mediaTime,this.$videoElement.currentTime),10)||0;this.player.video.render({$video:this.$videoElement,ts:i}),this.player.handleRender(),this.player.updateStats({dts:i}),this.supportVideoFrameCallbackHandle=this.$videoElement.requestVideoFrameCallback(this.videoFrameCallback.bind(this))}_startBandwidthEstimateInterval(){this._stopBandwidthEstimateInterval(),this.bandwidthEstimateInterval=setInterval((()=>{let e=0;this.hls.bandwidthEstimate&&(e=this.hls.bandwidthEstimate),this.player.emit(rt.kBps,(e/1024/8/10).toFixed(2))}),1e3)}_stopBandwidthEstimateInterval(){this.bandwidthEstimateInterval&&(clearInterval(this.bandwidthEstimateInterval),this.bandwidthEstimateInterval=null)}_startFpsInterval(){this._stopCanvasRender(),this.fpsInterval=setInterval((()=>{if(this.$videoElement)if(sa(this.$videoElement.getVideoPlaybackQuality)){const e=this.$videoElement.getVideoPlaybackQuality();this.hlsFps=e.totalVideoFrames-this.hlsPrevFrams,this.hlsPrevFrams=e.totalVideoFrames}else{const e=this.$videoElement.webkitDecodedFrameCount||0;this.hlsFps=e-this.hlsPrevFrams,this.hlsPrevFrams=e}}),1e3)}_stopFpsInterval(){this.fpsInterval&&(clearInterval(this.fpsInterval),this.fpsInterval=null)}_initHls(){this.player._opt.useCanvasRender&&(this.$videoElement=document.createElement("video"),this.$videoElement.muted=!0,ks()&&(this.$videoElement.style.position="absolute"),this.initVideoEvents()),this.hls.attachMedia(this.$videoElement)}_bindEvents(){const e=this.player,{proxy:t}=this.player.events;this.hls;const i=this.$videoElement,r=Ta(),s=t(i,Si,(t=>{if(this.hls){const i=parseInt(t.timeStamp,10);this.player._opt.useCanvasRender&&ba(r)&&e.updateStats({ts:i,dts:i})}}));this.eventsDestroy.push(s),this._startBandwidthEstimateInterval(),this._startFpsInterval(),this.hls.on(Cd.Events.ERROR,((t,i)=>{if(i.fatal)switch(i.type){case Cd.ErrorTypes.NETWORK_ERROR:this.player.debug.warn(this.TAG_NAME,"fatal network error encountered, try to recover"),this.hls.startLoad();break;case Cd.ErrorTypes.MEDIA_ERROR:this.player.debug.warn(this.TAG_NAME,"fatal media error encountered, try to recover"),this.hls.recoverMediaError()}else if("mediaError"===i.type){if("Unsupported HEVC stream type found 0x24"!==i.reason)return;e.resetPlayerH265()}})),this.hls.on(Cd.Events.MEDIA_ATTACHING,(()=>{})),this.hls.on(Cd.Events.MEDIA_ATTACHED,(()=>{})),this.hls.on(Cd.Events.MEDIA_DETACHING,(()=>{})),this.hls.on(Cd.Events.MEDIA_DETACHED,(()=>{})),this.hls.on(Cd.Events.BUFFER_RESET,(()=>{})),this.hls.on(Cd.Events.BUFFER_CODECS,(()=>{})),this.hls.on(Cd.Events.BUFFER_CREATED,(()=>{})),this.hls.on(Cd.Events.BUFFER_APPENDING,((e,t)=>{})),this.hls.on(Cd.Events.BUFFER_APPENDED,(()=>{})),this.hls.on(Cd.Events.BUFFER_EOS,(()=>{})),this.hls.on(Cd.Events.BUFFER_FLUSHING,(()=>{})),this.hls.on(Cd.Events.BUFFER_FLUSHED,(()=>{})),this.hls.on(Cd.Events.MANIFEST_LOADING,(()=>{})),this.hls.on(Cd.Events.MANIFEST_LOADED,((e,t)=>{})),this.hls.on(Cd.Events.MANIFEST_PARSED,(t=>{e._times.demuxStart||(e._times.demuxStart=ps())})),this.hls.on(Cd.Events.LEVEL_LOADING,(()=>{})),this.hls.on(Cd.Events.LEVEL_LOADED,((e,t)=>{})),this.hls.on(Cd.Events.FRAG_LOADING,(e=>{})),this.hls.on(Cd.Events.FRAG_LOADED,((t,i)=>{e._times.decodeStart||(e._times.decodeStart=ps())})),this.hls.on(Cd.Events.BUFFER_APPENDING,(()=>{e._times.videoStart||(e._times.videoStart=ps(),e.handlePlayToRenderTimes())})),this.hls.on(Cd.Events.FRAG_DECRYPTED,(()=>{})),this.hls.on(Cd.Events.KEY_LOADING,(()=>{})),this.hls.on(Cd.Events.KEY_LOADING,(()=>{})),this.hls.on(Cd.Events.FPS_DROP,(e=>{})),this.hls.on(Cd.Events.FPS_DROP_LEVEL_CAPPING,(e=>{})),this.hls.on(Cd.Events.FRAG_PARSING_INIT_SEGMENT,((e,t)=>{const i=!!(t&&t.tracks&&t.tracks.audio),r=!!(t&&t.tracks&&t.tracks.video);if(i&&t.tracks.audio){let e=t.tracks.audio;const i=e.metadata&&e.metadata.channelCount?e.metadata.channelCount:0,r=e.codec;this.player.audio&&this.player.audio.updateAudioInfo({encType:r,channels:i,sampleRate:44100})}if(r&&t.tracks.video){let e=t.tracks.video;const i={encTypeCode:-1!==e.codec.indexOf("avc")?mt:yt};e.metadata&&(i.width=e.metadata.width,i.height=e.metadata.height),this.player.video&&this.player.video.updateVideoInfo(i)}}))}initVideoPlay(e){this.player._opt.useCanvasRender&&(this.$videoElement=document.createElement("video"),this.initVideoEvents()),this.$videoElement.autoplay=!0,this.$videoElement.muted=!0,this.$videoElement.src=e}_initRenderSize(){this.isInitInfo||(this.player.video.updateVideoInfo({width:this.$videoElement.videoWidth,height:this.$videoElement.videoHeight}),this.player.video.initCanvasViewSize(),this.isInitInfo=!0)}initVideoEvents(){const{proxy:e}=this.player.events,t=e(this.$videoElement,_i,(()=>{this.player.debug.log(this.TAG_NAME,"video canplay"),this.$videoElement.play().then((()=>{this.player.debug.log(this.TAG_NAME,"video play"),this._startCanvasRender(),this._initRenderSize()})).catch((e=>{this.player.debug.warn(this.TAG_NAME,"video play error ",e)}))})),i=e(this.$videoElement,Ei,(()=>{this.player.debug.log(this.TAG_NAME,"video waiting")})),r=e(this.$videoElement,Si,(e=>{const t=parseInt(e.timeStamp,10);this.player.handleRender(),this.player.updateStats({ts:t}),this.$videoElement.paused&&(this.player.debug.warn(this.TAG_NAME,"video is paused and next try to replay"),this.$videoElement.play().then((()=>{this.player.debug.log(this.TAG_NAME,"video is paused and replay success")})).catch((e=>{this.player.debug.warn(this.TAG_NAME,"video is paused and replay error ",e)})))})),s=e(this.$videoElement,wi,(()=>{this.player.debug.log(this.TAG_NAME,"video playback Rate change",this.$videoElement&&this.$videoElement.playbackRate)}));this.eventsDestroy.push(t,i,r,s)}loadSource(e){return new Promise(((t,i)=>{this.canVideoPlay?(this.initVideoPlay(e),t()):this.hls.on(Cd.Events.MEDIA_ATTACHED,(()=>{this.hls.loadSource(e),t()}))}))}}const Dd=2097152,xd="fetch",Ld="xhr",Id="arraybuffer",Pd="text",Bd="json",Md="real_time_speed",Ud=Object.prototype.toString;function Fd(e){if("[object Object]"!==Ud.call(e))return!1;const t=Object.getPrototypeOf(e);return null===t||t===Object.prototype}function Od(e){if(!e||null===e[0]||void 0===e[0]||0===e[0]&&(null===e[1]||void 0===e[1]))return;let t="bytes="+e[0]+"-";return e[1]&&(t+=e[1]),t}function Nd(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function Gd(e,t){if(!e)return;if(!t)return e;let i;const r=Object.keys(t).map((e=>{if(i=t[e],null!=i)return Array.isArray(i)?e+="[]":i=[i],i.map((t=>{var i;return i=t,"[object Date]"===Ud.call(i)?t=t.toISOString():function(e){return null!==e&&"object"==typeof e}(t)&&(t=JSON.stringify(t)),`${Nd(e)}=${Nd(t)}`})).join("&")})).filter(Boolean).join("&");if(r){const t=e.indexOf("#");-1!==t&&(e=e.slice(0,t)),e+=(-1===e.indexOf("?")?"?":"&")+r}return e}function zd(e,t,i,r,s,a,n,o,l,d,h){s=null!=s?parseFloat(s):null,r=parseInt(r||"0",10),Number.isNaN(r)&&(r=0);return{data:e,done:t,option:{range:l,vid:d,index:o,contentLength:r,age:s,startTime:a,firstByteTime:n,endTime:Date.now(),priOptions:h},response:i}}function Vd(e,t){return Math.round(8*e*1e3/t/1024)}class Hd extends Error{retryCount=0;isTimeout=!1;loaderType=xd;startTime=0;endTime=0;options={};constructor(e,t,i,r){super(r),this.url=e,this.request=t,this.response=i}}class Wd extends Ra{_abortController=null;_timeoutTimer=null;_reader=null;_response=null;_aborted=!1;_index=-1;_range=null;_receivedLength=0;_running=!1;_logger=null;_vid="";_onProcessMinLen=0;_onCancel=null;_priOptions=null;TAG_NAME="FetchLoader";constructor(e){super(),this.player=e}load({url:e,vid:t,timeout:i,responseType:r,onProgress:s,index:a,onTimeout:n,onCancel:o,range:l,transformResponse:d,request:h,params:c,logger:u,method:p,headers:f,body:m,mode:y,credentials:g,cache:A,redirect:v,referrer:b,referrerPolicy:_,onProcessMinLen:E,priOptions:S}){this._aborted=!1,this._onProcessMinLen=E,this._onCancel=o,this._abortController="undefined"!=typeof AbortController&&new AbortController,this._running=!0,this._index=a,this._range=l||[0,0],this._vid=t||e,this._priOptions=S||{};const w={method:p,headers:f,body:m,mode:y,credentials:g,cache:A,redirect:v,referrer:b,referrerPolicy:_,signal:this._abortController?.signal};let T=!1;clearTimeout(this._timeoutTimer),e=Gd(e,c);const k=Od(l);k&&(f=h?h.headers:w.headers=w.headers||(Headers?new Headers:{}),Headers&&f instanceof Headers?f.append("Range",k):f.Range=k),i&&(this._timeoutTimer=setTimeout((()=>{if(T=!0,this.cancel(),n){const t=new Hd(e,w,null,"timeout");t.isTimeout=!0,n(t,{index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions})}}),i));const C=Date.now();return(zs(a)||zs(l))&&this.player.debug.log(this.TAG_NAME,"[fetch load start], index,",a,",range,",l),new Promise(((t,i)=>{fetch(h||e,h?void 0:w).then((async n=>{if(clearTimeout(this._timeoutTimer),this._response=n,this._aborted||!this._running)return;if(d&&(n=d(n,e)||n),!n.ok)throw new Hd(e,w,n,"bad network response");const o=Date.now();let h;if(r===Pd)h=await n.text(),this._running=!1;else if(r===Bd)h=await n.json(),this._running=!1;else{if(s)return this.resolve=t,this.reject=i,void this._loadChunk(n,s,C,o);{h=await n.arrayBuffer(),h=new Uint8Array(h),this._running=!1;const e=Date.now()-C,t=Vd(h.byteLength,e);this.emit(Md,{speed:t,len:h.byteLength,time:e,vid:this._vid,index:this._index,range:this._range,priOptions:this._priOptions})}}(zs(a)||zs(l))&&this.player.debug.log(this.TAG_NAME,"[fetch load end], index,",a,",range,",l),t(zd(h,!0,n,n.headers.get("Content-Length"),n.headers.get("age"),C,o,a,l,this._vid,this._priOptions))})).catch((t=>{clearTimeout(this._timeoutTimer),this._running=!1,this._aborted&&!T||((t=t instanceof Hd?t:new Hd(e,w,null,t?.message)).startTime=C,t.endTime=Date.now(),t.isTimeout=T,t.options={index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions},i(t))}))}))}async cancel(){if(!this._aborted){if(this._aborted=!0,this._running=!1,this._response){try{this._reader&&await this._reader.cancel()}catch(e){}this._response=this._reader=null}if(this._abortController){try{this._abortController.abort()}catch(e){}this._abortController=null}this._onCancel&&this._onCancel({index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions})}}_loadChunk(e,t,i,r){if(!e.body||!e.body.getReader){this._running=!1;const t=new Hd(e.url,"",e,"onProgress of bad response.body.getReader");return t.options={index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions},void this.reject(t)}this._onProcessMinLen>0&&(this._cache=new Uint8Array(Dd),this._writeIdx=0);const s=this._reader=e.body.getReader();let a,n,o;const l=async()=>{n=Date.now();try{a=await s.read(),o=Date.now()}catch(e){return o=Date.now(),void(this._aborted||(this._running=!1,e.options={index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions},this.reject(e)))}const d=this._range?.length>0?this._range[0]:0,h=d+this._receivedLength;if(this._aborted)return this._running=!1,void t(void 0,!1,{range:[h,h],vid:this._vid,index:this._index,startTime:n,endTime:o,st:i,firstByteTime:r,priOptions:this._priOptions},e);const c=a.value?a.value.byteLength:0;let u;if(this._receivedLength+=c,this.player.debug.log(this.TAG_NAME,"【fetchLoader,onProgress call】,task,",this._range,", start,",h,", end,",d+this._receivedLength,", done,",a.done),this._onProcessMinLen>0){if(this._writeIdx+c>=this._onProcessMinLen||a.done)u=new Uint8Array(this._writeIdx+c),u.set(this._cache.slice(0,this._writeIdx),0),c>0&&u.set(a.value,this._writeIdx),this._writeIdx=0,this.player.debug.log(this.TAG_NAME,"【fetchLoader,onProgress enough】,done,",a.done,",len,",u.byteLength,", writeIdx,",this._writeIdx);else if(c>0&&this._writeIdx+c0){const e=new Uint8Array(this._writeIdx+c+2048);this.player.debug.log(this.TAG_NAME,"【fetchLoader,onProgress extra start】,size,",this._writeIdx+c+2048,", datalen,",c,", writeIdx,",this._writeIdx),e.set(this._cache.slice(0,this._writeIdx),0),c>0&&e.set(a.value,this._writeIdx),this._writeIdx+=c,delete this._cache,this._cache=e,this.player.debug.log(this.TAG_NAME,"【fetchLoader,onProgress extra end】,len,",c,", writeIdx,",this._writeIdx)}}else u=a.value;if((u&&u.byteLength>0||a.done)&&t(u,a.done,{range:[this._range[0]+this._receivedLength-(u?u.byteLength:0),this._range[0]+this._receivedLength],vid:this._vid,index:this._index,startTime:n,endTime:o,st:i,firstByteTime:r,priOptions:this._priOptions},e),a.done){const t=Date.now()-i,s=Vd(this._receivedLength,t);this.emit(Md,{speed:s,len:this._receivedLength,time:t,vid:this._vid,index:this._index,range:this._range,priOptions:this._priOptions}),this._running=!1,this.player.debug.log(this.TAG_NAME,"[fetchLoader onProgress end],task,",this._range,",done,",a.done),this.resolve(zd(a,!0,e,e.headers.get("Content-Length"),e.headers.get("age"),i,r,this._index,this._range,this._vid,this._priOptions))}else l()};l()}get receiveLen(){return this._receivedLength}get running(){return this._running}set running(e){this._running=e}static isSupported(){return!("undefined"==typeof fetch)}}class jd{TAG_NAME="Task";constructor(e,t,i){this.promise=function(){let e,t;const i=new Promise(((i,r)=>{e=i,t=r}));return i.used=!1,i.resolve=(...t)=>(i.used=!0,e(...t)),i.reject=(...e)=>(i.used=!0,t(...e)),i}(),this.alive=!!t.onProgress,this._loaderType=e,this.player=i,this._loader=e===xd&&window.fetch?new Wd(i):new $d(i),this._config=t,this._retryCount=0,this._retryTimer=null,this._canceled=!1,this._retryCheckFunc=t.retryCheckFunc}exec(){const{retry:e,retryDelay:t,onRetryError:i,transformError:r,...s}=this._config,a=async()=>{try{const e=await this._loader.load(s);this.promise.resolve(e)}catch(n){if(this._loader.running=!1,this.player.debug.log(this.TAG_NAME,"[task request catch err]",n),this._canceled)return;n.loaderType=this._loaderType,n.retryCount=this._retryCount;let o=n;r&&(o=r(o)||o),i&&this._retryCount>0&&i(o,this._retryCount,{index:s.index,vid:s.vid,range:s.range,priOptions:s.priOptions}),this._retryCount++;let l=!0;if(this._retryCheckFunc&&(l=this._retryCheckFunc(n)),l&&this._retryCount<=e)return clearTimeout(this._retryTimer),this.player.debug.log(this.TAG_NAME,"[task request setTimeout],retry",this._retryCount,",retry range,",s.range),void(this._retryTimer=setTimeout(a,t));this.promise.reject(o)}};return a(),this.promise}async cancel(){return clearTimeout(this._retryTimer),this._canceled=!0,this._loader.running=!1,this._loader.cancel()}get running(){return this._loader&&this._loader.running}get loader(){return this._loader}}class $d extends Ra{_xhr=null;_aborted=!1;_timeoutTimer=null;_range=null;_receivedLength=0;_url=null;_onProgress=null;_index=-1;_headers=null;_currentChunkSizeKB=384;_timeout=null;_xhr=null;_withCredentials=null;_startTime=-1;_loadCompleteResolve=null;_loadCompleteReject=null;_runing=!1;_logger=!1;_vid="";_responseType;_credentials;_method;_transformResponse;_firstRtt;_onCancel=null;_priOptions=null;TAG_NAME="XhrLoader";constructor(e){super(),this.player=e}load(e){clearTimeout(this._timeoutTimer),this._range=e.range,this._onProgress=e.onProgress,this._index=e.index,this._headers=e.headers,this._withCredentials="include"===e.credentials||"same-origin"===e.credentials,this._body=e.body||null,e.method&&(this._method=e.method),this._timeout=e.timeout||null,this._runing=!0,this._vid=e.vid||e.url,this._responseType=e.responseType,this._firstRtt=-1,this._onTimeout=e.onTimeout,this._onCancel=e.onCancel,this._request=e.request,this._priOptions=e.priOptions||{},this.player.debug.log(this.TAG_NAME,"【xhrLoader task】, range",this._range),this._url=Gd(e.url,e.params);const t=Date.now();return new Promise(((e,t)=>{this._loadCompleteResolve=e,this._loadCompleteReject=t,this._startLoad()})).catch((e=>{if(clearTimeout(this._timeoutTimer),this._runing=!1,!this._aborted)throw(e=e instanceof Hd?e:new Hd(this._url,this._request)).startTime=t,e.endTime=Date.now(),e.options={index:this._index,vid:this._vid,priOptions:this._priOptions},e}))}_startLoad(){let e=null;if(this._responseType===Id&&this._range&&this._range.length>1)if(this._onProgress){this._firstRtt=-1;const t=1024*this._currentChunkSizeKB,i=this._range[0]+this._receivedLength;let r=this._range[1];t],tast :",this._range,", SubRange, ",e)}else e=this._range,this.player.debug.log(this.TAG_NAME,"[xhr_loader->],tast :",this._range,", allRange, ",e);this._internalOpen(e)}_internalOpen(e){try{this._startTime=Date.now();const t=this._xhr=new XMLHttpRequest;t.open(this._method||"GET",this._url,!0),t.responseType=this._responseType,this._timeout&&(t.timeout=this._timeout),t.withCredentials=this._withCredentials,t.onload=this._onLoad.bind(this),t.onreadystatechange=this._onReadyStatechange.bind(this),t.onerror=e=>{this._running=!1;const t=new Hd(this._url,this._request,e?.currentTarget?.response,"xhr.onerror.status:"+e?.currentTarget?.status+",statusText,"+e?.currentTarget?.statusText);t.options={index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions},this._loadCompleteReject(t)},t.ontimeout=e=>{this.cancel();const t=new Hd(this._url,this._request,{status:408},"timeout");this._onTimeout&&(t.isTimeout=!0,this._onTimeout(t,{index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions})),t.options={index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions},this._loadCompleteReject(t)};const i=this._headers||{},r=Od(e);r&&(i.Range=r),i&&Object.keys(i).forEach((e=>{t.setRequestHeader(e,i[e])})),this.player.debug.log(this.TAG_NAME,"[xhr.send->] tast,",this._range,",load sub range, ",e),t.send(this._body)}catch(t){t.options={index:this._index,range:e,vid:this._vid,priOptions:this._priOptions},this._loadCompleteReject(t)}}_onReadyStatechange(e){2===e.target.readyState&&this._firstRtt<0&&(this._firstRtt=Date.now())}_onLoad(e){const t=e.target.status;if(t<200||t>299){const i=new Hd(this._url,null,{...e.target.response,status:t},"bad response,status:"+t);return i.options={index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions},this._loadCompleteReject(i)}let i,r=null,s=!1;const a=this._range?.length>0?this._range[0]:0;if(this._responseType===Id){const t=new Uint8Array(e.target.response);if(i=a+this._receivedLength,t&&t.byteLength>0){this._receivedLength+=t.byteLength;const e=Date.now()-this._startTime,r=Vd(this._receivedLength,e);this.emit(Md,{speed:r,len:this._receivedLength,time:e,vid:this._vid,index:this._index,range:[i,a+this._receivedLength],priOptions:this._priOptions})}r=t,s=!(this._range?.length>1&&this._range[1]&&this._receivedLength], tast :",this._range,", start",i,"end ",a+this._receivedLength,",dataLen,",t?t.byteLength:0,",receivedLength",this._receivedLength,",index,",this._index,", done,",s)}else s=!0,r=e.target.response;let n={ok:t>=200&&t<300,status:t,statusText:this._xhr.statusText,url:this._xhr.responseURL,headers:this._getHeaders(this._xhr),body:this._xhr.response};this._transformResponse&&(n=this._transformResponse(n,this._url)||n),this._onProgress&&this._onProgress(r,s,{index:this._index,vid:this._vid,range:[i,a+this._receivedLength],startTime:this._startTime,endTime:Date.now(),priOptions:this._priOptions},n),s?(this._runing=!1,this._loadCompleteResolve&&this._loadCompleteResolve(zd(this._onProgress?null:r,s,n,n.headers["content-length"],n.headers.age,this._startTime,this._firstRtt,this._index,this._range,this._vid,this._priOptions))):this._startLoad()}cancel(){if(!this._aborted)return this._aborted=!0,this._runing=!1,super.removeAllListeners(),this._onCancel&&this._onCancel({index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions}),this._xhr?this._xhr.abort():void 0}static isSupported(){return"undefined"!=typeof XMLHttpRequest}get receiveLen(){return this._receivedLength}get running(){return this._running}set running(e){this._running=e}_getHeaders(e){const t=e.getAllResponseHeaders().trim().split("\r\n"),i={};for(const e of t){const t=e.split(": ");i[t[0].toLowerCase()]=t.slice(1).join(": ")}return i}}class Kd extends Ra{type=xd;_queue=[];_alive=[];_currentTask=null;_config;constructor(e,t){super(),this.player=t,this._config=function(e){return{loaderType:xd,retry:0,retryDelay:0,timeout:0,request:null,onTimeout:void 0,onProgress:void 0,onRetryError:void 0,transformRequest:void 0,transformResponse:void 0,transformError:void 0,responseType:Pd,range:void 0,url:"",params:void 0,method:"GET",headers:{},body:void 0,mode:void 0,credentials:void 0,cache:void 0,redirect:void 0,referrer:void 0,referrerPolicy:void 0,integrity:void 0,onProcessMinLen:0,...e}}(e),this._config.loaderType!==Ld&&Wd.isSupported()||(this.type=Ld)}destroy(){this._queue=[],this._alive=[],this._currentTask=null}isFetch(){return this.type===xd}static isFetchSupport(){return Wd.isSupported()}load(e,t={}){"string"!=typeof e&&e?t=e:t.url=e||t.url||this._config.url,(t=Object.assign({},this._config,t)).params&&(t.params=Object.assign({},t.params)),t.headers&&Fd(t.headers)&&(t.headers=Object.assign({},t.headers)),t.body&&Fd(t.body)&&(t.body=Object.assign({},t.body)),t.transformRequest&&(t=t.transformRequest(t)||t);const i=new jd(this.type,t,this.player);return i.loader.on(Md,(e=>{this.emit(Md,e)})),this._queue.push(i),1!==this._queue.length||this._currentTask&&this._currentTask.running||this._processTask(),i.promise}async cancel(){const e=this._queue.map((e=>e.cancel())).concat(this._alive.map((e=>e.cancel())));this._currentTask&&e.push(this._currentTask.cancel()),this._queue=[],this._alive=[],await Promise.all(e),await function(e=0){return new Promise((t=>setTimeout(t,e)))}()}_processTask(){if(this._currentTask=this._queue.shift(),!this._currentTask)return;this._currentTask.alive&&this._alive.push(this._currentTask);const e=this._currentTask.exec().catch((e=>{}));e&&"function"==typeof e.finally&&e.finally((()=>{this._currentTask?.alive&&this._alive?.length>0&&(this._alive=this._alive.filter((e=>e&&e!==this._currentTask))),this._processTask()}))}}const qd="network",Yd="network_timeout",Qd="other",Xd="manifest",Jd="hls",Zd="demux";class eh extends Error{constructor(e,t,i,r,s){super(s||i?.message),this.errorType=e===Yd?qd:e,this.originError=i,this.ext=r,this.errorMessage=this.message}static create(e,t,i,r,s){return e instanceof eh?e:(e instanceof Error&&(i=e,e=""),e||(e=Qd),new eh(e,t,i,r,s))}static network(e){return new eh(e?.isTimeout?Yd:qd,null,e instanceof Error?e:null,{url:e?.url,response:e?.response,httpCode:e?.response?.status})}}const th=/^#(EXT[^:]*)(?::(.*))?$/,ih=/([^=]+)=(?:"([^"]*)"|([^",]*))(?:,|$)/g,rh=/^(?:[a-zA-Z0-9+\-.]+:)?\/\//,sh=/^((?:[a-zA-Z0-9+\-.]+:)?\/\/[^/?#]*)?([^?#]*\/)?/;function ah(e){const t=e.match(th);if(t&&t[1])return[t[1].replace("EXT-X-",""),t[2]]}function nh(e){const t={};let i=ih.exec(e);for(;i;)t[i[1]]=i[2]||i[3],i=ih.exec(e);return t}function oh(e,t){if(!t||!e||rh.test(e))return e;const i=sh.exec(t);return i?"/"===e[0]?i[1]+e:i[1]+i[2]+e:e}const lh={audio:[/^mp4a/,/^vorbis$/,/^opus$/,/^flac$/,/^[ae]c-3$/],video:[/^avc/,/^hev/,/^hvc/,/^vp0?[89]/,/^av1$/],text:[/^vtt$/,/^wvtt/,/^stpp/]};function dh(e,t){const i=lh[e];if(i&&t&&t.length)for(let e=0;e>8*(15-t)&255}}}class bh{static parse(e="",t){if(!e.includes("#EXTM3U"))throw new Error("Invalid m3u8 file");const i=function(e){return e.split(/[\r\n]/).map((e=>e.trim())).filter(Boolean)}(e);return bh.isMediaPlaylist(e)?function(e,t){const i=new gh;i.url=t;let r,s=new Ah,a=null,n=null,o=0,l=0,d=0,h=0,c=!1;for(;(r=e[h++])&&!c;){if("#"!==r[0]){s.sn=l,s.cc=d,s.url=oh(r,t),n&&(s.key=n.clone(l)),a&&(s.initSegment=a),i.segments.push(s),s=new Ah,l++;continue}const e=ah(r);if(!e)continue;const[h,u]=e;switch(h){case"VERSION":i.version=parseInt(u);break;case"PLAYLIST-TYPE":i.type=u?.toUpperCase();break;case"TARGETDURATION":i.targetDuration=parseFloat(u);break;case"ENDLIST":{const e=i.segments[i.segments.length-1];e&&(e.isLast=!0),i.live=!1,c=!0}break;case"MEDIA-SEQUENCE":l=i.startSN=parseInt(u);break;case"DISCONTINUITY-SEQUENCE":d=i.startCC=parseInt(u);break;case"DISCONTINUITY":d++;break;case"BYTERANGE":s.setByteRange(u,i.segments[i.segments.length-1]);break;case"EXTINF":{const[e,t]=u.split(",");s.start=o,s.duration=parseFloat(e),o+=s.duration,s.title=t}break;case"KEY":{const e=nh(u);if("NONE"===e.METHOD){n=null;break}if("AES-128"!==e.METHOD)throw new Error(`encrypt ${e.METHOD}/${e.KEYFORMAT} is not supported`);if(n=new vh,n.method=e.METHOD,n.url=/^blob:/.test(e.URI)?e.URI:oh(e.URI,t),n.keyFormat=e.KEYFORMAT||"identity",n.keyFormatVersions=e.KEYFORMATVERSIONS,e.IV){let t=e.IV.slice(2);t=(1&t.length?"0":"")+t,n.iv=new Uint8Array(t.length/2);for(let e=0,i=t.length/2;e{e.id=t})),a.length&&(a.forEach(((e,t)=>{e.id=t})),i.streams.forEach((e=>{e.audioGroup&&(e.audioStreams=a.filter((t=>t.group===e.audioGroup)))}))),n.length&&(n.forEach(((e,t)=>{e.id=t})),i.streams.forEach((e=>{e.subtitleGroup&&(e.subtitleStreams=n.filter((t=>t.group===e.subtitleGroup)))}))),i}(i,t)}static isMediaPlaylist(e){return e.includes("#EXTINF:")||e.includes("#EXT-X-TARGETDURATION:")}}class _h{constructor(e){this.hls=e,this.player=e.player,this.TAG_NAME="HlsManifestLoader",this._timer=null;const{retryCount:t,retryDelay:i,loadTimeout:r,fetchOptions:s}=this.hls.config;this._loader=new Kd({...s,responseType:"text",retry:t,retryDelay:i,timeout:r,onRetryError:this._onLoaderRetry},this.player),this._audioLoader=new Kd({...s,responseType:"text",retry:t,retryDelay:i,timeout:r,onRetryError:this._onLoaderRetry},this.player),this._subtitleLoader=new Kd({...s,responseType:"text",retry:t,retryDelay:i,timeout:r,onRetryError:this._onLoaderRetry},this.player)}async destroy(){await this.stopPoll(),this._audioLoader&&(this._audioLoader.destroy(),this._audioLoader=null),this._subtitleLoader&&(this._subtitleLoader.destroy(),this._subtitleLoader=null),this._loader&&(this._loader.destroy(),this._loader=null)}async load(e,t,i){this.player.debug.log(this.TAG_NAME,"load()",e,t,i);const r=[this._loader.load(e)];let s,a,n,o,l,d;t&&r.push(this._audioLoader.load(t)),i&&r.push(this._subtitleLoader.load(i));try{const[e,i,o]=await Promise.all(r);if(!e)return[];s=e.data,t?(a=i?.data,n=o?.data):n=i?.data}catch(e){throw eh.network(e)}try{if(o=bh.parse(s,e),!1===o?.live&&o.segments&&!o.segments.length)throw new Error("empty segments list");a&&(l=bh.parse(a,t)),n&&(d=bh.parse(n,i))}catch(e){throw new eh(Xd,Jd,e)}return o&&(o.isMaster?this.hls.emit(ar,{playlist:o}):this.hls.emit(nr,{playlist:o})),[o,l,d]}poll(e,t,i,r,s,a){clearTimeout(this._timer),a=a||3e3;let n=this.hls.config.pollRetryCount;const o=async()=>{clearTimeout(this._timer);try{const s=await this.load(e,t,i);if(!s[0])return;n=this.hls.config.pollRetryCount,r(s[0],s[1],s[2])}catch(e){n--,n<=0&&s(e)}this._timer=setTimeout(o,a)};this._timer=setTimeout(o,a)}stopPoll(){return clearTimeout(this._timer),this.cancel()}cancel(){return Promise.all([this._loader.cancel(),this._audioLoader.cancel()])}_onLoaderRetry=(e,t)=>{this.hls.emit(cr,{error:eh.network(e),retryTime:t})}}class Eh{_chunkSpeeds=[];_speeds=[];addRecord(e,t){e&&t&&(this._speeds.push(8e3*e/t),this._speeds=this._speeds.slice(-3))}addChunkRecord(e,t){e&&t&&(this._chunkSpeeds.push(8e3*e/t),this._chunkSpeeds=this._chunkSpeeds.slice(-100))}getAvgSpeed(){return this._chunkSpeeds.length||this._speeds.length?this._speeds.length?this._speeds.reduce(((e,t)=>e+t))/this._speeds.length:this._chunkSpeeds.reduce(((e,t)=>e+t))/this._chunkSpeeds.length:0}getLatestSpeed(){return this._chunkSpeeds.length||this._speeds.length?this._speeds.length?this._speeds[this._speeds.length-1]:this._chunkSpeeds[this._chunkSpeeds.length-1]:0}reset(){this._chunkSpeeds=[],this._speeds=[]}}class Sh{constructor(e){this.hls=e,this.player=e.player,this._bandwidthService=new Eh;const{retryCount:t,retryDelay:i,loadTimeout:r,fetchOptions:s}=this.hls.config;this._segmentLoader=new Kd({...s,responseType:"arraybuffer",retry:t,retryDelay:i,timeout:r,onRetryError:this._onLoaderRetry},this.player),this._audioSegmentLoader=new Kd({...s,responseType:"arraybuffer",retry:t,retryDelay:i,timeout:r,onRetryError:this._onLoaderRetry},this.player),this._keyLoader=new Kd({...s,responseType:"arraybuffer",retry:t,retryDelay:i,timeout:r,onRetryError:this._onLoaderRetry},this.player)}destroy(){this.reset(),this._keyLoader&&(this._keyLoader.destroy(),this._keyLoader=null),this._audioSegmentLoader&&(this._audioSegmentLoader.destroy(),this._audioSegmentLoader=null),this._segmentLoader&&(this._segmentLoader.destroy(),this._segmentLoader=null)}speedInfo(){return{speed:this._bandwidthService.getLatestSpeed(),avgSpeed:this._bandwidthService.getAvgSpeed()}}resetBandwidth(){this._bandwidthService.reset()}load(e,t,i,r=i){const s=[];return e&&(s[0]=this.loadVideoSegment(e,i)),t&&(s[1]=this.loadAudioSegment(t,r)),Promise.all(s)}loadVideoSegment(e,t){return this._loadSegment(this._segmentLoader,e,t)}loadAudioSegment(e,t){return this._loadSegment(this._audioSegmentLoader,e,t)}async _loadSegment(e,t,i){let r,s,a,n,o;const l=[];if(this.hls.emit(ur,{url:t.url}),l[0]=e.load(t.url),i&&t.initSegment){const i=t.initSegment.url;r=this._mapCache[i],r||(this.hls.emit(ur,{url:i}),l[1]=e.load(i).then((e=>{if(e){Object.keys(this._mapCache)>30&&(this._mapCache={}),r=this._mapCache[i]=e.data,this._emitOnLoaded(e,i)}})));const s=t.initSegment.key?.url;s&&(o=t.initSegment.key.iv,n=this._keyCache[s],n||(this.hls.emit(ur,{url:s}),l[2]=this._keyLoader.load(s).then((e=>{e&&(n=this._keyCache[s]=e.data,this._emitOnLoaded(e,s))}))))}const d=t.key?.url;d&&(a=t.key.iv,s=this._keyCache[d],s||(this.hls.emit(ur,{url:d}),l[3]=this._keyLoader.load(d).then((e=>{e&&(s=this._keyCache[d]=e.data,this._emitOnLoaded(e,d))}))));const[h]=await Promise.all(l);if(!h)return;const c=h.data;return this._emitOnLoaded(h,t.url),{data:c,map:r,key:s,mapKey:n,keyIv:a,mapKeyIv:o}}reset(){this.error=null,this._mapCache={},this._keyCache={},this._bandwidthService.reset()}async cancel(){await Promise.all([this._keyLoader.cancel(),this._segmentLoader.cancel(),this._audioSegmentLoader.cancel()])}_emitOnLoaded=(e,t)=>{const{data:i,response:r,option:s}=e,{firstByteTime:a,startTime:n,endTime:o,contentLength:l}=s||{},d=o-n;this._bandwidthService.addRecord(l||i.byteLength,d),this.hls.emit(pr,{time:d,byteLength:l,url:t}),this.hls.emit(fr,{url:t,elapsed:d||0}),this.hls.emit(hr,{url:t,responseUrl:r.url,elapsed:a-n}),this.hls.emit(mr,{headers:r.headers})};_onLoaderRetry=(e,t)=>{this.hls.emit(cr,{error:eh.network(e),retryTime:t})}}class wh{constructor(e,t,i){this.live=void 0,this.id=0,this.bitrate=0,this.width=0,this.height=0,this.name="",this.url="",this.audioCodec="",this.videoCodec="",this.textCodec="",this.startCC=0,this.endCC=0,this.startSN=0,this.endSN=-1,this.totalDuration=0,this.targetDuration=0,this.snDiff=null,this.segments=[],this.audioStreams=[],this.subtitleStreams=[],this.closedCaptions=[],this.currentAudioStream=null,this.currentSubtitleStream=null,this.TAG_NAME="HlsStream",this.update(e,t,i)}get lastSegment(){return this.segments.length?this.segments[this.segments.length-1]:null}get segmentDuration(){return this.targetDuration||this.segments[0]?.duration||0}get liveEdge(){return this.endTime}get endTime(){return this.lastSegment?.end||0}get currentSubtitleEndSn(){return this.currentSubtitleStream?.endSN||0}clearOldSegment(e,t){return this._clearSegments(e,t)}getAudioSegment(e){if(!e||!this.currentAudioStream)return;const t=e.sn-this.snDiff;return this.currentAudioStream.segments.find((e=>e.sn===t))}update(e,t){this.url=e.url,Array.isArray(e.segments)?(null!==this.live&&void 0!==this.live||(this.live=e.live),this._updateSegments(e,this),this.startCC=e.startCC,this.endCC=e.endCC,this.startSN=e.startSN,this.endSN=e.endSN||-1,this.totalDuration=e.totalDuration,this.targetDuration=e.targetDuration,this.live=e.live,t&&this.currentAudioStream&&Array.isArray(t.segments)&&(this._updateSegments(t,this.currentAudioStream),(null===this.snDiff||void 0===this.snDiff)&&e.segments.length&&t.segments.length&&(this.snDiff=e.segments[0].sn-t.segments[0].sn))):(this.id=e.id,this.bitrate=e.bitrate,this.width=e.width,this.height=e.height,this.name=e.name,this.audioCodec=e.audioCodec,this.videoCodec=e.videoCodec,this.textCodec=e.textCodec,this.audioStreams=e.audioStreams,this.subtitleStreams=e.subtitleStreams,!this.currentAudioStream&&this.audioStreams.length&&(this.currentAudioStream=this.audioStreams.find((e=>e.default))||this.audioStreams[0]),!this.currentSubtitleStream&&this.subtitleStreams.length&&(this.currentSubtitleStream=this.subtitleStreams.find((e=>e.default))||this.subtitleStreams[0]))}updateSubtitle(e){if(!(e&&this.currentSubtitleStream&&Array.isArray(e.segments)))return;const t=this._updateSegments(e,this.currentSubtitleStream),i=this.currentSubtitleStream.segments;return i.length>100&&(this.currentSubtitleStream.segments=i.slice(100)),t?t.map((e=>({sn:e.sn,url:e.url,duration:e.duration,start:e.start,end:e.end,lang:this.currentSubtitleStream.lang}))):void 0}switchSubtitle(e){const t=this.subtitleStreams.find((t=>t.lang===e)),i=this.currentSubtitleStream;t&&(this.currentSubtitleStream=t,i.segments=[])}_clearSegments(e,t){let i=0;const r=this.segments;for(let t=0,s=r.length;t=e){i=t;break}return i>t&&(i=t),i&&(this.segments=this.segments.slice(i),this.currentAudioStream&&(this.currentAudioStream.segments=this.currentAudioStream.segments.slice(i))),t-i}_updateSegments(e,t){const i=t.segments;if(this.live){const r=i[i.length-1],s=r?.sn||-1;if(se.sn===s)),n=a<0?e.segments:e.segments.slice(a+1);if(i.length&&n.length){let e=r.end;n.forEach((t=>{t.start=e,e=t.end}));const t=r?.cc||-1;t>n[0].cc&&n.forEach((e=>e.cc+=t))}return t.endSN=e.endSN,t.segments=i.concat(n),n}}else t.segments=e.segments}}class Th{constructor(e){this.hls=e,this.player=e.player,this.streams=[],this.currentStream=null,this.dvrWindow=0,this._segmentPointer=-1,this.TAG_NAME="HlsPlaylist"}destroy(){this.reset()}get lastSegment(){return this.currentStream?.lastSegment}get currentSegment(){return this.currentSegments?.[this._segmentPointer]}get nextSegment(){return this.currentSegments?.[this._segmentPointer+1]}get currentSegments(){return this.currentStream?.segments}get currentSubtitleEndSn(){return this.currentStream?.currentSubtitleEndSn}get liveEdge(){return this.currentStream?.liveEdge}get totalDuration(){return this.currentStream?.totalDuration||0}get seekRange(){const e=this.currentSegments;if(e&&e.length)return[e[0].start,e[e.length-1].end]}get isEmpty(){return!this.currentSegments?.length}get isLive(){return this.currentStream?.live}get hasSubtitle(){return!!this.currentStream?.currentSubtitleStream}getAudioSegment(e){return this.currentStream?.getAudioSegment(e)}moveSegmentPointer(e){null==e&&(e=this._segmentPointer+1),this._segmentPointer=fs(e,-1,this.currentSegments?.length),this.player.debug.log(this.TAG_NAME,`moveSegmentPointer() and param pos is ${e} and clamp result is ${this._segmentPointer}`)}reset(){this.streams=[],this.currentStream=null,this.dvrWindow=0,this._segmentPointer=-1}getSegmentByIndex(e){return this.currentSegments?.[e]}setNextSegmentByIndex(e=0){this._segmentPointer=e-1,this.player.debug.log(this.TAG_NAME,"setNextSegmentByIndex()",e,this._segmentPointer)}findSegmentIndexByTime(e){const t=this.currentSegments;if(t){for(let i,r=0,s=t.length;r=i.start&&ee.url)).forEach(((e,t)=>{this.streams[t]?this.streams[t].update(e):this.streams[t]=new wh(e)})),this.currentStream=this.streams[0];else if(Array.isArray(e.segments)){const r=this.currentStream;if(r){r.update(e,t,i);const s=r.updateSubtitle(i);s&&this.hls.emit(sr,{list:s})}else this.reset(),this.currentStream=this.streams[0]=new wh(e,t,i)}this.currentStream&&this.hls.isLive&&!this.dvrWindow&&(this.dvrWindow=this.currentSegments.reduce(((e,t)=>e+=t.duration),0))}switchSubtitle(e){this.currentStream?.switchSubtitle(e)}clearOldSegment(e=50){const t=this.currentStream;if(!this.dvrWindow||!t)return;const i=t.endTime-this.dvrWindow;if(i<=0)return void this.player.debug.log(this.TAG_NAME,`clearOldSegment() stream.endTime:${t.endTime}, this.dvrWindow:${this.dvrWindow} startTime <= 0`);const r=t.segments;if(r.length<=e)return void this.player.debug.log(this.TAG_NAME,`clearOldSegment() segments.length:${r.length} <= maxPlaylistSize:${e}`);const s=this._segmentPointer;this._segmentPointer=t.clearOldSegment(i,s),this.player.debug.log(this.TAG_NAME,"clearOldSegment() update _segmentPointer:",s,this._segmentPointer),this.player.debug.log(this.TAG_NAME,"currentSegments",this.currentSegments)}checkSegmentTrackChange(e,t){const i=this.findSegmentIndexByTime(e),r=this.getSegmentByIndex(i);if(!r)return;if(!r.hasAudio&&!r.hasVideo)return;if(2!==t&&r.hasAudio&&r.hasVideo)return r;if(r.end-e>.3)return;const s=this.getSegmentByIndex(i+1);return s&&(s.hasAudio||s.hasVideo)&&(s.hasAudio!==r.hasAudio||s.hasVideo!==r.hasVideo)?s:void 0}}class kh{constructor(e,t){this.hls=e,this.player=t;const i=window.crypto||window.msCrypto;this.subtle=i&&(i.subtle||i.webkitSubtle),this.externalDecryptor=null}decrypt(e,t){if(!e&&!t)return;const i=[];return e&&(i[0]=this._decryptSegment(e)),t&&(i[1]=this._decryptSegment(t)),Promise.all(i)}async _decryptSegment(e){let t=e.data;return e.key&&(t=await this._decryptData(e.data,e.key,e.keyIv)),e.map?$l(e.map,t):t}async _decryptData(e,t,i){if(this.externalDecryptor)return await this.externalDecryptor.decrypt(e,t,i);{if(!this.subtle)throw new Error("crypto is not defined");const r=await this.subtle.importKey("raw",t,{name:"AES-CBC"},!1,["encrypt","decrypt"]);return new Uint8Array(await this.subtle.decrypt({name:"AES-CBC",iv:i},r,e))}}}function Ch(e,t=0){return(e[t]<<8)+(e[t+1]||0)}function Rh(e,t=0){return(e[t]<<24>>>0)+(e[t+1]<<16)+(e[t+2]<<8)+(e[t+3]||0)}function Dh(e,t=0){const i=Math.pow(2,32);return Rh(e,t)*i+Rh(e,t+4)}const xh="aac",Lh="g7110a",Ih="g7110m",Ph="avc",Bh="hevc";class Mh{static FREQ=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350];static getFrameDuration(e,t=9e4){return 1024*t/e}static getRateIndexByRate(e){return Mh.FREQ.indexOf(e)}}function Uh(e,t,i,r,s,a){const n=[],o=s?.entries,l=t.entries,d=r.entries,h=i.entrySizes,c=a?.entries;let u,p,f;c&&(u={},c.forEach((e=>{u[e-1]=!0}))),o&&(p=[],o.forEach((({count:e,offset:t})=>{for(let i=0;i{for(let r=0;r=E&&(v++,E=l[v+1]?l[v+1].firstChunk-1:1/0),_+=l[v].samplesPerChunk)})),n}function Fh(e,t){return e.dataReferenceIndex=Ch(t,6),e.width=Ch(t,24),e.height=Ch(t,26),e.horizresolution=Rh(t,28),e.vertresolution=Rh(t,32),e.frameCount=Ch(t,40),e.depth=Ch(t,74),78}function Oh(e,t){return e.dataReferenceIndex=Ch(t,6),e.channelCount=Ch(t,16),e.sampleSize=Ch(t,18),e.sampleRate=Rh(t,24)/65536,28}function Nh(e,t,i){if(!e)return;if(e.size!==e.data.length)throw new Error(`box ${e.type} size !== data.length`);const r={start:e.start,size:e.size,headerSize:e.headerSize,type:e.type};return t&&(r.version=e.data[e.headerSize],r.flags=function(e,t=0){return(e[t]<<16)+(e[t+1]<<8)+(e[t+2]||0)}(e.data,e.headerSize+1),r.headerSize+=4),i(r,e.data.subarray(r.headerSize),r.start+r.headerSize),r}const Gh=function(...e){const t=[];return e.forEach((e=>{t.push(function(e,t,i){const r=String(i),s=0|t;let a=Math.ceil(s/r.length);const n=[],o=String(e);for(;a--;)n.push(r);return n.join("").substring(0,s-o.length)+o}(Number(e).toString(16),2,0))})),t[0]};class zh{static probe(e){return!!zh.findBox(e,["ftyp"])}static findBox(e,t,i=0){const r=[];if(!e)return r;let s=0,a="",n=0;for(;e.length>7;){if(s=Rh(e),a=String.fromCharCode.apply(null,e.subarray(4,8)),n=8,1===s?(s=Dh(e,8),n+=8):s||(s=e.length),!t[0]||a===t[0]){const o=e.subarray(0,s);if(!(t.length<2))return zh.findBox(o.subarray(n),t.slice(1),i+n);r.push({start:i,size:s,headerSize:n,type:a,data:o})}i+=s,e=e.subarray(s)}return r}static tfhd(e){return Nh(e,!0,((e,t)=>{e.trackId=Rh(t);let i=4;const r=1&e.flags,s=2&e.flags,a=8&e.flags,n=16&e.flags,o=32&e.flags;r&&(i+=4,e.baseDataOffset=Rh(t,i),i+=4),s&&(e.sampleDescriptionIndex=Rh(t,i),i+=4),a&&(e.defaultSampleDuration=Rh(t,i),i+=4),n&&(e.defaultSampleSize=Rh(t,i),i+=4),o&&(e.defaultSampleFlags=Rh(t,i))}))}static sidx(e){return Nh(e,!0,((e,t)=>{let i=0;e.reference_ID=Rh(t,i),i+=4,e.timescale=Rh(t,i),i+=4,0===e.version?(e.earliest_presentation_time=Rh(t,i),i+=4,e.first_offset=Rh(t,i),i+=4):(e.earliest_presentation_time=Dh(t,i),i+=8,e.first_offset=Dh(t,i),i+=8),i+=2,e.references=[];const r=Ch(t,i);i+=2;for(let s=0;s>31&1,r.referenced_size=2147483647&s,r.subsegment_duration=Rh(t,i),i+=4,s=Rh(t,i),i+=4,r.starts_with_SAP=s>>31&1,r.SAP_type=s>>28&7,r.SAP_delta_time=268435455&s}}))}static moov(e){return Nh(e,!1,((e,t,i)=>{e.mvhd=zh.mvhd(zh.findBox(t,["mvhd"],i)[0]),e.trak=zh.findBox(t,["trak"],i).map((e=>zh.trak(e))),e.pssh=zh.pssh(zh.findBox(t,["pssh"],i)[0])}))}static mvhd(e){return Nh(e,!0,((e,t)=>{let i=0;1===e.version?(e.timescale=Rh(t,16),e.duration=Dh(t,20),i+=28):(e.timescale=Rh(t,8),e.duration=Rh(t,12),i+=16),e.nextTrackId=Rh(t,i+76)}))}static trak(e){return Nh(e,!1,((e,t,i)=>{e.tkhd=zh.tkhd(zh.findBox(t,["tkhd"],i)[0]),e.mdia=zh.mdia(zh.findBox(t,["mdia"],i)[0])}))}static tkhd(e){return Nh(e,!0,((e,t)=>{let i=0;1===e.version?(e.trackId=Rh(t,16),e.duration=Dh(t,24),i+=32):(e.trackId=Rh(t,8),e.duration=Rh(t,16),i+=20),e.width=Rh(t,i+52),e.height=Rh(t,i+56)}))}static mdia(e){return Nh(e,!1,((e,t,i)=>{e.mdhd=zh.mdhd(zh.findBox(t,["mdhd"],i)[0]),e.hdlr=zh.hdlr(zh.findBox(t,["hdlr"],i)[0]),e.minf=zh.minf(zh.findBox(t,["minf"],i)[0])}))}static mdhd(e){return Nh(e,!0,((e,t)=>{let i=0;1===e.version?(e.timescale=Rh(t,16),e.duration=Dh(t,20),i+=28):(e.timescale=Rh(t,8),e.duration=Rh(t,12),i+=16);const r=Ch(t,i);e.language=String.fromCharCode(96+(r>>10&31),96+(r>>5&31),96+(31&r))}))}static hdlr(e){return Nh(e,!0,((e,t)=>{0===e.version&&(e.handlerType=String.fromCharCode.apply(null,t.subarray(4,8)))}))}static minf(e){return Nh(e,!1,((e,t,i)=>{e.vmhd=zh.vmhd(zh.findBox(t,["vmhd"],i)[0]),e.smhd=zh.smhd(zh.findBox(t,["smhd"],i)[0]),e.stbl=zh.stbl(zh.findBox(t,["stbl"],i)[0])}))}static vmhd(e){return Nh(e,!0,((e,t)=>{e.graphicsmode=Ch(t),e.opcolor=[Ch(t,2),Ch(t,4),Ch(t,6)]}))}static smhd(e){return Nh(e,!0,((e,t)=>{e.balance=Ch(t)}))}static stbl(e){return Nh(e,!1,((e,t,i)=>{e.stsd=zh.stsd(zh.findBox(t,["stsd"],i)[0]),e.stts=zh.stts(zh.findBox(t,["stts"],i)[0]),e.ctts=zh.ctts(zh.findBox(t,["ctts"],i)[0]),e.stsc=zh.stsc(zh.findBox(t,["stsc"],i)[0]),e.stsz=zh.stsz(zh.findBox(t,["stsz"],i)[0]),e.stco=zh.stco(zh.findBox(t,["stco"],i)[0]),e.stco||(e.co64=zh.co64(zh.findBox(t,["co64"],i)[0]),e.stco=e.co64);const r=e.stsd.entries[0]?.sinf?.schi?.tenc.default_IV_size;e.stss=zh.stss(zh.findBox(t,["stss"],i)[0]),e.senc=zh.senc(zh.findBox(t,["senc"],i)[0],r)}))}static senc(e,t=8){return Nh(e,!0,((e,i)=>{let r=0;const s=Rh(i,r);r+=4,e.samples=[];for(let a=0;a{const i=[],r=[];let s=0;for(let e=0;e<16;e++)r.push(Gh(t[s+e]));if(s+=16,e.version>0){const e=Rh(t,s);s+=4;for(let r=0;r<(""+e).length;r++)for(let e=0;e<16;e++){const e=t[s];s+=1,i.push(Gh(e))}}const a=Rh(t,s);e.data_size=a,s+=4,e.kid=i,e.system_id=r,e.buffer=t}))}static stsd(e){return Nh(e,!0,((e,t,i)=>{e.entryCount=Rh(t),e.entries=zh.findBox(t.subarray(4),[],i+4).map((e=>{switch(e.type){case"avc1":case"avc2":case"avc3":case"avc4":return zh.avc1(e);case"hvc1":case"hev1":return zh.hvc1(e);case"mp4a":return zh.mp4a(e);case"alaw":case"ulaw":return zh.alaw(e);case"enca":return Nh(e,!1,((e,t,i)=>{e.channelCount=Ch(t,16),e.samplesize=Ch(t,18),e.sampleRate=Rh(t,24)/65536,t=t.subarray(28),e.sinf=zh.sinf(zh.findBox(t,["sinf"],i)[0]),e.esds=zh.esds(zh.findBox(t,["esds"],i)[0])}));case"encv":return Nh(e,!1,((e,t,i)=>{e.width=Ch(t,24),e.height=Ch(t,26),e.horizresolution=Rh(t,28),e.vertresolution=Rh(t,32),t=t.subarray(78),e.sinf=zh.sinf(zh.findBox(t,["sinf"],i)[0]),e.avcC=zh.avcC(zh.findBox(t,["avcC"],i)[0]),e.hvcC=zh.hvcC(zh.findBox(t,["hvcC"],i)[0]),e.pasp=zh.pasp(zh.findBox(t,["pasp"],i)[0])}))}})).filter(Boolean)}))}static tenc(e){return Nh(e,!1,((e,t)=>{let i=6;e.default_IsEncrypted=t[i],i+=1,e.default_IV_size=t[i],i+=1,e.default_KID=[];for(let r=0;r<16;r++)e.default_KID.push(Gh(t[i])),i+=1}))}static schi(e){return Nh(e,!1,((e,t,i)=>{e.tenc=zh.tenc(zh.findBox(t,["tenc"],i)[0])}))}static sinf(e){return Nh(e,!1,((e,t,i)=>{e.schi=zh.schi(zh.findBox(t,["schi"],i)[0]),e.frma=zh.frma(zh.findBox(t,["frma"],i)[0])}))}static frma(e){return Nh(e,!1,((e,t)=>{e.data_format="";for(let i=0;i<4;i++)e.data_format+=String.fromCharCode(t[i])}))}static avc1(e){return Nh(e,!1,((e,t,i)=>{const r=Fh(e,t),s=t.subarray(r);i+=r,e.avcC=zh.avcC(zh.findBox(s,["avcC"],i)[0]),e.pasp=zh.pasp(zh.findBox(s,["pasp"],i)[0])}))}static avcC(e){return Nh(e,!1,((e,t)=>{e.configurationVersion=t[0],e.AVCProfileIndication=t[1],e.profileCompatibility=t[2],e.AVCLevelIndication=t[3],e.codec=function(e){let t,i="avc1.";for(let r=0;r<3;r++)t=e[r].toString(16),t.length<2&&(t=`0${t}`),i+=t;return i}([t[1],t[2],t[3]]),e.lengthSizeMinusOne=3&t[4],e.spsLength=31&t[5],e.sps=[];let i=6;for(let r=0;r{const r=Fh(e,t),s=t.subarray(r);i+=r,e.hvcC=zh.hvcC(zh.findBox(s,["hvcC"],i)[0]),e.pasp=zh.pasp(zh.findBox(s,["pasp"],i)[0])}))}static hvcC(e){return Nh(e,!1,((t,i)=>{t.data=e.data,t.codec="hev1.1.6.L93.B0",t.configurationVersion=i[0];const r=i[1];t.generalProfileSpace=r>>6,t.generalTierFlag=(32&r)>>5,t.generalProfileIdc=31&r,t.generalProfileCompatibility=Rh(i,2),t.generalConstraintIndicatorFlags=i.subarray(6,12),t.generalLevelIdc=i[12],t.avgFrameRate=Ch(i,19),t.numOfArrays=i[22],t.vps=[],t.sps=[],t.pps=[];let s=23,a=0,n=0,o=0;for(let e=0;e{e.hSpacing=Rh(t),e.vSpacing=Rh(t,4)}))}static mp4a(e){return Nh(e,!1,((e,t,i)=>{const r=Oh(e,t);e.esds=zh.esds(zh.findBox(t.subarray(r),["esds"],i+r)[0])}))}static esds(e){return Nh(e,!0,((e,t)=>{e.codec="mp4a.";let i=0,r=0,s=0,a=0;for(;t.length;){for(i=0,a=t[i],r=t[i+1],i+=2;128&r;)s=(127&r)<<7,r=t[i],i+=1;if(s+=127&r,3===a)t=t.subarray(i+3);else{if(4!==a){if(5===a){const r=e.config=t.subarray(i,i+s);let a=(248&r[0])>>3;return 31===a&&r.length>=2&&(a=32+((7&r[0])<<3)+((224&r[1])>>5)),e.objectType=a,e.codec+=a.toString(16),void("."===e.codec[e.codec.length-1]&&(e.codec=e.codec.substring(0,e.codec.length-1)))}return void("."===e.codec[e.codec.length-1]&&(e.codec=e.codec.substring(0,e.codec.length-1)))}e.codec+=(t[i].toString(16)+".").padStart(3,"0"),t=t.subarray(i+13)}}}))}static alaw(e){return Nh(e,!1,((e,t)=>{Oh(e,t)}))}static stts(e){return Nh(e,!0,((e,t)=>{const i=Rh(t),r=[];let s=4;for(let e=0;e{const i=Rh(t),r=[];let s=4;if(1===e.version)for(let e=0;e{const i=Rh(t),r=[];let s=4;for(let e=0;e{const i=Rh(t),r=Rh(t,4),s=[];if(!i){let e=8;for(let i=0;i{const i=Rh(t),r=[];let s=4;for(let e=0;e{const i=Rh(t),r=[];let s=4;for(let e=0;e{const i=Rh(t),r=[];let s=4;for(let e=0;e{e.mfhd=zh.mfhd(zh.findBox(t,["mfhd"],i)[0]),e.traf=zh.findBox(t,["traf"],i).map((e=>zh.traf(e)))}))}static mfhd(e){return Nh(e,!0,((e,t)=>{e.sequenceNumber=Rh(t)}))}static traf(e){return Nh(e,!1,((e,t,i)=>{e.tfhd=zh.tfhd(zh.findBox(t,["tfhd"],i)[0]),e.tfdt=zh.tfdt(zh.findBox(t,["tfdt"],i)[0]),e.trun=zh.trun(zh.findBox(t,["trun"],i)[0])}))}static trun(e){return Nh(e,!0,((e,t)=>{const{version:i,flags:r}=e,s=t.length,a=e.sampleCount=Rh(t);let n=4;if(s>n&&1&r&&(e.dataOffset=-(1+~Rh(t,n)),n+=4),s>n&&4&r&&(e.firstSampleFlags=Rh(t,n),n+=4),e.samples=[],s>n){let s;for(let o=0;o{1===e.version?e.baseMediaDecodeTime=Dh(t):e.baseMediaDecodeTime=Rh(t)}))}static probe(e){return!!zh.findBox(e,["ftyp"])}static parseSampleFlags(e){return{isLeading:(12&e[0])>>>2,dependsOn:3&e[0],isDependedOn:(192&e[1])>>>6,hasRedundancy:(48&e[1])>>>4,paddingValue:(14&e[1])>>>1,isNonSyncSample:1&e[1],degradationPriority:e[2]<<8|e[3]}}static moovToTrack(e,t,i){const r=e.trak;if(!r||!r.length)return;const s=r.find((e=>"vide"===e.mdia?.hdlr?.handlerType)),a=r.find((e=>"soun"===e.mdia?.hdlr?.handlerType));if(s&&t){const i=t,r=s.tkhd?.trackId;null!=r&&(i.id=s.tkhd.trackId),i.tkhdDuration=s.tkhd.duration,i.mvhdDurtion=e.mvhd.duration,i.mvhdTimecale=e.mvhd.timescale,i.timescale=i.formatTimescale=s.mdia.mdhd.timescale,i.duration=s.mdia.mdhd.duration||i.mvhdDurtion/i.mvhdTimecale*i.timescale;const a=s.mdia.minf.stbl.stsd.entries[0];if(i.width=a.width,i.height=a.height,a.pasp&&(i.sarRatio=[a.pasp.hSpacing,a.pasp.vSpacing]),a.hvcC)i.codecType=Bh,i.codec=a.hvcC.codec,i.vps=a.hvcC.vps,i.sps=a.hvcC.sps,i.pps=a.hvcC.pps,i.hvcC=a.hvcC.data;else{if(!a.avcC)throw new Error("unknown video stsd entry");i.codecType=Ph,i.codec=a.avcC.codec,i.sps=a.avcC.sps,i.pps=a.avcC.pps}i.present=!0,i.ext={},i.ext.stss=s.mdia?.minf?.stbl?.stss,i.ext.ctts=s.mdia?.minf?.stbl?.ctts,a&&"encv"===a.type&&(i.isVideoEncryption=!0,a.default_KID=a.sinf?.schi?.tenc.default_KID,a.default_IsEncrypted=a.sinf?.schi?.tenc.default_IsEncrypted,a.default_IV_size=a.sinf?.schi?.tenc.default_IV_size,i.videoSenc=s.mdia.minf.stbl.senc&&s.mdia.minf.stbl.senc.samples,a.data_format=a.sinf?.frma?.data_format,i.useEME=e.useEME,i.kidValue=e.kidValue,i.pssh=e.pssh,i.encv=a)}if(a&&i){const t=i,r=a.tkhd?.trackId;null!=r&&(t.id=a.tkhd.trackId),t.tkhdDuration=a.tkhd.duration,t.mvhdDurtion=e.mvhd.duration,t.mvhdTimecale=e.mvhd.timescale,t.timescale=t.formatTimescale=a.mdia.mdhd.timescale,t.duration=a.mdia.mdhd.duration||t.mvhdDurtion/t.mvhdTimecale*t.timescale;const s=a.mdia.minf.stbl.stsd.entries[0];switch(t.sampleSize=s.sampleSize,t.sampleRate=s.sampleRate,t.channelCount=s.channelCount,t.present=!0,s.type){case"alaw":t.codecType=t.codec=Lh,t.sampleRate=8e3;break;case"ulaw":t.codecType=t.codec=Ih,t.sampleRate=8e3;break;default:t.codecType=xh,t.sampleDuration=Mh.getFrameDuration(t.sampleRate,t.timescale),t.sampleRateIndex=Mh.getRateIndexByRate(t.sampleRate),t.objectType=s.esds?.objectType||2,s.esds&&(t.config=Array.from(s.esds.config)),t.codec=s.esds?.codec||"mp4a.40.2"}t.sampleDuration=Mh.getFrameDuration(t.sampleRate,t.timescale),t.objectType=s.esds?.objectType||2,s.esds&&(s.esds.config?t.config=Array.from(s.esds.config):console.warn("esds config is null")),t.codec=s.esds?.codec||"mp4a.40.2",t.sampleRateIndex=Mh.getRateIndexByRate(t.sampleRate),t.ext={},t.ext.stss=a.mdia?.minf?.stbl?.stss,t.ext.ctts=a.mdia?.minf?.stbl?.ctts,t.present=!0,s&&"enca"===s.type&&(t.isAudioEncryption=!0,s.data_format=s.sinf?.frma?.data_format,s.default_KID=s.sinf?.schi?.tenc.default_KID,s.default_IsEncrypted=s.sinf?.schi?.tenc.default_IsEncrypted,s.default_IV_size=s.sinf?.schi?.tenc.default_IV_size,t.audioSenc=a.mdia.minf.stbl.senc&&a.mdia.minf.stbl.senc.samples,t.useEME=e.useEME,t.kidValue=e.kidValue,t.enca=s)}if(i&&(i.isVideoEncryption=!!t&&t.isVideoEncryption),t&&(t.isAudioEncryption=!!i&&i.isAudioEncryption),t?.encv||i?.enca){const e=t?.encv?.default_KID,r=i?.enca?.default_KID,s=e||r?(e||r).join(""):null;t&&(t.kid=s),i&&(i.kid=s)}return t&&(t.flags=3841),i&&(i.flags=1793),{videoTrack:t,audioTrack:i}}static evaluateDefaultDuration(e,t,i){const r=t?.samples?.length;if(!r)return 1024;return 1024*r/t.timescale*e.timescale/i}static moofToSamples(e,t,i){const r={};return e.mfhd&&(t&&(t.sequenceNumber=e.mfhd.sequenceNumber),i&&(i.sequenceNumber=e.mfhd.sequenceNumber)),e.traf.forEach((({tfhd:e,tfdt:s,trun:a})=>{if(!e||!a)return;s&&(t&&t.id===e.trackId&&(t.baseMediaDecodeTime=s.baseMediaDecodeTime),i&&i.id===e.trackId&&(i.baseMediaDecodeTime=s.baseMediaDecodeTime));const n=e.defaultSampleSize||0,o=e.defaultSampleDuration||zh.evaluateDefaultDuration(t,i,a.samples.length||a.sampleCount);let l=a.dataOffset||0,d=0,h=-1;if(!a.samples.length&&a.sampleCount){r[e.trackId]=[];for(let t=0;t((e={offset:l,dts:d,pts:d+(e.cts||0),duration:e.duration||o,size:e.size||n,gopId:h,keyframe:0===t||null!==e.flags&&void 0!==e.flags&&(65536&e.flags)>>>0!=65536}).keyframe&&(h++,e.gopId=h),d+=e.duration,l+=e.size,e)))})),r}static moovToSamples(e){const t=e.trak;if(!t||!t.length)return;const i=t.find((e=>"vide"===e.mdia?.hdlr?.handlerType)),r=t.find((e=>"soun"===e.mdia?.hdlr?.handlerType));if(!i&&!r)return;let s,a;if(i){const e=i.mdia?.minf?.stbl;if(!e)return;const{stts:t,stsc:r,stsz:a,stco:n,stss:o,ctts:l}=e;if(!(t&&r&&a&&n&&o))return;s=Uh(t,r,a,n,l,o)}if(r){const e=r.mdia?.minf?.stbl;if(!e)return;const t=r.mdia.mdhd?.timescale,{stts:i,stsc:s,stsz:n,stco:o}=e;if(!(t&&i&&s&&n&&o))return;a=Uh(i,s,n,o)}return{videoSamples:s,audioSamples:a}}}class Vh extends Dl{constructor(e){super(e),this.player=e,this.TAG_NAME="HlsFmp4Loader",this.tempSampleListInfo={},this.isInitVideo=!1,this.isInitAudio=!1,this.videoTrack={id:1,samples:[],sps:[],pps:[],vps:[],codec:""},this.audioTrack={id:2,samples:[],sampleRate:0,channelCount:0,codec:"",codecType:""},this.workerClearTimeout=null,this.workerUrl=null,this.loopWorker=null,this._hasCalcFps=!1,this.player.isUseMSE()||this._initLoopWorker(),e.debug.log(this.TAG_NAME,"init")}destroy(){super.destroy(),this.workerUrl&&(URL.revokeObjectURL(this.workerUrl),this.workerUrl=null),this.workerClearTimeout&&(clearTimeout(this.workerClearTimeout),this.workerClearTimeout=null),this.loopWorker&&(this.loopWorker.postMessage({cmd:"destroy"}),this.loopWorker.terminate(),this.loopWorker=null),this._hasCalcFps=!1,this.videoTrack=null,this.audioTrack=null,this.isInitVideo=!1,this.isInitAudio=!1,this.player.debug.log(this.TAG_NAME,"destroy")}demux(e,t){let i=this.audioTrack,r=this.videoTrack;if(this.checkInitAudio(),this.checkInitVideo(),i.samples=[],r.samples=[],t){if(this.player.updateStats({abps:t.byteLength}),ba(this.isInitAudio)){const e=zh.findBox(t,["moov"])[0];if(!e)return void this.player.debug.error(this.TAG_NAME,"cannot found moov box");zh.moovToTrack(zh.moov(e),null,i),this.checkInitAudio()&&(this.player.debug.log(this.TAG_NAME,"audioData audio init success"),this._sendAccADTSHeader(i))}const e=zh.findBox(t,["moof"])[0];if(e){const r=zh.moofToSamples(zh.moof(e),null,i)[i.id],s=i.baseMediaDecodeTime;if(r){const a=e.start;r.map((e=>{e.offset+=a;const r=t.subarray(e.offset,e.offset+e.size),n=e.dts+s,o=new Uint8Array(r.length+2);o.set([175,1],0),o.set(r,2),i.samples.push({type:Fe,pts:n,dts:n,payload:o,duration:e.duration,size:o.byteLength})}))}}}if(e){if(this.player.updateStats({vbps:e.byteLength}),ba(this.isInitVideo)&&ba(this.isInitAudio)){const t=zh.findBox(e,["moov"])[0];if(!t)throw new Error("cannot found moov box");if(zh.moovToTrack(zh.moov(t),r,i),ba(this.isInitAudio)&&this.checkInitAudio()&&(this.player.debug.log(this.TAG_NAME,"videoData audio init success",i),this._sendAccADTSHeader(i)),this.checkInitVideo()){this.player.debug.log(this.TAG_NAME,"video init success");let e=null;r.codecType===Ti?r.sps.length&&r.vps.length&&r.pps.length&&(e=$n({sps:r.sps[0],pps:r.pps[0],vps:r.vps[0]})):r.sps.length&&r.pps.length&&(e=In({sps:r.sps[0],pps:r.pps[0]})),e&&(this.player.debug.log(this.TAG_NAME,"seqHeader"),this._doDecodeByHls(e,Oe,0,!0,0))}}const t=zh.findBox(e,["moof"])[0];if(t){const s=zh.moofToSamples(zh.moof(t),r,i),a=r.baseMediaDecodeTime,n=i.baseMediaDecodeTime,o=t.start;Object.keys(s).forEach((t=>{r.id==t?s[t].map((t=>{t.offset+=o;const i={type:Oe,pts:(t.pts||t.dts)+a,dts:t.dts+a,units:[],payload:null,isIFrame:!1};i.duration=t.duration,i.gopId=t.gopId,t.keyframe&&(i.isIFrame=!0);const s=e.subarray(t.offset,t.offset+t.size);i.payload=s,r.samples.push(i)})):i.id==t&&s[t].map((t=>{t.offset+=o;const r=e.subarray(t.offset,t.offset+t.size),s=t.dts+n,a=new Uint8Array(r.length+2);a.set([175,1],0),a.set(r,2),i.samples.push({type:Fe,pts:s,dts:s,payload:a,duration:t.duration,size:a.byteLength})}))}))}}const s=r.samples.concat(i.samples);s.sort(((e,t)=>e.dts-t.dts)),s.forEach((e=>{const t=new Uint8Array(e.payload);delete e.payload,this.player.isUseMSE()?e.type===Oe?this._doDecodeVideo({...e,payload:t}):e.type===Fe&&this._doDecodeAudio({...e,payload:t}):this.loopWorker.postMessage({...e,payload:t,cmd:"sample"},[t.buffer])})),ba(this._hasCalcFps)&&(this._hasCalcFps=!0,this._calcDecodeFps(s))}checkInitAudio(){return this.isInitAudio=!!(this.audioTrack.sampleRate&&this.audioTrack.channelCount&&this.audioTrack.codec&&"aac"===this.audioTrack.codecType),this.isInitAudio}checkInitVideo(){return this.isInitVideo=!!(this.videoTrack.pps.length&&this.videoTrack.sps.length&&this.videoTrack.codec),this.isInitVideo}_sendAccADTSHeader(e){const t=Yr({profile:e.objectType,sampleRate:e.sampleRateIndex,channel:e.channelCount});this._doDecodeByHls(t,Fe,0,!0,0)}_calcDecodeFps(e){const t=ua(e.map((e=>({ts:e.dts||e.pts,type:e.type}))),Oe);t&&(this._basefps=t,this._postMessageToLoopWorker("updateBaseFps",{baseFps:this._basefps}),this.player.debug.log(this.TAG_NAME,`_calcDecodeFps() video fps is ${t}, update base fps is ${this._basefps}`))}_initLoopWorker(){this.player.debug.log(this.TAG_NAME,"_initLoopWorker()");const e=wa(function(){const e=1,t=2;let i=new class{constructor(){this.baseFps=0,this.fpsInterval=null,this.preLoopTimestamp=null,this.startBpsTime=null,this.allSampleList=[]}destroy(){this._clearInterval(),this.baseFps=0,this.allSampleList=[],this.preLoopTimestamp=null,this.startBpsTime=null}updateBaseFps(e){this.baseFps=e,this._clearInterval(),this._startInterval()}pushSample(e){delete e.cmd,this.allSampleList.push(e)}_startInterval(){const e=Math.ceil(1e3/this.baseFps);this.fpsInterval=setInterval((()=>{let t=(new Date).getTime();this.preLoopTimestamp||(this.preLoopTimestamp=t),this.startBpsTime||(this.startBpsTime=t);const i=t-this.preLoopTimestamp;if(i>2*e&&console.warn(`EasyPro:[HlsFmp4Loader LoopWorker] loop interval is ${i}ms, more than ${e} * 2ms`),this._loop(),this.preLoopTimestamp=(new Date).getTime(),this.startBpsTime){t-this.startBpsTime>=1e3&&(this._calcSampleList(),this.startBpsTime=t)}}),e)}_clearInterval(){this.fpsInterval&&(clearInterval(this.fpsInterval),this.fpsInterval=null)}_calcSampleList(){const i={buferredDuration:0,allListLength:this.allSampleList.length,audioListLength:0,videoListLength:0};this.allSampleList.forEach((r=>{r.type===t?(i.videoListLength++,r.duration&&(i.buferredDuration+=r.duration)):r.type===e&&i.audioListLength++})),postMessage({cmd:"sampleListInfo",...i})}_loop(){let i=null;if(this.allSampleList.length)if(i=this.allSampleList.shift(),i.type===t){postMessage({cmd:"decodeVideo",...i},[i.payload.buffer]);let t=this.allSampleList[0];for(;t&&t.type===e;)i=this.allSampleList.shift(),postMessage({cmd:"decodeAudio",...i},[i.payload.buffer]),t=this.allSampleList[0]}else i.type===e&&(postMessage({cmd:"decodeAudio",...i},[i.payload.buffer]),this.allSampleList.length&&this.allSampleList[0].type===t&&(i=this.allSampleList.shift(),postMessage({cmd:"decodeVideo",...i},[i.payload.buffer])))}};self.onmessage=e=>{const t=e.data;switch(t.cmd){case"updateBaseFps":i.updateBaseFps(t.baseFps);break;case"sample":i.pushSample(t);break;case"destroy":i.destroy(),i=null}}}.toString()),t=new Blob([e],{type:"text/javascript"}),i=URL.createObjectURL(t);let r=new Worker(i);this.workerUrl=i,this.workerClearTimeout=setTimeout((()=>{window.URL.revokeObjectURL(this.workerUrl),this.workerUrl=null,this.workerClearTimeout=null}),ie),r.onmessage=e=>{const t=e.data;switch(t.cmd){case"decodeVideo":this._doDecodeVideo(t);break;case"decodeAudio":this._doDecodeAudio(t);break;case"sampleListInfo":this.tempSampleListInfo=t}},this.loopWorker=r}_postMessageToLoopWorker(e,t){this.player.isUseMSE()||(this.loopWorker?this.loopWorker.postMessage({cmd:e,...t}):this.player.debug.warn(this.TAG_NAME,"loop worker is not init, can not post message"))}_doDecodeAudio(e){const t=new Uint8Array(e.payload);this._doDecodeByHls(t,Fe,e.dts,!1,0)}_doDecodeVideo(e){const t=new Uint8Array(e.payload);let i=null;i=e.isHevc?Kn(t,e.isIFrame):Pn(t,e.isIFrame),this.player.updateStats({dts:e.dts});const r=e.pts-e.dts;this._doDecodeByHls(i,Oe,e.dts,e.isIFrame,r)}getBuferredDuration(){return this.tempSampleListInfo.buferredDuration||0}getSampleListLength(){return this.tempSampleListInfo.allListLength||0}getSampleAudioListLength(){return this.tempSampleListInfo.audioListLength||0}getSampleVideoListLength(){return this.tempSampleListInfo.videoListLength||0}}class Hh{constructor(e,t){this.hls=e,this.player=this.hls.player,this.isMP4=t,this._initSegmentId="",this.TAG_NAME="HlsTransmuxer",this._demuxer=t?new Vh(this.hls.player):new Kl(this.hls.player),this.player.debug.log(this.TAG_NAME,`init and isMP4 is ${t}`)}destroy(){this._demuxer&&(this._demuxer.destroy(),this._demuxer=null)}transmux(e,t,i,r,s,a){this.player.debug.log(this.TAG_NAME,`transmux videoChunk:${e&&e.byteLength}, audioChunk:${t&&t.byteLength}, discontinuity:${i}, contiguous:${r}, startTime:${s}, needInit:${a}`);const n=this._demuxer;try{this.isMP4?n.demux(e,t):n.demuxAndFix($l(e,t),i,r,s)}catch(e){throw new eh(Zd,Jd,e)}}}class Wh{constructor(e){this.hls=e,this.player=e.player,this._decryptor=new kh(this.hls,this.player),this._transmuxer=null,this._mse=null,this._softVideo=null,this._sourceCreated=!1,this._needInitSegment=!0,this._directAppend=!1,this.TAG_NAME="HlsBufferService"}async destroy(){this._softVideo=null,this._transmuxer&&(this._transmuxer.destroy(),this._transmuxer=null)}get baseDts(){return this._transmuxer?._demuxer?._baseDts}get nbSb(){return 0}async updateDuration(e){this.player.debug.log(this.TAG_NAME,"updateDuration()",e)}getBuferredDuration(){return this._transmuxer?._demuxer?.getBuferredDuration()}getBufferedSegments(){return this._transmuxer?._demuxer?.getSampleListLength()}getBufferedAudioSegments(){return this._transmuxer?._demuxer?.getSampleAudioListLength()}getBufferedVideoSegments(){return this._transmuxer?._demuxer?.getSampleVideoListLength()}createSource(e,t,i,r){if(this._sourceCreated)return;const s=e||t;s&&(Kl.probe(s)?this._transmuxer||(this._transmuxer=new Hh(this.hls,!1)):zh.probe(s)?this._transmuxer||(this._transmuxer=new Hh(this.hls,!0)):this.player.debug.error(this.TAG_NAME,"createSource error: chunk is not ts"))}async appendBuffer(e,t,i,r,s,a,n){if(i?.length||r?.length)return this._needInitSegment,this._transmuxer.transmux(i,r,s,a,n,this._needInitSegment||s),!0}async clearAllBuffer(){this.player.debug.log(this.TAG_NAME,"clearAllBuffer")}decryptBuffer(e,t){return this._decryptor.decrypt(e,t)}async reset(e=!1){this._transmuxer=null,this._needInitSegment=!0,this._directAppend=!1}async endOfStream(){this._softVideo&&this._softVideo.endOfStream()}async setLiveSeekableRange(e,t){}seamlessSwitch(){this._needInitSegment=!0}}class jh{constructor(e){this.emitter=e,this._seiSet=new Set,e.on(yr,(e=>{e&&this._seiSet.add(e)}))}throw(e){if(null==e||!this._seiSet.size)return;const t=e-.2,i=e+.2,r=[];this._seiSet.forEach((e=>{e.time>=t&&e.time<=i&&r.push(e)})),r.forEach((e=>{this._seiSet.delete(e),this.emitter.emit(gr,e)}))}reset(){this._seiSet.clear()}}class $h{constructor(e){this._timescale=e,this.encodeType="",this.audioCodec="",this.videoCodec="",this.domain="",this.fps=0,this.bitrate=0,this.width=0,this.height=0,this.samplerate=0,this.channelCount=0,this.gop=0,this._bitsAccumulateSize=0,this._bitsAccumulateDuration=0}getStats(){return{encodeType:this.encodeType,audioCodec:this.audioCodec,videoCodec:this.videoCodec,domain:this.domain,fps:this.fps,bitrate:this.bitrate,width:this.width,height:this.height,samplerate:this.samplerate,channelCount:this.channelCount,gop:this.gop}}setEncodeType(e){this.encodeType=e}setFpsFromScriptData({data:e}){const t=e?.onMetaData?.framerate;t&&t>0&&t<100&&(this.fps=t)}setVideoMeta(e){if(this.width=e.width,this.height=e.height,this.videoCodec=e.codec,this.encodeType=e.codecType,e.fpsNum&&e.fpsDen){const t=e.fpsNum/e.fpsDen;t>0&&t<100&&(this.fps=t)}}setAudioMeta(e){this.audioCodec=e.codec,this.samplerate=e.sampleRate,this.channelCount=e.channelCount}setDomain(e){this.domain=e.split("/").slice(2,3)[0]}updateBitrate(e){if((!this.fps||this.fps>=100)&&e.length){const t=e.reduce(((e,t)=>e+t.duration),0)/e.length;this.fps=Math.round(this._timescale/t)}e.forEach((e=>{1===e.gopId&&this.gop++,this._bitsAccumulateDuration+=e.duration/(this._timescale/1e3),this._bitsAccumulateSize+=e.units.reduce(((e,t)=>e+t.length),0),this._bitsAccumulateDuration>=1e3&&(this.bitrate=8*this._bitsAccumulateSize,this._bitsAccumulateDuration=0,this._bitsAccumulateSize=0)}))}}class Kh{_core=null;_samples=[];constructor(e,t=1e3){this._core=e,this._timescale=t,this._stats=new $h(t),this._bindEvents()}getStats(){const{currentTime:e=0,decodeFps:t=0}=this._core?.media||{};return{...this._stats.getStats(),downloadSpeed:this._core?.speedInfo?.().speed||0,avgSpeed:this._core?.speedInfo?.().avgSpeed||0,currentTime:e,bufferEnd:this._core?.bufferInfo()?.remaining||0,decodeFps:t}}_bindEvents(){this._core.on(or,(e=>this._stats.updateBitrate(e.samples))),this._core.on(lr,(e=>{this._stats.setFpsFromScriptData(e)})),this._core.on(dr,(e=>{"video"===e.type?this._stats.setVideoMeta(e.track):this._stats.setAudioMeta(e.track)})),this._core.on(hr,(e=>{this._stats.setDomain(e.responseUrl)}))}reset(){this._samples=[],this._stats=new $h(this._timescale)}}class qh extends Ra{constructor(e,t={}){super(),this.player=e,this.config=null,this._manifestLoader=null,this._segmentLoader=null,this._playlist=null,this._bufferService=null,this._seiService=null,this._stats=null,this._prevSegSn=null,this._prevSegCc=null,this._tickTimer=null,this._tickInterval=500,this._segmentProcessing=!1,this._reloadOnPlay=!1,this._switchUrlOpts=null,this._disconnectTimer=null,this.TAG_NAME="Hls256",this.canVideoPlay=!1,this.$videoElement=null,this.config=t=function(e){return{isLive:!0,maxPlaylistSize:50,retryCount:3,retryDelay:1e3,pollRetryCount:2,loadTimeout:1e4,preloadTime:30,softDecode:!1,bufferBehind:10,maxJumpDistance:3,startTime:0,targetLatency:10,maxLatency:20,allowedStreamTrackChange:!0,...e}}(t),this._manifestLoader=new _h(this),this._segmentLoader=new Sh(this),this._playlist=new Th(this),this._bufferService=new Wh(this),this._seiService=new jh(this),this._stats=new Kh(this,9e4),this.player.debug.log(this.TAG_NAME,"init")}async destroy(){this.player.debug.log(this.TAG_NAME,"destroy()"),this._playlist.reset(),this._segmentLoader.reset(),this._seiService.reset(),await Promise.all([this._clear(),this._bufferService.destroy()]),this._manifestLoader&&(await this._manifestLoader.destroy(),this._manifestLoader=null),this._segmentLoader&&(this._segmentLoader.destroy(),this._segmentLoader=null),this._playlist&&(this._playlist.destroy(),this._playlist=null),this.player.debug.log(this.TAG_NAME,"destroy end")}_startTick(){this._stopTick(),this._tickTimer=setTimeout((()=>{this._tick()}),this._tickInterval)}_stopTick(){this._tickTimer&&clearTimeout(this._tickTimer),this._tickTimer=null}_tick(){this.player.isDestroyedOrClosed()?this.player.debug.log(this.TAG_NAME,"_tick() player is destroyed"):(this._startTick(),this._loadSegment())}get isLive(){return this._playlist.isLive}get streams(){return this._playlist.streams}get currentStream(){return this._playlist.currentStream}get hasSubtitle(){return this._playlist.hasSubtitle}get baseDts(){return this._bufferService?.baseDts}speedInfo(){return this._segmentLoader.speedInfo()}resetBandwidth(){this._segmentLoader.resetBandwidth()}getStats(){return this._stats.getStats()}async loadSource(e){return await this._reset(),await this._loadData(e),this._startTick(),!0}async _loadData(e){try{e&&(e=e.trim())}catch(e){}if(!e)throw this._emitError(new eh(Qd,Qd,null,null,"m3u8 url is missing"));const t=await this._loadM3U8(e),{currentStream:i}=this._playlist;if(this._urlSwitching){0===i.bitrate&&this._switchUrlOpts?.bitrate&&(i.bitrate=this._switchUrlOpts?.bitrate);const e=this._getSeamlessSwitchPoint();this.config.startTime=e;const t=this._playlist.findSegmentIndexByTime(e),r=this._playlist.getSegmentByIndex(t+1);if(r){const e=r.start;this.player.debug.warn(this.TAG_NAME,`clear buffer from ${e}`)}}t&&(this.isLive?(this.player.debug.log(this.TAG_NAME,"is live"),this._bufferService.setLiveSeekableRange(0,4294967295),this.config.targetLatency{e?(this._playlist.upsertPlaylist(e,s,a),this.isLive&&this._pollM3U8(t,i,r)):this.player.debug.warn(this.TAG_NAME,"_refreshM3U8() mediaPlaylist is empty")})).catch((e=>{throw this._emitError(eh.create(e))}))}_pollM3U8(e,t,i){let r=this._playlist.isEmpty;this._manifestLoader.poll(e,t,i,((e,t,i)=>{this._playlist.upsertPlaylist(e,t,i),this._playlist.clearOldSegment(),e&&r&&!this._playlist.isEmpty&&this._loadSegment(),r&&(r=this._playlist.isEmpty)}),(e=>{this._emitError(eh.create(e))}),1e3*(this._playlist.lastSegment?.duration||0))}_loadSegment=async()=>{if(this._segmentProcessing)return void this.player.debug.warn("_loadSegment()","_segmentProcessing is ture and return");if(!this._playlist)return void this.player.debug.warn("_loadSegment()","this._playlist is null and return");const e=this._playlist.currentSegment,t=this._playlist.nextSegment;if(this.player.debug.log(this.TAG_NAME,"_loadSegment()","curSeg",e&&e.url,"nextSeg",t&&t.url),t)return this._loadSegmentDirect();this.player.debug.log(this.TAG_NAME,"nextSeg is null and return")};async _loadSegmentDirect(){const e=this._playlist.nextSegment;if(!e)return void this.player.debug.log(this.TAG_NAME,"_loadSegmentDirect() !seg");let t=!1,i=null;try{this._segmentProcessing=!0,t=await this._reqAndBufferSegment(e,this._playlist.getAudioSegment(e))}catch(e){i=e}finally{this._segmentProcessing=!1}return i?this._emitError(eh.create(i)):(t?(this._urlSwitching&&(this._urlSwitching=!1,this.emit(vr,{url:this.config.url})),this._playlist.moveSegmentPointer(),this.player.debug.log(this.TAG_NAME,"_loadSegmentDirect()","seg.isLast",e.isLast),e.isLast?(this.player.debug.log(this.TAG_NAME,"_loadSegmentDirect()","seg.isLast"),this._end()):(this.player.debug.log(this.TAG_NAME,"_loadSegmentDirect()","and next _loadSegment()"),this._loadSegment())):this.player.debug.log(this.TAG_NAME,"_loadSegmentDirect() not appended"),t)}async _reqAndBufferSegment(e,t){this.player.debug.log(this.TAG_NAME,"video seg",e&&e.url,"audio seg",t&&t.url);const i=e?e.cc:t.cc,r=this._prevSegCc!==i;let s=[];try{s=await this._segmentLoader.load(e,t,r)}catch(e){throw e.fatal=!1,this._segmentLoader.error=e,e}if(!s[0])return;const a=await this._bufferService.decryptBuffer(...s);if(!a)return void this.player.debug.log(this.TAG_NAME,"decryptBuffer return null");const n=e?e.sn:t.sn,o=e?e.start:t.start,l=this._playlist.currentStream;return this._bufferService.createSource(a[0],a[1],l?.videoCodec,l?.audioCodec),await this._bufferService.appendBuffer(e,t,a[0],a[1],r,this._prevSegSn===n-1,o),this._prevSegCc=i,this._prevSegSn=n,!0}async _clear(){this.player.debug.log(this.TAG_NAME,"_clear()"),clearTimeout(this._disconnectTimer),this._stopTick(),await Promise.all([this._segmentLoader.cancel(),this._manifestLoader.stopPoll()]),this._segmentProcessing=!1}async _reset(e=!1){return this.player.debug.log(this.TAG_NAME,"_reset()"),this._reloadOnPlay=!1,this._prevSegSn=null,this._prevSegCc=null,this._switchUrlOpts=null,this._playlist.reset(),this._segmentLoader.reset(),this._seiService.reset(),this._stats.reset(),await this._clear(),this._bufferService.reset(e)}_end(){this.player.debug.log(this.TAG_NAME,"_end()"),this._clear()}_emitError(e,t=!1){return!1===e.originError?.fatal?console.warn(e):(console.table(e),console.error(e),console.error(this.media?.error),this._stopTick(),this._urlSwitching&&(this._urlSwitching=!1,this.emit(Ar,e)),t&&this._end(),this._seiService.reset(),this.emit(Er,e)),e}_getSeamlessSwitchPoint(){const{media:e}=this;let t=e.currentTime;if(!e.paused){const i=this._playlist.findSegmentIndexByTime(e.currentTime),r=this._playlist.getSegmentByIndex(i),s=this._stats?.getStats().downloadSpeed;if(s&&r){t+=r.duration*this._playlist.currentStream.bitrate/s+1}else t+=5}return t}getDemuxBuferredDuration(){return this._bufferService.getBuferredDuration()||0}getDemuxBufferedListLength(){return this._bufferService.getBufferedSegments()||0}getDemuxAudioBufferedListLength(){return this._bufferService.getBufferedAudioSegments()||0}getDemuxVideoBufferedListLength(){return this._bufferService.getBufferedVideoSegments()||0}}class Yh extends Ra{TAG_NAME="Hls256Decoder";constructor(e){super(),this.player=e,this.$videoElement=this.player.video.$videoElement,this.hls=null,this.eventsDestroy=[],this.bandwidthEstimateInterval=null,this.hls=new qh(e),this._bindEvents()}async destroy(){return this._stopBandwidthEstimateInterval(),this.hls&&(await this.hls.destroy(),this.hls=null),this.eventsDestroy.length&&(this.eventsDestroy.forEach((e=>e())),this.eventsDestroy=[]),this.$videoElement=null,this.player.debug.log(this.TAG_NAME,"destroy"),!0}_bindEvents(){this.hls.on(Er,(e=>{this.player.emitError(nt.hlsError,e)})),this._startBandwidthEstimateInterval()}_startBandwidthEstimateInterval(){this._stopBandwidthEstimateInterval(),this.bandwidthEstimateInterval=setInterval((()=>{const e=this.hls.speedInfo();this.player.emit(rt.kBps,(e.avgSpeed/1024/8).toFixed(2)),this.hls.resetBandwidth()}),1e3)}_stopBandwidthEstimateInterval(){this.bandwidthEstimateInterval&&(clearInterval(this.bandwidthEstimateInterval),this.bandwidthEstimateInterval=null)}async loadSource(e){return this.url=e,await this.hls.loadSource(e),!0}checkHlsBufferedDelay(){let e=0;return this.hls&&(e=this.hls.getDemuxBuferredDuration()),e}getDemuxBufferedListLength(){let e=0;return this.hls&&(e=this.hls.getDemuxBufferedListLength()),e}getDemuxAudioBufferedListLength(){let e=0;return this.hls&&(e=this.hls.getDemuxAudioBufferedListLength()),e}getDemuxVideoBufferedListLength(){let e=0;return this.hls&&(e=this.hls.getDemuxVideoBufferedListLength()),e}}class Qh extends Ra{constructor(e){super(),this.player=e,this.wsConnect=null,this.rtcContent=null,this.intervalTime=null,this.localStream=null,e.debug.log("wsRtcDecoder","init"),this.$videoElement=this.player.video.$videoElement,this.player.video.$videoElement.muted=!this.player._opt.isNotMute,this.candidateList=[],this.iceGatheringState=!1,this.interval=null}destroy(){this.intervalTime&&clearInterval(this.intervalTime),this.interval&&clearInterval(this.interval),this.rtcContent&&(this.rtcContent.close(),this.rtcContent=null,this.localStream=null,this.intervalTime=null,this.iceGatheringState=!1,this.candidateList=[]),this.wsConnect&&(this.wsConnect.close(),this.wsConnect=null),this.player.debug.log("wsRtcDecoder","destroy")}loadSource(e){return new Promise(((t,i)=>{this.wsConnect=new WebSocket(e),this.wsConnect.onopen=()=>{this.intervalTime=setInterval((()=>{this.wsConnect.send(JSON.stringify({type:"ping"}))}),4500),this.player.emit(rt.rtcConnetMessage,"连接中..."),this.createMedia(),t()},this.wsConnect.onmessage=e=>{const t=JSON.parse(e.data);switch(t.type){case"sdp":this.rtcContent.setRemoteDescription(new RTCSessionDescription({sdp:t.sdp,type:"answer"})),this.player.emit(rt.rtcConnetMessage,"接收视频信息...");break;case"candidate":case"pong":case"ErrSDP":case"ErrCandidate":case"Err":break;case"ErrKeepAlive":console.log("🚀 ~ CustomRTC ~ ErrKeepAlive: 服务端保活失败"),this.destroy()}},this.wsConnect.onclose=()=>{this.player.emit(rt.rtcConnetMessage,"网络连接中断!"),this.destroy(),i()}}))}async createMedia(){this.localStream=await navigator.mediaDevices.getUserMedia({video:!1,audio:{echoCancellation:!0,noiseSuppression:!0,autoGainControl:!0}}),this.createPeer()}createPeer(){if(this.rtcContent=new RTCPeerConnection({bundlePolicy:"balanced",iceTransportPolicy:"relay",iceCandidatePoolSize:10,iceServers:this.player._opt.iceServers}),this.localStream){const e=this.localStream.getAudioTracks()[0];e.enabled=!1,this.rtcContent.addTrack(e,this.localStream)}this.rtcContent.addTransceiver("audio",{direction:"sendrecv"}),this.rtcContent.addTransceiver("video",{direction:"recvonly"}),this.rtcContent.onicecandidate=e=>{"complete"===this.rtcContent?.iceGatheringState?this.iceGatheringState=!0:e.candidate&&this.candidateList.push(JSON.stringify(e.candidate))},this.createOffer(),this.rtcContent.oniceconnectionstatechange=e=>{"checking"===this.rtcContent?.iceConnectionState&&this.player.emit(rt.rtcConnetMessage,"正在检查视频源信息..."),"connected"===this.rtcContent?.iceConnectionState?this.player.emit(rt.rtcConnetMessage,"[成功]建立视频连接"):"disconnected"===this.rtcContent?.iceConnectionState?this.player.emit(rt.rtcConnetMessage,"[失败]视频连接已断开"):"failed"===this.rtcContent?.iceConnectionState&&this.player.emit(rt.rtcConnetMessage,"[失败]视频连接失败")},this.rtcContent.ontrack=e=>{this.$videoElement.srcObject=e.streams[0]}}createOffer(){this.rtcContent.createOffer().then((e=>{this.rtcContent.setLocalDescription(e).then((e=>{this.player.emit(rt.rtcConnetMessage,"获取客户端信息...");let t=0;this.interval=setInterval((()=>{if(t+=1,t>100||this.iceGatheringState){clearInterval(this.interval);const e=this.rtcContent?.localDescription;this.wsConnect?.send(JSON.stringify({channel_id:this.player._opt.channelId,connect_type:1,sdp:e?.sdp,type:"sdp"}))}}),10)}))}))}startVoice(){if(this.localStream){const e=this.localStream?.getAudioTracks()[0];e.enabled=!0}}pauseVoice(){if(this.localStream){const e=this.localStream?.getAudioTracks()[0];e.enabled=!1}}removeVoice(){this.localStream&&this.localStream.getTracks().forEach((e=>{e.stop()}))}}class Xh extends Ra{constructor(e){super(),this.player=e,this.TAG_NAME="CommonWebrtc",this.rtcPeerConnection=null,this.videoStream=null,this.isDisconnected=!1,this.isH264=this.player.isWebrtcH264(),this.eventsDestroy=[],this.supportVideoFrameCallbackHandle=null,this.isInitInfo=!1,this.$videoElement=this.player.video.$videoElement,this.bandwidthEstimateInterval=null,this.rtcPeerTrackVideoReceiver=null,this.rtcPeerTrackAudioReceiver=null,this.prevWebrtcVideoStats={},this.prevWebrtcAudioStats={},this.currentWebrtcStats={},this.player._opt.webrtcUseCanvasRender&&this.isH264&&(this.$videoElement=document.createElement("video"),ks()&&(this.$videoElement.style.position="absolute"),this._initVideoEvents()),this.$videoElement.muted=!0,this._initRtcPeerConnection()}destroy(){this.isDisconnected=!1,this.isInitInfo=!1,this.prevWebrtcVideoStats={},this.currentWebrtcStats={},this.rtcPeerTrackVideoReceiver=null,this.rtcPeerTrackAudioReceiver=null,this._stopBandwidthEstimateInterval(),this.supportVideoFrameCallbackHandle&&this.$videoElement&&(this.$videoElement.cancelVideoFrameCallback(this.supportVideoFrameCallbackHandle),this.supportVideoFrameCallbackHandle=null),this.eventsDestroy.length&&(this.eventsDestroy.forEach((e=>e())),this.eventsDestroy=[]),this.isH264&&(this.videoStream&&(this.videoStream.getTracks().forEach((e=>e.stop())),this.videoStream=null),this.$videoElement.srcObject=null),this.rtcPeerConnection&&(this.rtcPeerConnection.onicecandidate=ds,this.rtcPeerConnection.ontrack=ds,this.rtcPeerConnection.onconnectionstatechange=ds,this.rtcPeerConnection.ondatachannel=ds,this.rtcPeerConnection.close(),this.rtcPeerConnection=null)}_initVideoEvents(){const{proxy:e}=this.player.events,t=e(this.$videoElement,_i,(()=>{this.player.debug.log(this.TAG_NAME,"video canplay"),this.$videoElement.play().then((()=>{this.player.debug.log(this.TAG_NAME,"video play"),this._startCanvasRender(),this._initRenderSize()})).catch((e=>{this.player.debug.warn(this.TAG_NAME,"video play error ",e)}))})),i=e(this.$videoElement,Ei,(()=>{this.player.debug.log("HlsDecoder","video waiting")})),r=e(this.$videoElement,Si,(e=>{const t=parseInt(e.timeStamp,10);this.player.handleRender(),this.player.updateStats({ts:t}),this.$videoElement.paused&&(this.player.debug.warn("HlsDecoder","video is paused and next try to replay"),this.$videoElement.play().then((()=>{this.player.debug.log("HlsDecoder","video is paused and replay success")})).catch((e=>{this.player.debug.warn("HlsDecoder","video is paused and replay error ",e)})))})),s=e(this.$videoElement,wi,(()=>{this.player.debug.log("HlsDecoder","video playback Rate change",this.$videoElement&&this.$videoElement.playbackRate)}));this.eventsDestroy.push(t,i,r,s)}_initRtcPeerConnection(){const e=new RTCPeerConnection,t=this.player;e.addTransceiver("video",{direction:"recvonly"}),e.addTransceiver("audio",{direction:"recvonly"}),e.onsignalingstatechange=e=>{this.player.debug.log(this.TAG_NAME,"onsignalingstatechange",e)},e.oniceconnectionstatechange=i=>{this.player.debug.log(this.TAG_NAME,"oniceconnectionstatechange",e.iceConnectionState);const r=e.iceConnectionState;switch(this.player.emit(rt.webrtcOnIceConnectionStateChange,r),this.isDisconnected="disconnected"===r,e.iceConnectionState){case"new":case"checking":case"closed":case"connected":case"completed":break;case"failed":t.emit(rt.webrtcFailed);break;case"disconnected":t.emit(rt.webrtcDisconnect);break;case"closed":t.emit(rt.webrtcClosed)}},e.onicecandidate=e=>{this.player.debug.log(this.TAG_NAME,"onicecandidate",e),e.candidate&&this.player.debug.log(this.TAG_NAME,"Remote ICE candidate: ",e.candidate.candidate)},e.ontrack=t=>{if(this.player.debug.log(this.TAG_NAME,"ontrack",t),"video"===t.track.kind){this.player.debug.log(this.TAG_NAME,"ontrack video"),this.rtcPeerTrackVideoReceiver=e.getReceivers().find((function(e){return e.track===t.track})),this.rtcPeerTrackVideoReceiver&&this._startBandwidthEstimateInterval();let i=t.streams[0];this.$videoElement.autoplay=!0,this.$videoElement.srcObject=i,this.videoStream=i}else"audio"===t.track.kind&&(this.player.debug.log(this.TAG_NAME,"ontrack audio"),this.rtcPeerTrackAudioReceiver=e.getReceivers().find((function(e){return e.track===t.track})),this.rtcPeerTrackAudioReceiver&&this._startBandwidthEstimateInterval())},e.onicecandidateerror=e=>{this.player.debug.log(this.TAG_NAME,"onicecandidateerror",e),this.player.emitError(nt.webrtcIceCandidateError,e)},e.onconnectionstatechange=i=>{switch(this.player.debug.log(this.TAG_NAME,"onconnectionstatechange",i),this.player.emit(rt.webrtcOnConnectionStateChange,e.connectionState),e.connectionState){case"new":case"connecting":case"connected":case"disconnected":break;case"failed":this.isDisconnected&&t.emit(rt.webrtcFailed)}},this.rtcPeerConnection=e}_startBandwidthEstimateInterval(){this.player.debug.log(this.TAG_NAME,"_startBandwidthEstimateInterval"),this._stopBandwidthEstimateInterval(),this.bandwidthEstimateInterval=setInterval((()=>{this.rtcPeerTrackVideoReceiver&&this.rtcPeerTrackVideoReceiver.getStats().then((e=>{let t={},i=0;e.forEach((e=>{if(e)switch(e.type){case Br:("succeeded"===e.state||e.bytesReceived)&&(this.currentWebrtcStats.timestamp=e.timestamp,this.currentWebrtcStats.rtt=e.currentRoundTripTime||-1,this.currentWebrtcStats.bytesReceived=e.bytesReceived||0,this.currentWebrtcStats.bytesSent=e.bytesSent||0);break;case Fr:this.currentWebrtcStats.remoteCandidate=e||{};break;case Ur:this.currentWebrtcStats.localCandidate=e||{};break;case Mr:this.currentWebrtcStats.lastTimeStamp=e.timestamp;const r=((e.timestamp||0)-(this.prevWebrtcVideoStats.timestamp||0))/1e3,s=Number(e.bytesReceived||0)-Number(this.prevWebrtcVideoStats.bytesReceived||0),a=Math.floor(s/r);i+=a,t.vbps=a,this.prevWebrtcVideoStats=e;break;case Or:e.frameWidth&&e.frameHeight&&(this.currentWebrtcStats.frameWidth=e.frameWidth||0,this.currentWebrtcStats.frameHeight=e.frameHeight||0)}})),this.rtcPeerTrackAudioReceiver?this.rtcPeerTrackAudioReceiver.getStats().then((e=>{e.forEach((e=>{if(e&&e.type===Mr){this.currentWebrtcStats.lastTimeStamp=e.timestamp;const r=((e.timestamp||0)-(this.prevWebrtcAudioStats.timestamp||0))/1e3,s=Number(e.bytesReceived||0)-Number(this.prevWebrtcAudioStats.bytesReceived||0),a=Math.floor(s/r);i+=a,t.abps=a,this.prevWebrtcAudioStats=e}})),this.player.updateStats(t),this.player.emit(rt.kBps,(i/1024).toFixed(2))})):(this.player.updateStats(t),this.player.emit(rt.kBps,(i/1024).toFixed(2)))}))}),1e3)}_stopBandwidthEstimateInterval(){this.player.debug.log(this.TAG_NAME,"_stopBandwidthEstimateInterval"),this.bandwidthEstimateInterval&&(clearInterval(this.bandwidthEstimateInterval),this.bandwidthEstimateInterval=null)}_startCanvasRender(){Ta()?this.supportVideoFrameCallbackHandle=this.$videoElement.requestVideoFrameCallback(this.videoFrameCallback.bind(this)):(this._stopCanvasRender(),this.canvasRenderInterval=setInterval((()=>{this.player.video.render({$video:this.$videoElement,ts:0})}),40))}_stopCanvasRender(){this.canvasRenderInterval&&(clearInterval(this.canvasRenderInterval),this.canvasRenderInterval=null)}videoFrameCallback(e,t={}){this.player.isDestroyedOrClosed()?this.player.debug.log(this.TAG_NAME,"videoFrameCallback() player is destroyed"):(this.player.video.render({$video:this.$videoElement,ts:t.mediaTime||0}),this.player.updateStats({dts:t.mediaTime||0}),this.supportVideoFrameCallbackHandle=this.$videoElement.requestVideoFrameCallback(this.videoFrameCallback.bind(this)))}_initRenderSize(){this.isInitInfo||(this.player.video.updateVideoInfo({width:this.$videoElement.videoWidth,height:this.$videoElement.videoHeight}),this.player.video.initCanvasViewSize(),this.isInitInfo=!0)}getVideoCurrentTime(){let e=0;return this.$videoElement&&(e=this.$videoElement.currentTime),e}}class Jh extends Xh{constructor(e){super(e),this.rtcPeerConnectionDataChannel=null,this.player.isWebrtcH265()&&(this.streamRate=As((t=>{e.emit(rt.kBps,(t/1024).toFixed(2))}))),this.TAG_NAME="WebrtcForM7SDecoder",this.player.debug.log(this.TAG_NAME,"init")}destroy(){super.destroy(),this.stopStreamRateInterval(),this.rtcPeerConnectionDataChannel&&(this.rtcPeerConnectionDataChannel.onopen=ds,this.rtcPeerConnectionDataChannel.onclose=ds,this.rtcPeerConnectionDataChannel.onmessage=ds,this.rtcPeerConnectionDataChannel.close(),this.rtcPeerConnectionDataChannel=null,this.rtcPeerConnection&&(this.rtcPeerConnection.close(),this.rtcPeerConnection.getSenders.forEach((e=>{e.track.stop()})),this.rtcPeerConnection.onicecandidate=null,this.rtcPeerConnection.ontrack=null,this.rtcPeerConnection.ondatachannel=null,this.rtcPeerConnection=null)),this.player.debug.log(this.TAG_NAME,"destroy")}_initRtcPeerConnection(){const e=new RTCPeerConnection,t=this.player;e.addTransceiver("video",{direction:"recvonly"}),e.addTransceiver("audio",{direction:"recvonly"}),e.onsignalingstatechange=e=>{this.player.debug.log(this.TAG_NAME,"onsignalingstatechange",e)},e.oniceconnectionstatechange=i=>{this.player.debug.log(this.TAG_NAME,"oniceconnectionstatechange",e.iceConnectionState);const r=e.iceConnectionState;switch(this.player.emit(rt.webrtcOnIceConnectionStateChange,r),this.isDisconnected="disconnected"===r,e.iceConnectionState){case"new":case"checking":case"closed":case"connected":case"completed":break;case"failed":t.emit(rt.webrtcFailed);break;case"disconnected":t.emit(rt.webrtcDisconnect);break;case"closed":t.emit(rt.webrtcClosed)}},e.onicecandidate=e=>{this.player.debug.log(this.TAG_NAME,"onicecandidate",e),e.candidate&&this.player.debug.log(this.TAG_NAME,"Remote ICE candidate: ",e.candidate.candidate)},e.ontrack=i=>{this.player.debug.log(this.TAG_NAME,"ontrack",i);const r=t.video.$videoElement;if(t.isWebrtcH264())if("video"===i.track.kind){this.player.debug.log(this.TAG_NAME,"ontrack video"),this.rtcPeerTrackVideoReceiver=e.getReceivers().find((function(e){return e.track===i.track})),this.rtcPeerTrackVideoReceiver&&this._startBandwidthEstimateInterval();let t=i.streams[0];r.autoplay=!0,r.srcObject=t,this.videoStream=t}else"audio"===i.track.kind&&(this.player.debug.log(this.TAG_NAME,"ontrack audio"),this.rtcPeerTrackAudioReceiver=e.getReceivers().find((function(e){return e.track===i.track})),this.rtcPeerTrackAudioReceiver&&this._startBandwidthEstimateInterval())},e.onicecandidateerror=e=>{this.player.debug.log(this.TAG_NAME,"onicecandidateerror",e),this.player.emitError(nt.webrtcIceCandidateError,e)},e.onconnectionstatechange=i=>{switch(t.debug.log(this.TAG_NAME,`sdp connect status ${e.connectionState}`),e.connectionState){case"new":case"connecting":case"connected":case"disconnected":break;case"failed":this.isDisconnected&&t.emit(rt.webrtcFailed)}},e.ondatachannel=e=>{const t=e.channel;this.player.debug.log(this.TAG_NAME,"ondatachannel"),t.onopen=()=>{this.player.debug.log(this.TAG_NAME,"ondatachannel and onopen")},t.onmessage=e=>{const t=e.data;if(this.player.isWebrtcH264())return this.player.debug.warn(this.TAG_NAME,"ondatachannel is H265 but decode is h264 so emit webrtcStreamH265 "),void this.player.emit(rt.webrtcStreamH265);this.player.isDestroyedOrClosed()?this.player.debug.warn(this.TAG_NAME,"ondatachannel and player is destroyed"):(this.streamRate&&this.streamRate(t.byteLength),this.player.demux&&this.player.demux.dispatch(t))},t.onclose=()=>{this.player.debug.warn(this.TAG_NAME,"ondatachannel and onclose")},this.rtcPeerConnectionDataChannel=t};e.createDataChannel("signal").onmessage=e=>{this.player.debug.log(this.TAG_NAME,"signalChannel,onmessage",e);JSON.parse(e.data).type},this.rtcPeerConnection=e}startStreamRateInterval(){this.stopStreamRateInterval(),this.streamRateInterval=setInterval((()=>{this.streamRate&&this.streamRate(0)}),1e3)}stopStreamRateInterval(){this.streamRateInterval&&(clearInterval(this.streamRateInterval),this.streamRateInterval=null)}loadSource(e,t={}){return new Promise(((t,i)=>{const r=this.rtcPeerConnection;r.createOffer().then((s=>{r.setLocalDescription(s),this.player.debug.log(this.TAG_NAME,"getWebRtcRemoteSdp loadSource"),function(e,t){return fetch(e,{method:"POST",cache:"no-cache",redirect:"follow",referrerPolicy:"no-referrer",headers:{"Content-Type":"application/sdp"},body:t})}(e,s.sdp).then((e=>{e.text().then((e=>{this.player.debug.log(this.TAG_NAME,"getWebRtcRemoteSdp response"),e?r.setRemoteDescription(new RTCSessionDescription({type:"answer",sdp:e})).then((()=>{this.player.isWebrtcH265()&&this.startStreamRateInterval(),t()})).catch((e=>{i(e)})):i("sdp is null")})).catch((e=>{this.player.debug.error(this.TAG_NAME,"loadSource response.text() error",e),i(e)}))})).catch((e=>{this.player.debug.error(this.TAG_NAME,"loadSource getWebRtcRemoteSdp response error",e),i(e)}))})).catch((e=>{this.player.debug.error(this.TAG_NAME,"loadSource rtcPeerConnection.createOffer() error",e),i(e)}))}))}}class Zh extends Xh{constructor(e){super(e),this.TAG_NAME="WebrtcForZLMDecoder",this.player.debug.log(this.TAG_NAME,"init")}destroy(){super.destroy(),this.player.debug.log(this.TAG_NAME,"destroy")}loadSource(e){return new Promise(((t,i)=>{const r=this.rtcPeerConnection;r.createOffer().then((s=>{r.setLocalDescription(s),this.player.debug.log(this.TAG_NAME,"getWebRtcRemoteSdp loadSource"),function(e,t){return To({url:e,type:"POST",data:t,contentType:"text/plain;charset=utf-8",processData:!1,dataType:"json"})}(e,s.sdp).then((e=>{this.player.debug.log(this.TAG_NAME,`getWebRtcRemoteSdp response and code is ${e.code}`);const s=e;if(s&&0!==s.code)return i(s.msg);s&&s.sdp?r.setRemoteDescription(new RTCSessionDescription({type:"answer",sdp:s.sdp})).then((()=>{t()})).catch((e=>{i(e)})):i("sdp is null")})).catch((e=>{this.player.debug.error(this.TAG_NAME,"loadSource getWebRtcRemoteSdp response error",e),i(e)}))})).catch((e=>{this.player.debug.error(this.TAG_NAME,"loadSource rtcPeerConnection.createOffer() error",e),i(e)}))}))}}class ec extends Ra{constructor(e,t){if(super(),this.player=e,this.player.$container.classList.add("easyplayer-container-playback"),this._showPrecision=null,this._startTime=null,this._playStartTime=null,this._playingTimestamp=null,this._fps=parseInt(t.fps,10)||e._opt.playbackFps,this._isUseFpsRender=!!va(t.isUseFpsRender),this._rate=1,this._audioTimestamp=0,this._videoTimestamp=0,this.controlType=t.controlType||J.normal,t.controlType&&-1===[J.normal,J.simple].indexOf(t.controlType)&&(this.player.debug.warn("Playback","constructor()","controlType is not in [normal,simple]",t.controlType),this.controlType=J.normal),this._currentLocalTimestamp=0,this._localOneFrameTimestamp=t.localOneFrameTimestamp||40,this._localCalculateTimeInterval=null,this._isUseLocalCalculateTime=!!va(t.isUseLocalCalculateTime),this._isPlaybackPauseClearCache=!ba(t.isPlaybackPauseClearCache),this._isCacheBeforeDecodeForFpsRender=!!va(t.isCacheBeforeDecodeForFpsRender),this._startfpsTime=null,this._startFpsTimestamp=null,this._checkStatsInterval=null,this._playbackTs=0,this._renderFps=0,this._isUseLocalCalculateTime?this._startLocalCalculateTime():this._listen(),this.playbackList=[],this._playbackListStartTimestamp=null,this._totalDuration=0,t.controlType===J.normal)this.initPlaybackList(t.playList,t.showPrecision,t.startTime);else if(t.controlType===J.simple){t.duration&&(this._totalDuration=1e3*t.duration);let e=t.startTime||0;e>this.totalDuration&&(e=this.totalDuration),this.setStartTime(e)}this.player.on(rt.playbackPause,(e=>{e?this.pause():this.resume()}));const i={fps:this._fps,isUseFpsRender:this._isUseFpsRender,localOneFrameTimestamp:this._localOneFrameTimestamp,isUseLocalCalculateTime:this._isUseLocalCalculateTime,uiUsePlaybackPause:t.uiUsePlaybackPause,showControl:t.showControl};e.debug.log("Playback","init",JSON.stringify(i))}destroy(){this._startTime=null,this._showPrecision=null,this._playStartTime=null,this._playingTimestamp=null,this._totalDuration=0,this._audioTimestamp=0,this._videoTimestamp=0,this._fps=null,this._isUseFpsRender=!1,this._rate=1,this.playbackList=[],this._playbackListStartTimestamp=null,this._localCalculateTimeInterval=null,this._currentLocalTimestamp=0,this._startfpsTime=null,this._startFpsTimestamp=null,this._renderFps=0,this._playbackTs=0,this._stopLocalCalculateTime(),this.clearStatsInterval(),this.player.$container&&this.player.$container.classList.remove("easyplayer-container-playback"),this.off(),this.player.debug.log("Playback","destroy")}_listen(){this.player.on(rt.stats,(e=>{const t=e.ts;this._playStartTime||(this._playStartTime=t-1e3);let i=t-this._playStartTime;this.setPlayingTimestamp(i)}))}pause(){this.clearStatsInterval()}resume(){this.startCheckStatsInterval()}updateStats(e={}){this._startFpsTimestamp||(this._startFpsTimestamp=ps()),zs(e.ts)&&(this.player.updateStats({fps:!0,ts:e.ts}),this._playbackTs=e.ts,this._startfpsTime||(this._startfpsTime=e.ts),this._renderFps+=1);const t=ps(),i=t-this._startFpsTimestamp;if(i<1e3)return;let r=null;this._startfpsTime&&(r=this._playbackTs-this._startfpsTime),this.player.emit(rt.playbackStats,{fps:this._renderFps,rate:this.rate,start:this._startfpsTime,end:this._playbackTs,timestamp:i,dataTimestamp:r,audioBufferSize:this.player.audio?this.player.audio.bufferSize:0,videoBufferSize:this.player.video?this.player.video.bufferSize:0,ts:this._playbackTs}),this._renderFps=0,this._startfpsTime=this._playbackTs,this._startFpsTimestamp=t}updateLocalOneFrameTimestamp(e){this._localOneFrameTimestamp=e}_startLocalCalculateTime(){this._stopLocalCalculateTime(),this._localCalculateTimeInterval=setInterval((()=>{const e=this._currentLocalTimestamp;this._playStartTime||(this._playStartTime=e-1e3);let t=e-this._playStartTime;this.setPlayingTimestamp(t)}),1e3)}startCheckStatsInterval(){this.clearStatsInterval(),this._checkStatsInterval=setInterval((()=>{this.updateStats()}),1e3)}_stopLocalCalculateTime(){this._localCalculateTimeInterval&&(clearInterval(this._localCalculateTimeInterval),this._localCalculateTimeInterval=null)}clearStatsInterval(){this._checkStatsInterval&&(clearInterval(this._checkStatsInterval),this._checkStatsInterval=null)}increaseLocalTimestamp(){this._isUseLocalCalculateTime&&(this._currentLocalTimestamp+=this._localOneFrameTimestamp)}initPlaybackList(e,t,i){this.playbackList=e||[];let r=0;if(this.playbackList.forEach(((e,t)=>{10===Qs(e.start)&&(e.startTimestamp=1e3*e.start,e.startTime=Cs(e.startTimestamp)),10===Qs(e.end)&&(e.endTimestamp=1e3*e.end,e.endTime=Cs(e.endTimestamp)),e.duration=e.end-e.start,r+=e.duration})),this._totalDuration=r,this.player.debug.log("Playback",this.playbackList),this.playbackList.length>0){const e=this.playbackList[0].startTimestamp;this._playbackListStartTimestamp=e;let t=e;i&&(10===Qs(i)&&(i*=1e3),this._isTimeInPlaybackList(i)&&(t=i)),this.setStartTime(t)}const s=t||ei;this.setShowPrecision(s)}get totalDuration(){return(this._totalDuration||0)/1e3}get startTime(){return this._startTime||0}setStartTime(e){this._startTime=e,this._playingTimestamp=e,this._playStartTime=null}setRate(e){this._rate=e,this.player.emit(rt.playbackRateChange,e)}get fps(){return this._fps}get rate(){return this._rate}get isUseFpsRender(){return this._isUseFpsRender}get isUseLocalCalculateTime(){return this._isUseLocalCalculateTime}get showPrecision(){return this._showPrecision}get is60Min(){return this.showPrecision===ei}get is30Min(){return this.showPrecision===ti}get is10Min(){return this.showPrecision===ii}get is5Min(){return this.showPrecision===ri}get is1Min(){return this.showPrecision===ri}get isPlaybackPauseClearCache(){return this._isPlaybackPauseClearCache}get isCacheBeforeDecodeForFpsRender(){return this._isCacheBeforeDecodeForFpsRender}setShowPrecision(e){ai.includes(e)||(this.player.debug.warn("Playback","setShowPrecision()","type is not in PLAYBACK_CONTROL_TIME_PRECISION_ARRAY",e),e=ei),this._showPrecision&&this._showPrecision===e||(this._showPrecision=e,this.player.emit(rt.playbackPrecision,this._showPrecision,this.playbackList),this.player.emit(rt.playbackShowPrecisionChange,this._showPrecision))}setPlayingTimestamp(e){let t;if(this.controlType===J.normal){t=this.startTime+e,this._playingTimestamp=t,this.player.emit(rt.playbackTime,t);const i=new Date(t);this.player.emit(rt.playbackTimestamp,{ts:t,hour:i.getHours(),min:i.getMinutes(),second:i.getSeconds()})}else this.controlType===J.simple&&(t=this.startTime+Math.round(e/1e3),t>this.totalDuration&&(this.player.debug.log("Playback","setPlayingTimestamp()",`timestamp ${t} > this.totalDuration ${this.totalDuration}`),t=this.totalDuration),console.log(t),this._playingTimestamp=t,this.player.emit(rt.playbackTime,t),this.player.emit(rt.playbackTimestamp,{ts:t}))}get playingTimestamp(){return this._playingTimestamp}narrowPrecision(){const e=ai.indexOf(this.showPrecision)-1;if(e>=0){const t=ai[e];this.setShowPrecision(t)}}expandPrecision(){const e=ai.indexOf(this.showPrecision)+1;if(e<=ai.length-1){const t=ai[e];this.setShowPrecision(t)}}seek(e){if(this.player.debug.log("Playback","seek()",e),this.controlType===J.normal){if("true"===e.hasRecord){let t=e.time;"min"===e.type&&(t=60*e.time);let i=function(e){let t={};e>-1&&(t={hour:Math.floor(e/60/60)%60,min:Math.floor(e/60)%60,second:e%60});return t}(t);if(this._playbackListStartTimestamp){const e=new Date(this._playbackListStartTimestamp).setHours(i.hour,i.min,i.second,0);i.timestamp=e;const t=this._findMoreInfoByTimestamp(e);i&&t.more&&(i.more=t.more)}this.player.emit(rt.playbackSeek,i)}}else if(this.controlType===J.simple){let t=e.time;this.player.emit(rt.playbackSeek,{ts:t})}}currentTimeScroll(){this.player.emit(rt.playbackTimeScroll)}_findMoreInfoByTimestamp(e){let t=null;return this.playbackList.forEach(((i,r)=>{i.startTimestamp<=e&&i.endTimestamp>=e&&(t=i)})),t}_isTimeInPlaybackList(e){let t=!1;return this.playbackList.forEach(((i,r)=>{i.startTimestamp<=e&&i.endTimestamp>=e&&(t=!0)})),t}getControlType(){return this.controlType}isControlTypeNormal(){return this.controlType===J.normal}isControlTypeSimple(){return this.controlType===J.simple}}class tc extends Ra{constructor(e){super(),this.player=e,this.TAG_NAME="zoom",this.bindEvents=[],this.isDragging=!1,this.currentZoom=1,this.prevVideoElementStyleTransform=null,this.prevVideoElementStyleScale=null,this.maxScale=5,this.tempPosition={x:0,y:0},this.videoPosition={left:0,top:0};const{events:{proxy:t},debug:i}=this.player;this.player.on(rt.zooming,(e=>{if(e){this.player.$container.classList.add("easyplayer-zoom-control"),this._bindEvents();const e=this.player.video.$videoElement.style.transform;let t=this.player.video.$videoElement.style.left,i=this.player.video.$videoElement.style.top;t=parseFloat(t),i=parseFloat(i),t&&(this.videoPosition.left=t),i&&(this.videoPosition.top=i),this.prevVideoElementStyleTransform=e;let r=e.match(/scale\([0-9., ]*\)/g);if(r&&r[0]){let e=r[0].replace("scale(","").replace(")","");this.prevVideoElementStyleScale=e.split(",")}}else{this.player.$container.classList.remove("easyplayer-zoom-control"),this._unbindEvents(),this._resetVideoPosition(),this.player.$container.style.cursor="auto";let e=this.prevVideoElementStyleTransform;this.player.video.$videoElement.style.transform=e,this.prevVideoElementStyleTransform=null,this.prevVideoElementStyleScale=null,bs()&&this.player._opt.useWebFullScreen&&this.player.resize()}}));const r=t(window,bs()?"touchend":"mouseup",(e=>{this.handleMouseUp(e)}));this.bindEvents.push(r),e.debug.log("zoom","init")}destroy(){this.bindEvents=[],this.isDragging=!1,this.currentZoom=1,this.prevVideoElementStyleTransform=null,this.prevVideoElementStyleScale=null,this.tempPosition={x:0,y:0},this.videoPosition={left:0,top:0},this.off(),this.player.debug.log("zoom","destroy")}_bindEvents(){const{events:{proxy:e},debug:t}=this.player,i=e(this.player.$container,bs()?"touchmove":"mousemove",(e=>{this.handleMouseMove(e)}));this.bindEvents.push(i);const r=e(this.player.$container,bs()?"touchstart":"mousedown",(e=>{this.handleMouseDown(e)}));this.bindEvents.push(r);const s=e(window,bs()?"touchend":"mouseup",(e=>{this.handleMouseUp(e)}));this.bindEvents.push(s)}_unbindEvents(){this.bindEvents.forEach((e=>{e&&e()}))}handleMouseMove(e){if(e.stopPropagation(),this.isDragging&&this.player.zooming){e.preventDefault();const{posX:t,posY:i}=aa(e),r=this.tempPosition.x-t,s=this.tempPosition.y-i;this.videoPosition.left=this.videoPosition.left-r,this.videoPosition.top=this.videoPosition.top-s,this.tempPosition.x=t,this.tempPosition.y=i,this.updateVideoPosition()}}handleMouseDown(e){e.stopPropagation();const t=ia(e);if(this.player.zooming&&(t.matches("video")||t.matches("canvas"))){e.preventDefault();const{posX:t,posY:i}=aa(e);this.player.$container.style.cursor="grabbing",this.tempPosition.x=t,this.tempPosition.y=i,this.isDragging=!0,this.player.debug.log("zoom","handleMouseDown is dragging true")}}handleMouseUp(e){e.stopPropagation(),this.isDragging&&this.player.zooming&&(e.preventDefault(),this.tempPosition={x:0,y:0},this.isDragging=!1,this.player.$container.style.cursor="grab",this.player.debug.log("zoom","handleMouseUp is dragging false"))}updateVideoPosition(){const e=this.player.video.$videoElement;e.style.left=this.videoPosition.left+"px",e.style.top=this.videoPosition.top+"px"}_resetVideoPosition(){this.player.resize(),this.tempPosition={x:0,y:0},this.videoPosition={left:0,top:0},this.currentZoom=1,this.isDragging=!1}narrowPrecision(){this.currentZoom<=1||(this.currentZoom-=1,this.updateVideoElementScale())}expandPrecision(){this.currentZoom>=this.maxScale||(this.currentZoom+=1,this.updateVideoElementScale())}updatePrevVideoElementStyleScale(e){this.prevVideoElementStyleScale=e}updateVideoElementScale(){const e=this.player.video.$videoElement;let t=e.style.transform,i=1,r=1;if(this.prevVideoElementStyleScale){const e=this.prevVideoElementStyleScale[0];void 0!==e&&(i=e,r=e);const t=this.prevVideoElementStyleScale[1];void 0!==t&&(r=t)}r=Ds(r),i=Ds(i);const s=.5*i*(this.currentZoom-1)+i,a=.5*r*(this.currentZoom-1)+r;let n;n=-1===t.indexOf("scale(")?t+` scale(${s},${a})`:t.replace(/scale\([0-9., ]*\)/,`scale(${s},${a})`),this.player.debug.log("zoom",`updateVideoElementScale end is ${s}, ${a} style is ${n}`),e.style.transform=n}}class ic extends Ra{constructor(e){super(),this.player=e,this.faceDetector=null,this.objectDetector=null,this.imageDetector=null,this.occlusionDetector=null,this.initFaceDetector(),this.initObjectDetector(),this.initImageDetector(),this.initOcclusionDetector();let t="init";this.faceDetector&&(t+=" and use faceDetector"),this.objectDetector&&(t+=" and use objectDetector"),this.imageDetector&&(t+=" and use imageDetector"),this.occlusionDetector&&(t+=" and use occlusionDetector"),this.player.debug.log("AiLoader",t)}destroy(){this.off(),this.faceDetector&&(this.faceDetector.destroy(),this.faceDetector=null),this.objectDetector&&(this.objectDetector.destroy(),this.objectDetector=null),this.imageDetector&&(this.imageDetector.destroy(),this.imageDetector=null),this.occlusionDetector&&(this.occlusionDetector.destroy(),this.occlusionDetector=null),this.player.debug.log("AiLoader","destroy")}initFaceDetector(){if(this.player._opt.useFaceDetector&&window.EasyPlayerProFaceDetector){const e=new EasyPlayerProFaceDetector({detectWidth:this.player._opt.aiFaceDetectWidth,showRect:!1,debug:this.player._opt.debug,debugLevel:this.player._opt.debugLevel,debugUuid:this.player._opt.debugUuid});e.load().then((()=>{this.player.debug.log("AiLoader","init face detector success"),this.faceDetector=e,this.faceDetector.on("easyplayer-pro-face-detector-info",(e=>{if(this.player.emit(rt.aiFaceDetectorInfo,e),this.player._opt.aiFaceDetectShowRect){const t=this.player._opt.aiFaceDetectRectConfig||{},i=(e.list||[]).map((e=>(e.type="rect",e.color=t.borderColor||"#0000FF",e.lineWidth=t.borderWidth||2,e)));this.player.video&&this.player.video.addAiContentToCanvas(i)}}))}))}}initObjectDetector(){if(this.player._opt.useObjectDetector&&window.EasyPlayerProObjectDetector){const e=new EasyPlayerProObjectDetector({detectWidth:this.player._opt.aiObjectDetectWidth,showRect:!1,debug:this.player._opt.debug,debugLevel:this.player._opt.debugLevel,debugUuid:this.player._opt.debugUuid});e.load().then((()=>{this.player.debug.log("AiLoader","init object detector success"),this.objectDetector=e,this.objectDetector.on("easyplayer-pro-object-detector-info",(e=>{if(this.player.emit(rt.aiObjectDetectorInfo,e),this.player._opt.aiObjectDetectShowRect){const t=[],i=this.player._opt.aiObjectDetectRectConfig||{};(e.list||[]).forEach((e=>{const r={type:"rect",color:i.borderColor||"#0000FF",lineWidth:i.borderWidth||2,x:e.rect.x,y:e.rect.y,width:e.rect.width,height:e.rect.height},s={type:"text",color:i.color||"#000",fontSize:i.fontSize||14,text:e.zh,x:e.rect.x,y:e.rect.y-25};t.push(r,s)})),this.player.video&&this.player.video.addAiContentToCanvas(t)}}))}))}}initImageDetector(){if(this.player._opt.useImageDetector&&window.EasyPlayerProImageDetector){const e=new EasyPlayerProImageDetector({debug:this.player._opt.debug,debugLevel:this.player._opt.debugLevel,debugUuid:this.player._opt.debugUuid});e.load().then((()=>{this.player.debug.log("AiLoader","init image detector success"),this.imageDetector=e}))}}initOcclusionDetector(){if(this.player._opt.useOcclusionDetector&&window.EasyPlayerProOcclusionDetector){const e=new EasyPlayerProOcclusionDetector({debug:this.player._opt.debug,debugLevel:this.player._opt.debugLevel,debugUuid:this.player._opt.debugUuid});e.load().then((()=>{this.player.debug.log("AiLoader","init occlusion detector success"),this.occlusionDetector=e}))}}updateFaceDetectorConfig(e={}){this.faceDetector&&this.faceDetector.updateConfig(e)}updateObjectDetectorConfig(e={}){this.objectDetector&&this.objectDetector.updateConfig(e)}updateImageDetectorConfig(e={}){this.imageDetector&&this.imageDetector.updateConfig(e)}updateOcclusionDetectorConfig(e={}){this.occlusionDetector&&this.occlusionDetector.updateConfig(e)}}class rc extends Ra{constructor(e){super(),this.player=e,this.LOG_NAME="Contextmenu",this.menuList=[],this.$contextmenus=e.control.$contextmenus,bs()?this.player.debug.warn(this.LOG_NAME,"not support mobile"):this.init(),e.debug.log(this.LOG_NAME,"init")}destroy(){this.menuList=[],this.player.debug.log(this.LOG_NAME,"destroy")}get isShow(){return e=this.player.$container,t="easyplayer-contextmenus-show",e.classList.contains(t);var e,t}show(){var e,t;e=this.player.$container,t="easyplayer-contextmenus-show",e.classList.add(t)}hide(){var e,t;e=this.player.$container,t="easyplayer-contextmenus-show",e.classList.remove(t)}init(){const{events:{proxy:e},debug:t}=this.player;this.player._opt.contextmenuBtns.length>0&&this.player._opt.contextmenuBtns.forEach((e=>{this.addMenuItem(e)})),e(this.player.$container,"contextmenu",(e=>{e.preventDefault(),this.show();const t=e.clientX,i=e.clientY,{height:r,width:s,left:a,top:n}=this.player.$container.getBoundingClientRect(),{height:o,width:l}=this.$contextmenus.getBoundingClientRect();let d=t-a,h=i-n;t+l>a+s&&(d=s-l),i+o>n+r&&(h=r-o),ms(this.$contextmenus,{left:`${d}px`,top:`${h}px`})})),e(this.player.$container,"click",(e=>{yd(e,this.$contextmenus)||this.hide()})),this.player.on(rt.blur,(()=>{this.hide()}))}_validateMenuItem(e){let t=!0;return e.content||(this.player.debug.warn(this.LOG_NAME,"content is required"),t=!1),t}addMenuItem(e={}){const t=ma(ir);if(e=Object.assign({},t,e),!this._validateMenuItem(e))return;const{events:{proxy:i},debug:r}=this.player,s=xs(),a=`\n
\n ${e.content}\n
\n `,n=Array.from(this.$contextmenus.children)[e.index];n?n.insertAdjacentHTML("beforebegin",a):fd(this.$contextmenus,a);const o=this.$contextmenus.querySelector(`.easyplayer-contextmenu-${s}`);e.click&&i(o,"click",(t=>{t.preventDefault(),e.click.call(this.player,this,t),this.hide()})),this.menuList.push({uuid:s,$menuItem:o})}}class sc extends Xh{constructor(e){super(e),this.TAG_NAME="WebrtcForSRSDecoder",this.player.debug.log(this.TAG_NAME,"init")}destroy(){super.destroy(),this.player.debug.log(this.TAG_NAME,"destroy")}loadSource(e){return new Promise(((t,i)=>{const r=this.rtcPeerConnection;r.createOffer().then((s=>{r.setLocalDescription(s),this.player.debug.log(this.TAG_NAME,"getWebRtcRemoteSdp loadSource"),function(e,t){return fetch(e,{method:"POST",cache:"no-cache",redirect:"follow",referrerPolicy:"no-referrer",headers:{"Content-Type":"application/sdp"},body:t})}(e,s.sdp).then((e=>{this.player.debug.log(this.TAG_NAME,`getWebRtcRemoteSdp response and code is ${e.code}`);const s=e;if(s&&0!==s.code)return i(s.msg);s?r.setRemoteDescription(new RTCSessionDescription({type:"answer",sdp:s})).then((()=>{t()})).catch((e=>{i(e)})):i("sdp is null")})).catch((e=>{this.player.debug.error(this.TAG_NAME,"loadSource getWebRtcRemoteSdp response error",e),i(e)}))})).catch((e=>{this.player.debug.error(this.TAG_NAME,"loadSource rtcPeerConnection.createOffer() error",e),i(e)}))}))}}class ac extends Xh{constructor(e){super(e),this.TAG_NAME="WebrtcForOthersDecoder",this.player.debug.log(this.TAG_NAME,"init")}destroy(){super.destroy(),this.player.debug.log(this.TAG_NAME,"destroy")}loadSource(e){return new Promise(((t,i)=>{const r=this.rtcPeerConnection;r.createOffer().then((s=>{r.setLocalDescription(s),this.player.debug.log(this.TAG_NAME,"getWebRtcRemoteSdp loadSource"),function(e,t){return fetch(e,{method:"POST",cache:"no-cache",redirect:"follow",referrerPolicy:"no-referrer",headers:{"Content-Type":"application/sdp"},body:t})}(e,s.sdp).then((e=>{this.player.debug.log(this.TAG_NAME,`getWebRtcRemoteSdp response and code is ${e.code}`),e.text().then((e=>{this.player.debug.log(this.TAG_NAME,"getWebRtcRemoteSdp response");try{let t=JSON.parse(e);this.player.debug.log(this.TAG_NAME,"this is json sdp response"),0!=t.code&&(this.player.debug.log(this.TAG_NAME,`response json code ${t.code}`),i(new Error(`response sdp json code: ${t.code}`))),e=t.sdp}catch(e){this.player.debug.log(this.TAG_NAME,"this is raw sdp response")}e?r.setRemoteDescription(new RTCSessionDescription({type:"answer",sdp:e})).then((()=>{t()})).catch((e=>{i(e)})):i("sdp is null")})).catch((e=>{this.player.debug.error(this.TAG_NAME,"loadSource response.text() error",e),i(e)}))})).catch((e=>{this.player.debug.error(this.TAG_NAME,"loadSource getWebRtcRemoteSdp response error",e),i(e)}))})).catch((e=>{this.player.debug.error(this.TAG_NAME,"loadSource rtcPeerConnection.createOffer() error",e),i(e)}))}))}}class nc extends Ra{constructor(e){if(super(),this.TAG_NAME="AliyunRtc",this.player=e,!window.AliRTS)throw new Error("AliyunRtc is not defined");this.aliyunRtc=window.AliRTS.createClient(),this.aliyunRtcRemoteStream=null,this.$videoElement=this.player.video.$videoElement,this.listenEvents(),this.player.debug.log(this.TAG_NAME,"init")}destroy(){this.aliyunRtc&&(this.aliyunRtcRemoteStream&&(this.aliyunRtcRemoteStream=null),this.aliyunRtc.unsubscribe(),this.aliyunRtc=null),this.off(),this.player.debug.log(this.TAG_NAME,"destroy")}listenEvents(){this.aliyunRtc.on("onError",(e=>{this.player.debug.log(this.TAG_NAME,`onError and code is ${e.errorCode} and message: ${e.message}`),10400!==e.errorCode&&(this.player.debug.error(this.TAG_NAME,`onError and code is ${e.errorCode} and message: ${e.message}`),this.player.emitError(nt.aliyunRtcError,e))})),this.aliyunRtc.on("reconnect",(e=>{this.player.debug.log(this.TAG_NAME,"reconnect",e)}));const e="canplay",t="waiting",i="playing",r="media";this.aliyunRtc.on("onPlayEvent",(s=>{if(s.event===e)this.player.debug.log(this.TAG_NAME,"onPlayEvent and canplay");else if(s.event===t)this.player.debug.log(this.TAG_NAME,"onPlayEvent and playing - > waiting");else if(s.event===i)this.player.debug.log(this.TAG_NAME,"onPlayEvent and waiting -> playing");else if(s.event===r){const e=s.data;let t={},i=0;if(e.audio){const r=Math.floor(e.audio.bytesReceivedPerSecond);i+=r,t.abps=r}if(e.video){const r=Math.floor(e.video.bytesReceivedPerSecond);i+=r,t.vbps=r}this.player.updateStats(t),this.player.emit(rt.kBps,(i/1024).toFixed(2))}}))}loadSource(e){return new Promise(((t,i)=>{this.aliyunRtc.isSupport({isReceiveVideo:!0}).then((()=>{this.aliyunRtc.subscribe(e,{}).then((e=>{this.aliyunRtcRemoteStream=e,e.play(this.$videoElement),t()})).catch((e=>{this.player.debug.error(this.TAG_NAME,"loadSource and subscribe is not success: ",e.message),i(e.message)}))})).catch((e=>{this.player.debug.error(this.TAG_NAME,"loadSource and is not support: ",e.message),i(e.message)}))}))}getVideoCurrentTime(){let e=0;return this.$videoElement&&(e=this.$videoElement.currentTime),e}}class oc{constructor(e){this.player=e,this.TAG_NAME="PressureObserverCpu",this.observer=null,this.latestCpuInfo=null,this.currentLevel=-1,this._init(),this.player.debug.log(this.TAG_NAME,"init")}destroy(){this.observer&&(this.observer.disconnect(),this.observer=null),this.latestCpuInfo=null,this.currentLevel=-1,this.player.debug.log(this.TAG_NAME,"destroy")}getCurrentCpuState(){return this.currentLevel}_init(){ba(ka())?this.player.debug.log(this.TAG_NAME,"not support PressureObserver"):(this.observer=new PressureObserver((e=>{const t=(e||[]).find((e=>"cpu"===e.source));if(t){switch(this.latestCpuInfo=t,t.state){case"nominal":this.currentLevel=0;break;case"fair":this.currentLevel=1;break;case"serious":this.currentLevel=2;break;case"critical":this.currentLevel=3;break;default:this.currentLevel=-1}this.player.emit(rt.pressureObserverCpu,this.currentLevel)}})),this.observer&&this.observer.observe("cpu"))}}class lc extends Oa{constructor(e,t={}){super(e),this.TAG_NAME="DynamicWatermark",this.isPauseAnimation=!1,this.isStopAnimation=!1,this.rafID=null,this.speed=t.speed||.2,this.isDynamic=!0,this.shadowRootDynamicDom=null,this.isGhost=!0===t.isGhost,this.ghostConfig={on:t.on||5,off:t.off||5},this.waterMarkWillRemove=!1,this.waterMarkWillAdd=!1,this.player.once(rt.start,(()=>{const e=ba(false)?decodeURIComponent("EasyPlayerPro%20%E4%BD%93%E9%AA%8C"):t.content;let i=this.player.getVideoInfo();i||(i={width:200,height:200}),this.update({text:{content:e,fontSize:t.fontSize||18,color:t.color||"white"},left:i.width*Math.random(),top:i.height*Math.random(),opacity:t.opacity||.15}),this.startAnimation()})),this.player.debug.log(this.TAG_NAME,"int")}destroy(){super.destroy(),this.rafID&&(cancelAnimationFrame(this.rafID),this.rafID=null)}startAnimation(){if(!this.rafID){let e=1,t=1,i=Math.random(),r={width:0,height:0};const s=()=>{try{if(ba(this.isPauseAnimation)&&this.shadowRootDynamicDom&&this.shadowRootInnerDom){const a=this.shadowRootInnerDom,n=this.shadowRootDynamicDom,o=a.getBoundingClientRect(),l=n.getBoundingClientRect();if(l.width&&l.height&&(r.width=l.width,r.height=l.height),!this.shadowRootInnerDom.contains(this.shadowRootDynamicDom))return this.isGhost?ba(this.waterMarkWillAdd)&&(this.waterMarkWillAdd=!0,setTimeout((()=>{this._addDom(o,r),this.waterMarkWillAdd=!1}),1e3*this.ghostConfig.off)):this._addDom(o,r),void(0!==this.speed&&requestAnimationFrame(s));const d=Math.min(1,0===this.speed?0:this.speed?this.speed:.2);let h=l.left-o.left,c=l.top-o.top;h+=d*t*i,c+=d*e*(1-i),h+r.width>o.width?(t=-1,i=Math.random()):h<0&&(t=1,i=Math.random()),c+r.height>o.height?(e=-1,i=Math.random()):c<0&&(e=1,i=Math.random()),h=Math.min(o.width-r.width,h),c=Math.min(o.height-r.height,c);const u=h/o.width*100,p=c/o.height*100;this.shadowRootDynamicDom.style.left=`${u}%`,this.shadowRootDynamicDom.style.top=`${p}%`,ba(this.waterMarkWillRemove)&&this.isGhost&&(this.waterMarkWillRemove=!0,setTimeout((()=>{this._removeDom(),this.waterMarkWillRemove=!1}),1e3*this.ghostConfig.on))}}catch(e){}if(this.isStopAnimation)return this.isStopAnimation=!1,cancelAnimationFrame(this.rafID),void(this.rafID=null);0!==this.speed&&requestAnimationFrame(s)};this.rafID=requestAnimationFrame(s)}}_addDom(e,t){if(this.shadowRootInnerDom&&this.shadowRootDynamicDom){this.shadowRootInnerDom.appendChild(this.shadowRootDynamicDom);let i=e.width*Math.random(),r=e.height*Math.random();i=Math.min(e.width-2*t.width,i),r=Math.min(e.height-2*t.height,r),this.shadowRootDynamicDom.style.left=`${i}px`,this.shadowRootDynamicDom.style.top=`${r}px`}}resumeAnimation(){this.isPauseAnimation=!1}pauseAnimation(){this.isPauseAnimation=!0}stopAnimation(){this.isStopAnimation=!0}}class dc extends Ra{constructor(e,t={}){super(),this._opt={},this.TAG_NAME="Player",this.$container=e;const i=ga();if(this._opt=Object.assign({},i,t),this.debug=new jr(this),this.debug.log(this.TAG_NAME,"init"),this._opt.forceNoOffscreen=!0,this._canPlayAppleMpegurl=!1,(ks()||Ts())&&(this._canPlayAppleMpegurl=na(),this.debug.log(this.TAG_NAME,"isIOS or isSafari and canPlayAppleMpegurl",this._canPlayAppleMpegurl)),bs()&&(this._opt.controlAutoHide=!1),Ea()&&(this.debug.log(this.TAG_NAME,"isIphone and set _opt.videoRenderSupportScale false"),this._opt.videoRenderSupportScale=!1,ea()&&va(this._opt.isHls)&&ba(this._opt.supportHls265)&&(this.debug.log(this.TAG_NAME,"isIphone and is in wechat and is hls so set supportHls265 true"),this._opt.supportHls265=!0)),ba(this._opt.playFailedAndReplay)&&(this.debug.log(this.TAG_NAME,"_opt.playFailedAndReplay is false and set others replay params false"),this._opt.webglAlignmentErrorReplay=!1,this._opt.webglContextLostErrorReplay=!1,this._opt.autoWasm=!1,this._opt.mseDecodeErrorReplay=!1,this._opt.mediaSourceTsIsMaxDiffReplay=!1,this._opt.wcsDecodeErrorReplay=!1,this._opt.wasmDecodeErrorReplay=!1,this._opt.simdDecodeErrorReplay=!1,this._opt.videoElementPlayingFailedReplay=!1,this._opt.networkDelayTimeoutReplay=!1,this._opt.widthOrHeightChangeReplay=!1,this._opt.simdH264DecodeVideoWidthIsTooLargeReplay=!1,this._opt.mediaSourceUseCanvasRenderPlayFailedReplay=!1,this._opt.heartTimeoutReplay=!1,this._opt.loadingTimeoutReplay=!1,this._opt.websocket1006ErrorReplay=!1),this._opt.forceNoOffscreen||("undefined"==typeof OffscreenCanvas?(this._opt.forceNoOffscreen=!0,this._opt.useOffscreen=!1):this._opt.useOffscreen=!0),this._opt.isMpeg4&&(this.debug.log(this.TAG_NAME,"isMpeg4 is true, so set _opt.useWasm true and others params false"),this._opt.useWCS=!1,this._opt.useMSE=!1,this._opt.isNakedFlow=!1,this._opt.useSIMD=!1,this._opt.isFmp4=!1,this._opt.useWasm=!0),this.isPlayback()&&(this._opt.mseDecoderUseWorker=!1),this._opt.mseDecoderUseWorker&&(this._opt.mseDecoderUseWorker=!!(self.Worker&&self.MediaSource&&"canConstructInDedicatedWorker"in self.MediaSource&&!0===self.MediaSource.canConstructInDedicatedWorker),ba(this._opt.mseDecoderUseWorker)&&this.debug.log(this.TAG_NAME,"mseDecoderUseWorker is true but not support so set _opt.mseDecoderUseWorker = false")),(this.isOldHls()||this.isWebrtcH264()||this.isAliyunRtc())&&(this.debug.log(this.TAG_NAME,"isOldHls or isWebrtcH264 or isAliyunRtc is true, so set some params false and _opt.recordType is webm"),this._opt.useWCS=!1,this._opt.useMSE=!1,this._opt.isNakedFlow=!1,this._opt.useSIMD=!1,this._opt.isFmp4=!1,this._opt.useWasm=!1,this._opt.recordType=_),this._opt.isNakedFlow&&(this.debug.log(this.TAG_NAME,"isNakedFlow is true, so set _opt.mseDecodeAudio false"),this._opt.mseDecodeAudio=!1),!this.isOldHls()&&!this.isWebrtcH264()){if(this._opt.useWCS){const e="VideoEncoder"in window,t=Ms();this._opt.useWCS=e,this._opt.useWCS&&this._opt.isH265&&(this._opt.useWCS=t),this._opt.useWCS||this.debug.warn(this.TAG_NAME,`\n useWCS is true,\n and supportWCS is ${e}, supportHevcWCS is ${t} , _opt.isH265 is ${this._opt.isH265}\n so set useWCS false`),this._opt.useWCS&&(this._opt.useOffscreen?this._opt.wcsUseVideoRender=!1:this._opt.wcsUseVideoRender&&(this._opt.wcsUseVideoRender=Us()&&Fs(),this._opt.wcsUseVideoRender||this.debug.warn(this.TAG_NAME,"wcsUseVideoRender is true, but not support so set wcsUseVideoRender false")))}if(this._opt.useMSE){const e=function(){let e=!1;return"MediaSource"in self&&self.MediaSource.isTypeSupported(jt)&&(e=!0),e}(),t=Bs();this._opt.useMSE=e,this._opt.useMSE&&this._opt.isH265&&(this._opt.useMSE=t),this._opt.useMSE||this.debug.warn(this.TAG_NAME,`\n useMSE is true,\n and supportMSE is ${e}, supportHevcMSE is ${t} , _opt.isH265 is ${this._opt.isH265}\n so set useMSE false`)}}if(ba(this._opt.useMSE)&&(this._opt.mseDecodeAudio=!1),this._opt.useMSE?(this._opt.useWCS&&this.debug.warn(this.TAG_NAME,"useMSE is true and useWCS is true then useWCS set true->false"),this._opt.forceNoOffscreen||this.debug.warn(this.TAG_NAME,"useMSE is true and forceNoOffscreen is false then forceNoOffscreen set false->true"),this._opt.useWCS=!1,this._opt.forceNoOffscreen=!0):this._opt.useWCS,this._opt.isWebrtc&&this._opt.demuxUseWorker&&(this.debug.warn(this.TAG_NAME,"isWebrtc is true and demuxUseWorker is true then demuxUseWorker set true->false"),this._opt.demuxUseWorker=!1),this._opt.isHls&&this._opt.demuxUseWorker&&(this.debug.warn(this.TAG_NAME,"isHls is true and demuxUseWorker is true then demuxUseWorker set true->false"),this._opt.demuxUseWorker=!1),this._opt.isAliyunRtc&&this._opt.demuxUseWorker&&(this.debug.warn(this.TAG_NAME,"isAliyunRtc is true and demuxUseWorker is true then demuxUseWorker set true->false"),this._opt.demuxUseWorker=!1),this.isStreamWebTransport()&&this._opt.demuxUseWorker&&(this.debug.warn(this.TAG_NAME,"is stream use webTransport is true and demuxUseWorker is true then demuxUseWorker set true->false"),this._opt.demuxUseWorker=!1),ba(this._opt.demuxUseWorker)&&(this._opt.mseDecoderUseWorker=!1),this.isPlayback()&&(this._opt.mseDecoderUseWorker=!1),this._opt.useMThreading&&(this._opt.useMThreading="undefined"!=typeof SharedArrayBuffer,this._opt.useMThreading||this.debug.warn(this.TAG_NAME,"useMThreading is true, but not support so set useMThreading false")),this._opt.useSIMD||-1!==this._opt.decoder.indexOf("-simd")){const e=WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,5,1,96,0,1,123,3,2,1,0,10,10,1,8,0,65,0,253,15,253,98,11])),t=Ea();this._opt.useSIMD=e&&ba(t),this._opt.useSIMD||this.debug.warn(this.TAG_NAME,`useSIMD is true, but not support(isSupportSimd is ${e} ,isIphone is ${t}) so set useSIMD false`)}var r;if(this._opt.useSIMD?-1===this._opt.decoder.indexOf("-simd")?this._opt.useMThreading?this._opt.decoder=this._opt.decoder.replace("decoder-pro.js","decoder-pro-simd-mt.js"):this._opt.decoder=this._opt.decoder.replace("decoder-pro.js","decoder-pro-simd.js"):this._opt.useMThreading&&(this._opt.decoder=this._opt.decoder.replace("decoder-pro-simd.js","decoder-pro-simd-mt.js")):-1!==this._opt.decoder.indexOf("-simd")?this._opt.useMThreading?this._opt.decoder=this._opt.decoder.replace("decoder-pro-simd.js","decoder-pro-mt.js"):this._opt.decoder=this._opt.decoder.replace("decoder-pro-simd.js","decoder-pro.js"):this._opt.useMThreading&&(this._opt.decoder=this._opt.decoder.replace("decoder-pro.js","decoder-pro-mt.js")),-1!==this._opt.decoder.indexOf("-simd")?this._opt.useMThreading?(this._opt.decoderAudio=this._opt.decoder.replace("decoder-pro-simd-mt.js","decoder-pro-audio.js"),this._opt.decoderHard=this._opt.decoder.replace("decoder-pro-simd-mt.js","decoder-pro-hard.js"),this._opt.decoderHardNotWasm=this._opt.decoder.replace("decoder-pro-simd-mt.js","decoder-pro-hard-not-wasm.js")):(this._opt.decoderAudio=this._opt.decoder.replace("decoder-pro-simd.js","decoder-pro-audio.js"),this._opt.decoderHard=this._opt.decoder.replace("decoder-pro-simd.js","decoder-pro-hard.js"),this._opt.decoderHardNotWasm=this._opt.decoder.replace("decoder-pro-simd.js","decoder-pro-hard-not-wasm.js")):this._opt.useMThreading?(this._opt.decoderAudio=this._opt.decoder.replace("decoder-pro-mt.js","decoder-pro-audio.js"),this._opt.decoderHard=this._opt.decoder.replace("decoder-pro-mt.js","decoder-pro-hard.js"),this._opt.decoderHardNotWasm=this._opt.decoder.replace("decoder-pro-mt.js","decoder-pro-hard-not-wasm.js")):(this._opt.decoderAudio=this._opt.decoder.replace("decoder-pro.js","decoder-pro-audio.js"),this._opt.decoderHard=this._opt.decoder.replace("decoder-pro.js","decoder-pro-hard.js"),this._opt.decoderHardNotWasm=this._opt.decoder.replace("decoder-pro.js","decoder-pro-hard-not-wasm.js")),ba(this._opt.hasAudio)&&(this._opt.operateBtns.audio=!1),ba(this._opt.hasVideo)&&(this._opt.operateBtns.fullscreen=!1,this._opt.operateBtns.screenshot=!1,this._opt.operateBtns.record=!1,this._opt.operateBtns.ptz=!1,this._opt.operateBtns.quality=!1,this._opt.operateBtns.zoom=!1),this._opt.qualityConfig&&0===this._opt.qualityConfig.length&&this._opt.operateBtns.quality&&(this._opt.operateBtns.quality=!1,this.debug.warn(this.TAG_NAME,"_opt.qualityConfig is empty, so set operateBtns.quality false")),va(this._opt.useWebGPU)&&(this._opt.useWebGPU=function(){let e=!1;return"gpu"in navigator&&(e=!0),e}(),ba(this._opt.useWebGPU)&&this.debug.warn(this.TAG_NAME,"useWebGPU is true, but not support so set useWebGPU false")),this._opt.hasControl=this._hasControl(),this._loading=!1,this._playing=!1,this._playbackPause=!1,this._hasLoaded=!1,this._zooming=!1,this._destroyed=!1,this._closed=!1,this._checkHeartTimeout=null,this._checkLoadingTimeout=null,this._checkStatsInterval=null,this._checkVisibleHiddenTimeout=null,this._startBpsTime=null,this._isPlayingBeforePageHidden=!1,this._stats={buf:0,netBuf:0,fps:0,maxFps:0,dfps:0,abps:0,vbps:0,ts:0,mseTs:0,currentPts:0,pTs:0,dts:0,mseVideoBufferDelayTime:0,isDropping:!1},this._allStatsData={},this._faceDetectActive=!1,this._objectDetectActive=!1,this._occlusionDetectActive=!1,this._imageDetectActive=!1,this._times={playInitStart:"",playStart:"",streamStart:"",streamResponse:"",demuxStart:"",decodeStart:"",videoStart:"",playTimestamp:"",streamTimestamp:"",streamResponseTimestamp:"",demuxTimestamp:"",decodeTimestamp:"",videoTimestamp:"",allTimestamp:""},this._videoTimestamp=0,this._audioTimestamp=0,this._latestAudioTimestamp=0,this._videoIframeIntervalTs=0,this._streamQuality=this._opt.defaultStreamQuality||"",!this._streamQuality&&this._opt.qualityConfig.length>0&&(this._streamQuality=this._opt.qualityConfig[0]||""),this._visibility=!0,this._lastestVisibilityChangeTimestamp=null,this._tempWorkerStats=null,this._historyFpsList=[],this._historyVideoDiffList=[],this._tempStreamList=[],this._tempInnerPlayBgobj=null,this._flvMetaData=null,this._flvMetaDataFps=null,this._mseWorkerData={},ba(this._opt.useMSE)&&ba(this._opt.useWCS)&&!this.isWebrtcH264()&&!this.isOldHls()&&(this._opt.useWasm=!0),(this.isOldHls()||this.isWebrtcH264())&&(this._opt.hasVideo=!0,this._opt.hasAudio=!0),this._opt.hasVideo||(this._opt.useMSE=!1,this._opt.useWCS=!1),this._opt.useWasm&&(this._opt.useOffscreen?this._opt.wasmUseVideoRender=!1:this._opt.wasmUseVideoRender&&(this._opt.wasmUseVideoRender=Rs()&&Us()&&Fs(),this._opt.wasmUseVideoRender||this.debug.warn(this.TAG_NAME,"use wasm video render, but not support so set wasmUseVideoRender false")),this._opt.useSIMD?this.debug.log(this.TAG_NAME,"use simd wasm"):this.debug.log(this.TAG_NAME,"use wasm")),this._opt.useWasm&&(this._opt.useFaceDetector&&window.EasyPlayerProFaceDetector||this._opt.useObjectDetector&&window.EasyPlayerProObjectDetector||this._opt.useOcclusionDetector&&window.EasyPlayerProOcclusionDetector||this._opt.useImageDetector&&window.EasyPlayerProImageDetector)?(this.ai=new ic(this),this._opt.useFaceDetector&&window.EasyPlayerProFaceDetector||(this._opt.operateBtns.aiFace=!1),this._opt.useObjectDetector&&window.EasyPlayerProObjectDetector||(this._opt.operateBtns.aiObject=!1),this._opt.useOcclusionDetector&&window.EasyPlayerProOcclusionDetector||(this._opt.operateBtns.aiOcclusion=!1),this._opt.useImageDetector&&this._opt.aiImageDetectActive&&window.EasyPlayerProImageDetector&&(this.imageDetectActive=!0)):(this._opt.operateBtns.aiObject=!1,this._opt.operateBtns.aiFace=!1,this._opt.operateBtns.aiOcclusion=!1),this._opt.useFaceDetector&&(this._opt.useWasm&&window.EasyPlayerProFaceDetector||this.debug.warn(this.TAG_NAME,`use face detector, useWasm is ${this._opt.useWasm} and window.EasyPlayerProFaceDetector is null`)),this._opt.useObjectDetector&&(this._opt.useWasm&&window.EasyPlayerProObjectDetector||this.debug.warn(this.TAG_NAME,`use object detector, useWasm is ${this._opt.useWasm} and window.EasyPlayerProObjectDetector is null`)),this._opt.useOcclusionDetector&&(this._opt.useWasm&&window.EasyPlayerProOcclusionDetector||this.debug.warn(this.TAG_NAME,`use occlusion detector, useWasm is ${this._opt.useWasm} and window.EasyPlayerProOcclusionDetector is null`)),this._opt.useImageDetector&&(this._opt.useWasm&&window.EasyPlayerProImageDetector||this.debug.warn(this.TAG_NAME,`use image detector, useWasm is ${this._opt.useWasm} and window.EasyPlayerProImageDetector is null`)),this._opt.useVideoRender&&(this._opt.useWasm&&!this._opt.useOffscreen?(this._opt.wasmUseVideoRender=Rs()&&Us()&&Fs(),this._opt.wasmUseVideoRender||this.debug.warn(this.TAG_NAME,"use wasm video render, but not support so set wasmUseVideoRender false")):this._opt.useWCS&&!this._opt.useOffscreen&&(this._opt.wcsUseVideoRender=Us()&&Fs(),this._opt.wcsUseVideoRender||this.debug.warn(this.TAG_NAME,"use wcs video render, but not support so set wcsUseVideoRender false"))),this._opt.useCanvasRender&&(this._opt.useMSE&&ba(this._opt.mseDecoderUseWorker)&&(this._opt.mseUseCanvasRender=!0),this._opt.useWasm&&(this._opt.wasmUseVideoRender=!1),this._opt.useWCS&&(this._opt.wcsUseVideoRender=!1),this.isOldHls()&&!ks()&&(this._opt.hlsUseCanvasRender=!0),this.isWebrtcH264()&&(this._opt.webrtcUseCanvasRender=!0)),this._opt.useVideoRender=!1,this._opt.useCanvasRender=!1,this._opt.useWasm?this._opt.wasmUseVideoRender?this._opt.useVideoRender=!0:this._opt.useCanvasRender=!0:this._opt.useWCS?this._opt.wcsUseVideoRender?this._opt.useVideoRender=!0:this._opt.useCanvasRender=!0:this._opt.useMSE?this._opt.mseUseCanvasRender?this._opt.useCanvasRender=!0:this._opt.useVideoRender=!0:this.isOldHls()?this._opt.hlsUseCanvasRender?this._opt.useCanvasRender=!0:this._opt.useVideoRender=!0:this.isWebrtcH264()&&(this._opt.webrtcUseCanvasRender?this._opt.useCanvasRender=!0:this._opt.useVideoRender=!0),r=this,Object.defineProperty(r,"rect",{get:()=>{let e={};return r.$container&&(e=r.$container.getBoundingClientRect(),e.width=Math.max(e.width,r.$container.clientWidth),e.height=Math.max(e.height,r.$container.clientHeight)),e}}),["bottom","height","left","right","top","width"].forEach((e=>{Object.defineProperty(r,e,{get:()=>r.rect[e]||0})})),this.events=new Ca(this),this._opt.hasVideo&&(this.video=new Xa(this),this.recorder=new ao(this)),this.isWsRtc()?(this.wsRtcDecoder=new Qh(this),this.loaded=!0):this.isOldHls()?(this.hlsDecoder=new Rd(this),this.loaded=!0):this.isWebrtcH264()?(this._opt.isWebrtcForZLM?this.webrtc=new Zh(this):this._opt.isWebrtcForSRS?this.webrtc=new sc(this):this._opt.isWebrtcForOthers?this.webrtc=new ac(this):this.webrtc=new Jh(this),this.loaded=!0):this.isAliyunRtc()?(this.aliyunRtcDecoder=new nc(this),this.loaded=!0):(this.isUseHls265()&&(this.hlsDecoder=new Yh(this)),this.isWebrtcH265()&&(this.webrtc=new Jh(this)),ba(oa(this._opt))?this.decoderWorker=new uo(this):this.loaded=!0),this._opt.hasAudio&&(this.audio=new gn(this)),this.stream=null,this.demux=null,this._lastVolume=null,this._isInZoom=!1,this._playingStartTimestamp=null,this.isMSEVideoDecoderInitializationFailedNotSupportHevc=!1,this._opt.useWCS&&(this.webcodecsDecoder=new rd(this),!this._opt.hasAudio&&ba(this._opt.demuxUseWorker)&&(this.loaded=!0)),this._opt.useMSE&&ba(this._opt.mseDecoderUseWorker)&&(this.mseDecoder=new Ed(this),!this._opt.hasAudio&&ba(this._opt.demuxUseWorker)&&(this.loaded=!0)),this.control=new bd(this),this._opt.contextmenuBtns.length>0&&ba(this._opt.disableContextmenu)&&_s()?this.contextmenu=new rc(this):va(this._opt.disableContextmenu)&&this._opt.contextmenuBtns.length>0&&_s()&&this.debug.warn(this.TAG_NAME,"disableContextmenu is true, but contextmenuBtns is not empty, so Contextmenu can not be created,please check"),this.isPlayback()&&(this.playback=new ec(this,this._opt.playbackConfig)),this._opt.operateBtns.zoom&&(this.zoom=new tc(this)),/(iphone|ipad|ipod|ios|android)/i.test(window.navigator.userAgent.toLowerCase())&&ba(this._opt.supportLockScreenPlayAudio&&Ts())&&(this.keepScreenOn=new wd(this)),(e=>{try{const t=t=>{ia(t)===e.$container&&(e.emit(st.fullscreen,e.fullscreen),e.fullscreen?e._opt.useMSE&&e.resize():e.resize())};qr.on("change",t),e.events.destroys.push((()=>{qr.off("change",t)}))}catch(e){}if(e.on(rt.decoderWorkerInit,(()=>{e.debug.log("player","listen decoderWorkerInit and set loaded true"),e.loaded=!0})),e.on(rt.play,(()=>{e.loading=!1})),e.on(rt.screenshot,(t=>{e.emit(rt.screenshots,t)})),e.on(rt.fullscreen,(t=>{if(t)try{qr.request(e.$container).then((()=>{})).catch((t=>{e.debug.error("player","fullscreen request error",t),bs()&&e._opt.useWebFullScreen&&(e.webFullscreen=!0)}))}catch(t){bs()&&e._opt.useWebFullScreen&&(e.webFullscreen=!0)}else try{qr.exit().then((()=>{e.webFullscreen&&(e.webFullscreen=!1)})).catch((t=>{e.debug.error("player","fullscreen exit error",t),e.webFullscreen&&(e.webFullscreen=!1)}))}catch(t){e.webFullscreen&&(e.webFullscreen=!1)}})),bs()&&e.on(rt.webFullscreen,(t=>{t?e.$container.classList.add("easyplayer-fullscreen-web"):e.$container.classList.remove("easyplayer-fullscreen-web"),e.emit(st.fullscreen,e.fullscreen)})),e.on(rt.resize,(()=>{e.video&&e.video.resize()})),e._opt.debug){const t=[rt.timeUpdate,rt.currentPts,rt.videoSEI],i=[rt.stats,rt.playbackStats,rt.playbackTimestamp,rt.flvMetaData,rt.playToRenderTimes,rt.audioInfo,rt.videoInfo];Object.keys(rt).forEach((r=>{e.on(rt[r],((s,...a)=>{t.includes(r)||(i.includes(r)&&(s=JSON.stringify(s)),e.debug.log("player events",rt[r],s,...a))}))})),Object.keys(nt).forEach((t=>{e.on(nt[t],((...i)=>{e.debug.warn("player event error",nt[t],...i)}))}))}})(this),(e=>{const{_opt:t,debug:i,events:{proxy:r}}=e;if(t.supportDblclickFullscreen&&r(e.$container,"dblclick",(t=>{const i=ia(t).nodeName.toLowerCase();"canvas"!==i&&"video"!==i||(e.fullscreen=!e.fullscreen)})),r(document,"visibilitychange",(()=>{e.visibility="visible"===document.visibilityState,i.log("visibilitychange",document.visibilityState),t.hiddenAutoPause&&(i.log("visibilitychange","hiddenAutoPause is true ",document.visibilityState,e._isPlayingBeforePageHidden),"visible"===document.visibilityState?e._isPlayingBeforePageHidden&&e.play():(e._isPlayingBeforePageHidden=e.playing,e.playing&&e.pause()))})),_s()&&r(document,["click","contextmenu"],(t=>{yd(t,e.$container)?(va(e._opt.disableContextmenu)&&"contextmenu"===t.type&&t.preventDefault(),e.isInput="INPUT"===t.target.tagName,e.isFocus=!0,e.emit(rt.focus)):(e.isInput=!1,e.isFocus=!1,e.emit(rt.blur))})),t.autoResize){const t=Ls((()=>{e.resize()}),500);r(window,["resize","orientationchange"],(()=>{t()})),screen&&screen.orientation&&screen.orientation.onchange&&r(screen.orientation,"change",(()=>{t()}))}})(this),this.singleWatermark=new Oa(this),this._opt.ghostWatermarkConfig.content){const e=Object.assign({},this._opt.ghostWatermarkConfig,{isGhost:!0});this.ghostWatermark=new lc(this,e)}this._opt.dynamicWatermarkConfig.content&&(this.dynamicWatermark=new lc(this,this._opt.dynamicWatermarkConfig)),this._opt.watermarkConfig&&this.updateWatermark(this._opt.watermarkConfig),ka()&&(this.pressureObserverCpu=new oc(this)),this._opt.useWCS&&this.debug.log(this.TAG_NAME,"use WCS"),this._opt.useMSE&&(this._opt.mseDecoderUseWorker?this.debug.log(this.TAG_NAME,"use worker MSE"):this.debug.log(this.TAG_NAME,"use MSE")),this._opt.useOffscreen&&this.debug.log(this.TAG_NAME,"use offscreen"),this._opt.isHls&&(this._opt.supportHls265?this.debug.log(this.TAG_NAME,"use hls 265"):this.debug.log(this.TAG_NAME,"use hls")),this._opt.isWebrtc&&(this._opt.isWebrtcH265?this.debug.log(this.TAG_NAME,"use webrtc h265"):this._opt.isWebrtcForZLM?this.debug.log(this.TAG_NAME,"use webrtc for ZLM"):this._opt.isWebrtcForSRS?this.debug.log(this.TAG_NAME,"use webrtc for SRS"):this._opt.isWebrtcForOthers?this.debug.log(this.TAG_NAME,"use webrtc for Others"):this.debug.log(this.TAG_NAME,"use webrtc for M7S")),this.isAliyunRtc()&&this.debug.log(this.TAG_NAME,"use aliyun rtc"),this._opt.isFmp4&&this.debug.log(this.TAG_NAME,"use fmp4"),this._opt.isMpeg4&&this.debug.log(this.TAG_NAME,"use mpeg4"),this.isPlayback()&&this.debug.log(this.TAG_NAME,"use playback"),this._opt.hasVideo&&(0===this.width&&this.debug.warn(this.TAG_NAME,"container width is 0, please check the container width"),0===this.height&&this.debug.warn(this.TAG_NAME,"container height is 0, please check the container height")),this.debug.log("Player options",JSON.stringify(this._opt))}async destroy(){this._destroyed=!0,this.emit("destroy"),this.off(),this.events&&(this.events.destroy(),this.events=null),this.clearCheckLoadingTimeout(),this.clearStatsInterval(),this.clearVisibilityHiddenTimeout(),this.decoderWorker&&(await this.decoderWorker.destroy(),this.decoderWorker=null),await this._destroy()}async _destroy(){this._loading=!1,this._playing=!1,this._playbackPause=!1,this._hasLoaded=!1,this._lastVolume=null,this._zooming=!1,this._faceDetectActive=!1,this._objectDetectActive=!1,this._occlusionDetectActive=!1,this._imageDetectActive=!1,this._times={playInitStart:"",playStart:"",streamStart:"",streamResponse:"",demuxStart:"",decodeStart:"",videoStart:"",playTimestamp:"",streamTimestamp:"",streamResponseTimestamp:"",demuxTimestamp:"",decodeTimestamp:"",videoTimestamp:"",allTimestamp:""},this.singleWatermark&&(this.singleWatermark.destroy(),this.singleWatermark=null),this.ghostWatermark&&(this.ghostWatermark.destroy(),this.ghostWatermark=null),this.dynamicWatermark&&(this.dynamicWatermark.destroy(),this.dynamicWatermark=null),this.pressureObserverCpu&&(this.pressureObserverCpu.destroy(),this.pressureObserverCpu=null),this.stream&&(this.stream.destroy(),this.stream=null),this.hlsDecoder&&(await this.hlsDecoder.destroy(),this.hlsDecoder=null),this.wsRtcDecoder&&(await this.wsRtcDecoder.destroy(),this.wsRtcDecoder=null),this.mseDecoder&&(this.mseDecoder.destroy(),this.mseDecoder=null),this.webrtc&&(this.webrtc.destroy(),this.webrtc=null),this.aliyunRtcDecoder&&(this.aliyunRtcDecoder.destroy(),this.aliyunRtcDecoder=null),this.video&&(this.video.destroy(),this.video=null),this.audio&&(this.audio.destroy(),this.audio=null),this.recorder&&(this.recorder.destroy(),this.recorder=null),this.control&&(this.control.destroy(),this.control=null),this.webcodecsDecoder&&(this.webcodecsDecoder.destroy(),this.webcodecsDecoder=null),this.demux&&(this.demux.destroy(),this.demux=null),this.playback&&(this.playback.destroy(),this.playback=null),this.zoom&&(this.zoom.destroy(),this.zoom=null),this.ai&&(this.ai.destroy(),this.ai=null),this.keepScreenOn&&(this.releaseWakeLock(),this.keepScreenOn.destroy(),this.keepScreenOn=null),this.resetStats(),this._audioTimestamp=0,this._latestAudioTimestamp=0,this._videoTimestamp=0,this._streamQuality="",this._visibility=!0,this._isInZoom=!1,this._playingStartTimestamp=null,this._lastestVisibilityChangeTimestamp=null,this._videoIframeIntervalTs=null,this._tempWorkerStats=null,this._tempStreamList=[],this._tempInnerPlayBgobj={},this._flvMetaData=null,this._flvMetaDataFps=null,this._mseWorkerData={},this.isMSEVideoDecoderInitializationFailedNotSupportHevc=!1,this.debug.log("play","destroy end"),this._opt=ga(),this.$container=null}set fullscreen(e){bs()&&this._opt.useWebFullScreen?this.webFullscreen=e:this.emit(rt.fullscreen,e)}get fullscreen(){return qr.isFullscreen||this.webFullscreen}set webFullscreen(e){this.emit(rt.webFullscreen,e),setTimeout((()=>{this.updateOption({rotate:e?270:0}),this.resize()}),10)}get webFullscreen(){return this.$container.classList.contains("easyplayer-fullscreen-web")}set loaded(e){this._hasLoaded=e}get loaded(){return this._hasLoaded||this.isOldHls()||this.isWebrtcH264()||this._opt.useMSE&&ba(this._opt.hasAudio)&&ba(this._opt.demuxUseWorker)||this._opt.useWCS&&!this._opt.hasAudio&&ba(this._opt.demuxUseWorker)}set playing(e){this.isClosed()&&e?this.debug.log(this.TAG_NAME,"player is closed, so can not play"):(e&&va(this.loading)&&(this.loading=!1),this.playing!==e&&(this._playing=e,this.emit(rt.playing,e),this.emit(rt.volumechange,this.volume),e?this.emit(rt.play):this.emit(rt.pause)))}get playing(){return this._playing}get volume(){return this.audio&&this.audio.volume||0}set volume(e){this.emit(rt.mute,e>0),this.video&&this.video.$videoElement&&(this.video.$videoElement.muted=!(e>0),this.video.$videoElement.volume=e>1?1:e),e!==this.volume&&(this.audio?(this.audio.setVolume(e),this._lastVolume=this.volume,this.isMute=0===this.volume):this.debug.warn(this.TAG_NAME,"set volume error, audio is null"))}get lastVolume(){return this._lastVolume}set loading(e){this.loading!==e&&(this._loading=e,this.emit(rt.loading,this._loading))}get loading(){return this._loading}set zooming(e){this.zooming!==e&&(this.zoom||(this.zoom=new tc(this)),this._zooming=e,this.emit(rt.zooming,this.zooming))}get zooming(){return this._zooming}set recording(e){e?this.playing&&!this.recording&&(this.recorder&&this.recorder.startRecord(),this.isDemuxInWorker()&&this.decoderWorker&&this.decoderWorker.updateWorkConfig({key:"isRecording",value:!0})):this.recording&&(this.isDemuxInWorker()&&this.decoderWorker&&this.decoderWorker.updateWorkConfig({key:"isRecording",value:!1}),this.recorder&&this.recorder.stopRecordAndSave().then((()=>{})).catch((e=>{})))}get recording(){return!!this.recorder&&this.recorder.isRecording}set audioTimestamp(e){null!==e&&(this._audioTimestamp=e)}get audioTimestamp(){return this._audioTimestamp}set latestAudioTimestamp(e){null!==e&&(this._latestAudioTimestamp=e)}get latestAudioTimestamp(){return this._latestAudioTimestamp}get videoTimestamp(){return this._stats.currentPts||this._stats.ts}set streamQuality(e){this.streamQuality!==e&&(this._streamQuality=e,this.emit(rt.streamQualityChange,e))}get streamQuality(){return this._streamQuality}get isDebug(){return va(this._opt.debug)}get scaleType(){const e=this._opt,t=e.isResize,i=e.isFullResize;let r=It;return ba(i)&&ba(t)?r=It:ba(i)&&va(t)?r=Pt:va(i)&&va(t)&&(r=Bt),r}set visibility(e){this._visibility!==e&&(this._visibility=e,this.emit(rt.visibilityChange,e),this._lastestVisibilityChangeTimestamp=ps(),e?this.clearVisibilityHiddenTimeout():this.startVisibilityHiddenTimeout())}get visibility(){return this._visibility}set playbackPause(e){this._playbackPause!==e&&(this._playbackPause=e,this.emit(rt.playbackPause,e),this.emit(rt.playbackPauseOrResume,e))}get playbackPause(){return this.isPlayback()&&this._playbackPause}set videoIframeIntervalTs(e){this._videoIframeIntervalTs=e}get videoIframeIntervalTs(){return this._videoIframeIntervalTs}set faceDetectActive(e){this._faceDetectActive!==e&&(this._faceDetectActive=e,this.emit(rt.faceDetectActive,e))}get faceDetectActive(){return this._faceDetectActive}set objectDetectActive(e){this._objectDetectActive!==e&&(this._objectDetectActive=e,this.emit(rt.objectDetectActive,e))}get objectDetectActive(){return this._objectDetectActive}set occlusionDetectActive(e){this._occlusionDetectActive!==e&&(this._occlusionDetectActive=e,this.emit(rt.occlusionDetectActive,e))}get occlusionDetectActive(){return this._occlusionDetectActive}set imageDetectActive(e){this._imageDetectActive!==e&&(this._imageDetectActive=e)}get imageDetectActive(){return this._imageDetectActive}get isUseWorkerDemuxAndDecode(){return this.stream&&this.stream.getStreamType()===f}isDestroyed(){return this._destroyed}isClosed(){return this._closed}isDestroyedOrClosed(){return this.isDestroyed()||this.isClosed()}isPlaying(){let e=!1;return this._opt.playType===g?e=this.playing:this._opt.playType===v&&(e=ba(this.playbackPause)&&this.playing),e}updateOption(e,t=!1){this._opt=Object.assign({},this._opt,e),va(t)&&this.decoderWorker&&Object.keys(e).forEach((t=>{this.decoderWorker.updateWorkConfig({key:t,value:e[t]})}))}init(){return new Promise(((e,t)=>{this.video||this._opt.hasVideo&&(this.video=new Xa(this)),this.audio||this._opt.hasAudio&&(this.audio=new gn(this)),this.stream||(this.stream=new kn(this)),this.isWsRtc()?(this.wsRtcDecoder||(this.wsRtcDecoder=new Qh(this),this.loaded=!0),e()):this.isOldHls()?(this.hlsDecoder||(this.hlsDecoder=new Rd(this),this.loaded=!0),e()):this.isWebrtcH264()?(this.webrtc||(this._opt.isWebrtcForZLM?this.webrtc=new Zh(this):this._opt.isWebrtcForSRS?this.webrtc=new sc(this):this._opt.isWebrtcForOthers?this.webrtc=new ac(this):this.webrtc=new Jh(this),this.loaded=!0),e()):this.isAliyunRtc()?(this.aliyunRtcDecoder||(this.aliyunRtcDecoder=new nc(this),this.loaded=!0),e()):(this.demux||this._opt.hasVideo&&!this.isUseWorkerDemuxAndDecode&&(this.demux=new Yl(this)),this._opt.useWCS&&(this.webcodecsDecoder||(this.webcodecsDecoder=new rd(this))),this._opt.useMSE&&ba(this._opt.mseDecoderUseWorker)&&(this.mseDecoder||(this.mseDecoder=new Ed(this))),this.isUseHls265()&&(this.hlsDecoder||(this.hlsDecoder=new Yh(this))),this.isWebrtcH265()&&(this.webrtc||(this.webrtc=new Jh(this))),this.decoderWorker?this.loaded?e():this.once(rt.decoderWorkerInit,(()=>{this.isDestroyedOrClosed()?(this.debug.error(this.TAG_NAME,"init() failed and player is destroyed"),t("init() failed and player is destroyed")):(this.loaded=!0,e())})):oa(this._opt)?e():(this.decoderWorker=new uo(this),this.once(rt.decoderWorkerInit,(()=>{this.isDestroyedOrClosed()?(this.debug.error(this.TAG_NAME,"init() failed and player is destroyed"),t("init() failed and player is destroyed")):(this.loaded=!0,e())}))))}))}play(e,t={}){return new Promise(((i,r)=>{if(!e&&!this._opt.url)return r("url is empty");this._closed=!1,this.loading=!0,this.playing=!1,this._times.playInitStart=ps(),e||(e=this._opt.url),this._opt.url=e,this.control&&this._opt.loadingBackground&&this.control.initLoadingBackground(),this.init().then((()=>{this.debug.log(this.TAG_NAME,"play() init and next fetch stream"),this._times.playStart=ps(),this._opt.isNotMute&&this.mute(!1),this.enableWakeLock(),this.checkLoadingTimeout(),this.stream?(this.stream.once(nt.fetchError,(e=>{this.emitError(nt.fetchError,e)})),this.stream.once(nt.websocketError,(e=>{this.emitError(nt.websocketError,e)})),this.stream.once(rt.streamEnd,(e=>{this.emit(rt.streamEnd,e)})),this.stream.once(nt.hlsError,(e=>{this.emitError(nt.hlsError,e)})),this.stream.once(nt.webrtcError,(e=>{this.emitError(nt.webrtcError,e)})),this.stream.once(rt.streamSuccess,(()=>{i(),this._times.streamResponse=ps(),this.video&&this.video.play(),this.checkStatsInterval(),this.isPlayback()&&this.playback&&this.playback.startCheckStatsInterval()})),this.stream.fetchStream(e,t)):(this.debug.warn(this.TAG_NAME,`play() this.stream is null and is isDestroyedOrClosed is ${this.isDestroyedOrClosed()}`),r("this.stream is null"))})).catch((e=>{r(e)}))}))}playForControl(){return new Promise(((e,t)=>{this.debug.log(this.TAG_NAME,`playForControl() and pauseAndNextPlayUseLastFrameShow is ${this._opt.pauseAndNextPlayUseLastFrameShow}`),this._opt.pauseAndNextPlayUseLastFrameShow&&this._tempInnerPlayBgobj&&this._tempInnerPlayBgobj.loadingBackground&&this.updateOption({loadingBackground:this._tempInnerPlayBgobj.loadingBackground,loadingBackgroundWidth:this._tempInnerPlayBgobj.loadingBackgroundWidth,loadingBackgroundHeight:this._tempInnerPlayBgobj.loadingBackgroundHeight}),this.play().then((t=>{e(t)})).catch((e=>{t(e)}))}))}close(){return new Promise(((e,t)=>{this._close().then((()=>{this.video&&this.video.clearView(),e()})).catch((e=>{t(e)}))}))}resumeAudioAfterPause(){this.lastVolume&&(this.volume=this.lastVolume)}_close(){return new Promise(((e,t)=>{this._closed=!0,this.video&&(this.video.resetInit(),this.video.pause(!0)),this.loading=!1,this.recording=!1,this.zooming=!1,this.playing=!1,this.clearCheckLoadingTimeout(),this.clearStatsInterval(),this.isPlayback()&&this.playback&&this.playback.clearStatsInterval(),this.releaseWakeLock(),this.resetStats(),this._audioTimestamp=0,this._videoTimestamp=0,this._times={playInitStart:"",playStart:"",streamStart:"",streamResponse:"",demuxStart:"",decodeStart:"",videoStart:"",playTimestamp:"",streamTimestamp:"",streamResponseTimestamp:"",demuxTimestamp:"",decodeTimestamp:"",videoTimestamp:"",allTimestamp:""};const i=()=>{this.stream&&(this.stream.destroy(),this.stream=null),this.demux&&(this.demux.destroy(),this.demux=null),this.webcodecsDecoder&&(this.webcodecsDecoder.destroy(),this.webcodecsDecoder=null),this.mseDecoder&&(this.mseDecoder.destroy(),this.mseDecoder=null),this.hlsDecoder&&(this.hlsDecoder.destroy(),this.hlsDecoder=null),this.webrtc&&(this.webrtc.destroy(),this.webrtc=null),this.aliyunRtcDecoder&&(this.aliyunRtcDecoder.destroy(),this.aliyunRtcDecoder=null),this.audio&&(this.audio.destroy(),this.audio=null)};this.decoderWorker?this.decoderWorker.destroy().then((()=>{this.decoderWorker=null,i(),setTimeout((()=>{e()}),0)})).catch((e=>{this.debug&&this.debug.error(this.TAG_NAME,"close() decoderWorker.destroy() error",e),t()})):(i(),setTimeout((()=>{e()}),0))}))}pause(e=!1){return new Promise(((t,i)=>{e?this.close().then((()=>{t()})).catch((e=>{i(e)})):this._close().then((()=>{t()})).catch((e=>{i(e)}))}))}pauseForControl(){return new Promise(((e,t)=>{if(this.debug.log(this.TAG_NAME,"_pauseInner()"),this._opt.pauseAndNextPlayUseLastFrameShow&&this.video){const e=this.video.screenshot("","png",.92,"base64");if(e){const t=this.getVideoInfo();t?(this.debug.log(this.TAG_NAME,`pauseForControl() and loadingBackground width is ${t.width} and height is ${t.height}`),this._tempInnerPlayBgobj={loadingBackground:e,loadingBackgroundWidth:t.width,loadingBackgroundHeight:t.height}):this.debug.warn(this.TAG_NAME,"pauseForControl() and videoInfo is null")}else this.debug.warn(this.TAG_NAME,"pauseForControl() and loadingBackground is null")}this.pause().then((t=>{e(t)})).catch((e=>{t(e)}))}))}isAudioMute(){let e=!0;return this.audio&&(e=this.audio.isMute),e}isAudioNotMute(){return!this.isAudioMute()}mute(e){this.audio&&this.audio.mute(e)}resize(){this.video&&this.video.resize()}startRecord(e,t){this.recording||(this.recorder.setFileName(e,t),this.recording=!0)}stopRecordAndSave(e,t){return new Promise(((i,r)=>{this.recorder||r("recorder is null"),this.recording?(this._opt.useWasm&&this.decoderWorker&&this.decoderWorker.updateWorkConfig({key:"isRecording",value:!1}),this.recorder.stopRecordAndSave(e,t).then((e=>{i(e)})).catch((e=>{r(e)}))):r("recorder is not recording")}))}_hasControl(){let e=!1,t=!1;return Object.keys(this._opt.operateBtns).forEach((e=>{this._opt.operateBtns[e]&&-1===(""+e).indexOf("Fn")&&(t=!0)})),(this._opt.showBandwidth||t)&&(e=!0),this._opt.extendOperateBtns&&this._opt.extendOperateBtns.length>0&&(e=!0),this.isPlayback()&&this._opt.playbackConfig.showControl&&(e=!0),e}useWasmDecode(){return ba(this._opt.useMSE)&&ba(this._opt.useWCS)}canVideoTrackWritter(){const e=this._opt;return!this.isOldHls()&&!this.isWebrtcH264()&&ba(e.useMSE)&&!this.isAliyunRtc()&&(e.useWCS&&ba(e.useOffscreen)&&e.wcsUseVideoRender||this.useWasmDecode())}checkHeartTimeout$2(){if(ba(this.playbackPause)&&this.playing){if(this.isDestroyedOrClosed())return void(this.debug&&this.debug.warn(this.TAG_NAME,"checkHeartTimeout$2 but player is destroyed"));if(ba(this.isHistoryFpsListAllZero()))return void(this.debug&&this.debug.warn(this.TAG_NAME,"checkHeartTimeout$2 but fps is not all zero"));if(0!==this._stats.fps)return void(this.debug&&this.debug.warn(this.TAG_NAME,`checkHeartTimeout$2 but fps is ${this._stats.fps}`));if(ba(this.visibility)&&0!==this._stats.vbps)return void(this.debug&&this.debug.warn(this.TAG_NAME,`checkHeartTimeout$2 but page is not visibility and vbps is ${this._stats.vbps}`));const e=this._historyFpsList.join(",");this.debug.warn(this.TAG_NAME,`checkHeartTimeout$2 and\n pause and emit delayTimeout event and\n current vbps is ${this._stats.vbps} and\n current fps is ${this._stats.fps} and\n history FpsList is ${e} and\n current visibility is ${this.visibility} and`),this.emit(rt.timeout,rt.delayTimeout),this.emit(rt.delayTimeout)}else this.debug.log(this.TAG_NAME,`checkHeartTimeout$2 playbackPause is ${this.playbackPause}, playing is ${this.playing}`)}checkStatsInterval(){this._checkStatsInterval=setInterval((()=>{this.updateStats()}),1e3)}checkLoadingTimeout(){this._checkLoadingTimeout=setTimeout((()=>{this.playing?this.debug.warn(this.TAG_NAME,`checkLoadingTimeout but loading is ${this.loading} and playing is ${this.playing}`):this.isDestroyedOrClosed()?this.debug&&this.debug.warn(this.TAG_NAME,"checkLoadingTimeout but player is destroyed"):(this.debug.warn(this.TAG_NAME,"checkLoadingTimeout and pause and emit loadingTimeout event"),this.emit(rt.timeout,rt.loadingTimeout),this.emit(rt.loadingTimeout))}),1e3*this._opt.loadingTimeout)}clearCheckLoadingTimeout(){this._checkLoadingTimeout&&(this.debug.log(this.TAG_NAME,"clearCheckLoadingTimeout"),clearTimeout(this._checkLoadingTimeout),this._checkLoadingTimeout=null)}clearStatsInterval(){this._checkStatsInterval&&(clearInterval(this._checkStatsInterval),this._checkStatsInterval=null)}handleRender(){this.isDestroyedOrClosed()?this.debug&&this.debug.warn(this.TAG_NAME,"handleRender but player is destroyed"):(this.loading&&(this.clearCheckLoadingTimeout(),this.loading=!1,this.emit(rt.start)),this.playing||(this.playing=!0))}updateStats(e={}){if(this._startBpsTime||(this._startBpsTime=ps()),zs(e.ts)){const t=parseInt(e.ts,10);this._stats.ts=t,null===this._playingStartTimestamp&&t>0&&(this._playingStartTimestamp=t)}zs(e.dts)&&(this._stats.dts=parseInt(e.dts,10)),zs(e.mseTs)&&(this._stats.mseTs=e.mseTs),zs(e.buf)&&(this._stats.buf=e.buf),zs(e.netBuf)&&(this._stats.netBuf=e.netBuf),zs(e.currentPts)&&(this._stats.currentPts=e.currentPts),e.fps&&(this._stats.fps+=1),e.dfps&&(this._stats.dfps+=1),e.abps&&(this._stats.abps+=e.abps),e.vbps&&(this._stats.vbps+=e.vbps),e.workerStats&&(this._tempWorkerStats=e.workerStats),e.isDropping&&(this._stats.isDropping=e.isDropping),e.mseVideoBufferDelayTime&&(this._stats.mseVideoBufferDelayTime=parseInt(1e3*e.mseVideoBufferDelayTime,10));const t=ps();if(t-this._startBpsTime<1e3)return;null!==this._playingStartTimestamp&&this._stats.fps>0&&(this._stats.pTs+=1);let i=0,r=0,s=0,a=0,n=0;this._opt.useMSE&&(this.mseDecoder?(i=this.mseDecoder.checkSourceBufferDelay(),i=parseInt(1e3*i,10),r=this.mseDecoder.checkSourceBufferStore(),r=r.toFixed(2),s=this.mseDecoder.getDecodeDiffTimes(),a=this.mseDecoder.getDecodePlaybackRate(),n=this.mseDecoder.getPendingSegmentsLength()):this.isMseDecoderUseWorker()&&(i=this.video.checkSourceBufferDelay(),i=parseInt(1e3*i,10),r=this.video.checkSourceBufferStore(),r=r.toFixed(2),a=this.video.getDecodePlaybackRate())),this._opt.useWCS&&this.webcodecsDecoder&&(s=this.webcodecsDecoder.getDecodeDiffTimes()),this.isOldHls()&&this.hlsDecoder&&(i=this.hlsDecoder.checkHlsBufferedDelay(),i=parseInt(1e3*i,10)),this.isWsRtc()&&this.wsRtcDecoder;let o=0,l=0,d=0;this.isUseHls265()&&this.hlsDecoder&&(i=this.hlsDecoder.checkHlsBufferedDelay(),i=i.toFixed(2),o=this.hlsDecoder.getDemuxBufferedListLength(),d=this.hlsDecoder.getDemuxVideoBufferedListLength(),l=this.hlsDecoder.getDemuxAudioBufferedListLength());let h=0,c=0,u=0,p=!1,f=0;this._opt.useWasm||this._opt.demuxUseWorker?this._tempWorkerStats&&(c=this._tempWorkerStats.demuxBufferDelay,u=this._tempWorkerStats.audioDemuxBufferDelay,h=this._tempWorkerStats.flvBufferByteLength,this._stats.netBuf=this._tempWorkerStats.netBuf,f=this._tempWorkerStats.pushLatestDelay,p=this._tempWorkerStats.isStreamTsMoreThanLocal,this._stats.buf=this._tempWorkerStats.latestDelay):this.demux&&(h=this.demux.getInputByteLength(),f=this.demux.getPushLatestDelay(),p=this.demux.getIsStreamTsMoreThanLocal(),this.demux.bufferList&&(c=this.demux.bufferList.length));let m=0,y=0;this.audio&&this.audio.bufferList&&(m=this.audio.bufferList.length,y=parseInt(m*this.audio.oneBufferDuration,10));let g=0,A=0;if(this.isPlayback()&&this.video){this._opt.playbackConfig.isUseFpsRender&&(g=this.video.bufferList&&this.video.bufferList.length||0);let e=this.video.getStreamFps();const t=e>0?1e3/e:0;A=parseInt(t*g+t*c,10)}let v=0;this.videoTimestamp>0&&(v=this._stats.dts-this.videoTimestamp);const b=v+this._stats.netBuf;this.isOldHls()&&(this._stats.fps=this.hlsDecoder.getFps()),this._stats.fps>this._stats.maxFps&&(this._stats.maxFps=this._stats.fps);let _=this.getVideoCurrentTime();const E=this._stats.videoCurrentTime;let S=-1;E&&_&&(S=(_-E).toFixed(2),_=_.toFixed(2));let w=0;this.audioTimestamp>0&&(w=this.audioTimestamp-this.getRenderCurrentPts()),this._allStatsData=Object.assign(this._stats,{audioBuffer:m,audioBufferDelayTs:y,audioTs:this.audioTimestamp,latestAudioTs:this.latestAudioTimestamp,playbackVideoBuffer:g,playbackVideoWaitingBuffer:0,playbackAudioWaitingBuffer:0,playbackCacheDataDuration:A,demuxBuffer:c,pushLatestDelay:f,audioDemuxBuffer:u,flvBuffer:h,mseDelay:i,mseStore:r,mseDecodeDiffTimes:s,mseDecodePlaybackRate:a,msePendingBuffer:n,wcsDecodeDiffTimes:s,hlsDelay:i,hlsDemuxLength:o,hlsDemuxAudioLength:l,hlsDemuxVideoLength:d,delayTs:v,totalDelayTs:b,isStreamTsMoreThanLocal:p,videoCurrentTime:_,videoCurrentTimeDiff:S,audioSyncVideo:w});let T=null,k=null,C="";if(this.isPlayer()&&this._opt.hasVideo&&this.playing){T=function(e,t){let i=3;const r=t||25;return e<.33*r?i=0:e<.5*r?i=1:e<.83*r&&(i=2),i}(this._stats.fps,this._flvMetaDataFps),this._allStatsData.performance=T;const e=this.checkVideoSmooth(this._allStatsData);C=e.reason,k=e.result,this._allStatsData.videoSmooth=k}this.emit(rt.stats,this._allStatsData),this._allStatsData.flvBuffer>1048576&&this.emit(nt.flvDemuxBufferSizeTooLarge,this._allStatsData.flvBuffer),this._opt.hasVideo?(this.updateHistoryFpsList(this._stats.fps,this._stats.videoCurrentTimeDiff),zs(T)&&this.emit(rt.performance,T),zs(k)&&this.emit(rt.videoSmooth,k,C)):this._opt.hasAudio&&this.updateHistoryFpsList(this._stats.abps,0),this._stats.fps=0,this._stats.dfps=0,this._stats.abps=0,this._stats.vbps=0,this._stats.isDropping=!1,this._startBpsTime=t}resetStats(){this._startBpsTime=null,this._playingStartTimestamp=null,this._historyFpsList=[],this._historyVideoDiffList=[],this._stats={buf:0,netBuf:0,fps:0,maxFps:0,dfps:0,abps:0,vbps:0,ts:0,mseTs:0,currentPts:0,pTs:0,dts:0,mseVideoBufferDelayTime:0,isDropping:!1},this._allStatsData={}}checkVideoSmooth(e){let t=!0,i="";if(this._opt.videoBuffer,this._opt.videoBufferDelay,this.isWebrtcH264()||this.isOldHls())return{result:t,reason:i};if(0===e.vbps&&ba(this._opt.isHls)&&(i="vbpsIsZero",this.debug.log(this.TAG_NAME,`checkVideoSmooth false because ${i}`),t=!1),t&&e.isDropping&&(i="isDroppingIsTrue",this.debug.log(this.TAG_NAME,`checkVideoSmooth false because ${i}`),t=!1),t&&this.visibility&&this._historyFpsList.length>=this._opt.heartTimeout){const r=function(e){const t=Math.max(...e),i=Math.min(...e);return e.filter((e=>e!==t&&e!==i))}(this._historyFpsList),s=r.reduce(((e,t)=>e+t),0)/r.length,a=.83*s;e.fps=1.5||e.videoCurrentTimeDiff<=.5)&&-1!==e.videoCurrentTimeDiff&&(i="videoCurrentTimeDiffIsNotNormal",this.debug.log(this.TAG_NAME,`checkVideoSmooth false because videoCurrentTimeDiff is ${e.videoCurrentTimeDiff}`),t=!1),{result:t,reason:i}}enableWakeLock(){this._opt.keepScreenOn&&this.keepScreenOn&&this.keepScreenOn.enable()}releaseWakeLock(){this._opt.keepScreenOn&&this.keepScreenOn&&this.keepScreenOn.disable()}clearBufferDelay(){this._opt.useWasm?this.decoderWorker&&this.decoderWorker.clearWorkBuffer(!0):this.demux&&this.demux.clearBuffer(!0)}doDestroy(){this.emit(rt.beforeDestroy)}startVoice(){this.wsRtcDecoder&&this.wsRtcDecoder.startVoice()}pauseVoice(){this.wsRtcDecoder&&this.wsRtcDecoder.pauseVoice()}removeVoice(){this.wsRtcDecoder&&this.wsRtcDecoder.removeVoice()}handlePlayToRenderTimes(){if(this.isDestroyedOrClosed())return void this.debug.log(this.TAG_NAME,"handlePlayToRenderTimes but player is closed or destroyed");const e=this.getPlayToRenderTimes();this.emit(rt.playToRenderTimes,e)}getPlayToRenderTimes(){const e=this._times;return e.playTimestamp=e.playStart-e.playInitStart,e.streamTimestamp=e.streamStart-e.playStart,e.streamResponseTimestamp=e.streamResponse-e.streamStart>0?e.streamResponse-e.streamStart:0,e.demuxTimestamp=e.demuxStart-e.streamResponse>0?e.demuxStart-e.streamResponse:0,e.decodeTimestamp=e.decodeStart-e.demuxStart>0?e.decodeStart-e.demuxStart:0,e.videoTimestamp=e.videoStart-e.decodeStart,e.allTimestamp=e.videoStart-e.playInitStart,e}getOption(){return this._opt}getPlayType(){return this._opt.playType}isPlayer(){return this._opt.playType===g}isPlayback(){return this._opt.playType===v}isDemuxSetCodecInit(){let e=!0,t=this._opt;return t.useWCS&&!t.useOffscreen?e=!!this.webcodecsDecoder&&this.webcodecsDecoder.hasInit:t.useMSE&&(e=!!this.mseDecoder&&this.mseDecoder.hasInit),e}isDemuxDecodeFirstIIframeInit(){let e=!0,t=this._opt;return t.useWCS&&!t.useOffscreen?e=!!this.webcodecsDecoder&&this.webcodecsDecoder.isDecodeFirstIIframe:t.useMSE&&(e=!!this.mseDecoder&&this.mseDecoder.isDecodeFirstIIframe),e}isAudioPlaybackRateSpeed(){let e=!1;return this.audio&&(e=this.audio.isPlaybackRateSpeed()),e}getPlayingTimestamp(){return this._stats.pTs}getRecordingType(){let e=null;return this.recorder&&(e=this.recorder.getType()),e}getRecordingByteLength(){let e=0;return this.recording&&(e=this.recorder.getToTalByteLength()),e}getRecordingDuration(){let e=0;return this.recording&&(e=this.recorder.getTotalDuration()),e}getDecodeType(){let e="";const t=this.getOption();return this.isWebrtcH264()?V:this.isAliyunRtc()?j:this.isOldHls()?H:this.isWsRtc()?W:(t.useMSE&&(e+=U+" ",t.mseDecoderUseWorker&&(e+="worker")),t.useWCS&&(e+=F+" "),t.useWasm&&(e+=N+" ",t.useSIMD&&(e+=G+" "),t.useMThreading&&(e+=z+" ")),t.useOffscreen&&(e+=O+" "),e)}getDemuxType(){let e="";return e=this.getOption().demuxType,e}getRenderType(){let e="";return this.video&&(e=this.video.getType()),e}getCanvasRenderType(){let e="";return this.video&&(e=this.video.getCanvasType()),e}getAudioEngineType(){let e="";return this.audio&&(e=this.audio.getEngineType()),e}getStreamType(){let e="";return this.stream&&(e=this.stream.getStreamType()),e}getAllStatsData(){return this._allStatsData}togglePerformancePanel(e){this.updateOption({showPerformance:e}),this.emit(rt.togglePerformancePanel,e)}setScaleMode(e){let t={isFullResize:!1,isResize:!1,aspectRatio:"default"};switch(e=Number(e)){case It:t.isFullResize=!1,t.isResize=!1;break;case Pt:t.isFullResize=!1,t.isResize=!0;break;case Bt:t.isFullResize=!0,t.isResize=!0}this.updateOption(t),this.resize(),this.emit(rt.viewResizeChange,e)}startVisibilityHiddenTimeout(){this.clearVisibilityHiddenTimeout(),this._opt.pageVisibilityHiddenTimeout>0&&(this.visibilityHiddenTimeout=setTimeout((()=>{this.emit(rt.visibilityHiddenTimeout)}),1e3*this._opt.pageVisibilityHiddenTimeout))}clearVisibilityHiddenTimeout(){this._checkVisibleHiddenTimeout&&(clearTimeout(this._checkVisibleHiddenTimeout),this._checkVisibleHiddenTimeout=null)}faceDetect(e){this.faceDetectActive=e}objectDetect(e){this.objectDetectActive=e}occlusionDetect(e){this.occlusionDetectActive=e}downloadNakedFlowFile(){this.demux&&this.demux.downloadNakedFlowFile&&this.demux.downloadNakedFlowFile()}downloadFmp4File(){this.demux&&this.demux.downloadFmp4File&&this.demux.downloadFmp4File()}downloadMpeg4File(){const e=new Blob([this._tempStreamList]);try{const t=document.createElement("a");t.href=window.URL.createObjectURL(e),t.download=Date.now()+".mpeg4",t.click(),window.URL.revokeObjectURL(t.href)}catch(e){console.error("downloadMpeg4File",e)}}hasCacheOnGopBuffer(){const e=this.videoIframeIntervalTs,t=this._allStatsData.demuxBuffer,i=this._allStatsData.maxFps;let r=!1;if(e&&t&&i){r=1e3/i*t>e}return r}addContentToCanvas(e=[]){this.video&&this.video.addContentToCanvas(e)}sendWebsocketMessage(e){const t=this.getStreamType();t===c||t===f+" "+c?this.stream.sendMessage(e):this.debug.warn(this.TAG_NAME,`sendWebsocketMessage: stream type is not websocket, current stream type is ${this.getStreamType()}`)}checkIsInRender(){const e=this._stats;return e.vbps>0&&e.fps>0}setControlHtml(e){this.control&&this.control.$controlHtml&&(this.control.$controlHtml.innerHTML=e)}clearControlHtml(){this.control&&this.control.$controlHtml&&(this.control.$controlHtml.innerHTML="")}updateWatermark(e){this.singleWatermark&&this.singleWatermark.update(e)}removeWatermark(){this.singleWatermark&&this.singleWatermark.remove()}getVideoInfo(){let e=null;return this.video&&(e=this.video.getVideoInfo()),e}getAudioInfo(){let e=null;return this.audio&&(e=this.audio.getAudioInfo()),e}getVideoPlaybackQuality(){let e=null;return this.video&&(e=this.video.getPlaybackQuality()),e}emitError(e,t=""){this.emit(rt.error,e,t),this.emit(e,t)}updateHistoryFpsList(e,t){this.playbackPause||(this._historyFpsList.length>this._opt.heartTimeout&&(this._historyFpsList.shift(),this._historyVideoDiffList.shift()),this._historyFpsList.push(e),this._historyVideoDiffList.push(t),this.isHistoryFpsListAllZero()&&this.checkHeartTimeout$2())}isHistoryFpsListAllZero(){let e=!0;if(this._historyFpsList.length0){e=!1;break}if(e)for(let t=0;t0){e=!1;break}return e}isUseHls265(){return va(this._opt.isHls)&&va(this._opt.supportHls265)}isHls(){return va(this._opt.isHls)}isOldHls(){return va(this._opt.isHls)&&ba(this._opt.supportHls265)}isWsRtc(){return va(this._opt.isWsRtc)}isWebrtcNotH265(){return va(this._opt.isWebrtc)&&ba(this._opt.isWebrtcH265)}isWebrtcH264(){return va(this._opt.isWebrtc)&&ba(this._opt.isWebrtcH265)}isWebrtcH265(){return va(this._opt.isWebrtc)&&va(this._opt.isWebrtcH265)}isAliyunRtc(){return va(this._opt.isAliyunRtc)}isUseHls265UseMse(){return this.isUseHls265()&&this.isUseMSE()}isStreamWebTransport(){return this.getStreamType()===p}isPlaybackCacheBeforeDecodeForFpsRender(){return this.isPlayback()&&va(this._opt.playbackConfig.isCacheBeforeDecodeForFpsRender)&&va(this._opt.useWCS)}isPlaybackUseWCS(){return this.isPlayback()&&va(this._opt.useWCS)}isPlaybackUseMSE(){return this.isPlayback()&&va(this._opt.useMSE)}isPlayUseMSE(){return this.isPlayer()&&va(this._opt.useMSE)}isInWebFullscreen(){return this._opt.useWebFullScreen&&bs()&&this.fullscreen}getPlaybackRate(){let e=1;return va(this.isPlayback())&&this.playback&&(e=this.playback.rate),e}isPlaybackOnlyDecodeIFrame(){return va(this.isPlayback())&&this.getPlaybackRate()>=this._opt.playbackForwardMaxRateDecodeIFrame}pushTempStream(e){const t=new Uint8Array(e);this._tempStreamList.push(t)}updateLoadingText(e){this.loading&&this.control&&this.control.updateLoadingText(e)}getVideoCurrentTime(){let e=0;return this.video&&(this._opt.useMSE?this.mseDecoder?e=this.mseDecoder.getVideoCurrentTime():this.isMseDecoderUseWorker()&&(e=this.video.getVideoCurrentTime()):this.isWebrtcH264()&&this.webrtc?e=this.webrtc.getVideoCurrentTime():this.isAliyunRtc()&&this.aliyunRtcDecoder&&(e=this.aliyunRtcDecoder.getVideoCurrentTime())),e}addMemoryLog(e,...t){this.emit(rt.memoryLog,` [${e}] `,...t)}downloadMemoryLog(){this.emit(rt.downloadMemoryLog)}isInMulti(){return-1!==this._opt.multiIndex}isWebrtcForM7S(){return ba(this._opt.isWebrtcForZLM)&&ba(this._opt.isWebrtcForSRS)&&ba(this._opt.isWebrtcForOthers)}updateMetaData(e){if(this.debug.log(this.TAG_NAME,"updateMetaData",JSON.stringify(e)),this._flvMetaData=e,this._flvMetaData){const e=this._flvMetaData;if(Ps(e.framerate)){const t=Math.floor(1e3*e.framerate);if(t>0){const e=t/1e3;this._flvMetaDataFps=e}}Gs(e.hasAudio)&&ba(e.hasAudio)&&(this.debug.log("updateMetaData","hasAudio",e.hasAudio,"and update _opt.hasAudio"),this._opt.hasAudio=e.hasAudio),Gs(e.hasVideo)&&ba(e.hasVideo)&&(this.debug.log("updateMetaData","hasVideo",e.hasVideo,"and update _opt.hasVideo"),this._opt.hasVideo=e.hasVideo)}this.emit(rt.flvMetaData,e)}getMetaData(){return this._flvMetaData}getExtendBtnList(){return this.control.getExtendBtnList().map((e=>({name:e.name,$container:e.$iconContainer,$btn:e.$iconWrap,$activeBtn:e.$activeIconWrap})))}getCpuLevel(){let e=null;return this.pressureObserverCpu&&(e=this.pressureObserverCpu.getCurrentCpuState()),e}isRecordTypeFlv(){return this.recorder&&this._opt.recordType===E}isRecordTypeMp4(){return this.recorder&&this._opt.recordType===b}isRecordTypeWebm(){return this.recorder&&this._opt.recordType===_}isDemuxInWorker(){return this._opt.useWasm||this._opt.demuxUseWorker}isUseMSE(){return va(this._opt.useMSE)}isUseWCS(){return va(this._opt.useWCS)}isUseWASM(){return va(this._opt.useWasm)}isMseDecoderUseWorker(){return this.isUseMSE()&&va(this._opt.mseDecoderUseWorker)}getAudioSyncVideoDiff(){return this.audioTimestamp-this.getRenderCurrentPts()}getMseVideoBufferDelayTime(){let e=0;return this._opt.useMSE&&this.mseDecoder&&(this.mseDecoder?e=this.mseDecoder.getVideoBufferDelayTime():this.isMseDecoderUseWorker()&&(e=this.video.getVideoBufferDelayTime()),e=parseInt(1e3*e,10)),e}updateCurrentPts(e){this.updateStats({currentPts:e}),this.emit(rt.currentPts,e)}getRenderCurrentPts(){let e=0;return e=this._stats.currentPts?this._stats.currentPts:this.videoTimestamp-this.getMseVideoBufferDelayTime(),e}openSyncAudioAndVideo(){return this._opt.syncAudioAndVideo&&this._opt.hasVideo}showTipsMessageByCode(e){if(this.control){const t=this._opt.showMessageConfig[e]||"未知异常";this.control.showTipsMessage(t,e)}}showTipsMessageByContent(e){this.control&&e&&this.control.showTipsMessage(e)}hideTipsMessage(){this.control&&this.control.hideTipsMessage()}decoderCheckFirstIFrame(){va(this._opt.checkFirstIFrame)&&(this.mseDecoder?this.mseDecoder.isDecodeFirstIIframe=!1:this.webcodecsDecoder&&(this.webcodecsDecoder.isDecodeFirstIIframe=!1))}isHlsCanVideoPlay(){return this._canPlayAppleMpegurl&&this.isOldHls()}}class hc{constructor(e){const{fromSampleRate:t,toSampleRate:i,channels:r,inputBufferSize:s}=e;if(!t||!i||!r)throw new Error("Invalid settings specified for the resampler.");this.resampler=null,this.fromSampleRate=t,this.toSampleRate=i,this.channels=r||0,this.inputBufferSize=s,this.initialize()}initialize(){this.fromSampleRate==this.toSampleRate?(this.resampler=e=>e,this.ratioWeight=1):(this.fromSampleRate{let t,i,r,s,a,n,o,l,d,h=e.length,c=this.channels;if(h%c!=0)throw new Error("Buffer was of incorrect sample length.");if(h<=0)return[];for(t=this.outputBufferSize,i=this.ratioWeight,r=this.lastWeight,s=0,a=0,n=0,o=0,l=this.outputBuffer;r<1;r+=i)for(a=r%1,s=1-a,this.lastWeight=r%1,d=0;d0?d:0)]*s+e[n+(c+d)]*a;r+=i,n=Math.floor(r)*c}for(d=0;d{let t,i,r,s,a,n,o,l,d,h,c,u=e.length,p=this.channels;if(u%p!=0)throw new Error("Buffer was of incorrect sample length.");if(u<=0)return[];for(t=this.outputBufferSize,i=[],r=this.ratioWeight,s=0,n=0,o=0,l=!this.tailExists,this.tailExists=!1,d=this.outputBuffer,h=0,c=0,a=0;a0&&n=o)){for(a=0;a0?a:0)]*s;c+=s,s=0;break}for(a=0;a{t[i]=function(e){let t,i,r;return e>=0?t=213:(t=85,(e=-e-1)<0&&(e=32767)),i=mc(e,fc,8),i>=8?127^t:(r=i<>4&cc:e>>i+3&cc,r^t)}(e)})),t}function gc(e){const t=[];return Array.prototype.slice.call(e).forEach(((e,i)=>{t[i]=function(e){let t=0;e<0?(e=pc-e,t=127):(e+=pc,t=255);let i=mc(e,fc,8);return i>=8?127^t:(i<<4|e>>i+3&15)^t}(e)})),t}class Ac extends Ra{constructor(e,t={}){super(),this._opt={},e&&(this.player=e),this.tag="talk";const i=ma(Xi);this._opt=Object.assign({},i,t),this._opt.sampleRate=parseInt(this._opt.sampleRate,10),this._opt.sampleBitsWidth=parseInt(this._opt.sampleBitsWidth,10),this.audioContext=null,this.gainNode=null,this.recorder=null,this.workletRecorder=null,this.biquadFilter=null,this.userMediaStream=null,this.clearWorkletUrlTimeout=null,this.bufferSize=512,this._opt.audioBufferLength=this.calcAudioBufferLength(),this.audioBufferList=[],this.socket=null,this.socketStatus=ot,this.mediaStreamSource=null,this.heartInterval=null,this.checkGetUserMediaTimeout=null,this.wsUrl=null,this.startTimestamp=0,this.sequenceId=0,this.tempTimestamp=null,this.tempG711BufferList=[],this.tempRtpBufferList=[],this.events=new Ca(this),this._initTalk(),this.player||(this.debug=new jr(this)),this._opt.encType!==mi&&this._opt.encType!==yi||8e3===this._opt.sampleRate&&16===this._opt.sampleBitsWidth||this.warn(this.tag,`\n encType is ${this._opt.encType} and sampleBitsWidth is ${this._opt.sampleBitsWidth}, set sampleBitsWidth to ${this._opt.sampleBitsWidth}。\n ${this._opt.encType} only support sampleRate 8000 and sampleBitsWidth 16`),this.log(this.tag,"init",JSON.stringify(this._opt))}destroy(){this.clearWorkletUrlTimeout&&(clearTimeout(this.clearWorkletUrlTimeout),this.clearWorkletUrlTimeout=null),this.userMediaStream&&(this.userMediaStream.getTracks&&this.userMediaStream.getTracks().forEach((e=>{e.stop()})),this.userMediaStream=null),this.mediaStreamSource&&(this.mediaStreamSource.disconnect(),this.mediaStreamSource=null),this.recorder&&(this.recorder.disconnect(),this.recorder.onaudioprocess=null,this.recorder=null),this.biquadFilter&&(this.biquadFilter.disconnect(),this.biquadFilter=null),this.gainNode&&(this.gainNode.disconnect(),this.gainNode=null),this.workletRecorder&&(this.workletRecorder.disconnect(),this.workletRecorder=null),this.socket&&(this.socketStatus===lt&&this._sendClose(),this.socket.close(),this.socket=null),this._stopHeartInterval(),this._stopCheckGetUserMediaTimeout(),this.audioContext=null,this.gainNode=null,this.recorder=null,this.audioBufferList=[],this.sequenceId=0,this.wsUrl=null,this.tempTimestamp=null,this.tempRtpBufferList=[],this.tempG711BufferList=[],this.startTimestamp=0,this.log("talk","destroy")}addRtpToBuffer(e){const t=e.length+this.tempRtpBufferList.length,i=new Uint8Array(t);i.set(this.tempRtpBufferList,0),i.set(e,this.tempRtpBufferList.length),this.tempRtpBufferList=i}addG711ToBuffer(e){const t=e.length+this.tempG711BufferList.length,i=new Uint8Array(t);i.set(this.tempG711BufferList,0),i.set(e,this.tempG711BufferList.length),this.tempG711BufferList=i}downloadRtpFile(){const e=new Blob([this.tempRtpBufferList]);try{const t=document.createElement("a");t.href=window.URL.createObjectURL(e),t.download=Date.now()+".rtp",t.click(),window.URL.revokeObjectURL(t.href)}catch(e){console.error("downloadRtpFile",e)}}downloadG711File(){const e=new Blob([this.tempG711BufferList]);try{const t=document.createElement("a");t.href=window.URL.createObjectURL(e),t.download=Date.now()+"."+this._opt.encType,t.click(),window.URL.revokeObjectURL(t.href)}catch(e){console.error("downloadRtpFile",e)}}calcAudioBufferLength(){const{sampleRate:e,sampleBitsWidth:t}=this._opt;return 8*e*.02/8}get socketStatusOpen(){return this.socketStatus===lt}log(...e){this._log("log",...e)}warn(...e){this._log("warn",...e)}error(...e){this._log("error",...e)}_log(e,...t){this.player?this.player.debug[e](...t):this.debug?this.debug[e](...t):console[e](...t)}_getSequenceId(){return++this.sequenceId}_createWebSocket(){return new Promise(((e,t)=>{const i=this.events.proxy;this.socket=new WebSocket(this.wsUrl),this.socket.binaryType="arraybuffer",this.emit(rt.talkStreamStart),i(this.socket,ji,(()=>{this.socketStatus=lt,this.log(this.tag,"websocket open -> do talk"),this.emit(rt.talkStreamOpen),e(),this._doTalk()})),i(this.socket,qi,(e=>{this.log(this.tag,"websocket message",e.data),this.emit(rt.talkStreamMessage,e)})),i(this.socket,$i,(e=>{this.socketStatus=dt,this.warn(this.tag,"websocket close -> reject",e),this.emit(rt.talkStreamClose),t(e)})),i(this.socket,Ki,(e=>{this.socketStatus=ht,this.error(this.tag,"websocket error -> reject",e),this.emit(rt.talkStreamError,e),t(e)}))}))}_sendClose(){}_initTalk(){this._initMethods(),this._opt.engine===Yi?this._initWorklet():this._opt.engine===Qi&&this._initScriptProcessor(),this.log(this.tag,"audioContext samplerate",this.audioContext.sampleRate)}_initMethods(){this.audioContext=new(window.AudioContext||window.webkitAudioContext)({sampleRate:48e3}),this.gainNode=this.audioContext.createGain(),this.gainNode.gain.value=1,this.biquadFilter=this.audioContext.createBiquadFilter(),this.biquadFilter.type="lowpass",this.biquadFilter.frequency.value=3e3,this.resampler=new hc({fromSampleRate:this.audioContext.sampleRate,toSampleRate:this._opt.sampleRate,channels:this._opt.numberChannels,inputBufferSize:this.bufferSize})}_initScriptProcessor(){const e=this.audioContext.createScriptProcessor||this.audioContext.createJavaScriptNode;this.recorder=e.apply(this.audioContext,[this.bufferSize,this._opt.numberChannels,this._opt.numberChannels]),this.recorder.onaudioprocess=e=>this._onaudioprocess(e)}_initWorklet(){const e=la((function(){class e extends AudioWorkletProcessor{constructor(e){super(),this._cursor=0,this._bufferSize=e.processorOptions.bufferSize,this._buffer=new Float32Array(this._bufferSize)}process(e,t,i){if(!e.length||!e[0].length)return!0;for(let t=0;t>> workletUrl >>>",e),this.audioContext.audioWorklet&&this.audioContext.audioWorklet.addModule(e).then((()=>{const e=new AudioWorkletNode(this.audioContext,"talk-processor",{processorOptions:{bufferSize:this.bufferSize}});e.connect(this.gainNode),e.port.onmessage=e=>{"data"===e.data.eventType&&this._encodeAudioData(e.data.buffer)},this.workletRecorder=e})),this.clearWorkletUrlTimeout=setTimeout((()=>{URL.revokeObjectURL(e),this.clearWorkletUrlTimeout=null}),ie)}_onaudioprocess(e){const t=e.inputBuffer.getChannelData(0);this._encodeAudioData(new Float32Array(t))}_encodeAudioData(e){if(0===e[0]&&0===e[1])return void this.log(this.tag,"empty audio data");const t=this.resampler.resample(e);let i=t;if(16===this._opt.sampleBitsWidth?i=function(e){let t=e.length,i=new Int16Array(t);for(;t--;){let r=Math.max(-1,Math.min(1,e[t]));i[t]=r<0?32768*r:32767*r}return i}(t):8===this._opt.sampleBitsWidth&&(i=function(e){let t=e.length,i=new Int8Array(t);for(;t--;){let r=Math.max(-1,Math.min(1,e[t]));const s=r<0?32768*r:32767*r;i[t]=parseInt(255/(65535/(32768+s)),10)}return i}(t)),null!==i.buffer){let e=null;this._opt.encType===mi?e=yc(i):this._opt.encType===yi?e=gc(i):this._opt.encType===gi&&(e=i);const t=new Uint8Array(e);for(let e=0;e>8,t[o++]=255&e}t[o++]=128,t[o++]=128+i,t[o++]=r/256,t[o++]=r%256,t[o++]=s/65536/256,t[o++]=s/65536%256,t[o++]=s%65536/256,t[o++]=s%65536%256,t[o++]=a/65536/256,t[o++]=a/65536%256,t[o++]=a%65536/256,t[o++]=a%65536%256;let l=t.concat([...e]),d=new Uint8Array(l.length);for(let e=0;e{this.log(this.tag,"getUserMedia success"),this.userMediaStream=e,this.mediaStreamSource=this.audioContext.createMediaStreamSource(e),this.mediaStreamSource.connect(this.biquadFilter),this.recorder?(this.biquadFilter.connect(this.recorder),this.recorder.connect(this.gainNode)):this.workletRecorder&&(this.biquadFilter.connect(this.workletRecorder),this.workletRecorder.connect(this.gainNode)),this.gainNode.connect(this.audioContext.destination),this.emit(rt.talkGetUserMediaSuccess),null===e.oninactive&&(e.oninactive=e=>{this._handleStreamInactive(e)})})).catch((e=>{this.error(this.tag,"getUserMedia error",e.toString()),this.emit(rt.talkGetUserMediaFail,e.toString())})).finally((()=>{this.log(this.tag,"getUserMedia finally"),this._stopCheckGetUserMediaTimeout()}))}_getUserMedia2(){this.log(this.tag,"getUserMedia"),navigator.mediaDevices?navigator.mediaDevices.getUserMedia({audio:!0}).then((e=>{this.log(this.tag,"getUserMedia2 success")})):navigator.getUserMedia({audio:!0},this.log(this.tag,"getUserMedia2 success"),this.log(this.tag,"getUserMedia2 fail"))}async _getUserMedia3(){this.log(this.tag,"getUserMedia3");try{const e=await navigator.mediaDevices.getUserMedia({audio:{latency:!0,noiseSuppression:!0,autoGainControl:!0,echoCancellation:!0,sampleRate:48e3,channelCount:1},video:!1});console.log("getUserMedia() got stream:",e),this.log(this.tag,"getUserMedia3 success")}catch(e){this.log(this.tag,"getUserMedia3 fail")}}_handleStreamInactive(e){this.userMediaStream&&(this.warn(this.tag,"stream oninactive",e),this.emit(rt.talkStreamInactive))}_startCheckGetUserMediaTimeout(){this._stopCheckGetUserMediaTimeout(),this.checkGetUserMediaTimeout=setTimeout((()=>{this.log(this.tag,"check getUserMedia timeout"),this.emit(rt.talkGetUserMediaTimeout)}),this._opt.getUserMediaTimeout)}_stopCheckGetUserMediaTimeout(){this.checkGetUserMediaTimeout&&(this.log(this.tag,"stop checkGetUserMediaTimeout"),clearTimeout(this.checkGetUserMediaTimeout),this.checkGetUserMediaTimeout=null)}_startHeartInterval(){this.heartInterval=setInterval((()=>{this.log(this.tag,"heart interval");let e=[35,36,0,0,0,0,0,0];e=new Uint8Array(e),this.socket.send(e.buffer)}),15e3)}_stopHeartInterval(){this.heartInterval&&(this.log(this.tag,"stop heart interval"),clearInterval(this.heartInterval),this.heartInterval=null)}startTalk(e){return new Promise(((t,i)=>{if(!function(){let e=!1;const t=window.navigator;return t&&(e=!(!t.mediaDevices||!t.mediaDevices.getUserMedia),e||(e=!!(t.getUserMedia||t.webkitGetUserMedia||t.mozGetUserMedia||t.msGetUserMedia))),e}())return i("not support getUserMedia");if(this.wsUrl=e,this._opt.testMicrophone)this._doTalk();else{if(!this.wsUrl)return i("wsUrl is null");this._createWebSocket().catch((e=>{i(e)}))}this.once(rt.talkGetUserMediaFail,(()=>{i("getUserMedia fail")})),this.once(rt.talkGetUserMediaSuccess,(()=>{t()}))}))}setVolume(e){e=parseFloat(e).toFixed(2),isNaN(e)||(e=fs(e,0,1),this.gainNode.gain.value=e)}getOption(){return this._opt}get volume(){return this.gainNode?parseFloat(100*this.gainNode.gain.value).toFixed(0):null}}class vc{constructor(e){this.player=e,this.globalSetting=null;const t=xs();this.defaultSettings={watermark_id:`EasyPlayerPro_${t}`,watermark_prefix:`EasyPlayerPro_mask_${t}`,watermark_txt:"EasyPlayerPro 测试水印",watermark_x:0,watermark_y:0,watermark_rows:0,watermark_cols:0,watermark_x_space:0,watermark_y_space:0,watermark_font:"微软雅黑",watermark_color:"black",watermark_fontsize:"18px",watermark_alpha:.15,watermark_width:150,watermark_height:100,watermark_angle:15,watermark_parent_width:0,watermark_parent_height:0,watermark_parent_node:null},this.player.debug.log("Watermark","int")}destroy(){this._removeMark(),this.globalSetting=null,this.defaultSettings={watermark_id:"",watermark_prefix:"",watermark_txt:"EasyPlayerPro 测试水印",watermark_x:0,watermark_y:0,watermark_rows:0,watermark_cols:0,watermark_x_space:0,watermark_y_space:0,watermark_font:"微软雅黑",watermark_color:"black",watermark_fontsize:"18px",watermark_alpha:.15,watermark_width:150,watermark_height:100,watermark_angle:-15,watermark_parent_width:0,watermark_parent_height:0,watermark_parent_node:null},this.player.debug.log("Watermark","destroy")}remove(){this._removeMark()}load(e){this.globalSetting=e,this._loadMark(e)}resize(){this.player.debug.log("Watermark","resize()"),this.globalSetting&&this._loadMark(this.globalSetting)}_loadMark(){let e=this.defaultSettings;if(1===arguments.length&&"object"==typeof arguments[0]){var t=arguments[0]||{};for(let i in t)t[i]&&e[i]&&t[i]===e[i]||(t[i]||0===t[i])&&(e[i]=t[i])}var i=document.getElementById(e.watermark_id);i&&i.parentNode&&i.parentNode.removeChild(i);var r="string"==typeof e.watermark_parent_node?document.getElementById(e.watermark_parent_node):e.watermark_parent_node,s=r||document.body;const a=s.getBoundingClientRect();var n=Math.max(s.scrollWidth,s.clientWidth,a.width),o=Math.max(s.scrollHeight,s.clientHeight,a.height),l=arguments[0]||{},d=s;(l.watermark_parent_width||l.watermark_parent_height)&&d&&(e.watermark_x=e.watermark_x+0,e.watermark_y=e.watermark_y+0);var h=document.getElementById(e.watermark_id),c=null;if(h)h.shadowRoot&&(c=h.shadowRoot);else{(h=document.createElement("div")).id=e.watermark_id,h.setAttribute("style","pointer-events: none !important; display: block !important"),c="function"==typeof h.attachShadow?h.attachShadow({mode:"open"}):h;var u=s.children,p=Math.floor(Math.random()*(u.length-1))+1;u[p]?s.insertBefore(h,u[p]):s.appendChild(h)}e.watermark_cols=parseInt((n-e.watermark_x)/(e.watermark_width+e.watermark_x_space));var f,m=parseInt((n-e.watermark_x-e.watermark_width*e.watermark_cols)/e.watermark_cols);e.watermark_x_space=m?e.watermark_x_space:m,e.watermark_rows=parseInt((o-e.watermark_y)/(e.watermark_height+e.watermark_y_space));var y,g,A,v=parseInt((o-e.watermark_y-e.watermark_height*e.watermark_rows)/e.watermark_rows);e.watermark_y_space=v?e.watermark_y_space:v,r?(f=e.watermark_x+e.watermark_width*e.watermark_cols+e.watermark_x_space*(e.watermark_cols-1),y=e.watermark_y+e.watermark_height*e.watermark_rows+e.watermark_y_space*(e.watermark_rows-1)):(f=0+e.watermark_x+e.watermark_width*e.watermark_cols+e.watermark_x_space*(e.watermark_cols-1),y=0+e.watermark_y+e.watermark_height*e.watermark_rows+e.watermark_y_space*(e.watermark_rows-1));for(var b=0;b\n \n \n ${m.watermark_txt}\n \n \n ${m.watermark_txt}\n \n \n \n \n `,_=window.btoa(unescape(encodeURIComponent(b)));var E=document.createElement("div");E.style.position="absolute",E.style.left="0px",E.style.top="0px",E.style.overflow="hidden",E.style.zIndex="9999999",E.style.width=n+"px",E.style.height=o+"px",E.style.display="block",E.style["-ms-user-select"]="none",E.style.backgroundImage=`url(data:image/svg+xml;base64,${_})`,c.appendChild(E)}_removeMark(){const e=this.defaultSettings;var t=document.getElementById(e.watermark_id);if(t){var i=t.parentNode;i&&i.removeChild(t)}}_calcTextSize(){const{watermark_txt:e,watermark_font:t,watermark_fontsize:i}=this.globalSetting,r=document.createElement("span");r.innerHTML=e,r.setAttribute("style",`font-family: ${t}; font-size: ${i}px; visibility: hidden; display: inline-block`),document.querySelector("body").appendChild(r);const s={width:r.offsetWidth,height:r.offsetHeight};return r.remove(),s}}const _c="right",Ec="left",Sc="up",wc="down",Tc="leftUp",kc="leftDown",Cc="rightUp",Rc="rightDown",Dc="zoomExpand",xc="zoomNarrow",Lc="apertureFar",Ic="apertureNear",Pc="focusFar",Bc="focusNear",Mc="setPos",Uc="calPos",Fc="delPos",Oc="wiperOpen",Nc="wiperClose",Gc={stop:0,fiStop:0,right:1,left:2,up:8,down:4,leftUp:10,leftDown:6,rightUp:9,rightDown:5,zoomExpand:16,zoomNarrow:32,apertureFar:72,apertureNear:68,focusFar:66,focusNear:65,setPos:129,calPos:130,delPos:131,wiperOpen:140,wiperClose:141},zc=[25,50,75,100,125,150,175,200,225,250],Vc=[1,2,3,4,5,6,7,8,9,16],Hc=[16,48,80,112,144,160,176,192,208,224];function Wc(e){const{type:t,speed:i=5,index:r=0}=e,s=function(e){e=e||5;const t=e-1,i=zc[t]||zc[4];return i}(i);let a,n,o,l;switch(a=Gc[t],t){case Sc:case wc:case Lc:case Ic:o=s;break;case _c:case Ec:case Pc:case Bc:n=s;break;case Tc:case kc:case Cc:case Rc:n=s,o=s;break;case Dc:case xc:l=function(e){e=e||5;const t=e-1,i=Hc[t]||Hc[4];return i}(i);break;case Uc:case Fc:case Mc:o=function(e){return Vc[e-1]}(r);break;case Nc:case Oc:n=1}return function(e,t,i,r){let s=[];s[0]=165,s[1]=15,s[2]=1,s[3]=0,s[4]=0,s[5]=0,s[6]=0,e&&(s[3]=e);t&&(s[4]=t);i&&(s[5]=i);r&&(s[6]=r);return s[7]=(s[0]+s[1]+s[2]+s[3]+s[4]+s[5]+s[6])%256,function(e){let t="";for(let i=0;it)){for(const s in e)Object.prototype.hasOwnProperty.call(e,s)&&(i===t?r[s]=$c(e[s]):"object"==typeof e[s]?r[s]=Kc(e[s],t,i+1):r[s]=e[s]);return r}}function qc(){return(new Date).toLocaleString()}class Yc{constructor(e,t={}){this.player=e,this.logMaxSize=t?.logMaxSize||204800,this.logSize=0,this.logTextArray=[]}destroy(){this.clear()}clear(){this.logSize=0,this.logTextArray=[]}logCache(...e){let t="";try{const i=e.map((e=>Kc(e)));t="[EasyPro] "+qc()+JSON.stringify(i)}catch(e){return}if(this.logSize+=t.length,this.logTextArray.push(t),this.logSize>this.logMaxSize){const e=this.logTextArray.shift();this.logSize-=e.length}}download(){const e=this.logTextArray.join("\n");this.clear();const t=new Blob([e],{type:"text/plain"});ja(t,"EasyPro-"+qc()+".log")}}class Qc extends Ra{constructor(e={}){super(),this._opt={},this.$container=null,Object.keys(e).forEach((t=>{if(void 0===e[t])throw new Error(`EasyPro option "${t}" can not be undefined`)})),(Ts()||ks())&&(e.useMSE=!1,e.useWCS=!1),this.originalOptions=e;const t=ya();let i=Object.assign({},t,e);i.url="",i.isMulti&&(i.debugUuid="xxxx".replace(/[xy]/g,(function(e){var t=16*Math.random()|0;return("x"==e?t:3&t|8).toString(16)}))),this.debug=new jr(this),this.debug.log("EasyPro","init");let r=e.container;if("string"==typeof e.container&&(r=document.querySelector(e.container)),!r)throw this.debug.error("EasyPro","EasyPro need container option and now container is",e.container),new Error("EasyPro need container option");if(i.decoder&&ba(-1!==i.decoder.indexOf("decoder-pro.js")||-1!==i.decoder.indexOf("decoder-pro-simd.js")))throw this.debug.error("EasyPro",`EasyPro decoder ${i.decoder} must be decoder-pro.js or decoder-pro-simd.js`),new Error(`EasyPro decoder ${i.decoder} must be decoder-pro.js or decoder-pro-simd.js`);if("CANVAS"===r.nodeName||"VIDEO"===r.nodeName)throw this.debug.error("EasyPro",`EasyPro container type can not be ${r.nodeName} type`),new Error(`EasyPro container type can not be ${r.nodeName} type`);if(i.videoBuffer>=i.heartTimeout)throw this.debug.error("EasyPro",`EasyPro videoBuffer ${i.videoBuffer}s must be less than heartTimeout ${i.heartTimeout}s`),new Error(`EasyPro videoBuffer ${i.videoBuffer}s must be less than heartTimeout ${i.heartTimeout}s`);if(this._checkHasCreated(r))throw this.debug.error("EasyPro","EasyPro container has been created and can not be created again",r),new Error("EasyPro container has been created and can not be created again",r);var s,a,n;if(r.classList.add("easyplayer-container"),s=r,a=te,n=xs(),s&&(s.dataset?s.dataset[a]=n:s.setAttribute("data-"+a,n)),ba(i.isLive)){const e=document.createElement("video");return e.muted=!0,e.setAttribute("controlsList","nodownload"),e.disablePictureInPicture="disablePictureInPicture",e.style.position="absolute",e.style.top=0,e.style.left=0,e.style.height="100%",e.style.width="100%",r.appendChild(e),this.$videoElement=e,this.$container=r,void(this._opt=i)}if(delete i.container,zs(i.videoBuffer)&&(i.videoBuffer=1e3*Number(i.videoBuffer)),zs(i.videoBufferDelay)&&(i.videoBufferDelay=1e3*Number(i.videoBufferDelay)),zs(i.networkDelay)&&(i.networkDelay=1e3*Number(i.networkDelay)),zs(i.aiFaceDetectInterval)&&(i.aiFaceDetectInterval=1e3*Number(i.aiFaceDetectInterval)),zs(i.aiObjectDetectInterval)&&(i.aiObjectDetectInterval=1e3*Number(i.aiObjectDetectInterval)),zs(i.timeout)&&(Ns(i.loadingTimeout)&&(i.loadingTimeout=i.timeout),Ns(i.heartTimeout)&&(i.heartTimeout=i.timeout)),zs(i.autoWasm)&&(Ns(i.decoderErrorAutoWasm)&&(i.decoderErrorAutoWasm=i.autoWasm),Ns(i.hardDecodingNotSupportAutoWasm)&&(i.hardDecodingNotSupportAutoWasm=i.autoWasm)),zs(i.aiFaceDetectLevel)&&Ns(i.aiFaceDetectWidth)){const e=Sr[i.aiFaceDetectLevel];e&&(i.aiFaceDetectWidth=e)}if(zs(i.aiObjectDetectLevel)&&Ns(i.aiObjectDetectWidth)){const e=wr[i.aiObjectDetectLevel];e&&(i.aiObjectDetectWidth=e)}va(i.isCrypto)&&(i.isM7sCrypto=!0),this._opt=i,this._destroyed=!1,this.$container=r,this._tempPlayBgObj={},this._loadingTimeoutReplayTimes=0,this._heartTimeoutReplayTimes=0,this.events=new Ca(this),this._opt.isUseNewFullscreenWatermark?this.watermark=new bc(this):this.watermark=new vc(this),this.memoryLogger=new Yc(this),this._initPlayer(r,i),this._initWatermark(),this.debug.log("EasyPro",`init success and version is ${vs}`),console.log(`EasyPro Version is ${vs}`)}destroy(){return new Promise(((e,t)=>{this.debug.log("EasyPro","destroy()"),this._destroyed=!0,this.off(),this.$videoElement&&(this.$videoElement.pause(),this.$videoElement.currentTime=0,this.$videoElement.srcObject&&(this.$videoElement.srcObject=null,this.$videoElement.removeAttribute("srcObject")),this.$videoElement.src&&(this.$videoElement.src="",this.$videoElement.removeAttribute("src")),this.$container&&this.$container.removeChild(this.$videoElement),this.$videoElement=null),this.player?this.player.destroy().then((()=>{this.player=null,this._destroy(),setTimeout((()=>{e()}),0)})).catch((()=>{t()})):(this._destroy(),setTimeout((()=>{e()}),0))}))}_destroy(){var e,t;this.events&&(this.events.destroy(),this.events=null),this.talk&&(this.talk.destroy(),this.talk=null),this.watermark&&(this.watermark.destroy(),this.watermark=null),this.memoryLogger&&(this.memoryLogger.destroy(),this.memoryLogger=null),this.$container&&(this.$container.classList.remove("easyplayer-container"),this.$container.classList.remove("easyplayer-fullscreen-web"),e=this.$container,t=te,e&&(e.dataset?delete e.dataset[t]:e.removeAttribute("data-"+t)),this.$container=null),this.debug&&this.debug.log("EasyPro","destroy end"),this._resetOpt(),this._tempPlayBgObj=null,this._loadingTimeoutReplayTimes=0,this._heartTimeoutReplayTimes=0}_resetOpt(){this._opt=ya()}_getOriginalOpt(){const e=ya();return Object.assign({},e,this.originalOptions)}_initPlayer(e,t){this.player=new dc(e,t),this._bindEvents()}_initTalk(e={}){this.talk&&(this.talk.destroy(),this.talk=null),this.player&&(e.debug=this.player._opt.debug),this.talk=new Ac(this.player,e),this.debug.log("EasyPro","_initTalk",this.talk.getOption()),this._bindTalkEvents()}_resetPlayer(e={}){return new Promise(((t,i)=>{const r=()=>{this._opt.url="",this._opt.playOptions={},this._opt=Object.assign(this._opt,e),this._initPlayer(this.$container,this._opt)};this.player?this.player.destroy().then((()=>{this.player=null,r(),setTimeout((()=>{t()}),0)})):(r(),setTimeout((()=>{t()}),0))}))}_bindEvents(){Object.keys(st).forEach((e=>{this.player.on(st[e],((...t)=>{this.emit(e,...t)}))})),this._opt.playFailedAndPausedShowMessage&&this.on(rt.playFailedAndPaused,(e=>{this.player&&this.player.showTipsMessageByCode(e)})),this.player.once(rt.beforeDestroy,(()=>{this.emit(rt.close),this.destroy().then((()=>{})).catch((e=>{}))})),this.player.on(rt.resize,(()=>{this.watermark&&this.watermark.resize()})),this.player.on(rt.screenshots,(()=>{this.emit(rt.screenshots,!0)})),this.player.on(rt.fullscreen,(()=>{this.watermark&&this.watermark.resize()})),this.player.on(rt.videoInfo,(()=>{this.player&&(this.player.singleWatermark&&this.player.singleWatermark.resize(),this.player.ghostWatermark&&this.player.ghostWatermark.resize(),this.player.dynamicWatermark&&this.player.dynamicWatermark.resize())})),this.player.on(rt.memoryLog,((...e)=>{this.memoryLogger.logCache(...e)})),this.player.on(rt.downloadMemoryLog,(()=>{this.downloadMemoryLog()}))}_bindTalkEvents(){Object.keys(at).forEach((e=>{this.player.on(at[e],(t=>{this.emit(e,t)}))}))}_initWatermark(){if(Js(this._opt.fullscreenWatermarkConfig)){const e=Hs(this.$container,this._opt.fullscreenWatermarkConfig);if(!e.watermark_txt)return void this.debug.warn("EasyPro","fullscreenWatermarkConfig text is empty");this.watermark.load(e)}}_checkHasCreated(e){if(!e)return!1;const t=function(e,t){return e?e.dataset?e.dataset[t]:e.getAttribute("data-"+t):""}(e,te);return!!t}isDestroyed(){return this._destroyed}getOption(){return this.player?this.player.getOption():{}}setDebug(e){this.debug.log("EasyPro",`setDebug() ${e}`),this._opt.debug=!!e,this.player?this.player.updateOption({debug:!!e},!0):this.debug.warn("EasyPro","player is not init")}getIsDebug(){let e=!1;return this.player&&(e=this.player._opt.debug),e}mute(){this.debug.log("EasyPro","mute()"),this.player&&this.player.mute(!0)}cancelMute(){this.debug.log("EasyPro","cancelMute()"),this.player&&this.player.mute(!1)}setVolume(e){this.debug.log("EasyPro",`setVolume() ${e}`),this.player&&(this.player.volume=e)}getVolume(){let e=null;return this.player&&(e=this.player.volume,e=parseFloat(e).toFixed(2)),e}audioResume(){this.debug.log("EasyPro","audioResume()"),this.player&&this.player.audio?this.player.audio.audioEnabled(!0):this.debug.warn("EasyPro","audioResume error")}setTimeout(e){this.debug.log("EasyPro",`setTimeout() ${e}`),e=Number(e),isNaN(e)?this.debug.warn("EasyPro",`setTimeout error: ${e} is not a number`):(this._opt.timeout=e,this._opt.loadingTimeout=e,this._opt.heartTimeout=e,this.player&&this.player.updateOption({timeout:e,loadingTimeout:e,heartTimeout:e}))}setScaleMode(e){this.debug.log("EasyPro",`setScaleMode() ${e}`),this.player?this.player.setScaleMode(e):this.debug.warn("EasyPro","setScaleMode() player is null")}pause(e=!1){return new Promise(((t,i)=>{this.debug.log("EasyPro",`pause() ${e}`),(this._opt.pauseAndNextPlayUseLastFrameShow||this._opt.replayUseLastFrameShow)&&(this._tempPlayBgObj=this._getVideoLastIframeInfo()),this._pause(e).then((e=>{t(e)})).catch((e=>{i(e)}))}))}_pause(e=!1){return new Promise(((t,i)=>{if(this.debug.log("EasyPro",`_pause() ${e}`),this.isDestroyed())return i("EasyPro is destroyed");this.player?this.player.pause(e).then((e=>{t(e)})).catch((e=>{i(e)})):i("player is null")}))}close(){return new Promise(((e,t)=>{this.debug.log("EasyPro","close()"),this._opt.url="",this._loadingTimeoutReplayTimes=0,this._heartTimeoutReplayTimes=0,this.player?this.player.close().then((()=>{e()})).catch((e=>{t(e)})):t("player is null")}))}clearView(){this.debug.log("EasyPro","clearView()"),this.player&&this.player.video?this.getRenderType()===$?this.player.video.clearView():this.debug.warn("EasyPro","clearView","render type is video, not support clearView, please use canvas render type"):this.debug.warn("EasyPro","clearView","player is null")}play(e="",t={}){return new Promise(((i,r)=>{if(this.debug.log("EasyPro",`play() ${e}`,JSON.stringify(t)),!e&&!this._opt.url)return this.emit(rt.error,nt.playError),void r("url is null and this._opt.url is null");if(e&&-1===(e=(e=(""+e).trim()).replace("webrtcs:","webrtc:")).indexOf("http:")&&-1===e.indexOf("https:")&&-1===e.indexOf("webrtc:")&&-1===e.indexOf("ws:")&&-1===e.indexOf("wss:")&&-1===e.indexOf("wt:")&&-1===e.indexOf("artc:"))return r(`url ${e} must be "http:" or "https:" or "webrtc:" or "ws:" or "wss:" or "wt:" or "artc:" protocol`);if(ba(this._opt.isLive))return this.$videoElement.controls="controls",this.$videoElement.muted=!1,this.$videoElement.src=e,this.$videoElement.play(),void i(this.$videoElement);if(this._opt.isM7sCrypto){let s=t.cryptoKey||this._opt.playOptions.cryptoKey,a=t.cryptoIV||this._opt.playOptions.cryptoIV;if(this._opt.m7sCryptoKey&&(!s||!a)){const e=this._opt.m7sCryptoKey.split(".");s=pa(e[0]),a=pa(e[1])}if(!s||!a){const s=e||this._opt.url;return void this._cryptoPlay(s).then((({cryptoIV:s,cryptoKey:a})=>{this._opt.playOptions.cryptoKey=a,this._opt.playOptions.cryptoIV=s,t.cryptoIV=s,t.cryptoKey=a,this._playBefore(e,t).then((()=>{i()})).catch((e=>{r(e)}))})).catch((e=>{r(e)}))}this._opt.playOptions.cryptoKey=s,this._opt.playOptions.cryptoIV=a,t.cryptoIV=a,t.cryptoKey=s}else if(this._opt.isXorCrypto){let e=t.cryptoKey||this._opt.playOptions.cryptoKey,i=t.cryptoIV||this._opt.playOptions.cryptoIV;if(this._opt.xorCryptoKey&&(!e||!i)){const t=this._opt.xorCryptoKey.split(".");e=pa(t[0]),i=pa(t[1])}e&&i&&(this._opt.playOptions.cryptoKey=e,this._opt.playOptions.cryptoIV=i,t.cryptoIV=i,t.cryptoKey=e)}this._playBefore(e,t).then((()=>{i()})).catch((e=>{r(e)}))}))}_playBefore(e,t){return new Promise(((i,r)=>{if(this.player)if(e)if(this._opt.url)if(e===this._opt.url)if(this.player.playing)this.debug.log("EasyPro","_playBefore","playing and resolve()"),i();else{this.debug.log("EasyPro","_playBefore","this._opt.url === url and pause -> play and destroy play");let e=this._getOriginalOpt();(this._opt.pauseAndNextPlayUseLastFrameShow||this._opt.replayUseLastFrameShow)&&this._tempPlayBgObj&&this._tempPlayBgObj.loadingBackground&&(e=Object.assign(e,this._tempPlayBgObj));const t=this.isMute(),s=this._opt.url,a={...this._opt.playOptions,isNotMute:!t};this._resetPlayer(e).then((()=>{this._play(s,a).then((()=>{this.player.resumeAudioAfterPause(),i()})).catch((e=>{this.debug.error("EasyPro","_playBefore this.player.play error",e),this.emit(rt.crashLog,this.getCrashLog("this.player.play 1",e)),r(e)}))})).catch((e=>{this.debug.error("EasyPro","_resetPlayer error",e)}))}else{this.debug.log("EasyPro","_playBefore",`\n this._url.url is ${this._opt.url}\n and new url is ${e}\n and destroy and play new url`);const s=this._getOriginalOpt();this._resetPlayer(s).then((()=>{this._play(e,t).then((()=>{i()})).catch((e=>{this.debug.error("EasyPro","_playBefore _play error",e),this.emit(rt.crashLog,this.getCrashLog("this.player.play 2",e)),r(e)}))})).catch((e=>{this.debug.error("EasyPro","_resetPlayer error",e)}))}else this._play(e,t).then((()=>{i()})).catch((e=>{this.debug.error("EasyPro","_playBefore _play error",e),this.emit(rt.crashLog,this.getCrashLog("this.player.play 3",e)),r(e)}));else{let e=this._getOriginalOpt();(this._opt.pauseAndNextPlayUseLastFrameShow||this._opt.replayUseLastFrameShow)&&this._tempPlayBgObj&&this._tempPlayBgObj.loadingBackground&&(e=Object.assign(e,this._tempPlayBgObj));const t=this._opt.url,s=this._opt.playOptions;this._resetPlayer(e).then((()=>{this._play(t,s).then((()=>{this.player.resumeAudioAfterPause(),i()})).catch((e=>{this.debug.error("EasyPro","_playBefore _play error",e),this.emit(rt.crashLog,this.getCrashLog("this.player.play 4",e)),r(e)}))})).catch((e=>{this.debug.error("EasyPro","_resetPlayer error",e)}))}else e?this._play(e,t).then((()=>{i()})).catch((e=>{this.debug.error("EasyPro","_playBefore _play error",e),this.emit(rt.crashLog,this.getCrashLog("this.player.play 5",e)),r(e)})):this._play(this._opt.url,this._opt.playOptions).then((()=>{i()})).catch((e=>{this.debug.error("EasyPro","_playBefore _play error",e),this.emit(rt.crashLog,this.getCrashLog("this.player.play 6",e)),r(e)}))}))}_cryptoPlay(e){return new Promise(((t,i)=>{const r=function(e){const t=(e||document.location.toString()).split("//"),i=t[1].indexOf("/");let r=t[1].substring(i);return-1!=r.indexOf("?")&&(r=r.split("?")[0]),r}(e);let s=this._opt.cryptoKeyUrl,a="";const n=fa(e);if(s){if(a=s,this._opt.isM7sCrypto&&-1===a.indexOf(`${ee}?stream=`)){const e=fa(s);a=e.origin+ee+`?stream=${r}`}}else s=n.origin+ee,a=s+`?stream=${r}`;var o;this.player.debug.log("EasyPro",`_cryptoPlay() cryptoKeyUrl: ${a} and opt.cryptoKeyUrl: ${this._opt.cryptoKeyUrl}`),(o=a,new Promise(((e,t)=>{To.get(o).then((t=>{e(t)})).catch((e=>{t(e)}))}))).then((e=>{if(e){const r=e.split("."),s=pa(r[0]),a=pa(r[1]);a&&s?t({cryptoIV:a,cryptoKey:s}):i("get cryptoIV or cryptoKey error")}else i(`cryptoKeyUrl: getM7SCryptoStreamKey ${a} res is null`)})).catch((e=>{i(e)}))}))}playback(e,t={}){return new Promise(((i,r)=>{if(this.debug.log("EasyPro",`playback() ${e}, options: ${JSON.stringify(t)}`),ba(this._opt.isLive))return r("this._opt.isLive is false, can not playback");const s=ga(),a=Object.assign({},s.playbackConfig,this._opt.playbackConfig,t);a.isUseFpsRender||a.isCacheBeforeDecodeForFpsRender&&(a.isCacheBeforeDecodeForFpsRender=!1,this.debug.warn("EasyPro","playbackConfig.isUseFpsRender is false, isCacheBeforeDecodeForFpsRender can not be ture, isCacheBeforeDecodeForFpsRender is set to false")),0===a.rateConfig.length&&a.showRateBtn&&(a.showRateBtn=!1,this.debug.warn("EasyPro","playbackConfig.rateConfig.length is 0, showRateBtn can not be ture, showRateBtn is set to false")),a.controlType,J.simple,this._resetPlayer({videoBuffer:0,playbackConfig:a,playType:v,openWebglAlignment:!0,useMSE:a.useMSE,useWCS:a.useWCS,useSIMD:!0}).then((()=>{this.play(e,t).then((()=>{i()})).catch((e=>{r(e)}))})).catch((e=>{r(e)}))}))}playbackPause(e=!1){return this.debug.log("EasyPro",`playbackPause() ${e}`),this._opt.playType===g?Promise.reject("playType is player, can not call playbackPause method"):new Promise(((t,i)=>{if(!this.player)return i("player is null");va(e)?this._pause().then((()=>{t()})).catch((e=>{i(e)})):(this.player.playbackPause=!0,t())}))}playbackResume(){return this.debug.log("EasyPro","playbackResume()"),this._opt.playType===g?Promise.reject("playType is player, can not call playbackResume method"):new Promise(((e,t)=>{if(!this.player)return t("player is null");this.player.playbackPause=!1,e()}))}forward(e){return this.debug.log("EasyPro",`forward() ${e}`),ba(this._opt.isLive)||this._opt.playType===g?Promise.reject("forward() method only just for playback type"):Ps(Number(e))?new Promise(((t,i)=>{this.player?(e=fs(Number(e),.1,32),this.player.decoderWorker&&this.player.decoderWorker.updateWorkConfig({key:"playbackRate",value:e}),this.player.playback.setRate(e),this.player.video&&this.player.video.setRate(e),this.player.audio&&this.player.audio.setRate(e),(this.player.isPlaybackUseWCS()||this.player.isPlaybackUseMSE())&&(this.player.demux.dropBuffer$2(),this.player.isPlaybackCacheBeforeDecodeForFpsRender()&&this.player.demux.initPlaybackCacheLoop()),t()):i("player is not playing")})):Promise.reject(`forward() params "rate": ${e} must be number type`)}playbackForward(e){return this.forward(e)}normal(){return this.forward(1)}playbackNormal(){return this.normal()}updatePlaybackForwardMaxRateDecodeIFrame(e){this.debug.log("EasyPro",`updatePlaybackForwardMaxRateDecodeIFrame() ${e}`),e=Number(e),e=fs(e=parseInt(e,10),1,8),this._opt.playbackForwardMaxRateDecodeIFrame=e,this.player?this.player.updateOption({playbackForwardMaxRateDecodeIFrame:e},!0):this.debug.warn("EasyPro","updatePlaybackForwardMaxRateDecodeIFrame() player is null")}setPlaybackStartTime(e){this.debug.log("EasyPro",`setPlaybackStartTime() ${e}`);const t=Qs(e);if(this.player)if(this.player.isPlayback()){if(t<10&&0!==e&&this.player.playback.isControlTypeNormal())this.debug.warn("EasyPro",`setPlaybackStartTime() control type is normal and timestamp: ${e} is not valid`);else if(this.player.playback.isControlTypeSimple()&&e>this.player.playback.totalDuration)this.debug.warn("EasyPro",`setPlaybackStartTime() control type is simple and timestamp: ${e} is more than ${this.player.playback.totalDuration}`);else if(this.player.playing){this.player.playback.isControlTypeNormal()&&10===t&&(e*=1e3),document.getElementsByTagName("video")[0].currentTime=e}}else this.debug.warn("EasyPro","setPlaybackStartTime() playType is not playback");else this.debug.warn("EasyPro","setPlaybackStartTime() player is null")}setPlaybackShowPrecision(e){this.debug.log("EasyPro",`setPlaybackShowPrecision() ${e}`),this.player?this.player.isPlayback()?this.player.playback.isControlTypeNormal()?this.player.playback.setShowPrecision(e):this.debug.warn("EasyPro","control type is not normal , not support!"):this.debug.warn("EasyPro","playType is not playback"):this.debug.warn("EasyPro","player is null")}playbackCurrentTimeScroll(){this.debug.log("EasyPro","playbackCurrentTimeScroll()"),this.player?this.player.isPlayback()?this.player.playback.isControlTypeNormal()?this.player.playback.currentTimeScroll():this.debug.warn("EasyPro","control type is not normal , not support!"):this.debug.warn("EasyPro","playType is not playback"):this.debug.warn("EasyPro","player is null")}playbackClearCacheBuffer(){this.debug.log("EasyPro","playbackClearCacheBuffer()"),this.player?this.player.isPlayback()?(this.player.video&&this.player.video.clear(),this.player.audio&&this.player.audio.clear(),this.clearBufferDelay()):this.debug.warn("EasyPro","playType is not playback"):this.debug.warn("EasyPro","player is null")}getPlaybackCurrentRate(){if(this.player){if(this.player.isPlayback())return this.player.getPlaybackRate();this.debug.warn("EasyPro","playType is not playback")}else this.debug.warn("EasyPro","player is null")}updatePlaybackLocalOneFrameTimestamp(e){this.debug.log("EasyPro",`updatePlaybackLocalOneFrameTimestamp() ${e}`),this.player?this.player.isPlayback()?this.player.playback.updateLocalOneFrameTimestamp(e):this.debug.warn("EasyPro","playType is not playback"):this.debug.warn("EasyPro","player is null")}setStreamQuality(e){if(this.debug.log("EasyPro",`setStreamQuality() ${e}`),!this.player)return void this.debug.warn("EasyPro","player is null");if(!this.player._opt.operateBtns.quality)return void this.debug.warn("EasyPro","player._opt.operateBtns.quality is false");(this.player._opt.qualityConfig||[]).includes(e)?this.player.streamQuality=e:this.debug.warn("EasyPro",`quality: ${e} is not in qualityList`)}_play(d="",h={}){return new Promise(((c,u)=>{if(!this.player)return u("player is null");let p=!1;this._opt.url&&this._opt.url!==d&&(p=!0),this._opt.url=d,this._opt.playOptions=h;const f=d.split("?")[0],m=f.startsWith("http://")||f.startsWith("https://"),y=f.startsWith("webrtc://"),g=f.startsWith("artc://"),A=f.startsWith("wt://"),v=f.startsWith("ws://")||f.startsWith("wss://"),b=m||v,_=v&&f.includes("/api/devices/"),E=m&&f.endsWith(".m3u8"),S=b&&f.endsWith(".flv"),M=b&&(f.endsWith(".fmp4")||f.endsWith(".mp4")),U=b&&f.endsWith(".mpeg4"),F=b&&(f.endsWith(".h264")||f.endsWith(".h265")),O=b&&f.endsWith(".ts");let G=this._opt.isWebrtcForZLM||!1,z=this._opt.isWebrtcForSRS||!1,V=this._opt.isWebrtcForOthers||!1;y&&(-1!==d.indexOf("/index/api/webrtc")?(G=!0,z=!1,V=!1):-1!==d.indexOf("/rtc/v1/play/")&&(z=!0,G=!1,V=!1));let H=null,W=null;if(S&&ba(this._opt.isFlv)&&this._resetDemuxType("isFlv"),M&&ba(this._opt.isFmp4)&&this._resetDemuxType("isFmp4"),U&&ba(this._opt.isMpeg4)&&this._resetDemuxType("isMpeg4"),F&&ba(this._opt.isNakedFlow)&&this._resetDemuxType("isNakedFlow"),O&&ba(this._opt.isTs)&&this._resetDemuxType("isTs"),_&&this._resetDemuxType("isWsRtc"),H=m?E?r:i:A?a:_?o:y?s:g?n:t,this._opt.isNakedFlow?W=D:this._opt.isFmp4?W=x:this._opt.isMpeg4?W=L:this._opt.isFlv?W=w:this._opt.isTs?W=P:_?W=B:E?W=k:y?W=C:g?W=I:A?W=R:v&&(W=T),!H||!W)return this._opt.playFailedAndPausedShowMessage&&this.showErrorMessageTips("url is not support"),u(`play protocol is ${l[H]}, demuxType is ${W}`);this.debug.log("EasyPro",`play protocol is ${l[H]}, demuxType is ${W}`);const j=()=>{this.player.once(nt.webglAlignmentError,(e=>{if(this.isDestroyed())this.debug.log("EasyPro","webglAlignmentError but player is destroyed");else if(this.emit(rt.crashLog,this.getCrashLog(nt.webglAlignmentError,e)),this.player&&this.player._opt.webglAlignmentErrorReplay){this.debug.log("EasyPro","webglAlignmentError");const t=this._opt.url,i=this.isMute(),r={...this._opt.playOptions,isNotMute:!i};this._resetPlayer({openWebglAlignment:!0,isNotMute:!i}).then((()=>{this.play(t,r).then((()=>{this.debug.log("EasyPro","webglAlignmentError and play success")})).catch((t=>{this.emit(rt.playFailedAndPaused,nt.webglAlignmentError,{},e),this.debug.error("EasyPro","webglAlignmentError and play error",t)}))})).catch((e=>{this.debug.error("EasyPro","webglAlignmentError and _resetPlayer error",e)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this._pause(t).then((()=>{this.emit(rt.playFailedAndPaused,nt.webglAlignmentError,{},e),this.debug.log("EasyPro","webglAlignmentError and webglAlignmentErrorReplay is false")})).catch((t=>{this.emit(rt.playFailedAndPaused,nt.webglAlignmentError,{},e),this.debug.error("EasyPro","webglAlignmentError and pause error",t)}))}})),this.player.once(nt.webglContextLostError,(e=>{if(this.isDestroyed())return void this.debug.log("EasyPro","webglContextLostError but player is destroyed");this.emit(rt.crashLog,this.getCrashLog(nt.webglContextLostError,e));const t=this._getVideoLastIframeInfo();if(this.player&&this.player._opt.webglContextLostErrorReplay){this.debug.log("EasyPro","webglContextLostError");const i=this._opt.url,r=this.isMute(),s={...this._opt.playOptions,isNotMute:!r};let a={};this.player._opt.replayUseLastFrameShow&&(a=Object.assign({},a,t,{loadingIcon:this.player._opt.replayShowLoadingIcon,isNotMute:!r})),this._resetPlayer(a).then((()=>{this.play(i,s).then((()=>{this.debug.log("EasyPro","webglContextLostError and play success")})).catch((i=>{this.emit(rt.playFailedAndPaused,nt.webglContextLostError,t,e),this.debug.error("EasyPro","webglContextLostError and play error",i)}))})).catch((i=>{this.emit(rt.playFailedAndPaused,nt.webglContextLostError,t,e),this.debug.error("EasyPro","webglContextLostError and _resetPlayer error",i)}))}else{const i=!1===this._opt.playFailedUseLastFrameShow;this._pause(i).then((()=>{this.emit(rt.playFailedAndPaused,nt.webglContextLostError,t,e),this.debug.log("EasyPro","webglContextLostError and webglContextLostErrorReplay is false")})).catch((i=>{this.emit(rt.playFailedAndPaused,nt.webglContextLostError,t,e),this.debug.error("EasyPro","webglAlignmentError and pause error",i)}))}})),this.player.once(nt.mediaSourceH265NotSupport,(e=>{if(this.isDestroyed())this.debug.log("EasyPro","mediaSourceH265NotSupport but player is destroyed");else if(this.emit(rt.crashLog,this.getCrashLog(nt.mediaSourceH265NotSupport,e)),this.player&&this.player._opt.hardDecodingNotSupportAutoWasm){this.debug.log("EasyPro","mediaSourceH265NotSupport auto wasm [mse-> wasm] reset player and play");const t=this._opt.url,i=this.isMute(),r={...this._opt.playOptions,isNotMute:!i};this._resetPlayer({useMSE:!1,useWCS:!1,isNotMute:!i}).then((()=>{this.play(t,r).then((()=>{this.debug.log("EasyPro","mediaSourceH265NotSupport auto wasm [mse-> wasm] reset player and play success")})).catch((t=>{this.emit(rt.playFailedAndPaused,nt.mediaSourceH265NotSupport,e),this.debug.error("EasyPro","mediaSourceH265NotSupport auto wasm [mse-> wasm] reset player and play error",t)}))})).catch((t=>{this.emit(rt.playFailedAndPaused,nt.mediaSourceH265NotSupport,{},e),this.debug.error("EasyPro","mediaSourceH265NotSupport auto wasm [mse-> wasm] _resetPlayer error",t)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this._pause(t).then((()=>{this.emit(rt.playFailedAndPaused,nt.mediaSourceH265NotSupport,{},e),this.debug.log("EasyPro","mediaSourceH265NotSupport and autoWasm is false")})).catch((t=>{this.emit(rt.playFailedAndPaused,nt.mediaSourceH265NotSupport,{},e),this.debug.error("EasyPro","mediaSourceH265NotSupport and pause error",t)}))}})),this.player.once(nt.mediaSourceFull,(e=>{if(this.isDestroyed())return void this.debug.log("EasyPro","mediaSourceFull but player is destroyed");this.emit(rt.crashLog,this.getCrashLog(nt.mediaSourceFull,e));const t=this._getVideoLastIframeInfo();if(this.player&&this.player._opt.mseDecodeErrorReplay){const i=this._opt.url,r=this.isMute(),s={...this._opt.playOptions,isNotMute:!r};let a={};this.player._opt.decoderErrorAutoWasm&&(a={useMSE:!1,useWCS:!1}),this.debug.log("EasyPro",`mediaSourceFull and auto wasm [mse-> ${this.player._opt.decoderErrorAutoWasm?"wasm":"mse"}] reset player and play`),this.player._opt.replayUseLastFrameShow&&(a=Object.assign({},a,t,{loadingIcon:this.player._opt.replayShowLoadingIcon,isNotMute:!r})),this._resetPlayer(a).then((()=>{this.play(i,s).then((()=>{this.debug.log("EasyPro","mediaSourceFull and reset player and play success")})).catch((i=>{this.emit(rt.playFailedAndPaused,nt.mediaSourceFull,t,e),this.debug.error("EasyPro","mediaSourceFull and reset player and play error",i)}))})).catch((i=>{this.emit(rt.playFailedAndPaused,nt.mediaSourceFull,t,e),this.debug.error("EasyPro","mediaSourceFull and _resetPlayer error",i)}))}else{const i=!1===this._opt.playFailedUseLastFrameShow;this._pause(i).then((()=>{this.emit(rt.playFailedAndPaused,nt.mediaSourceFull,t,e),this.debug.log("EasyPro","mediaSourceFull and autoWasm is false")})).catch((i=>{this.emit(rt.playFailedAndPaused,nt.mediaSourceFull,t,e),this.debug.error("EasyPro","mediaSourceFull and pause error",i)}))}})),this.player.once(nt.mediaSourceAppendBufferError,(e=>{if(this.isDestroyed())return void this.debug.log("EasyPro","mediaSourceAppendBufferError but player is destroyed");this.emit(rt.crashLog,this.getCrashLog(nt.mediaSourceAppendBufferError,e));const t=this._getVideoLastIframeInfo();if(this.player&&this.player._opt.mseDecodeErrorReplay){const i=this._opt.url,r=this.isMute(),s={...this._opt.playOptions,isNotMute:!r};let a={};this.player._opt.decoderErrorAutoWasm&&(a={useMSE:!1,useWCS:!1}),this.debug.log("EasyPro",`mediaSourceAppendBufferError and auto wasm [mse-> ${this.player._opt.decoderErrorAutoWasm?"wasm":"mse"}] reset player and play`),this.player._opt.replayUseLastFrameShow&&(a=Object.assign({},a,t,{loadingIcon:this.player._opt.replayShowLoadingIcon,isNotMute:!r})),this._resetPlayer(a).then((()=>{this.play(i,s).then((()=>{this.debug.log("EasyPro","mediaSourceAppendBufferError and reset player and play success")})).catch((i=>{this.emit(rt.playFailedAndPaused,nt.mediaSourceAppendBufferError,t,e),this.debug.error("EasyPro","mediaSourceAppendBufferError and reset player and play error",i)}))})).catch((i=>{this.emit(rt.playFailedAndPaused,nt.mediaSourceAppendBufferError,t,e),this.debug.error("EasyPro","mediaSourceAppendBufferError and _resetPlayer error",i)}))}else{const i=!1===this._opt.playFailedUseLastFrameShow;this._pause(i).then((()=>{this.emit(rt.playFailedAndPaused,nt.mediaSourceAppendBufferError,t,e),this.debug.log("EasyPro","mediaSourceAppendBufferError and autoWasm is false")})).catch((i=>{this.emit(rt.playFailedAndPaused,nt.mediaSourceAppendBufferError,t,e),this.debug.error("EasyPro","mediaSourceAppendBufferError and pause error",i)}))}})),this.player.once(nt.mseSourceBufferError,(e=>{if(this.isDestroyed())return void this.debug.log("EasyPro","mseSourceBufferError but player is destroyed");this.emit(rt.crashLog,this.getCrashLog(nt.mseSourceBufferError,e));const t=this._getVideoLastIframeInfo();if(this.player&&this.player._opt.mseDecodeErrorReplay){const i=this._opt.url,r=this.isMute(),s={...this._opt.playOptions,isNotMute:!r};let a={};this.player._opt.decoderErrorAutoWasm&&(a={useMSE:!1,useWCS:!1}),this.player.isMSEVideoDecoderInitializationFailedNotSupportHevc&&(this.debug.log("EasyPro","mseSourceBufferError and isMSEVideoDecoderInitializationFailedNotSupportHevc is true so auto wasm"),a={useMSE:!1,useWCS:!1}),this.debug.log("EasyPro",`mseSourceBufferError auto wasm [mse-> ${this.player._opt.decoderErrorAutoWasm?"wasm":"mse"}] reset player and play`),this.player._opt.replayUseLastFrameShow&&(a=Object.assign({},a,t,{loadingIcon:this.player._opt.replayShowLoadingIcon,isNotMute:!r})),this._resetPlayer(a).then((()=>{this.play(i,s).then((()=>{this.debug.log("EasyPro","mseSourceBufferError reset player and play success")})).catch((i=>{this.emit(rt.playFailedAndPaused,nt.mseSourceBufferError,t,e),this.debug.error("EasyPro","mseSourceBufferError reset player and play error",i)}))})).catch((i=>{this.emit(rt.playFailedAndPaused,nt.mseSourceBufferError,t,e),this.debug.error("EasyPro","mseSourceBufferError _resetPlayer and play error",i)}))}else{const i=!1===this._opt.playFailedUseLastFrameShow;this._pause(i).then((()=>{this.emit(rt.playFailedAndPaused,nt.mseSourceBufferError,t,e),this.debug.log("EasyPro","mseSourceBufferError and autoWasm is false")})).catch((i=>{this.emit(rt.playFailedAndPaused,nt.mseSourceBufferError,t,e),this.debug.error("EasyPro","mseSourceBufferError and pause error:",i)}))}})),this.player.once(nt.mediaSourceBufferedIsZeroError,(e=>{if(this.isDestroyed())return void this.debug.log("EasyPro","mediaSourceBufferedIsZeroError but player is destroyed");this.emit(rt.crashLog,this.getCrashLog(nt.mediaSourceBufferedIsZeroError,e));const t=this._getVideoLastIframeInfo();if(this.player&&this.player._opt.mseDecodeErrorReplay){const i=this._opt.url,r=this.isMute(),s={...this._opt.playOptions,isNotMute:!r};let a={};this.player._opt.decoderErrorAutoWasm&&(a={useMSE:!1,useWCS:!1}),this.debug.log("EasyPro",`mediaSourceBufferedIsZeroError auto wasm [mse-> ${this.player._opt.decoderErrorAutoWasm?"wasm":"mse"}] reset player and play`),this.player._opt.replayUseLastFrameShow&&(a=Object.assign({},a,t,{loadingIcon:this.player._opt.replayShowLoadingIcon,isNotMute:!r})),this._resetPlayer(a).then((()=>{this.play(i,s).then((()=>{this.debug.log("EasyPro","mediaSourceBufferedIsZeroError reset player and play success")})).catch((i=>{this.emit(rt.playFailedAndPaused,nt.mediaSourceBufferedIsZeroError,t,e),this.debug.error("EasyPro","mediaSourceBufferedIsZeroError reset player and play error",i)}))})).catch((i=>{this.emit(rt.playFailedAndPaused,nt.mediaSourceBufferedIsZeroError,t,e),this.debug.error("EasyPro","mediaSourceBufferedIsZeroError _resetPlayer and play error",i)}))}else{const i=!1===this._opt.playFailedUseLastFrameShow;this._pause(i).then((()=>{this.emit(rt.playFailedAndPaused,nt.mediaSourceBufferedIsZeroError,t,e),this.debug.log("EasyPro","mediaSourceBufferedIsZeroError and autoWasm is false")})).catch((i=>{this.emit(rt.playFailedAndPaused,nt.mediaSourceBufferedIsZeroError,t,e),this.debug.error("EasyPro","mediaSourceBufferedIsZeroError and pause error:",i)}))}})),this.player.once(nt.mseAddSourceBufferError,(e=>{if(this.isDestroyed())return void this.debug.log("EasyPro","mseAddSourceBufferError but player is destroyed");this.emit(rt.crashLog,this.getCrashLog(nt.mseAddSourceBufferError,e));const t=this._getVideoLastIframeInfo();if(this.player&&this.player._opt.hardDecodingNotSupportAutoWasm){this.debug.log("EasyPro","mseAddSourceBufferError auto wasm [mse-> wasm] reset player and play");const i=this._opt.url,r=this.isMute(),s={...this._opt.playOptions,isNotMute:!r};let a={useMSE:!1,useWCS:!1};this.player._opt.replayUseLastFrameShow&&(a=Object.assign({},a,t,{loadingIcon:this.player._opt.replayShowLoadingIcon,isNotMute:!r})),this._resetPlayer(a).then((()=>{this.play(i,s).then((()=>{this.debug.log("EasyPro","mseAddSourceBufferError auto wasm [mse-> wasm] reset player and play success")})).catch((i=>{this.emit(rt.playFailedAndPaused,nt.mseAddSourceBufferError,t,e),this.debug.error("EasyPro","mseAddSourceBufferError auto wasm [mse-> wasm] reset player and play error",i)}))})).catch((i=>{this.emit(rt.playFailedAndPaused,nt.mseAddSourceBufferError,t,e),this.debug.error("EasyPro","mseAddSourceBufferError auto wasm [mse-> wasm] _resetPlayer and play error",i)}))}else{const i=!1===this._opt.playFailedUseLastFrameShow;this._pause(i).then((()=>{this.emit(rt.playFailedAndPaused,nt.mseAddSourceBufferError,t,e),this.debug.log("EasyPro","mseAddSourceBufferError and autoWasm is false")})).catch((i=>{this.emit(rt.playFailedAndPaused,nt.mseAddSourceBufferError,t,e),this.debug.error("EasyPro","mseAddSourceBufferError and pause error",i)}))}})),this.player.once(nt.mediaSourceDecoderConfigurationError,(e=>{if(this.isDestroyed())this.debug.log("EasyPro","mediaSourceDecoderConfigurationError but player is destroyed");else if(this.emit(rt.crashLog,this.getCrashLog(nt.mediaSourceDecoderConfigurationError,e)),this.player&&this.player._opt.hardDecodingNotSupportAutoWasm){this.debug.log("EasyPro","mediaSourceDecoderConfigurationError auto wasm [mse-> wasm] reset player and play");const t=this._opt.url,i=this.isMute(),r={...this._opt.playOptions,isNotMute:!i};let s={useMSE:!1,useWCS:!1,isNotMute:!i};this._resetPlayer(s).then((()=>{this.play(t,r).then((()=>{this.debug.log("EasyPro","mediaSourceDecoderConfigurationError auto wasm [mse-> wasm] reset player and play success")})).catch((t=>{this.emit(rt.playFailedAndPaused,nt.mediaSourceDecoderConfigurationError,e),this.debug.error("EasyPro","mediaSourceDecoderConfigurationError auto wasm [mse-> wasm] reset player and play error",t)}))})).catch((t=>{this.emit(rt.playFailedAndPaused,nt.mediaSourceDecoderConfigurationError,e),this.debug.error("EasyPro","mediaSourceDecoderConfigurationError auto wasm [mse-> wasm] _resetPlayer and play error",t)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this._pause(t).then((()=>{this.emit(rt.playFailedAndPaused,nt.mediaSourceDecoderConfigurationError,e),this.debug.log("EasyPro","mediaSourceDecoderConfigurationError and autoWasm is false")})).catch((t=>{this.emit(rt.playFailedAndPaused,nt.mediaSourceDecoderConfigurationError,e),this.debug.error("EasyPro","mediaSourceDecoderConfigurationError and pause error",t)}))}})),this.player.once(nt.mediaSourceTsIsMaxDiff,(e=>{if(this.isDestroyed())return void this.debug.log("EasyPro","mediaSourceTsIsMaxDiff but player is destroyed");this.emit(rt.crashLog,this.getCrashLog(nt.mediaSourceTsIsMaxDiff,e));const t=this._getVideoLastIframeInfo();if(this.player&&this.player._opt.mediaSourceTsIsMaxDiffReplay){this.debug.log("EasyPro","mediaSourceTsIsMaxDiff reset player and play");const i=this._opt.url,r=this.isMute(),s={...this._opt.playOptions,isNotMute:!r};let a={isNotMute:!r};a=Object.assign({},a,t),this._resetPlayer(a).then((()=>{this.play(i,s).then((()=>{this.debug.log("EasyPro","mediaSourceTsIsMaxDiff replay success")})).catch((i=>{this.emit(rt.playFailedAndPaused,nt.mediaSourceTsIsMaxDiff,t,e),this.debug.error("EasyPro","mediaSourceTsIsMaxDiff replay error",i)}))})).catch((i=>{this.emit(rt.playFailedAndPaused,nt.mediaSourceTsIsMaxDiff,t,e),this.debug.error("EasyPro","mediaSourceTsIsMaxDiff _resetPlayer error",i)}))}else{const i=!1===this._opt.playFailedUseLastFrameShow;this._pause(i).then((()=>{this.emit(rt.playFailedAndPaused,nt.mediaSourceTsIsMaxDiff,t,e),this.debug.log("EasyPro","mediaSourceTsIsMaxDiff and replay is false")})).catch((i=>{this.emit(rt.playFailedAndPaused,nt.mediaSourceTsIsMaxDiff,t,e),this.debug.error("EasyPro","mediaSourceTsIsMaxDiff and pause error",i)}))}})),this.player.once(nt.mseWidthOrHeightChange,(t=>{if(this.isDestroyed())return void this.debug.log("EasyPro","mseWidthOrHeightChange but player is destroyed");this.emit(rt.crashLog,this.getCrashLog(nt.mseWidthOrHeightChange,t));const i=this._getVideoLastIframeInfo();if(this.player&&this.player._opt.widthOrHeightChangeReplay){this.debug.log("EasyPro","mseWidthOrHeightChange and reset player and play");const e=this._opt.url,r=this.isMute(),s={...this._opt.playOptions,isNotMute:!r};let a={isNotMute:!r};a=Object.assign({},a,i),this._resetPlayer(a).then((()=>{this.player._opt.widthOrHeightChangeReplayDelayTime>0?setTimeout((()=>{this.isDestroyed()?this.debug.log("EasyPro","mseWidthOrHeightChange and widthOrHeightChangeReplayDelayTime but player is destroyed"):this.play(e,s).then((()=>{this.debug.log("EasyPro","mseWidthOrHeightChange and reset player and play success")})).catch((e=>{this.emit(rt.playFailedAndPaused,nt.mseWidthOrHeightChange,i,t),this.debug.error("EasyPro","mseWidthOrHeightChange and reset player and play error",e)}))}),1e3*this.player._opt.widthOrHeightChangeReplayDelayTime):this.play(e,s).then((()=>{this.debug.log("EasyPro","mseWidthOrHeightChange and reset player and play success")})).catch((e=>{this.emit(rt.playFailedAndPaused,nt.mseWidthOrHeightChange,i,t),this.debug.error("EasyPro","mseWidthOrHeightChange and reset player and play error",e)}))})).catch((e=>{this.emit(rt.playFailedAndPaused,nt.mseWidthOrHeightChange,i,t),this.debug.error("EasyPro","mseWidthOrHeightChange and _resetPlayer error",e)}))}else{const r=!1===this._opt.playFailedUseLastFrameShow;this._pause(r).then((()=>{this.emit(rt.playFailedAndPaused,nt.mseWidthOrHeightChange,i,t),this.debug.error("EasyPro","mseWidthOrHeightChange and _resetPlayer error",e)})).catch((e=>{this.emit(rt.playFailedAndPaused,nt.mseWidthOrHeightChange,i,t),this.debug.error("EasyPro","mseWidthOrHeightChange error and pause error",e)}))}})),this.player.once(nt.mediaSourceAudioG711NotSupport,(t=>{if(this.isDestroyed())return void this.debug.log("EasyPro","mediaSourceAudioG711NotSupport but player is destroyed");const i=this._getVideoLastIframeInfo();if(this.player&&this.player._opt.mediaSourceAudioG711NotSupportReplay){this.debug.log("EasyPro","mediaSourceAudioG711NotSupport and reset player and play");const e=this._opt.url,r=this.isMute(),s={...this._opt.playOptions,isNotMute:!r};let a={mseDecodeAudio:!1,isNotMute:!r};a=Object.assign({},a,i),this._resetPlayer(a).then((()=>{this.play(e,s).then((()=>{this.debug.log("EasyPro","mediaSourceAudioG711NotSupport and reset player and play success")})).catch((e=>{this.emit(rt.playFailedAndPaused,nt.mediaSourceAudioG711NotSupport,i,t),this.debug.error("EasyPro","mediaSourceAudioG711NotSupport and reset player and play error",e)}))})).catch((e=>{this.emit(rt.playFailedAndPaused,nt.mediaSourceAudioG711NotSupport,i,t),this.debug.error("EasyPro","mediaSourceAudioG711NotSupport and _resetPlayer error",e)}))}else{const r=!1===this._opt.playFailedUseLastFrameShow;this._pause(r).then((()=>{this.emit(rt.playFailedAndPaused,nt.mediaSourceAudioG711NotSupport,i,t),this.debug.error("EasyPro","mediaSourceAudioG711NotSupport and _resetPlayer error",e)})).catch((e=>{this.emit(rt.playFailedAndPaused,nt.mediaSourceAudioG711NotSupport,i,t),this.debug.error("EasyPro","mediaSourceAudioG711NotSupport error and pause error",e)}))}})),this.player.once(nt.mediaSourceAudioInitTimeout,(t=>{if(this.isDestroyed())return void this.debug.log("EasyPro","mediaSourceAudioInitTimeout but player is destroyed");const i=this._getVideoLastIframeInfo();if(this.player&&this.player._opt.mediaSourceAudioInitTimeoutReplay){this.debug.log("EasyPro","mediaSourceAudioInitTimeout and reset player and play");const e=this._opt.url,r=this.isMute(),s={...this._opt.playOptions,isNotMute:!r};let a={mseDecodeAudio:!1,isNotMute:!r};a=Object.assign({},a,i),this._resetPlayer(a).then((()=>{this.play(e,s).then((()=>{this.debug.log("EasyPro","mediaSourceAudioInitTimeout and reset player and play success")})).catch((e=>{this.emit(rt.playFailedAndPaused,nt.mediaSourceAudioInitTimeout,i,t),this.debug.error("EasyPro","mediaSourceAudioInitTimeout and reset player and play error",e)}))})).catch((e=>{this.emit(rt.playFailedAndPaused,nt.mediaSourceAudioInitTimeout,i,t),this.debug.error("EasyPro","mediaSourceAudioInitTimeout and _resetPlayer error",e)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this._pause(t).then((()=>{this.emit(rt.playFailedAndPaused,nt.mediaSourceAudioInitTimeout,i),this.debug.error("EasyPro","mediaSourceAudioInitTimeout and _resetPlayer error",e)})).catch((e=>{this.emit(rt.playFailedAndPaused,nt.mediaSourceAudioInitTimeout,i),this.debug.error("EasyPro","mediaSourceAudioInitTimeout error and pause error",e)}))}})),this.player.once(nt.mediaSourceUseCanvasRenderPlayFailed,(e=>{if(this.isDestroyed())this.debug.log("EasyPro","mediaSourceUseCanvasRenderPlayFailed but player is destroyed");else if(this.emit(rt.crashLog,this.getCrashLog(nt.mediaSourceUseCanvasRenderPlayFailed,e)),this.player&&this.player._opt.mediaSourceUseCanvasRenderPlayFailedReplay&&this.player._opt.mediaSourceUseCanvasRenderPlayFailedReplayType){this.debug.log("EasyPro",`mediaSourceUseCanvasRenderPlayFailed relayType is ${this.player._opt.mediaSourceUseCanvasRenderPlayFailedReplayType} and reset player and play`);const t=this._opt.url,i=this.isMute(),r={...this._opt.playOptions,isNotMute:!i};let s={};const a=this.player._opt.mediaSourceUseCanvasRenderPlayFailedReplayType;a===$?s={useMSE:!1,useWCS:!1}:a===K&&(s={useVideoRender:!0,useCanvasRender:!1}),this._resetPlayer({...s,isNotMute:!i}).then((()=>{this.play(t,r).then((()=>{this.debug.log("EasyPro","mediaSourceUseCanvasRenderPlayFailed and reset player and play success")})).catch((t=>{this.emit(rt.playFailedAndPaused,nt.mediaSourceUseCanvasRenderPlayFailed,e),this.debug.error("EasyPro","mediaSourceUseCanvasRenderPlayFailed and reset player and play error",t)}))})).catch((e=>{this.debug.error("EasyPro","mediaSourceUseCanvasRenderPlayFailed auto and _resetPlayer and play error",e)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this._pause(t).then((()=>{this.debug.log("EasyPro","mediaSourceUseCanvasRenderPlayFailed and pause player success")})).catch((t=>{this.emit(rt.playFailedAndPaused,nt.mediaSourceUseCanvasRenderPlayFailed,e),this.debug.error("EasyPro","mediaSourceUseCanvasRenderPlayFailed and pause",t)}))}})),this.player.once(nt.webcodecsH265NotSupport,(e=>{if(this.isDestroyed())this.debug.log("EasyPro","webcodecsH265NotSupport but player is destroyed");else if(this.emit(rt.crashLog,this.getCrashLog(nt.webcodecsH265NotSupport,e)),this.player&&this.player._opt.hardDecodingNotSupportAutoWasm){this.debug.log("EasyPro","webcodecsH265NotSupport auto wasm [wcs-> wasm] reset player and play");const t=this._opt.url,i=this.isMute(),r={...this._opt.playOptions,isNotMute:!i};this._resetPlayer({useMSE:!1,useWCS:!1,isNotMute:!i}).then((()=>{this.play(t,r).then((()=>{this.debug.log("EasyPro","webcodecsH265NotSupport auto wasm [wcs-> wasm] reset player and play success")})).catch((t=>{this.emit(rt.playFailedAndPaused,nt.webcodecsH265NotSupport,e),this.debug.error("EasyPro","webcodecsH265NotSupport auto wasm [wcs-> wasm] reset player and play error",t)}))})).catch((e=>{this.debug.error("EasyPro","webcodecsH265NotSupport auto wasm [wcs-> wasm] _resetPlayer and play error",e)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this._pause(t).then((()=>{this.emit(rt.playFailedAndPaused,nt.webcodecsH265NotSupport,e),this.debug.log("EasyPro","webcodecsH265NotSupport and autoWasm is false")})).catch((t=>{this.emit(rt.playFailedAndPaused,nt.webcodecsH265NotSupport,e),this.debug.error("EasyPro","webcodecsH265NotSupport and pause error",t)}))}})),this.player.once(nt.webcodecsUnsupportedConfigurationError,(e=>{if(this.isDestroyed())this.debug.log("EasyPro","webcodecsUnsupportedConfigurationError but player is destroyed");else if(this.emit(rt.crashLog,this.getCrashLog(nt.webcodecsUnsupportedConfigurationError,e)),this.player&&this.player._opt.hardDecodingNotSupportAutoWasm){this.debug.log("EasyPro","webcodecsUnsupportedConfigurationError auto wasm [wcs-> wasm] reset player and play");const t=this._opt.url,i=this.isMute(),r={...this._opt.playOptions,isNotMute:!i};this._resetPlayer({useMSE:!1,useWCS:!1,isNotMute:!i}).then((()=>{this.play(t,r).then((()=>{this.debug.log("EasyPro","webcodecsUnsupportedConfigurationError auto wasm [wcs-> wasm] reset player and play success")})).catch((t=>{this.emit(rt.playFailedAndPaused,nt.webcodecsUnsupportedConfigurationError,e),this.debug.error("EasyPro","webcodecsUnsupportedConfigurationError auto wasm [wcs-> wasm] reset player and play error",t)}))})).catch((t=>{this.emit(rt.playFailedAndPaused,nt.webcodecsUnsupportedConfigurationError,e),this.debug.error("EasyPro","webcodecsUnsupportedConfigurationError auto wasm [wcs-> wasm] _resetPlayer and play error",t)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this._pause(t).then((()=>{this.emit(rt.playFailedAndPaused,nt.webcodecsUnsupportedConfigurationError,e),this.debug.log("EasyPro","webcodecsUnsupportedConfigurationError and autoWasm is false")})).catch((t=>{this.emit(rt.playFailedAndPaused,nt.webcodecsUnsupportedConfigurationError,e),this.debug.error("EasyPro","webcodecsUnsupportedConfigurationError and pause error",t)}))}})),this.player.once(nt.webcodecsDecodeConfigureError,(e=>{if(this.isDestroyed())this.debug.log("EasyPro","webcodecsDecodeConfigureError but player is destroyed");else if(this.emit(rt.crashLog,this.getCrashLog(nt.webcodecsDecodeConfigureError,e)),this.player&&this.player._opt.hardDecodingNotSupportAutoWasm){this.debug.log("EasyPro","webcodecsDecodeConfigureError auto wasm [wcs-> wasm] reset player and play");const t=this._opt.url,i=this.isMute(),r={...this._opt.playOptions,isNotMute:!i};this._resetPlayer({useMSE:!1,useWCS:!1,isNotMute:!i}).then((()=>{this.play(t,r).then((()=>{this.debug.log("EasyPro","webcodecsDecodeConfigureError auto wasm [wcs-> wasm] reset player and play success")})).catch((t=>{this.emit(rt.playFailedAndPaused,nt.webcodecsDecodeConfigureError,e),this.debug.error("EasyPro","webcodecsDecodeConfigureError auto wasm [wcs-> wasm] reset player and play error",t)}))})).catch((t=>{this.emit(rt.playFailedAndPaused,nt.webcodecsDecodeConfigureError,e),this.debug.error("EasyPro","webcodecsDecodeConfigureError auto wasm [wcs-> wasm] _resetPlayer and play error",t)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this._pause(t).then((()=>{this.emit(rt.playFailedAndPaused,nt.webcodecsDecodeConfigureError,e),this.debug.log("EasyPro","webcodecsDecodeConfigureError and autoWasm is false")})).catch((t=>{this.emit(rt.playFailedAndPaused,nt.webcodecsDecodeConfigureError,e),this.debug.error("EasyPro","webcodecsDecodeConfigureError and pause error",t)}))}})),this.player.once(nt.webcodecsDecodeError,(e=>{if(this.isDestroyed())return void this.debug.log("EasyPro","webcodecsDecodeError but player is destroyed");this.emit(rt.crashLog,this.getCrashLog(nt.webcodecsDecodeError,e));const t=this._getVideoLastIframeInfo();if(this.player&&this.player._opt.wcsDecodeErrorReplay){const i=this._opt.url,r=this.isMute(),s={...this._opt.playOptions,isNotMute:!r};let a={};this.player._opt.decoderErrorAutoWasm&&(a={useMSE:!1,useWCS:!1}),this.debug.log("EasyPro",`webcodecs decode error autoWasm [wcs-> ${this.player._opt.decoderErrorAutoWasm?"wasm":"wcs"}] reset player and play`),this.player._opt.replayUseLastFrameShow&&(a=Object.assign({},a,t,{loadingIcon:this.player._opt.replayShowLoadingIcon,isNotMute:!r})),this._resetPlayer(a).then((()=>{this.play(i,s).then((()=>{this.debug.log("EasyPro","webcodecs decode error reset player and play success")})).catch((i=>{this.emit(rt.playFailedAndPaused,nt.webcodecsDecodeError,t,e),this.debug.error("EasyPro","webcodecs decode error reset player and play error",i)}))})).catch((()=>{this.emit(rt.playFailedAndPaused,nt.webcodecsDecodeError,t,e),this.debug.error("EasyPro","webcodecs decode error _resetPlayer error")}))}else{const i=!1===this._opt.playFailedUseLastFrameShow;this._pause(i).then((()=>{this.emit(rt.playFailedAndPaused,nt.webcodecsDecodeError,t,e),this.debug.log("EasyPro","webcodecs decode error and autoWasm is false")})).catch((i=>{this.emit(rt.playFailedAndPaused,nt.webcodecsDecodeError,t,e),this.debug.error("EasyPro","webcodecs decode error and pause error",i)}))}})),this.player.once(nt.wcsWidthOrHeightChange,(t=>{if(this.isDestroyed())return void this.debug.log("EasyPro","wcsWidthOrHeightChange but player is destroyed");this.emit(rt.crashLog,this.getCrashLog(nt.wcsWidthOrHeightChange,t));const i=this._getVideoLastIframeInfo();if(this.player&&this.player._opt.widthOrHeightChangeReplay){this.debug.log("EasyPro","wcsWidthOrHeightChange and reset player and play");const e=this._opt.url,r=this.isMute(),s={...this._opt.playOptions,isNotMute:!r};let a={};a=Object.assign({},a,i),this._resetPlayer(a).then((()=>{this._opt.widthOrHeightChangeReplayDelayTime>0?setTimeout((()=>{this.isDestroyed()?this.debug.log("EasyPro","wcsWidthOrHeightChange and widthOrHeightChangeReplayDelayTime but player is destroyed"):this.play(e,s).then((()=>{this.debug.log("EasyPro","wcsWidthOrHeightChange and reset player and play success")})).catch((e=>{this.emit(rt.playFailedAndPaused,nt.wcsWidthOrHeightChange,i,t),this.debug.error("EasyPro","wcsWidthOrHeightChange and reset player and play error",e)}))}),1e3*this._opt.widthOrHeightChangeReplayDelayTime):this.play(e,s).then((()=>{this.debug.log("EasyPro","wcsWidthOrHeightChange and reset player and play success")})).catch((e=>{this.emit(rt.playFailedAndPaused,nt.wcsWidthOrHeightChange,i,t),this.debug.error("EasyPro","wcsWidthOrHeightChange and reset player and play error",e)}))})).catch((e=>{this.emit(rt.playFailedAndPaused,nt.wcsWidthOrHeightChange,i,t),this.debug.error("EasyPro","wcsWidthOrHeightChange and _resetPlayer error",e)}))}else{const r=!1===this._opt.playFailedUseLastFrameShow;this._pause(r).then((()=>{this.emit(rt.playFailedAndPaused,nt.wcsWidthOrHeightChange,i,t),this.debug.error("EasyPro","wcsWidthOrHeightChange and _resetPlayer error",e)})).catch((e=>{this.emit(rt.playFailedAndPaused,nt.wcsWidthOrHeightChange,i,t),this.debug.error("EasyPro","wcsWidthOrHeightChange error and pause error",e)}))}})),this.player.once(nt.wasmDecodeError,(e=>{if(this.isDestroyed())return void this.debug.log("EasyPro","wasmDecodeError but player is destroyed");this.emit(rt.crashLog,this.getCrashLog(nt.wasmDecodeError,e));const t=this._getVideoLastIframeInfo();if(this.player&&this.player._opt.wasmDecodeErrorReplay){this.debug.log("EasyPro","wasm decode error and reset player and play");const i=this._opt.url,r=this.isMute(),s={...this._opt.playOptions,isNotMute:!r};let a={};this.player._opt.replayUseLastFrameShow&&(a=Object.assign({},a,t,{loadingIcon:this.player._opt.replayShowLoadingIcon,isNotMute:!r})),this._resetPlayer(a).then((()=>{this.play(i,s).then((()=>{this.debug.log("EasyPro","wasm decode error and reset player and play success")})).catch((i=>{this.emit(rt.playFailedAndPaused,nt.wasmDecodeError,t,e),this.debug.error("EasyPro","wasm decode error and reset player and play error",i)}))})).catch((()=>{this.emit(rt.playFailedAndPaused,nt.wasmDecodeError,t,e),this.debug.error("EasyPro","wasm decode error and _resetPlayer error")}))}else{const i=!1===this._opt.playFailedUseLastFrameShow;this._pause(i).then((()=>{this.emit(rt.playFailedAndPaused,nt.wasmDecodeError,t,e),this.debug.log("EasyPro","wasm decode error and wasmDecodeErrorReplay is false")})).catch((i=>{this.emit(rt.playFailedAndPaused,nt.wasmDecodeError,t,e),this.debug.error("EasyPro","wasm decode error and pause error",i)}))}})),this.player.once(nt.simdDecodeError,(e=>{if(this.isDestroyed())return void this.debug.log("EasyPro","simdDecodeError but player is destroyed");this.emit(rt.crashLog,this.getCrashLog(nt.simdDecodeError,e));const t=this._getVideoLastIframeInfo();if(this.player&&this.player._opt.simdDecodeErrorReplay){this.debug.log("EasyPro",`simdDecodeError error simdDecodeErrorReplayType is ${this.player._opt.simdDecodeErrorReplayType} and reset player and play`);const i=this._opt.url,r=this.isMute(),s=this.getPlaybackCurrentRate(),a={...this._opt.playOptions,isNotMute:!r};let n={};this.player._opt.simdDecodeErrorReplayType===N&&(n={useSIMD:!1,isNotMute:!r}),n=Object.assign({},n,t),this._resetPlayer(n).then((()=>{this.play(i,a).then((()=>{s&&this.forward(s),this.debug.log("EasyPro","simdDecodeError and reset player and play success")})).catch((i=>{this.emit(rt.playFailedAndPaused,nt.simdDecodeError,t,e),this.debug.error("EasyPro","simdDecodeError and reset player and play error",i)}))})).catch((i=>{this.emit(rt.playFailedAndPaused,nt.simdDecodeError,t,e),this.debug.error("EasyPro","simdDecodeError and _resetPlayer error",i)}))}else{const i=!1===this._opt.playFailedUseLastFrameShow;this._pause(i).then((()=>{this.emit(rt.playFailedAndPaused,nt.simdDecodeError,t,e),this.debug.error("EasyPro","simdDecodeError and simdDecodeErrorReplay is false")})).catch((i=>{this.emit(rt.playFailedAndPaused,nt.simdDecodeError,t,e),this.debug.error("EasyPro","simdDecodeError error and pause error",i)}))}})),this.player.once(nt.wasmWidthOrHeightChange,(t=>{if(this.isDestroyed())return void this.debug.log("EasyPro","wasmWidthOrHeightChange but player is destroyed");this.emit(rt.crashLog,this.getCrashLog(nt.wasmWidthOrHeightChange,t));const i=this._getVideoLastIframeInfo();if(this.player&&this.player._opt.widthOrHeightChangeReplay){this.debug.log("EasyPro","wasmWidthOrHeightChange and reset player and play");const e=this._opt.url,r=this.isMute(),s={...this._opt.playOptions,isNotMute:!r};let a={isNotMute:!r};a=Object.assign({},a,i),this._resetPlayer(a).then((()=>{this._opt.widthOrHeightChangeReplayDelayTime>0?setTimeout((()=>{this.isDestroyed()?this.debug.log("EasyPro","wasmWidthOrHeightChange and widthOrHeightChangeReplayDelayTime but player is destroyed"):this.play(e,s).then((()=>{this.debug.log("EasyPro","wasmWidthOrHeightChange and reset player and play success")})).catch((e=>{this.emit(rt.playFailedAndPaused,nt.wasmWidthOrHeightChange,i,t),this.debug.error("EasyPro","wasmWidthOrHeightChange and reset player and play error",e)}))}),1e3*this._opt.widthOrHeightChangeReplayDelayTime):this.play(e,s).then((()=>{this.debug.log("EasyPro","wasmWidthOrHeightChange and reset player and play success")})).catch((e=>{this.emit(rt.playFailedAndPaused,nt.wasmWidthOrHeightChange,i,t),this.debug.error("EasyPro","wasmWidthOrHeightChange and reset player and play error",e)}))})).catch((e=>{this.emit(rt.playFailedAndPaused,nt.wasmWidthOrHeightChange,i,t),this.debug.error("EasyPro","wasmWidthOrHeightChange and _resetPlayer error",e)}))}else{const r=!1===this._opt.playFailedUseLastFrameShow;this._pause(r).then((()=>{this.emit(rt.playFailedAndPaused,nt.wasmWidthOrHeightChange,i,t),this.debug.error("EasyPro","wasmWidthOrHeightChange and _resetPlayer error",e)})).catch((e=>{this.emit(rt.playFailedAndPaused,nt.wasmWidthOrHeightChange,i),this.debug.error("EasyPro","wasmWidthOrHeightChange error and pause error",e)}))}})),this.player.once(nt.wasmUseVideoRenderError,(e=>{if(this.isDestroyed())return void this.debug.log("EasyPro","wasmUseVideoRenderError but player is destroyed");this.emit(rt.crashLog,this.getCrashLog(nt.wasmUseVideoRenderError,e)),this.debug.log("EasyPro","wasmUseVideoRenderError and reset player and play");const t=this._opt.url,i=this.isMute(),r={...this._opt.playOptions,isNotMute:!i};this._resetPlayer({useVideoRender:!1,useCanvasRender:!0,isNotMute:!i}).then((()=>{this.play(t,r).then((()=>{this.debug.log("EasyPro","wasmUseVideoRenderError and reset player and play success")})).catch((t=>{this.emit(rt.playFailedAndPaused,nt.wasmUseVideoRenderError,{},e),this.debug.error("EasyPro","wasmUseVideoRenderError and reset player and play error",t)}))})).catch((t=>{this.emit(rt.playFailedAndPaused,nt.wasmUseVideoRenderError,{},e),this.debug.error("EasyPro","wasmUseVideoRenderError and _resetPlayer error",t)}))})),this.player.once(nt.videoElementPlayingFailed,(e=>{if(this.isDestroyed())this.debug.log("EasyPro","videoElementPlayingFailed but player is destroyed");else if(this.emit(rt.crashLog,this.getCrashLog(nt.videoElementPlayingFailed,e)),this.player&&this.player._opt.videoElementPlayingFailedReplay){this.debug.log("EasyPro",`videoElementPlayingFailed and useMSE is ${this._opt.useMSE} and reset player and play`);const t=this._opt.url,i=this.isMute(),r={...this._opt.playOptions,isNotMute:!i};this._resetPlayer({useMSE:!1,useVideoRender:!1,useCanvasRender:!0,isNotMute:!i}).then((()=>{this.play(t,r).then((()=>{this.debug.log("EasyPro","videoElementPlayingFailed and reset player and play success")})).catch((t=>{this.emit(rt.playFailedAndPaused,nt.videoElementPlayingFailed,{},e),this.debug.error("EasyPro","videoElementPlayingFailed and reset player and play error",t)}))})).catch((t=>{this.emit(rt.playFailedAndPaused,nt.videoElementPlayingFailed,{},e),this.debug.error("EasyPro","videoElementPlayingFailed and _resetPlayer error",t)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this._pause(t).then((()=>{this.emit(rt.playFailedAndPaused,nt.videoElementPlayingFailed,{},e),this.debug.error("EasyPro","videoElementPlayingFailed and videoElementPlayingFailedReplay is false")})).catch((t=>{this.emit(rt.playFailedAndPaused,nt.videoElementPlayingFailed,{},e),this.debug.error("EasyPro","videoElementPlayingFailed and _pause error",t)}))}})),this.player.once(nt.simdH264DecodeVideoWidthIsTooLarge,(e=>{if(this.isDestroyed())this.debug.log("EasyPro","simdH264DecodeVideoWidthIsTooLarge but player is destroyed");else if(this.emit(rt.crashLog,this.getCrashLog(nt.simdH264DecodeVideoWidthIsTooLarge,e)),this.player&&this.player._opt.simdH264DecodeVideoWidthIsTooLargeReplay){this.debug.log("EasyPro","simdH264DecodeVideoWidthIsTooLarge and reset player and play");const t=this._opt.url,i=this.isMute(),r={...this._opt.playOptions,isNotMute:!i};this._resetPlayer({useSIMD:!1,isNotMute:!i}).then((()=>{this.play(t,r).then((()=>{this.debug.log("EasyPro","simdH264DecodeVideoWidthIsTooLarge and reset player and play success")})).catch((t=>{this.emit(rt.playFailedAndPaused,nt.simdH264DecodeVideoWidthIsTooLarge,{},e),this.debug.error("EasyPro","simdH264DecodeVideoWidthIsTooLarge and reset player and play error",t)}))})).catch((t=>{this.emit(rt.playFailedAndPaused,nt.simdH264DecodeVideoWidthIsTooLarge,{},e),this.debug.error("EasyPro","simdH264DecodeVideoWidthIsTooLarge and _resetPlayer error",t)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this._pause(t).then((()=>{this.emit(rt.playFailedAndPaused,nt.simdH264DecodeVideoWidthIsTooLarge,{},e),this.debug.error("EasyPro","simdH264DecodeVideoWidthIsTooLarge and simdDecodeErrorReplay is false")})).catch((t=>{this.emit(rt.playFailedAndPaused,nt.simdH264DecodeVideoWidthIsTooLarge,{},e),this.debug.error("EasyPro","simdH264DecodeVideoWidthIsTooLarge and pause error",t)}))}})),this.player.once(rt.networkDelayTimeout,(e=>{if(this.player._opt.networkDelayTimeoutReplay){if(this.isDestroyed())return void this.debug.log("EasyPro","networkDelayTimeout but player is destroyed");this.emit(rt.crashLog,this.getCrashLog(rt.networkDelayTimeout,e));const t=this._getVideoLastIframeInfo();this.debug.log("EasyPro","network delay time out and reset player and play");const i=this._opt.url,r=this.isMute(),s={...this._opt.playOptions,isNotMute:!r};let a={};this.player&&this.player._opt.replayUseLastFrameShow&&(a=Object.assign({},a,t,{loadingIcon:this.player._opt.replayShowLoadingIcon,isNotMute:!r})),this._resetPlayer(a).then((()=>{this.play(i,s).then((()=>{this.debug.log("EasyPro","wasm decode error and reset player and play success")})).catch((i=>{this.emit(rt.playFailedAndPaused,rt.networkDelayTimeout,t,e),this.debug.error("EasyPro","wasm decode error and reset player and play error",i)}))})).catch((()=>{this.emit(rt.playFailedAndPaused,rt.networkDelayTimeout,t,e),this.debug.error("EasyPro","wasm decode error and _resetPlayer error")}))}})),this.player.once(nt.fetchError,(e=>{if(this.isDestroyed())return void this.debug.log("EasyPro","fetchError but player is destroyed");this.emit(rt.crashLog,this.getCrashLog(nt.fetchError,e));const t=this._getVideoLastIframeInfo();this.debug.log("EasyPro","fetch error and pause player");const i=!1===this._opt.playFailedUseLastFrameShow;this._pause(i).then((()=>{this.emit(rt.playFailedAndPaused,nt.fetchError,t,e)})).catch((i=>{this.emit(rt.playFailedAndPaused,nt.fetchError,t,e),this.debug.error("EasyPro","fetch error and pause",i)}))})),this.player.once(rt.streamEnd,(e=>{if(this.isDestroyed())return void this.debug.log("EasyPro","streamEnd but player is destroyed and return");this.emit(rt.crashLog,this.getCrashLog(rt.streamEnd,e));const t=this._getVideoLastIframeInfo();let i={};if(this.player&&this.player._opt.replayUseLastFrameShow&&t.loadingBackgroundHeight&&(i=Object.assign({},i,t,{loadingIcon:this.player._opt.replayShowLoadingIcon})),this.player&&this.player._opt.websocket1006ErrorReplay&&""+e=="1006"){this.debug.log("EasyPro","streamEnd and websocket1006ErrorReplay is true and error is 1006 and reset player and play");const t=this.isMute(),r={...this._opt.playOptions,isNotMute:!t},s=this._opt.url;this._resetPlayer(i).then((()=>{setTimeout((()=>{this.isDestroyed()?this.debug.log("EasyPro","streamEnd and 1006 error but player is destroyed and return"):this.play(s,r).then((()=>{this.debug.log("EasyPro","streamEnd and 1006 error and reset player and play success")})).catch((t=>{this.emit(rt.playFailedAndPaused,nt.streamEnd,{},e),this.debug.error("EasyPro","streamEnd and 1006 error and reset player and play error",t)}))}),1e3*this._opt.websocket1006ErrorReplayDelayTime)})).catch((t=>{this.emit(rt.playFailedAndPaused,nt.streamEnd,{},e),this.debug.error("EasyPro","streamEnd and 1006 and _resetPlayer error",t)}))}else{this.debug.log("EasyPro","streamEnd pause player");const i=!1===this._opt.playFailedUseLastFrameShow;this._pause(i).then((()=>{this.emit(rt.playFailedAndPaused,rt.streamEnd,t,e)})).catch((i=>{this.emit(rt.playFailedAndPaused,rt.streamEnd,t,e),this.debug.error("EasyPro","streamEnd pause",i)}))}})),this.player.once(nt.websocketError,(e=>{if(this.isDestroyed())return void this.debug.log("EasyPro","websocketError but player is destroyed");this.emit(rt.crashLog,this.getCrashLog(nt.websocketError,e));const t=this._getVideoLastIframeInfo();this.debug.log("EasyPro","websocketError and reset player");const i=!1===this._opt.playFailedUseLastFrameShow;this._pause(i).then((()=>{this.emit(rt.playFailedAndPaused,nt.websocketError,t,e)})).catch((i=>{this.emit(rt.playFailedAndPaused,nt.websocketError,t,e),this.debug.error("EasyPro","websocketError and pause",i)}))})),this.player.once(nt.webrtcError,(e=>{if(this.isDestroyed())return void this.debug.log("EasyPro","webrtcError but player is destroyed");this.emit(rt.crashLog,this.getCrashLog(nt.webrtcError,e));const t=this._getVideoLastIframeInfo();this.debug.log("EasyPro","webrtcError and pause player");const i=!1===this._opt.playFailedUseLastFrameShow;this._pause(i).then((()=>{this.emit(rt.playFailedAndPaused,nt.webrtcError,t,e)})).catch((i=>{this.emit(rt.playFailedAndPaused,nt.webrtcError,t,e),this.debug.error("EasyPro","webrtcError and pause",i)}))})),this.player.once(nt.hlsError,(e=>{if(this.isDestroyed())return void this.debug.log("EasyPro","hlsError but player is destroyed");this.emit(rt.crashLog,this.getCrashLog(nt.hlsError,e));const t=this._getVideoLastIframeInfo();this.debug.log("EasyPro","hlsError and pause player");const i=!1===this._opt.playFailedUseLastFrameShow;this._pause(i).then((()=>{this.emit(rt.playFailedAndPaused,nt.hlsError,t,e)})).catch((i=>{this.emit(rt.playFailedAndPaused,nt.hlsError,t,e),this.debug.error("EasyPro","hlsError and pause",i)}))})),this.player.once(nt.aliyunRtcError,(e=>{if(this.isDestroyed())return void this.debug.log("EasyPro","aliyunRtcError but player is destroyed");this.emit(rt.crashLog,this.getCrashLog(nt.aliyunRtcError,e));const t=this._getVideoLastIframeInfo();this.debug.log("EasyPro","aliyunRtcError and pause player");const i=!1===this._opt.playFailedUseLastFrameShow;this._pause(i).then((()=>{this.emit(rt.playFailedAndPaused,nt.aliyunRtcError,t,e)})).catch((i=>{this.emit(rt.playFailedAndPaused,nt.aliyunRtcError,t,e),this.debug.error("EasyPro","aliyunRtcError and pause",i)}))})),this.player.once(nt.decoderWorkerInitError,(e=>{if(this.isDestroyed())return void this.debug.log("EasyPro","decoderWorkerInitError but player is destroyed");this.emit(rt.crashLog,this.getCrashLog(nt.decoderWorkerInitError,e)),this.debug.log("EasyPro","decoderWorkerInitError and pause player");const t=!1===this._opt.playFailedUseLastFrameShow;this._pause(t).then((()=>{this.emit(rt.playFailedAndPaused,nt.decoderWorkerInitError,{},e)})).catch((t=>{this.emit(rt.playFailedAndPaused,nt.decoderWorkerInitError,{},e),this.debug.error("EasyPro","decoderWorkerInitError and pause",t)}))})),this.player.once(nt.videoElementPlayingFailedForWebrtc,(e=>{if(this.isDestroyed())return void this.debug.log("EasyPro","videoElementPlayingFailedForWebrtc but player is destroyed");this.emit(rt.crashLog,this.getCrashLog(nt.videoElementPlayingFailedForWebrtc,e)),this.debug.log("EasyPro","videoElementPlayingFailedForWebrtc and pause player");const t=!1===this._opt.playFailedUseLastFrameShow;this._pause(t).then((()=>{this.emit(rt.playFailedAndPaused,nt.videoElementPlayingFailedForWebrtc,{},e)})).catch((t=>{this.emit(rt.playFailedAndPaused,nt.videoElementPlayingFailedForWebrtc,{},e),this.debug.error("EasyPro","videoElementPlayingFailedForWebrtc and pause",t)}))})),this.player.once(nt.videoInfoError,(e=>{if(this.isDestroyed())return void this.debug.log("EasyPro","videoInfoError but player is destroyed");this.emit(rt.crashLog,this.getCrashLog(nt.videoInfoError,e)),this.debug.log("EasyPro","videoInfoError and pause player");const t=!1===this._opt.playFailedUseLastFrameShow;this._pause(t).then((()=>{this.emit(rt.playFailedAndPaused,nt.videoInfoError,{},e)})).catch((t=>{this.emit(rt.playFailedAndPaused,nt.videoInfoError,{},e),this.debug.error("EasyPro","videoInfoError and pause",t)}))})),this.player.once(rt.webrtcStreamH265,(e=>{if(this.isDestroyed())return void this.debug.log("EasyPro","webrtcStreamH265 but player is destroyed");this.debug.log("EasyPro","webrtcStreamH265 and reset player and play");const t=this._opt.url,i=this.isMute(),r={...this._opt.playOptions,isNotMute:!i},s={isWebrtcH265:!0,isNotMute:!i};this._resetPlayer(s).then((()=>{this.play(t,r).then((()=>{this.debug.log("EasyPro","webrtcStreamH265 and reset player and play success")})).catch((t=>{this.emit(rt.playFailedAndPaused,rt.webrtcStreamH265,{},e),this.debug.error("EasyPro","webrtcStreamH265 and reset player and play error",t)}))})).catch((()=>{this.emit(rt.playFailedAndPaused,rt.webrtcStreamH265,{},e),this.debug.error("EasyPro","webrtcStreamH265 and _resetPlayer error")}))})),this.player.on(rt.delayTimeout,(e=>{if(this.isDestroyed())return void this.debug.log("EasyPro","delay timeout but player is destroyed");this.emit(rt.crashLog,this.getCrashLog(rt.delayTimeout,e));const t=this._getVideoLastIframeInfo();if(this.player&&this.player._opt.heartTimeoutReplay&&(this._heartTimeoutReplayTimes{this.play(i,a).then((()=>{console.log("重连成功!",s),s&&this.forward(s)})).catch((i=>{this.emit(rt.playFailedAndPaused,rt.delayTimeout,t,e),this.debug.error("EasyPro","delay timeout replay error",i)}))})).catch((i=>{this.emit(rt.playFailedAndPaused,rt.delayTimeout,t,e),this.debug.error("EasyPro","delay timeout _resetPlayer error",i)}))}else{const i=!1===this._opt.playFailedUseLastFrameShow;this._pause(i).then((()=>{this.emit(rt.playFailedAndPaused,rt.delayTimeout,t,e),this.player&&(this.emit(rt.delayTimeoutRetryEnd),this.emit(rt.playFailedAndPaused,rt.delayTimeoutRetryEnd)),this.debug.warn("EasyPro",`delayTimeoutRetryEnd and\n opt.heartTimeout is ${this.player&&this.player._opt.heartTimeout} and\n opt.heartTimeoutReplay is ${this.player&&this.player._opt.heartTimeoutReplay} and\n opt.heartTimeoutReplayTimes is ${this.player&&this.player._opt.heartTimeoutReplayTimes},and\n local._heartTimeoutReplayTimes is ${this._heartTimeoutReplayTimes}`)})).catch((i=>{this.emit(rt.playFailedAndPaused,rt.delayTimeout,t,e),this.debug.error("EasyPro","delay timeout and pause error",i)}))}})),this.player.on(rt.loadingTimeout,(e=>{if(this.emit(rt.crashLog,this.getCrashLog(rt.loadingTimeout,e)),this.isDestroyed())this.debug.log("EasyPro","loading timeout but player is destroyed");else if(this.player&&this.player._opt.loadingTimeoutReplay&&(this._loadingTimeoutReplayTimes{this.play(t,s).then((()=>{r&&this.forward(r)})).catch((t=>{this.emit(rt.playFailedAndPaused,rt.loadingTimeout,{},e),this.debug.error("EasyPro","loading timeout replay error",t)}))})).catch((t=>{this.emit(rt.playFailedAndPaused,rt.loadingTimeout,{},e),this.debug.error("EasyPro","loading timeout _resetPlayer error",t)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this._pause(t).then((()=>{this.emit(rt.playFailedAndPaused,rt.loadingTimeout,{},e),this.player&&(this.emit(rt.loadingTimeoutRetryEnd),this.emit(rt.playFailedAndPaused,rt.loadingTimeoutRetryEnd,{},e)),this.debug.log("EasyPro",`loadingTimeoutRetryEnd and\n opt.loadingTimeout is ${this.player&&this.player._opt.loadingTimeout} and\n opt.loadingTimeoutReplay is ${this.player&&this.player._opt.loadingTimeoutReplay} and\n local._loadingTimeoutReplayTimes time is ${this._loadingTimeoutReplayTimes} and\n opt.loadingTimeoutReplayTimes is ${this.player&&this.player._opt.loadingTimeoutReplayTimes}`)})).catch((t=>{this.emit(rt.playFailedAndPaused,rt.loadingTimeout,{},e),this.debug.error("EasyPro","loading timeout and pause error",t)}))}})),this._hasLoaded()?this.player.play(d,h).then((()=>{c()})).catch((e=>{this.debug.error("EasyPro","_hasLoaded() and play error",e),this.emit(rt.crashLog,this.getCrashLog("_hasLoaded() and play error",e)),this.player&&this.player.pause().then((()=>{u(e)})).catch((e=>{u(e),this.debug.error("EasyPro","_hasLoaded() and play error and next pause error",e)}))})):this.player.once(rt.decoderWorkerInit,(()=>{this.player.play(d,h).then((()=>{c()})).catch((e=>{this.debug.error("EasyPro","decoderWorkerInit and play error",e),this.emit(rt.crashLog,this.getCrashLog("decoderWorkerInit and play error",e)),this.player&&this.player.pause().then((()=>{u(e)})).catch((e=>{u(e),this.debug.error("EasyPro","decoderWorkerInit and play error and next pause error",e)}))}))}))},q=this.player.getOption(),Y=E&&ba(this._opt.supportHls265),Q=y&&ba(this._opt.isWebrtcH265),X=E&&!!na(),J=E&&q.demuxUseWorker;if(Y||Q||g||p||U||X||J)this.debug.log("EasyPro",`need reset player and\n isOldHls is ${Y} and isOldWebrtc is ${Q} and\n isAliyunRtc is ${g} and\n needResetPlayer(url change) is ${p} and\n isMpeg4 is ${U} and\n isHlsCanVideoPlay is ${X} and\n isHlsButDemuxUseWorker is ${J}`),this._resetPlayer({protocol:H,demuxType:W,isWsRtc:_,isHls:E,isWebrtc:y,isWebrtcForZLM:G,isWebrtcForSRS:z,isWebrtcForOthers:V,isAliyunRtc:g,cryptoKey:h.cryptoKey||"",cryptoIV:h.cryptoIV||"",url:d}).then((()=>{j()})).catch((e=>{u("reset player error")}));else{const e={protocol:H,demuxType:W,isHls:E,isWsRtc:_,isWebrtc:y,isAliyunRtc:g,isFlv:this._opt.isFlv,isFmp4:this._opt.isFmp4,isMpeg4:this._opt.isMpeg4,isNakedFlow:this._opt.isNakedFlow,isTs:this._opt.isTs,cryptoKey:h.cryptoKey||"",cryptoIV:h.cryptoIV||""};this._opt.isNakedFlow&&(e.mseDecodeAudio=!1),this.player.updateOption(e),h.cryptoKey&&h.cryptoIV&&this.player.decoderWorker&&(this.player.decoderWorker.updateWorkConfig({key:"cryptoKey",value:h.cryptoKey}),this.player.decoderWorker.updateWorkConfig({key:"cryptoIV",value:h.cryptoIV})),j()}}))}_resetDemuxType(e){this._opt.isFlv=!1,this._opt.isFmp4=!1,this._opt.isMpeg4=!1,this._opt.isNakedFlow=!1,this._opt.isHls=!1,this._opt.isWsRtc=!1,this._opt.isWebrtc=!1,this._opt.isWebrtcForZLM=!1,this._opt.isWebrtcForSRS=!1,this._opt.isWebrtcForOthers=!1,this._opt.isAliyunRtc=!1,this._opt.isTs=!1,e&&(this._opt[e]=!0),"isFmp4"!==e&&(this._opt.isFmp4Private=!1)}startVoice(){this.player.startVoice()}pauseVoice(){this.player.pauseVoice()}removeVoice(){this.player.removeVoice()}resize(){this.debug.log("EasyPro","resize()"),this.player&&this.player.resize()}setBufferTime(e){this.debug.log("EasyPro",`setBufferTime() ${e}`),(e=Number(e))>10&&this.debug.warn("EasyPro",`setBufferTime() buffer time is ${e} second, is too large, video will show blank screen until cache ${e} second buffer data`);const t=1e3*e;this._opt.videoBuffer=t,this.player?this.player.updateOption({videoBuffer:t},!0):this.debug.warn("EasyPro","setBufferTime() player is null")}setBufferDelayTime(e){this.debug.log("EasyPro",`setBufferDelayTime() ${e}`),(e=Number(e))<.2&&this.debug.warn("EasyPro",`setBufferDelayTime() buffer time delay is ${e} second, is too small`);const t=1e3*(e=fs(e,.2,100));this._opt.videoBufferDelay=t,this.player?this.player.updateOption({videoBufferDelay:t},!0):this.debug.warn("EasyPro","setBufferDelayTime() player is null")}setRotate(e){this.debug.log("EasyPro",`setRotate() ${e}`),e=parseInt(e,10);this._opt.rotate!==e&&-1!==[0,90,180,270].indexOf(e)?(this._opt.rotate=e,this.player?(this.player.updateOption({rotate:e}),this.resize()):this.debug.warn("EasyPro","setRotate() player is null")):this.debug.warn("EasyPro",`setRotate() rotate is ${e} and this._opt.rotate is ${this._opt.rotate}`)}setMirrorRotate(e){this.debug.log("EasyPro",`setMirrorRotate() ${e}`);e||(e="none"),this._opt.mirrorRotate!==e&&-1!==["none","level","vertical"].indexOf(e)?(this._opt.mirrorRotate=e,this.player?(this.player.updateOption({mirrorRotate:e}),this.resize()):this.debug.warn("EasyPro","setMirrorRotate() player is null")):this.debug.warn("EasyPro",`setMirrorRotate() mirrorRotate is ${e} and this._opt.mirrorRotate is ${this._opt.mirrorRotate}`)}setAspectRatio(e){this.debug.log("EasyPro",`setAspectRatio() ${e}`);e||(e="default"),this._opt.aspectRatio!==e&&-1!==["default","4:3","16:9"].indexOf(e)?(this._opt.aspectRatio=e,this.player?(this.player.updateOption({aspectRatio:e}),this.resize()):this.debug.warn("EasyPro","setAspectRatio() player is null")):this.debug.warn("EasyPro",`setAspectRatio() aspectRatio is ${e} and this._opt.aspectRatio is ${this._opt.mirrorRotate}`)}hasLoaded(){return!0}_hasLoaded(){return this.player&&this.player.loaded||!1}setKeepScreenOn(){this.debug.log("EasyPro","setKeepScreenOn()"),this._opt.keepScreenOn=!0,this.player?this.player.updateOption({keepScreenOn:!0}):this.debug.warn("EasyPro","setKeepScreenOn() player is not ready")}setFullscreen(e){this.debug.log("EasyPro",`setFullscreen() ${e}`);const t=!!e;this.player?this.player.fullscreen!==t?this.player.fullscreen=t:this.debug.warn("EasyPro",`setFullscreen() fullscreen is ${t} and this.player.fullscreen is ${this.player.fullscreen}`):this.debug.warn("EasyPro","setFullscreen() player is not ready")}setWebFullscreen(e){this.debug.log("EasyPro",`setWebFullscreen() ${e}`);const t=!!e;this.player?this.player.webFullscreen=t:this.debug.warn("EasyPro","setWebFullscreen() player is not ready")}screenshot(e,t,i,r){return this.debug.log("EasyPro",`screenshot() ${e} ${t} ${i} ${r}`),this.player&&this.player.video?this.player.video.screenshot(e,t,i,r):(this.debug.warn("EasyPro","screenshot() player is not ready"),console.log("没有player实例"),null)}screenshotWatermark(e){return new Promise(((t,i)=>{this.debug.log("EasyPro","screenshotWatermark()",e),this.player&&this.player.video?this.player.video.screenshotWatermark(e).then((e=>{t(e)})).catch((e=>{i(e)})):(this.debug.warn("EasyPro","screenshotWatermark() player is not ready"),i("player is not ready"))}))}startRecord(e,t){return new Promise(((i,r)=>{if(this.debug.log("EasyPro",`startRecord() ${e} ${t}`),!this.player)return this.debug.warn("EasyPro","startRecord() player is not ready"),r("player is not ready");this.player.playing?(this.player.startRecord(e,t),i()):(this.debug.warn("EasyPro","startRecord() player is not playing"),r("not playing"))}))}stopRecordAndSave(e,t){return new Promise(((i,r)=>{this.debug.log("EasyPro",`stopRecordAndSave() ${e} ${t}`),this.player&&this.player.recording?this.player.stopRecordAndSave(e,t).then((e=>{i(e)})).catch((e=>{r(e)})):r("not recording")}))}isPlaying(){let e=!1;return this.player&&(e=this.player.isPlaying()),e}isLoading(){return!!this.player&&this.player.loading}isPause(){let e=!1;return this._opt.playType===g?e=!this.isPlaying()&&!this.isLoading():this._opt.playType===v&&this.player&&(e=this.player.playbackPause),e}isPaused(){return this.isPause()}isPlaybackPause(){let e=!1;return this._opt.playType===v&&this.player&&(e=this.player.playbackPause),e}isMute(){let e=!0;return this.player&&(e=this.player.isAudioMute()),e}isRecording(){return this.player&&this.player.recorder&&this.player.recorder.recording||!1}isFullscreen(){let e=!1;return this.player&&(e=this.player.fullscreen),e}isWebFullscreen(){let e=!1;return this.player&&(e=this.player.webFullscreen),e}clearBufferDelay(){this.debug.log("EasyPro","clearBufferDelay()"),this.player?this.player.clearBufferDelay():this.debug.warn("EasyPro","clearBufferDelay() player is not init")}setNetworkDelayTime(e){this.debug.log("EasyPro",`setNetworkDelayTime() ${e}`),(e=Number(e))<1&&this.debug.warn("EasyPro",`setNetworkDelayTime() network delay is ${e} second, is too small`);const t=1e3*(e=fs(e,1,100));this._opt.networkDelay=t,this.player?this.player.updateOption({networkDelay:t},!0):this.debug.warn("EasyPro","setNetworkDelayTime() player is null")}getDecodeType(){let e="";return this.player&&(e=this.player.getDecodeType()),e}getRenderType(){let e="";return this.player&&(e=this.player.getRenderType()),e}getAudioEngineType(){let e="";return this.player&&(e=this.player.getAudioEngineType()),e}getPlayingTimestamp(){let e=0;return this.player&&(e=this.player.getPlayingTimestamp()),e}getStatus(){let e=Ui;return this.player&&(e=this.player.loading?Pi:this.player.playing?Bi:Mi),e}getPlayType(){return this.player?this.player._opt.playType:g}togglePerformancePanel(e){this.debug.log("EasyPro",`togglePerformancePanel() ${e}`);const t=this.player._opt.showPerformance;let i=!t;Gs(e)&&(i=e),i!==t?this.player?this.player.togglePerformancePanel(i):this.debug.warn("EasyPro","togglePerformancePanel() failed, this.player is not init"):this.debug.warn("EasyPro",`togglePerformancePanel() failed, showPerformance is prev: ${t} === now: ${i}`)}openZoom(){this.debug.log("EasyPro","openZoom()"),this.player?this.player.zooming=!0:this.debug.warn("EasyPro","openZoom() failed, this.player is not init")}closeZoom(){this.debug.log("EasyPro","closeZoom()"),this.player?this.player.zooming=!1:this.debug.warn("EasyPro","closeZoom() failed, this.player is not init")}isZoomOpen(){let e=!1;return this.player&&(e=this.player.zooming),e}toggleZoom(e){this.debug.log("EasyPro",`toggleZoom() ${e}`),Gs(e)||(e=!this.isZoomOpen()),va(e)?this.openZoom():ba(!1)&&this.closeZoom()}expandZoom(){this.debug.log("EasyPro","expandZoom()"),this.player&&this.player.zoom&&this.player.zooming?this.player.zoom.expandPrecision():this.debug.warn("EasyPro","expandZoom() failed, zoom is not open or not init")}narrowZoom(){this.debug.log("EasyPro","narrowZoom()"),this.player&&this.player.zoom&&this.player.zooming?this.player.zoom.narrowPrecision():this.debug.warn("EasyPro","narrowZoom failed, zoom is not open or not init")}getCurrentZoomIndex(){let e=1;return this.player&&this.player.zoom&&(e=this.player.zoom.currentZoom),e}startTalk(e,t={}){return new Promise(((i,r)=>{this.debug.log("EasyPro","startTalk()",e,t),this._initTalk(t),this.talk.startTalk(e).then((()=>{i(),this.talk.once(rt.talkStreamClose,(()=>{this.debug.warn("EasyPro","talk stream close"),this.stopTalk().catch((e=>{}))})),this.talk.once(rt.talkStreamError,(e=>{this.debug.warn("EasyPro","talk stream error",e),this.stopTalk().catch((e=>{}))})),this.talk.once(rt.talkStreamInactive,(()=>{this.debug.warn("EasyPro","talk stream inactive"),this.stopTalk().catch((e=>{}))}))})).catch((e=>{r(e)}))}))}stopTalk(){return new Promise(((e,t)=>{if(this.debug.log("EasyPro","stopTalk()"),!this.talk)return t("stopTalk() talk is not init");this.talk.destroy(),e()}))}getTalkVolume(){return new Promise(((e,t)=>{if(!this.talk)return t("getTalkVolume() talk is not init");e(this.talk.volume)}))}setTalkVolume(e){return new Promise(((t,i)=>{if(this.debug.log("EasyPro","setTalkVolume()",e),!this.talk)return i("setTalkVolume() talk is not init");this.talk.setVolume(e/100),t()}))}setNakedFlowFps(e){return new Promise(((t,i)=>{if(this.debug.log("EasyPro","setNakedFlowFps()",e),Ns(e))return i("setNakedFlowFps() fps is empty");let r=Number(e);r=fs(r,1,100),this._opt.nakedFlowFps=r,this.player?this.player.updateOption({nakedFlowFps:r}):this.debug.warn("EasyPro","setNakedFlowFps() player is null"),t()}))}getCrashLog(e,t=""){if(!this.player)return;const i=this.player.getAllStatsData(),r=this.player;let s={url:this._opt.url,playType:r.isPlayback()?"playback":"live",demuxType:r.getDemuxType(),decoderType:r.getDecodeType(),renderType:r.getRenderType(),videoInfo:{encType:"",width:"",height:""},audioInfo:{encType:"",sampleRate:"",channels:""},audioEngine:r.getAudioEngineType(),allTimes:i.pTs,timestamp:ps(),type:e,error:ca(t)||e};if(r.video){const e=r.video.videoInfo||{};s.videoInfo={encType:e.encType||"",width:e.width||"",height:e.height||""}}if(r.audio){const e=r.audio.audioInfo||{};s.audioInfo={encType:e.encType||"",sampleRate:e.sampleRate||"",channels:e.channels||""}}return s}updateDebugLevel(e){this.debug.log("EasyPro","updateDebugLevel()",e),e===q||e===Y?e!==this.player._opt.debugLevel?(this._opt.debugLevel=e,this.player?this.player.updateOption({debugLevel:e},!0):this.debug.warn("EasyPro","updateDebugLevel() player is null")):this.debug.warn("EasyPro",`updateDebugLevel() level is same, level: ${e}`):this.debug.warn("EasyPro",`updateDebugLevel() level is not valid, level: ${e}`)}updateWatermark(e){this.debug.log("EasyPro","updateWatermark()",e),this.player?this.player.updateWatermark(e):this.debug.warn("EasyPro","updateWatermark() player is not init")}removeWatermark(){this.debug.log("EasyPro","removeWatermark()"),this.player?this.player.removeWatermark():this.debug.warn("EasyPro","removeWatermark() player is not init")}updateFullscreenWatermark(e){if(this.debug.log("EasyPro","updateFullscreenWatermark()",e),Js(e)){this._opt.fullscreenWatermarkConfig=e;const t=Hs(this.$container,e);if(!t.watermark_txt)return void this.debug.warn("EasyPro","fullscreenWatermarkConfig text is empty");this.watermark.load(t)}else this.debug.warn("EasyPro",`updateFullscreenWatermark() config is not valid, config: ${e}`)}removeFullscreenWatermark(){this.debug.log("EasyPro","removeFullscreenWatermark()"),this.watermark?this.watermark.remove():this.debug.warn("EasyPro","removeFullscreenWatermark() watermark is not init")}faceDetectOpen(){this.debug.log("EasyPro","faceDetectOpen()"),this.player?this.player.faceDetect(!0):this.debug.warn("EasyPro","faceDetectOpen() player is not init")}faceDetectClose(){this.debug.log("EasyPro","faceDetectClose()"),this.player?this.player.faceDetect(!1):this.debug.warn("EasyPro","faceDetectClose() player is not init")}objectDetectOpen(){this.debug.log("EasyPro","objectDetectOpen()"),this.player?this.player.objectDetect(!0):this.debug.warn("EasyPro","objectDetectOpen() player is not init")}objectDetectClose(){this.debug.log("EasyPro","objectDetectClose()"),this.player?this.player.objectDetect(!1):this.debug.warn("EasyPro","objectDetectClose() player is not init")}sendWebsocketMessage(e){this.debug.log("EasyPro","sendWebsocketMessage()",e),this.player?this.player.sendWebsocketMessage(e):this.debug.warn("EasyPro","sendWebsocketMessage() player is not init")}addContentToCanvas(e){this.debug.log("EasyPro","addContentToCanvas()"),this.player?this.player.addContentToCanvas(e):this.debug.warn("EasyPro","addContentToCanvas() player is not init")}clearContentToCanvas(){this.debug.log("EasyPro","clearContentToCanvas()"),this.player?this.player.addContentToCanvas([]):this.debug.warn("EasyPro","clearContentToCanvas() player is not init")}setControlHtml(e){this.debug.log("EasyPro","setControlHtml()",e),this.player?this.player.setControlHtml(e):this.debug.warn("EasyPro","setControlHtml() player is not init")}clearControlHtml(){this.debug.log("EasyPro","clearControlHtml()"),this.player?this.player.clearControlHtml():this.debug.warn("EasyPro","clearControlHtml() player is not init")}getVideoInfo(){let e=null;return this.player&&(e=this.player.getVideoInfo()),e}getAudioInfo(){let e=null;return this.player&&(e=this.player.getAudioInfo()),e}setSm4CryptoKey(e){this.debug.log("EasyPro","setSm4CryptoKey()",e),32===(e=""+e).length?(this._opt.sm4CryptoKey=e,this.player?this.player.updateOption({sm4CryptoKey:e},!0):this.debug.warn("EasyPro","setSm4CryptoKey() player is null")):this.debug.warn("EasyPro",`setSm4CryptoKey() key is invalid and length is ${e.length} !== 32`)}setM7sCryptoKey(e){this.debug.log("EasyPro","setM7sCryptoKey()",e),e=""+e,this._opt.m7sCryptoKey=e,this.player?this.player.updateOption({m7sCryptoKey:e},!0):this.debug.warn("EasyPro","setM7sCryptoKey() player is null")}setXorCryptoKey(e){this.debug.log("EasyPro","setXorCryptoKey()",e),e=""+e,this._opt.xorCryptoKey=e,this.player?this.player.updateOption({xorCryptoKey:e},!0):this.debug.warn("EasyPro","setXorCryptoKey() player is null")}updateLoadingText(e){this.debug.log("EasyPro","updateLoadingText()",e),this.player?this.player.updateLoadingText(e):this.debug.warn("EasyPro","updateLoadingText() player is null")}updateIsEmitSEI(e){this.debug.log("EasyPro","updateIsEmitSEI()",e),this._opt.isEmitSEI=e,this.player?this.player.updateOption({isEmitSEI:e},!0):this.debug.warn("EasyPro","updateIsEmitSEI() player is null")}getPTZCmd(e,t){if(this.debug.log("EasyPro","getPTZCmd()",e),e)return this.player?Wc({type:e,index:0,speed:t}):void this.debug.warn("EasyPro","getPTZCmd() player is null");this.debug.warn("EasyPro","getPTZCmd() ptz is null")}downloadTempNakedFlowFile(){return new Promise(((e,t)=>{this.player?(this.player.downloadNakedFlowFile(),e()):t("player is not init")}))}downloadTempFmp4File(){return new Promise(((e,t)=>{this.player?(this.player.downloadFmp4File(),e()):t("player is not init")}))}downloadTempMpeg4File(){return new Promise(((e,t)=>{this.player?(this.player.downloadMpeg4File(),e()):t("player is not init")}))}downloadTempRtpFile(){return new Promise(((e,t)=>{this.talk?(this.talk.downloadRtpFile(),e()):t("talk is not init")}))}downloadMemoryLog(){this.memoryLogger&&this.memoryLogger.download()}_getVideoLastIframeInfo(){const e=this.getVideoInfo()||{};return{loadingBackground:this.screenshot("","png",.92,"base64"),loadingBackgroundWidth:e.width||0,loadingBackgroundHeight:e.height||0}}getExtendBtnList(){this.debug.log("EasyPro","getExtendBtnList()");let e=[];return this.player?e=this.player.getExtendBtnList():this.debug.warn("EasyPro","getExtendBtnList() player is null"),e}getFlvMetaData(){this.debug.log("EasyPro","getFlvMetaData()");let e=null;return this.player?e=this.player.getMetaData():this.debug.warn("EasyPro","getFlvMetaData() player is null"),e}updateAiFaceDetectInterval(e){this.debug.log("EasyPro","updateAiFaceDetectInterval()",e);const t=1e3*(e=Number(e));this._opt.aiFaceDetectInterval=t,this.player?this.player.updateOption({aiFaceDetectInterval:t}):this.debug.warn("EasyPro","updateAiFaceDetectInterval() player is null")}updateAiFaceDetectLevel(e){if(this.debug.log("EasyPro","updateAiFaceDetectLevel()",e),!Sr[e])return void this.debug.warn("EasyPro",`'updateAiFaceDetectLevel() level ${e} is invalid'`);const t=Sr[e];this._opt.aiFaceDetectWidth=t,this.player?(this.player.updateOption({aiFaceDetectWidth:t}),this.player.ai&&this.player.ai.updateFaceDetectorConfig({detectWidth:t})):this.debug.warn("EasyPro","updateAiFaceDetectLevel() player is null")}updateAiObjectDetectInterval(e){this.debug.log("EasyPro","updateAiObjectDetectInterval()",e);const t=1e3*(e=Number(e));this._opt.aiObjectDetectInterval=t,this.player?this.player.updateOption({aiObjectDetectInterval:t}):this.debug.warn("EasyPro","updateAiObjectDetectInterval() player is null")}updateAiObjectDetectLevel(e){if(this.debug.log("EasyPro","updateAiObjectDetectLevel()",e),!wr[e])return void this.debug.warn("EasyPro",`'updateAiObjectDetectLevel() level ${e} is invalid'`);const t=wr[e];this._opt.aiObjectDetectWidth=t,this.player?(this.player.updateOption({aiObjectDetectWidth:t}),this.player.ai&&this.player.ai.updateObjectDetectorConfig({detectWidth:t})):this.debug.warn("EasyPro","updateAiObjectDetectLevel() player is null")}setCryptoKeyUrl(e){this.debug.log("EasyPro","setCryptoKeyUrl()",e),e&&(this._opt.cryptoKeyUrl=e)}showErrorMessageTips(e){this.debug.log("EasyPro","showErrorMessageTips()",e),e&&(this.player?this.player.showTipsMessageByContent(e):this.debug.warn("EasyPro","showErrorMessageTips() player is null"))}hideErrorMessageTips(){this.debug.log("EasyPro","hideErrorMessageTips()"),this.player?this.player.hideTipsMessage():this.debug.warn("EasyPro","hideErrorMessageTips() player is null")}}return Qc.ERROR=nt,Qc.EVENTS=st,window.EasyPlayerPro=Qc,window.WebPlayerPro=Qc,Qc})); diff --git a/demo/2.6.14_vue.min.js b/vue-demo/2.6.14_vue.min.js similarity index 100% rename from demo/2.6.14_vue.min.js rename to vue-demo/2.6.14_vue.min.js diff --git a/demo/demo.html b/vue-demo/demo.html similarity index 100% rename from demo/demo.html rename to vue-demo/demo.html diff --git a/demo/js/decoder-pro-audio.js b/vue-demo/js/decoder-pro-audio.js similarity index 100% rename from demo/js/decoder-pro-audio.js rename to vue-demo/js/decoder-pro-audio.js diff --git a/vue-demo/js/decoder-pro-audio.wasm b/vue-demo/js/decoder-pro-audio.wasm new file mode 100644 index 0000000000000000000000000000000000000000..362b51ddbcc7ae8cfacbd4171fdb5fc15898b3d9 GIT binary patch literal 443508 zcmeFa3%DLtb^kvzd*;2IIhXh30wE`udB-RLL1T*{Tx`x9Lbz*Gq}snv9}uecoM=gm z5!)o^AR$D>ihxxS@#LU}Qd02>Enwo^Dk@rSwQ7xbs#a5f{w&_e|MOjY=6&Cj3s7tS z|L6BSzY}<8X3ySh@4eRAYp=ET+IxbFU;5%O2!im#@zX9!CiNFw6x#pcr ziv26cg(O{qi-MpmLW;fTT2np)vMJnjQQbe0w@fETGP#96gSeR&s#K2wufi?**&J@Z zDB7grF>lDCW^C@jB8w8X@VkZIMp;FfZ_`ELCNf()1!fX3Zj)WCF`L!4vW%*)O>PnZ zfDU*-Jd)jaa*L{=XPd|v0I1AT)~JT5m5u^j(lS|>z*5qfM40qGq3uQp#60#FByHt5y3WKnPKS3`#b8RCDyV$v@b=I_K0eYNKxb>K@WQ5R8$|rRIEeXuiRJk-yT8ot*V)_kLCV{g z22Fl91WWmSSunuwMtl2mgLAn-eue%1x&0OfVa(p19@NOc${?Q+1n&Ce^-1DtVN`RA z!YCSw>Q4ycx#3W~b_8X^p(u>&^)Phxs6TS`<4-vHXg4Q*Vzb}5IZvvQAq@MLMSal` zPmbKY#r?nc`yrX*=85y-h}5X|lv*uH!dg;y{mpECv%emPgU&5KDQMPR6h<+x7x&j! z)Wdo$s?p4#UZX9M0T%G`?_|KHabHwBWytlpQy00~X>MNqsq^}q&9JYQBz=8+$FJ#>Z9Dc*tv!a>wUGbR%?bu7}4YU(3o?lC()_}&FqY$lA$ApA{Wh_ zKPOr}zZQl4^UrKHqee3h&x*pJHh1CKVVKfnT2@~Wxmt}XRL!6}=iDTTsJvFMxq2K? zLtPz9&YKI?;+P(upOT>-HbRvN=g_ozb6^48Y$OR8;(8n>+=b0r-$=w?ng#)V0w(pu zj}80#qy7f}_^UlGniCy0xUd!tE@?K0JO5F>{0jy;|B!GG``6@coxdoE<7hB)L4OjZ zkAHj+B=uG+NgmTE{{mQm4uxSr|CN^5i!@D>@JOgl2iid{^6=-PAmyL>#b4ML!94+O z3n>#@Is1tlysXjvngc2*34u*%?wW&9Tn{e`?~3kt)D&^ zu8xB6%;3r>Jd1I4b{K@`1oye{+~6}VJTJH_3eOK#g-;9aa^cg1T`pV`{Iv_85!~v+ zX9hc6_^jZauKB|_42m$lGkRBYd-B)GJCa-6Ta%mJo0992Yoot%55>FVtCM@9d)RQxx|ZOM*gI=MC3nY=A|XY%&smSiTmIr(t>=H$lYEy=IrE8TD6 zHzYSC8jRN_uS@$+qOGWNWe~+#P-}yf?fjygU5+@bALA!aKtc zgzpdE7rr;#>aI*)nOu=fCHv!F#lMVy5&viWVEn)1pT$3q|5yAU@lWD?@sH!5#%~DU znB0`?O8z$aQT)UB2l2nf55(V(zZZWu{!aX@_?z+G_#5%R#$S)W7JoJVm-s93Kga(R ze<}WA{EzV$;?KwT$DfTq6Wi)y+b3buE zcK_~vy<%YD;5;J)wny05!`asTYT;lAd+;{M6~tNW_^vip+z zqWfUr_q)G!cewYt$#=PT zyZ5@u_vqd2?sd^^{NMM3hgz>s9v_C2j}3~}L>?~*vN&_gqy8+&!Ys;M>l;xP7p?In zL3&Z>CbM8^6zHdsyTWZ8Um67Mh`gk+6kwrygLoqe=>-suw7i?Is zgpI}2L(ZNzu3w+IqP}iJk!9h;#&jxH4N)-_KRq7x4QMUQf}xcAXuRzrOMGeJ)}0ZL z>cQV-G@(CCvxwB{o+LL)`@<80;FN%d72$ZB4sppN6&tYLojnkwDUe*TX*j!k4{mEst9MZr<`}p1)hLJX+xI7A=n! z`MYd+l=-_Q%cCX!Zt3!9slPjZd33zLTedt}=I>5i9-Zj#RxFQJ_`B1VN2k%V(FyC> z=tLf6$@%ILuj8i=gtJ;77O}@b3oR zI&t4w<0U>FU88%H<-J8?TV
)b8q+%2j=srBoM1?zK&9Tl12hP%eD zn3|euZD}Wf6BQv?m?bB<1^&|VmxjMkpvXK!WrDGo(E{TI=^rzO-DorlCf)e)MkGlE z$d$(;LL|Io@tN^x5e!k42Bzzen3`eR;*^PE3PO#(W6 zK;m1J*g7Ebtx9A{5)*Wa=h40Sz}Sh~cNY7H*3sejG|rDV(dpmRb&Wc`n@J)bv*^Zb zU@Um<)l-ty{hGw;7ejWdk3a zWTJ70<;Q_W7C+p}+QYp>(q0MxVt<^+l@^&%$tZ(j#@zh)+|8B&u15y6!;CrU zWM_lAxc*l>wifp%>7x`Oh#X0ttcfJy{{tmS9w2KOc!!e{Do&@T-t~%;K3havx?|(? zOFH*K@Pc(3U+;$L#)5S0wfB8D*fREw@7?`vx9RV*CIeKhH)K~sb>FEo;={O-w&D(E zN<$$MzJunA2TE#srk3sLGwHeJIXp#;l{ifw9*=n+7~p>}(1$GL|8qv#41_)eY7SJ8 zqpg8}%GRJW{HvPr zETJg9rfdzksL{V+4o7o|nm6HZd*^+hH_H<2M?hbK) z%`y6!OxpvQvc(r$dNR8zLkgo(k$Y zGK@Uaoq|Xq)Y%d($Qs>BsfVE%7hT+&b`keTmcwZmnG=JTQ$^BkR_kxA;jpi&U=Frs z93Zx({_=;8alzrm{c|uKnP{En`)vEpyotWEXFtZmz|OpHy)4kU^_5U_ShIM{#v)qB z0F9M-<@TNH+W~{p$`#UW>g)25aw?_4fxZw;3`Rld(p3viSard#+Rf4a?)@H=Rek?5xd^;Ms_Pk%pJX;~-k zlsw4YjSM(ugmoirlqVY5?&C4iyxM2utSsG^VeL)xAcu>!j>)2<=mvo_SW|aQ?JGMA zn=ubjpqfdTvGv|%wM%;Q0lJL<(ZodGtC^t8T+NIAF)f02)6noh9W?mP$5~Qo*n3yf zCoe|gi+S&|M3+OgxI~?(0>Ab&vF8O+sBF~%Y|x1+r% zJvR$9tP;G6Lh!mmez0OM^=9U9Ou+pX@F|BQYXa+aM`OqBEhZ@LzNdqovV5qSi5`ZG zJ!X_*pKpJbh)jCOB3fH~hdcXG$3Z~p+N|J56)&7Q;H)WzK1;N_p|r~20gH1yV71#y z92#(M!^Nl6-S*A(+(s`B$8EfNSZj*$ZG=nZ zSmA>4=;=dCNrd$l%eau*gI{HoOaaRY=uqe|53L+8S{sW7-q#IOH??=MJ;ze9VwM@Q z(2}QyEE%;dTwe^n)Y6NgjpK~J`nY_?zzR34mpI2vGJpM8a1!IVD>B-3ukcg?!a7H# zj6VjNq=pb}J*(Tu08$;%pk4+=P#guUaN`8Oi&u|qphI;AjQ6%m8pSp?R-@U(#nBtv zw4Mf$iyq*!9nb4`vB%i}d?Fxt4iTyqtIOPAyGXyW!wdGd$C zf%nWtOMn3rP^|UN2r)%73b1eav*8-mAnmf~gkY#mOL1MZ#*~F%GkBUNCSbQcY)yZ` z*yKs>GGHKaU&IB67E4CAZ#v0cUQCKT$HGnRq^A^igsS!}rXFU~%}i!i>bX3F*PY`A zS!nSfts}hha8;Ssp?E8D_zd{vKmc_lhh)Ol~FM0=1D%j7{s3G+NgmMQ@|gY=2wl~Y^Prn-N+Vrt8| z0~$PQI?xy!!IgPs%I@Lmf~@!H86!}L+-B-bWn0^Qnw#C4PIEngDuV~m`{V({JpeMt zgba{yRz+8BU89OJr)!yeFU@K9jcEc$t?w&SRR`^`WVNN!I=%2<0KK&xDMuC^2<{M| z%GOxTstl-AL(0drLjH4TWK!H8FqdZo_W!_|yf*R*1a57^u1!1hS}`=ydP>pCY7@9^ zl4IR-DspkZ##pz4bs>C}upCDh`tASzHF*P2jS^JDK%vw%CZwepw6kCi0FAamh#MQ) zW~6&)|In4Fbs-jJ9&gE8AeOtiBuMq=UASdaJ~WnX%ZF)l#6y}5U$Bc#4pcb?w&e3+ z`nkLt&iVli^e1oMn$M{+AWwKVFB{5Q7wiI52E6TC0SlBtC=+kZ`?usrfE2+P%;xag z2-euDrjaJ)Cg#eUZJY8VH$fb1i1Dm84tEA%ivbAVZ^;*c4gra?1vJvUHQ9ikFWe<> zc>fmJ<8d~e&FA%SHjm`;C5YU@S{nT#J0$cijjW}V;D(y1;{pQ|Wvy(^g}buB><9o2 zW-S3y*VJ~p7Ww)j`aF*eL)np5lalj_q4xw=uF(jo$&#o^hNhVAST^xkxQz-|Zr_S9 zj`R@PLqvvfTU&e^aTRYGl=evb<6a#V(VD&%w4+6^wZk9m9}xSR6h%7o~{92 z7A`hNbmdf5+cmaq+g3&C%osZGn>>z6)heUX z^Qc^D)?Da{Nv3jJY@I;;VA1t*DZ|PbQ3^@|0Z1wgVuOkFonaNsAfpuvoK($b@mWv} zN^Z!a^%TO8n4o)VlXQN5`txL>u=oU9CM6$5%c2w9kiOw zKVZ;wCSL%f4z!AUei0TyYq6AABz!iWmU_Ns-=FkH1Aejd{%bqm_vxm=9__5uH9muDJY=7XrIk!KJt7`^fZOghh^4@8{eo_EE{hvW&~RUR}a+i z_471G{$nIazZTy$1t)9A;mN@WTI-+2n)$sD({SJ@|Q{#kuOyj!2tH~J(nQF>|^fgRWr=W%3g zN_tAahL=Zcbn&>u$X^~^P=xKd&}FXhZWGpAs>tUWaqg?$27Q z2b|@glEG|VnRT9JHI{8*7C5mKQvm@9LWp&6UZwues(qnzK~?LZoI*tl1h!j7 zl$LKH%63_8WYv~gdSF@x!@}$a(yCNGn|^S?6niE;pdk}yBGPEaP?qL{qEm_SY>-Cg zuu2!fU;@&t9>6xK7{Cv#mI#(b6GHsNS$T@y9+MTVQ!tpIq{x#4Jz_*$!W(Xwlf`m# zt#=hoyPN<;vkp~e(^Dm8O9{y!ALG#vQyxZ8w0ZKS zA1Nr7Mqgyo$mSp^`ZA^lO$@E;6i&na7tG!pD1NX5qbVlg>f_)8un-g!Jv@g+qs*Pf zqP1eN(zk?WETMbt#C~gI+I;D@FWr``n_xruTSb7LFIMyZN36 z0}OP8G>=?cmb?;|(N2^O=JSpJT}b2U>9oxos-etInZf;8!1$v_3tCUsWs$#Rx)e*s zTRBztb3uhLV>NwQ7;aI&(Q(E9sIiXDN;}pC)tKi}VV82)(cSZe_oecz5}N>_CCM@e zdXf^Q7-3J8iGsOpD>_rU09-Rm7MV@K8hJtMUD3icJs!!XS(&E86#T5lFs6C(|Ao4( z(px8;k*=Zb5voqHCy=Kex)JlZYg;=S3%u5buM&8f+m*+tx@61T#4eOy(|5K>%LTO8 z;Ub!v{+UPU6wHA23uwxo2Z*?s+7rtYEe{g2snX${Vu~w2XXoJvCNxe|)AwXRO+~HW zw|C06KP&^wDDPUok1ET1>5Auz9YYY|4SjCpUbQCUS3sijE~K^K3a5fOUM22AXvxL$ ztu}oS^I{@>46Ucl9me;;Ct>R}kejDz3!Jy!fTq}bBL9ChOh49);w`Z_Xdh}>Uyr#D zm4hqgfd^c;CU0hyoo_GlT947Yxw=QQz96fuG5yS;zC(4dbIStWoHwc`@?DtqK0RYZ z=6^Hmg$kr9Kcx?{_hAi-x0B7^Tg?Tto({6|V{cRUf;Q80! zjI=+iU8tXDjO6_zID=ve_K$!)4ZQvP@x!p3LMmzXj$@^rg3zv)MdPPW)`$Sv|24J# z73k029nkbPeBZI|MS$aSQ5zp|)|_ZJWm;gcY8kBFtutoUH=yz{U`E>i@fv37SD;~f zplRh}NGE6yK%aw+$z_ea0`ZuW@&459TPvi-8ih3_CrT!-;{n#LXN{{YOuCt+FgJ{m zPUI-I0W&h=IvNX0i%d=mBu6oYV+HR9UB>1lfk>3+tKwz)0Tai%v&@{7*~r6+HWN!_ zDdQnv{UuS&vh?BGXIU-W&?1N_PN<8tG&T!2LlKnZ&3bd;E_`t%iuSt;p?x2A59rpK z7p{O=*dYKmPidn%!`dFrSn9EpwG+`Fcz7PO5R0DrfD zDgZX&QHrUHHLjlpB}x-LG;F1N?5S#y1$!#AY>9q6qL=qD6AA#0TiJGTwik_xHBYTEi(S~v4uG#TgD?oi_E@ss+ z8gD(1>(96%mWv0=>#xh}wa(I8-w$yNdoaa=;cQT8y2V1oy(-|4;{h|VCZjR4(M-4$ zi(i&UFO`}T?HWVOy)ci8&l`~)1T492PjFRn^AuxfLgZmeC;Wmy*md%)*$~C+lJ=0m zc^%@ll_O$nWFr^+T^rGLS3og13~2&VkQ-VN&}(|)Yj&M7>oIw@qFkw>`SIU zQWI=>D100c`uSnx@iNHk*X6bASNO!3@fk4YmFYUA4Oz*Uk^=xj3?$d*3As^986`?1 zTTC`?=|<-KYxz3twTEK0n)mR!+*xTlrAmBhH4fxp)T~#l=atQDRLu;@n7bSF80U2` zNZ`L(#M-$!5Z^!#Xy;&Aem*V>r4y5X15M&S&YL$}pZ8str`Az0cpU2~DNS!+ZK-hGUS<)hv$()TWl&q z<7HN(t$!>RcL+Ve1fmyJ?;agt7g+D)W{5IqX?)v5%K^I9;oCvaw~t860lFp*x2}nn ziw@JZMdVn71i|eAo3WHeODN<17cIbsNR4mieHS4ge+#^Y{Vo$8CG@F zXcpah3)5Y|xG1JRXA+~0JZJ}E5JU=c2C1t5kuw?)(Tm$~Q29PwEg3BJi!B%u8w@sG z>464ypt>X^Q+Yz|4Qv_QIn#RP2WG!Ntag1eGXdK5-$yuOk-%)aV%1PG4PD-cv`Dvs zKS@FSL@dR+%wO0lrKe?f2~P4)xSlkH!4<`?ufshj)-=NoRZ?r8updnZ0WKPa7IM3u zsA;C)?FteiFis|VR)8KVW$Ao4RRW`%kn|#4E&Y{QwaVL*bHQ*BM56#E=kW^TLs#N< zkuSScW&Q1v?(MQJL=XQ=HHX-zflwE6DtwPSigRZG7f30L(BMFoOE-r}X~!nAy4r((J{qEpg;WjiD6n+pQ`#p{R4YHQ#?^87{D}$A|1Dd?jk*Vgf%uoi~@@? z!WadG@bgQx7|;5Lq%{0(u}68po9&815{od45itT28)TY<749Q-j6mL^x9}rb?2IK! zgE+wPW5F~$;$JXZ*@xF?V?(V9V#(|0g9H|OqtOCBQZd+IVm(lT4cg@amRW9KREk6T zHx?}t)rrL75GbOo5j~T;Ly-vU!C$CnJQx;&(DNL2-rGV4krHK}fz$1?k#%;T3AxG> zrvH*HMM|t3IbeVeX3Mal+Bj1go_>(2MJIHH@5bLa`+aO$y!8l%;>grTJd5pAFb85s<6#{Nkb%M~u6>cM;`prTLKx<$JG zkDyo5(1O3jM2szqxL|dcCbvU38o_=Fr3obcxSPkFhMtC!SQg}IXz;&$7hWsMxPeY) zU6q3r!(RipKi5__-8GCzcL;#S~Bz@OLXR0(Xm}F>OQ` zll9yz)UZ$+0qP00VN5VGyP-A}%Nz4f9S~{*>u<17o1hA{VH|8& zpR)ehOAzVa$S|?9E;K?RGj%O9@M|G6QAMPR9!x+AgbNXGiK6}}2!VisbR$_bBn%9a zMTFESibmK%9`iC8p$;a14bU$%e-JoTL^d!`wzInWLbn38K|zFzk*DNWqTmnw~)@*X>goje&conp0#?WdW7bV5K(@w$OnVxiMd6?_vf+ku1p z;xg<$3r8{zWgaE0hDywjw_!p2UzY+s1TMzSL$bT37XA>hHVEBMbsi| zx^J^q6w$Ed&>>z;PP3YPVcJJu5r+KCbQ5Y|G_j8U_*O9laH*-9sC8*EX;PjRN#C|) zvL_R*OBZU>l*YuQ*14RxAf^zPNXz4v9(kl2=D|-9Yg(1kQuaU0!q%njNa$>9K+(?7 zHmX`?bbWIUMx-c5)j}JJH0n zKhycZht~pa?1#lQQUty3!c3y+Ez>yyeyAqJQuMOoa?pZ1jkZM$L+(a$v7V~2kZ2?+ zvo4Prb7*JiM&kviF~r5s)UrJuY2=X$oRPtDwAM3F0BnglbMOjX7dxtu!FAN^%9=4? ze9dUHCOl?^U_%>lOj~^;=!wZDc%JWo~s3nq<%fw;6B zp9+iX^hX*_m*`G;P_Q+&tsEyBV2E`_H#2MC_cN9vSIptN51tRkIZ>-{W~p=YJ}faK ztz0xgSjjFS*lD7Th0znTPE7q_Le`~`7^*a;%9*1lB;5)gG9+x zD10rLWe{*(yBX=GCq5mT%T$TsO3#bzhQJkPlW1j#RCW&LNV#zUwt>$&>aay!QD#BA z0sJyP-R58t8w|DCS(QgBpLQxJ>X#>6JJplP5z`JGN`S(mdb8Txi-0rTKyz(#AYw%bzcxbnDf?q8=Kf{lH#u125|_|!37T+c^(y^gvf!B=h1&*iiA^l68Yk1!W2sAmYrxEpp(O}<;|g4u(}QIuzA%Cqyzvy(o| z1LZSZ*%a@S10gXC`G zk>oBCAuf*5;VCA`x!2vuc=04Ny=if494|sxSl~-oOe3)^NC$>9p=J*aODClvXZa!L zq|VGkt_AQOIKo&_@Prwz$Y})~GAjJ}IpD}ie+Y%rxa3hiI;pN+jvL2QqU2JfW3@km zsKZKB&~%|&T-sf++HU zc0Y{OM(^aPfJ@2NrR z4wBp2s#4l^CbvNi3x1{CrcQH*XbA9PUiE@jxnf9y5j8>P86p=VLnah^@t-K@XKVA# zRmuSFNU1-F9Lp`GNA!Zp%kiRV*w3`>1ILSIV)pbHW0m7YbyAr;VboZT7iJud7cTNc z*?6%@N7Jy47wRg)AYHlcRMA zGd}hsB@}bA+#GO0<2aZ(ZJQ+{Rz!+R#R5N{F{e5RYc`EFn_^AdVCnOkN`ZMQ*7SY^ zq2kbXL( zO22X)%KM%L_Yyd!9YpZ64AozK-+WKdFChG=W5JnQAYLiklByv@qxjO2G zU=^V>o$f!4W)A8~k|2n!@%{|Y&Tr&XdCTFh9Q)}wS2bWZ4BDZJE@-VjLo)|Fc?O#Z zdsCgNvNxq~ueG`e&h)`@R*Vr>W)P65%AP4Z{C{BfXjXQEOw{shkSs3sfDBZ7c7_7# z2+}Kp^vNBf+G1E1LLI^m-$^mWq`?3Etz-Qfknw>_AK!`MaPS4{KCDy#S4CU@D)DNI zHJ=a3M=E+95#Wf0a+jGZaBHzm<@7P*$3o|5e3qON^a;)>0S5{cTx<<3V{Z^)Byi~1 z4J^{2&ptaAqb8SM6MV>NQt?=Hq`bvueZlKlQC&1jp^3o{_*@^`2k7 zh;;Na1w%1bMEJ!3~3 zJZ!k5izyN$PhPB>tx+DoI1BYso^VpGq0K(@eJLg{0XMDo!Yo0qX84EUW7H;e&<%NQ zZNbLbi*T87j>(zQTc#)}mkzOLnlNEqW*V?$wKxmY;eLu>yev^&z#$5wj$=l7u8r~r zK53WeVY?UwMw2*;Mt!sVp@1?+#khE{a04*defBI~OFJbbSZcP=pH4A8K2oj*4kAGXMCDT4TQZ2yNGdCyvenW&3)t)qMhCnhlE;^K3DNZ3J(&d zEWW2Y1qHO;nd6e5zQy!j*wq%`HDDuF-)Y*NC1>niIX&}%)(f=CPM3(Cf--6P3xxBQ zYC_OzFo8_>=02)eQ-U^zMxEHW%~kx}Pxc4e1R0H;whbCaWAXMX&(vv~Y;vfcIT`1V z$mx7e*Uf41ah6q^Gi^q}^*RQIcfL@8eUYZ67jlt1yLEvUe4nfsIopW_-^`Apy5>RY z%zi7HR@EdMps~hp)e;5jAp^8?%tYI+g;6@0X!q^4xc69!79+$2O~A0wJ+wI!O6}8j zT}!lily_1M2_^eId{6R?VFQ3tC+5*GIng^c#3n+u$Tbv=MxzV?;-2J%MGrLLS(5<7 z%Y_Wh2?}DW2BLq|Rzhuks#`12^ANx6l2j7Qs&W{!xt}FBMd3ei15D9cTio%RnJ@i? z(KQ=5)=l+x90^H3?{D~B#@cU6$EF(USfY@K6%oWN_5^ZH+EUAXrv4Uc>3xmy)+a(% z+$1=xtGEoS)Mhso7hILv@TrZ$ovVXg&S(=LWdWZo$(f21_-&Fl1F)A>v&1=IhuvOh z^MrUmi*`XmP^QZYWmz84C;&{fai2GeXrkRu;LzZ@cAv1z8^6QOhpE=a_OKKp6FDhX zjJM84F=J(uRYOXP>9|9&k>zKbZ!zk|!ZF50H+#io0SDD3jCVU{D3KCw z*m)Wfw5M~ev8?FHUe=@{7z`<$00ZJlaim7b=mgISzC$(Dd`^_GW@nf{vvYlHiuiq4 zMZ<6f4~#2lL=jx-hBvA8Xu}HTFCpjk69TjdyzLox2h|eKs)agLOQWZfhSi}OIJDYCU@_-MB*BYsqMwl%i@ zb*kr?>Uhy0iTSVwaT&k>D&Mx}6b(dyhniz#09VrE{;$W-B;a5bLoPh53VHDb|ALBf zP%zs)DOiBqV@5t9Sa?eCDYz<&P7OcFb!`9Vd_SSk*wh|I`<{@BL}OE0n5&EC*i?p` ztj0@TZ=GG>RIPd0Sxx}9v~5F4!8gpw%_jwH%{NBTl1L+K(l*hNp>k^2$Ov<7^-yrC zWvC57sQM{Z0lt7EDAGL=OqtEH5{l}zAQL_>$SN2MG#Q@Z z-Z4rc1PIc;Pr?o&MDot|~xU{tLjhioS$o*w`xAb<3T<)`IRA0s|8Ml|Er^?dX z!=B<(VNZG0Zn?|qtppGbtpC+ZYJyo(h)tnG8 z$sqMKLBN`!zw6U!@g<7~T0!LKjm9|Y+MISvRV08#v0|8Ma~E$Vnm8gxHXxTU=U4(X zKHUchE-6yF8*E3#o!|cP|Ne`1BO2BI>TAMcC1WSk7^tB;N7A5+AMtSlTuY2*3wE>3 za?N7z``c*h*vvt(CgYrV$1%#q-j5?P>&4Ih{YY6O3U@)blZU1*zv+3)qqC4I6Ch*n z4vxE+!ZRhz?D=WXeb`Ic0v)H+*{A=Y_2*=no}IdHkEOov=fqq`#awS-_-_Xk^W}Ms z3XF_?E=PJRg|7+7Mmb6qM#Vxc69M$cgeXVFRp?d3#TMJRF5!AL*Np3SuJ|2`S8Tt70+iQ1?}k4vQmuGn1xaK#Btf6t{ka=)%YU~GHLo6 zNn>tInne7J5pBp8QnUg~FdA<59t`BI@~8ub>x0zEiWSy~Q6wm)xg}j2BuM!h)fcyt zB*Qw3X{)TC7NW@-XI489QV6NB7Nwt6czy9a8 z_exEHMG%WlKDyUJO7mnWAOP=*oHeWgpAal9rtCCE@+05mSRe18wg|IGXBNu4Zw|dU zeWnIO^s=IVEm&p!ZThYc2jiTG0X>ON5R>2WGr#`_wlBh$O{@heDCAF9e*~|vsN-+~ zMhsq-(1G;6(03uD3$hYf8Pi2RH&asVLh~d}B^V2Rc7-STezL$jeR3xz#<@bKj4_S; z#^EzDB=bhj8@I7oq!nW=A6YXt_~i>JEz(S_a73{PkmhcrD%-2uEltUcXlWg07+U?a zOVTE4Oy>n+@u{eF4E;5C7N>CC?80Po#!i<7w2=(QMN3y8@3^+w=9tp$qU%l%f?(wh z+PT8xyeey^rzM@2TG=82Tx8L8x+C`Ky3_yWw%h)IlJ?3DDpvoG6Ror4y3T8PJQ1H1 z>?Gj}BP$*1CiVLoj@M2P1Gr3}PVBUR1}R~MeopJ8F7c_OD-iVde$@&@vE7}u0^w|T z=dD0o+ua(KzMxYYU`lw7exBD!J9BRirZ_dlZ6};wwt1>I`EG5c$%H?u@+2Ai!s0^!= zVXaT1Wl9=V(xpD>BA;}clAh<2=&N$AP|^iH38Wm$DYaq=-eh_sba7e6#hv84aBQ^n zq-fOVS)x2b6PFT)i#m8;(4hq(Ei0ICEn7(_qF+3Lxh(L&`js@#-*b+Fc5P7tZs}o6 zHH>v{?JUzfo`TNnIDL-7eBpn_5QCFr6Yu~s1Ys|wF-U!cTSg$Ck{FM~E7|!4dQc`k zQ>>M1LPGrH2swVfDIp=56^&+5(Vi$?cs5FuV`J^E?b?yeeUTASx512F?ZjttEm)?{ z5+-&kvpxJQ2eSN#Ohk6Ao5(ohft!slWgxQ#+}WU*a9ol#o9vpRBX(J4HOsr9C$F`y zbEp!z4)ql&8BPIHtWCU{1G}@W zTBoaF4((=aPoQ-Z{0iII1MJT)+sS0HR1+L>c|)=H_0}Lwak-Qk`g9JLxVZ0221#;N zDsb7F*6CG4ut;^ZV$B*97gzX-$xf84kca1yYx)#To2*NDj?@6N^MB|qbDb1JV^$m)@N?gq9XwT}>eg=IExGHzO&OlcI?G?{5vJuq=A6>%%WTIg5coEGhV^K!_ zT2^c3pfL+tA6q{?+|B@!m8P?sV9Fu!Kxt=D*Zfjj@#uxKi~CO=*J)z-Rr(3`4v0i$ z(0S4x39k&3^Itd@5Mb^34l)^HvuutbRt=m3TJ4alAe$@v^Z}IS4a+KM_lvU8DE+bL ze3%Tw#lXa%ix694;DG+{KfNAC@4=@G$S^ai41>9TmXK;mMhhh<#58KOloC2-*65=H zkrrD&Gb~AK1PwTsQ6yy}vHu=k9_S!A0>;F%eEE(|Uj&s9fQ2CBl|FhmK=|5*;>eA~ zuO0eQ@We2{5d)A`+f<_`h7sJvF{t>Jvbm6w{1&Q^rRR?Pm+Qe8%EmWlt#S3bs*F0> z!S7d;1MfyJtIF6dh><(Hs=B&_$FtKV?#nLms?#OBy!E zX$qh?YCTrA`0YC*CTnIJ&G3Yu-F9pFyaol9a-}o`4Ik2-`=&ZsZQKqjU^x&>oiO zqdz;!WHiR3fy0be^rUK_Vgp0G1}{-J(H)j^J-1wWKq%dGH)y;u}d0PojLpJs6?6-H1_SRDw9&Fjw4A{vuZ ztTd@7eVV%oJ2KZWE38V-r6Q3uA6UVeS$#b#2dJayLNyA{H(kdR9rh#9K+S-8XtQZH zjOMDtKnYq*u~fYD2t7|RKUVLgJ91FpV{ur|YcHmFODYg~r1WrFC2eWJFKzksxZwzn zlEE?!DLH?TbMOn;XC9}%VOSpJ$oxPu`J!S#11uo1P49f{bhcPA(j=D+ruyo{00D7W3z=DJbF;a`-5giwV`*y(`&b&@=j9|J zK^a>(oucFo&(NUBa5$yHo(% zZz#UF$18)JF-S$lwR@cDh6^m3nIqJ3&U2!Y@aq4OE!;Sm1R)>rMrXBtX`x|=?x@ot zR_T!XS0iCW#RJwDu$S%A##nObJxPz=!+oju@Jf15Y^vN5sB(2wxkR%p>vNLtn4HpK zN6=z9+Ff!5FHts#eE+Y4XD~^vYI+S$z_BHKRXP$BvUFf;q-H5d&6i{gSQ+*1LY~cS z6=goPf1PwAl9byg;dASxqSuzGaZjp*9DYiz-|*E~-1ag8J()`Lz%;A_P>kOXbHh-q z#hrsuToa0GJt*eBL@}>AC`PPTNN#u}b2$`}3A&k$Y&7?IG;@KXLUU8?;_IG9 zPN7_00?6690r$ylq}x%y`O&lp%^CAbflrD{xP0A9KWGH;`90#1OZu`N=SYO>2*m5n zSOM-3smwcYh`d^V73DjmEAtLo-d?CO{vas91tMtls0hkxIOC=qGm;4h6ZHSYF;nXu zGehQLuf|NRJ3vnB4jY(MK}ZOp-wJc?zk@lX(xV#+zpcDMP|cD!2Mq<2I3@eT^_`Ky zoK4XUMV9qVAg|!%4e~f4tt6%TdZkp&n6!gxKT=fhV`O9Y3=y9Z&iB|?1;yeGHh!3z z9yJ*-=h_Rw`a%hN)_)Q79EBXxG{5RRf{g0OWqBE)ZP(o8zLZJ4I+RQ@F~QoOWKy#d z{2C^u=>Km>rKW_x7yXfBQZwVi81$l_W$F$gB9tgOz8Wm)Fs(L(9NWnu>=Q)3F^2@5 z+<3f1Cxma-+`zdY>hQ+)(cq~Go>=)uM`jY8M1C|SI{@5+qCTOhuLnikmnh;@7e$Mp z=BBgd6(z%Z=E6nz)sUf_m$;Gp{rmrd36X71ct`TS5!NU<^p^m;kz(JQ>ss3%&mU7{ z6UEEVhG-~z#bdL_5a79iqM7dcHsCaH6NaB+-?c|b8-Oc32ifY=V8wf7$1@H>>Egha zFB|Y8-=?u)?-hVq5Kw^6ObJYCN^b)Dh*l&ZL405r0i;E@--%)Z76A6zsAY+GjM_Rrh zl^c(*$fI@*m@--FjVSWw=AyQYRtm6m(GN+sY1O=AL%tFHWk-af&swwes)KUzX zU51uP+5GWZ`3U|WOf)={Y}c50Py2D%5=(p@T(=~9{2Nebmb~Wm=!uWJCad24@yK=U z$Kf)~9-lpqb44Hb8fCgJTXGMRr^21t0>cu8d~jNmE`IvnkA5MtWr{?vZC{Kd)Zm-lzc4%8bnEZw)Gux^ z-9B#HEX<(cQ#3sc#-SH&^JS)3C}slJ(i64F4GlPmvmJPgq{Y%1&_C%9Gw^Qu;fC=* zE08L8;EB*gTkAyV?d@<3VIxP8KVDgp8k_{ZEelx~%43e74N({4?LrocyMhve%ua;< zY8Y{-@|Gg>OXWJ(*dKx|;wTtB@gaId4e(ia1vJ{9o;cSSASy9Ce7y_>EKBr0SqaK) zWrC<})j7g`1)CFu`G^TmlT1{+zd-GNmVR`0vQn@t^isGG~L zBRz|qC&jhX#BT(ctSqRF7n|5}g`+(hMMS7fc)ofOti;K&LFQf1n$J)p3S$~fne&+n zyZbvQ(}h;5_4&{bLfM6OWH#Y2`}Gm7Q0pWtSA?vS0PddLb}ss@UjOp8xBs%U)obcL zzt!vR*10y!Y0&3){`-}&?OeYbL`226-}u!jdv<=dipyOHzgRilI`0}vA#FNoyGbLd z^ZnW8p6;Fn%0F!+i>Ghw*7c=tZ@=1LN5wb3y8EhbwVk@Y(Ek0&O<$Qa>fu^dWzwFq z`c7R(jaJ7Q?tvo%PL~hvp6=G=$G5PX1=m|=z2PSWfj#2g->0C7o~>&QD@>ill{CtJ z*?p%6{sl;oh11e9SCHNs3g;L+4TWw8s{;GmJ2}%fA`Qud0kP^6tR`qA9FXBRNAmVJ zN1ioOJT#;%45zTT;&O{oE3;nYJgmDe6SIWHKX5vqkFGf&!@d{scHfK687ZzCB8v?> zY98M;cH*|(GwDa!{@xtGtt8DV#c>6k0PR^cF5d*LlZgn8!E`5KW+*)% z&t(VZxr{u;)GwRbK^V*w+wCq7rxoM8125H^EMW#TTwC6;^NL{@&g3dU`dvP~xWlf9 zU{UGTGI6>}j6lv#xfS*qa`yewzCE0U?7M2?nnvlglXKt7O}o{T8Tq=VbJs!QB{3hus^Ae44B~oG z*9vApR0SI;+$lJ%ijl%@$8=9>7VMxSRi@p_)FtV~BW#qfKK>2l6tdSl9Z1tJM^ST2 zjn(74KDP4eoU^;H(iimlG6z3dLd_BqzJH!KY{{8e@kx+`g3ifvS~tc6l+~ZbPwiRj z^FfYeFF@taj62RUZR6j{>h?6pp&j77nWN1$S(0<)`mpra!P`-{TDP~6MA_Wiamx~e zIZ0E7ZqM~Sum)nC+L~Lkbd#Jmf2gp&A<{TNc5^l`sgtAzEemI`Z_b*NruQWm(h%v+ z$tlb`ICa;cr{(EAi1fM-G9Sl8+sVVQ4Y1C7?-78m#M zsmK1N)I4h{ExaYKRrTz?gn3X;`=V{tQJdC8dBm+%a5U}s5Mj;DsuAp-zO)?*q1YIFgK19WYDu%+Y{t!I5Y}DO zMYwY!T0pqOEjQ=guYX(B?!c6>%P;U4}l`vG+_BUATEU%)`cqN zBh!!EksiV!BDR#38<$o!RQQj`#!WztZTt2Cw@A3_1#i`+fLvP3qGZWH18?pxlY=Lc0ZEe$0zW(cXtW{+e zE@QEz3`q*j3YkrtI&8i90HDaxbM{=-)T^)TN`lIiW zBfP8*yXUh5ip`N4rMP4J>JCAuNhS8MNjadNsiGJ-*DeIdMD|rvwji69%n0B1K6V#$ zY-&4!*->KZEAja80U>Y7r|`06Ym2@52A(Ulg|i(&SLLfK5DR47MO{+4uv=|oI#@MS z-*uu{tjnXjPRs(^N~pCWogS1G@48(Z8zkhU7iH20U3w+!31ACs2Zn>z1p;O9-OOdI z#G#}M^jO~%R!-lR%{z-_>xm>IMYhk|!V8hINt>2n8v~bME&sVgUs9XG`d)&1-?w(6 zEJz%}xhN5iaysS)TBiSYpiMyV>mhA|(}Q425!~>-83wG<-rYJ+W1`0{h>GvXBwz`t zquWbZa@ZdViiO@$gqwh5?Nh zJYEEMcM`D#R0D{;-gnR&`w`+_|9Ej28{j+{I8yY{`UO+B7(N1Kx96r%r=$Hpn+g;r zctd0mQ^nOWde#!+L9^{SB;^MSM|sBk7r>O!afC$s{$Ao`p>ECGhf zMLnl+)Fj5S=+h}74joCxFd4`yXARqYZ0N9olBd9qb3~_MT8U|D=~!}dX=r<6-&!qK zE#o7wrt_@soM{m(FoqJeKmB`Rn#Sv1dL*kBk9hQqGkhoWaZI3G! zMPJOK{j=0(T#XXQB)u$8+FG>d>p8w3D+Z%5h|+?v1a(eqjodXK8_*YJNwxof&&ug? zLf*5oGvNopCG2cPMnM~q85+lT;-PeJep{QCv;zmShycW)BrfKp2Ud?IE1497JEtov zdvqpi+>$q2&%ANQj`3$nS9zMPGs*cS%so?pwuDpm^YlnEv`bHfq4p&=#aWE|0PO&XB`J`lKIQv2sD6$IdOGKYueC7WJrbb*ig z&EW!qBAb~Stn6#4&#ci(W@KGeIBQ$>%iBN#if`sim!( zqlGlha-JcgLj&qE1*KXsf8;o#$X3j=ES%Vwem8OPCg~j-0{rWEEP9SHN{V0J|JqmD zfdFh%()4M6!IhPs$*~j{a$2x=Ka}HQ-)^zfs-K+v%ZJ9ExNQ{c2!vHi>?H05aQ2a} zefc5$WSZXJ{jm@4x6@n!B4;6M)~hz2_KK(cRz-AGpeYG>w zX%434{RnpO>m5V#ZtwXHT|jiorX@$GzL^|@Q6s(lx9WtCG+%P(Z(jYunN=r0^LyJq z^||~1V0vcNonO7}=A%A4kF#i2UG?mTj+zeth?7ND{j4?2-wvhv=HnI0of?cK$v?zF)A~fzJl}z^>9ez54|@f)V#k~ zEQxleRMKTQ<%mS$lk+%4qC#FLeJI4DbokiFK=HF12aE6AIGEK&WSb8cU*!3HooD-w zFCq%RjE?4upAMfpR$5O8js{;Cz^qck95Gp_?17)p$;=yDf_VS%ooKSf17CW&VQ1)RYk0BaENWqhs3`D&gL>VXr=uQoS*$e47Jp0?q^sb}op9bkJgM-3nn zg(<=;6p~gf#`g)?u(#SlCP_h}k2r1>pL-?oHD(TUcB2-dW?4fvi=5Pw4;ccG+X@OC zSW5-qpHoU(#|Q~RU+Nu(Ls7NnvsDsp?pZO zJ_y{TqveV*h+%3iDgG!c_DJW1Ccp0IYqvUJGWo@8{*!!VRSXn!xy`ETQHF;=FU34{ ztBTNPYCRN&Sbib5r0^V%^SNEZ+T5ub8S+?|q9<$*Wi3^=>A z)emoa!mGdc-9P#uE@@t_+WgSF|M1&Ke}ZGdzI5@2kiR-#Y}Gp-lmNbhA$XBz z9VyR_-*`ucfUBmDYv+HO=KYd}zWf;YFv?F@g26vO9C>~2)X0~tCR3IhnF!z`6-fuoh~Eoc?j19x@i?3MNn=JAjFk43c`6WK7s+@wZbQiJs#f?SFPFGEf$g1aL)h;Zng65h|0 zFfe;c$ddm*sG7~kU?mjh|I+q%K-*YC5$6Q=Ap|COP4e0Zkr2y_AZ5pz1B z2ldX5*5W|?PQ{NLtY;OM>Rl;DEu@jtza+5piRk4h7AH6;|z*$C1Fa}Yt`uM`LLfc;(Dr5O?Rr5c8Gw{u)M%b&{-xI!U?@!J~ z3tDyR>t6K!rLTOubfagl+CKQ~5B-BuH~-lW-JE~=qNRG(4GS@l4rKpUz4E#zzWZZ$ zy%$i=4PQI5wuYNwX4NNO{oI?rdt5Ne?YSqsdeJebxINsWsqu$}c}seG#4!M9PRs02 z5>${;nJgT*3RmiC0UCBFEb5c4`jjL&I2<-n!d4O@3bDS7mLdz0S@LPPLxhZKV@ZZV zDz!@m@oh(TFlK2i87w%$!v1+crPB`^1lDGWKYrC&L>f4B#e48ME#+#*tS;f^wvVxn zmUTQ}4u&Y5V6J#CnK_}PI%<_Tr(-a{dh%*L#vEqo;^alO@p&1%#alTsDd^_)8UI}V zMB2xfZxN*YkAqYzV0`95U1vSt4qIh)1;xJgSPkW(@|VyRSL>HSk{L@=VUUYJ?nGF|4s#!Q_$EhF!o2;fs4Z^H(Y--4@k#a7~T! zsp@9m3SK{oH&ALDsII8r=)A}0O&NGubJ&(s3jpejcb)gH&jZ#(dcD(0e0Z0MXB1h0 z8UlpRs+N`EMeJ0DCQh`Yp{6F()XcNruBjCUFKnGer?`c2)@4qscs%s$+-h$S)r&s- z*)rC+6Mysicy*7^5_g2tJCDD-2~J6x3)XM&hVyZtUTrUD@jFRvXo0g_>kuSNva z+KK_TMZY3dK}{qs728H91VM4C`UocBOkr2Min;|Mk83>{4W&3jWL2T0_4d&3?BES_ zelo{68@hm^Xk~$sUzs7qh*8_UBbY9H-9_;h)=yY8^nZReh-lDf2@7L^ouggs-#y8P zC5l9Aw++5T&&3r}d%Wkr$6LF3EV4CHlLb?wc;R7r3m6;Y!tE8EdS*R5dt|d`9W+~* zJaaE?T^nvTC>&1@mFel=6Q=VM7Yg0QYR{BrB!xHkT;tAjomheh| zh1<5~(1Ggd=LI91+X55)(Jo-}N(u~&Wyf{*2GKCkV}&gF_|<)(1?T$tqq8Wm6#6qN zmT;MVBb)6rErT&+zXKaaqyC=~>?~M+33job!i*-thL3zWEDQ|>{oa(jNh=7^aOMhGp}Ko2?*n5I8d8e9)%1N z{&rqldR2Els3t*CEaIFKzSE%9OOq{-MlFDP>Xnx;Tv&gaCpa3ZuxK$2kysV#w{ud= zpHtJJVY$Q?q*OK-N+9r6ONg@bR40O%c&htD!8ndau~(K0_T`;2a?|DTmUt> z9FM2v&&BRcb5jvhNqGW4xme2Fd#zj>65`7UE!U$CgGR(^4YSy{H#P?jUFGQDswHZ_ zB<3>3Q(GOxe-OFPG)YsbvX%R$=|hzy&r7h&3_?ZV%!C$d6(d%rD^0~?3ZsPAu#6t=_Kv?^@tM#2HDhAosMV=qVN zqaW%=^=&5_D+dt8HUgsO3vs;QgY+5aB}ewfr|Pp$eEFpOV6}uHNH(ROJ}AF^5Y9ll z>U)1@v-;+ju5yhjgbP)z4BEb@!Cy8`2IaE8jp=ecaRt4oCEM!fnsOC`c z!j(yz$w$ptgzE#++1HZolXIE;RlXGVxF&VfwTg4hlo6^)}su-aQaLN11GTYwFM_V z<5>L7&L0g#y@Fd2h+4;l0^%HcR)X>0+S2#Pz@D9r<3HXgEZE1Jst-De_pF*O@Gb`o zxbDYgyC0lI7dZH%ga&xlM+pxBn98b#>uX^Z-&I^@8*dK9Wpvp13<4d7%QU_BqC$d) zGM??QwK{BPbvy#wb-zhSJQ8BA`X(VyUAA+uod^co*#`@i)z}VNi~0&>>SepY6X#&I zvxAF_K^~6n=wJ`q9sEr~V>>!`NVX&0*p3Q>q>AmNCR7~7ou>`MtfcNNHiXwC=nrJX zPBBSB|Fy!f`&}!Yh^p^b*$6H|vgo^376oMK88ejaWHZGLwApv9Y^IPI@p=t4OYVLK&VQ^>>Gtt%R`1765kp9B zST9`yb5X%5XmKamG+fCG|8<#4Hc%H6bM<{YNe!Xd`c?O800sq8K|HBQpre?$^*y-Q ze-Dm8a`4lR5M_~A$-Y|18L|rcv#%DCdxJC|`lzoK@`*Fe3SRfM3J^mgtK>_CGf)Sz zyyLz^q|-aXup|j}UY`jL=qJIEzCbplCT@ivMF>b{I|-`5jq()g$@BqGLky*?0+wqm z^iawKHRvErYS0t!?8`Y+Zwi?l$_8R0y&_~TwAqNhlq=Tjk$D3ly*E*X?#?mtHjx@! zZAAp1wvD?`9D|};n7SnSeItGAVhL}U*%z`___kI};TwxGV$=k)8H3`f+K!};0#$v^ z=m*PsTHa-(Pk+`kZecLS%?2t6FVGH7Q#_bIdew z>7>P@YX6Gs>|a3!ayB$tx)fsCQMyBd;9_)^0L80J*mwF2X3<+ikfNGdT=IvdndTA| z57jZdAV8&IUd`7;Dm!Q2%B{Nrl%`ikj&Kx0Q`Ce6y}k2YEk+F+(5jDRu>esEqzC{{G+gem{Petwid&&)TZ3v!8WW?50)_M7=j<{BG0Z zcp8k~M1A8e7<0hANO<`G#$d4E*kGZa76;fy2GfXZf?Bc5XQZeS--0)4SeVuDNJWd8 zZbNCDq5;*#H-r?A`H9!2I8N6_IOJm{7;3YH4zg`KaDj@o!+aaptZuJo(o*C6sAQu; zkii(^DzPco$;FsxHH2$n=%m$PvAD%8Uts4%}rM}UD{C|6oEmC6fn!ZaGJnCis& zeWid-*|Gsb)DbEE7f>nxC0~ge9}RK8j@N~kf&tAqnUMhaE{lePf?+Mig`eIeetP|j zSDy8BYwpnY7KRniz+Ba`LG>~mXNrNsPN%x;W0li!){^p?u8iEp*$#8ZOS|sz4tbbh z@Wo42%2K2Y0IQ^f>};Ap2KF&h?gv?_NW}u-VrX$eZ3mVMXU6SlSJGoXg&T*P*Imxx z=wOf>AuL77S=7Q7CqSY`%ZAioImOi2$-3+^)`o@Qgbd*Y%#RW-6z)9QW8Ro54q0%F zLIuBE3d`v2%uDb27(p`*w?v^6YmR=hQ~1+&3LH-;qf^37;Q`3vNSChayn05oBF0dS zvN%{2geiYuuk4}5@AQ`XA{89vsfbf$V`?r6Kv$khEA3R)Y#Z+*uz z_bh$J@qyGh&wliyPyo6wyxgE9F_hH_m1wj^C>!FX!s+bQMF=2bHsywTX$gJYGLQXm24_J7#U zKl2!su{g~^QwTqSF9>Hf$6Qi9Hchwho3#WS>p$eNdYJi-yHkr84ph=$zFme-($ zPiuSMUG-{+%j~4{A`Mj~`FoT8e0uk*0fBrh(2(&|=Qdi3I!ywrsNfW{TAITGNdb`) zxUHEjAuCGVKJ9|crT}#5?a~+xRlZ{7y*1T;L*rI>3I&y{Pz_g;nAE51>=J6JL^+9K zcXb;Ou1OIuB|Wb%8loSv`x=m(Qr52=I4?kruC1MdE?Juc$S2=3`z%mn)|LVm-Zvdk zCKRo~S1%xM0id+IlGtmE6zBw1L*U*s1uCws1}diwbJV>ksOpfwF+2dLcG_a?w8f;t ziYx>t&v|qTJ`tV5(EP_>r+f!;J7AAHU~egg>^QN6@$6&YaBFQCML5>uruL&!HgYSN zen)FUyZ_H)6{QjCT~F{dh?Q0Vi)}Ye1>IVSiXh#PE+H#0vBK$ek1zF)V*Eu)`k?D@ zDrq_)*V39&U88QBO=ajp6{`Ui*U=iD>!eA%@gryRax51XB1sGv78Dh`1@ckhq@Bx`NWQu_&3N91^XYmBU;HQLqvTY!4xC2*^3yJEVj8tqE$Qe(rFgVNs8}q3O z2IMN~{qu6%HqCQ|>8$GMKD4K$h9)_U6`90rpi|1ezMIWjEqKcLN04ByMKA}J<7i}w z*ik9%1{2a8=)7_;;JGA$9WRoSgwfD`l4frOR8c9<^;)tA;(Sg8_plnQQ4n`;_Ew zDa!G81(YkRqpyu z=ehPqf2hbUN45%ukf=%3#*-BZw@z)$qyie*NKciZd2t+tl)!`o6}+h2?@-4Ixeqx4 z23 z9FMkCJlXIq4!Tigd|ETta~4Zo>&rDRbU0I&?9w9BrR>QRExXdlv@mwjPeWy6)g+C~ z^jL;l+ESzejfx5Nf*NyMHAA#QJ+M9-DXjev6EYNatJQu=+fS&7`B(JB{0U_-f5Pme zC$4%LXg?_itWQG;&7aJavN!-&=&DNNX?FVwl{Qb~q^+L7`G+0UO?66y)`v#iXYWMKAb z42_<^zow&qVtn$aX=6gF*HBT&@*y0Dj63*^hMLxvQbqJyYI!Ca!Fr@oR@-SQ z=d2KUa6_?mUjw-+RL$;yFQ;$F7&6JWCnZAM8JcEG!dN{U={l55*l}pR<2G!T8=xgQ zOL9YoW%6KemfmDM*J7N6+!8}e9E~E;SIqHT0dDQcQp$=uzp=o8G$<^qLgKPGVagZ} zHO?`{?9^n)Kdc@5Ajss}P(ypFR1&~g1uwVRJRm^M(;M%l5smY$HS zzV2uGxX4Z7Z+^Q8q~(5ar3{>F&)dayGlvVRInwuTuaSs#Z|OnZQ{%e-E;BH6I3IhQ zu15*oLnyv<+-yoT@-W1sD>Q&m1Ij5xjlO8s%r8tDFe5yXk!`XHt@FD-|CQU32ZjUv zLNzr`A$^fjVt-_xzkb=M?Nd{#+!2MSGeJ20C zBi6ee`~O_b4yfB&ahd0~{!JBgiqElx{hr3;A<&2A@AmcQ%PN zJ;lQq?n>@=JY2%>)BNsHho9kLqNCWoAyvpxqnCx2@D8l!=e3%hm3uKC(1a&_(gxGI z)g9<(kXwRezvr3J=-1u>(3atHrUdfJ4AtRLWnGk;`u$G5@+aFpPF7~}7=p6NW#;fu zPbD)=;##0OVIs-@X1L6$yyQLtBIL~Tm2n>M(s1{Efd`w)b~qHT2=jHzeRE=OIH_RG zu5jEFap-MvVi8Pd^}l+BmZ0H^{*AX}0c&6^b^6QMZ(SD;K>B;?K;!zTEgWF49tmcm zK#95a^2jeI1pb4JbelNb$AA4LGT2W4&7rpXm5}fCdm!DO-;-j0h=~C$L_~E+eh86Z zg#iCCPW8Nk6j-FKH6j@^_@cf4i`QuVPP2P~0kZ^7?a-mE<_}caCTTC`@!w-HFP{oE zB~gWNAi($!Lw^w)RqVJtf=D4Zac`7#x9?v>fao>8i#0jU<+qwBV2fwJ72(wD#ko2S zE4WJVq2+5T!C~|x4yRu+y?jQ!JYZ(sAsiECWH|Yhe}eni)8r;1Vy4ORhGok?A|mee z*8%>IA`A2TDzsqN1{@T;zrn#5_ifs8uCi&f#ZK8OZ+}rO)OJsYQVDlg0 z!k@NWlYnkdle@?jkqaRj@z z{5Md+>;x%b!X75a`kfGAdHg5vaG&J?4fZg(x!(y3mdAer3HMtba9|IU*YT>b*UTl0}{WeH0QsDzL;fz{rm9=O>k!nH%M@%I1u6 zhjVZfi={3Wt8V6MxU9UzU;PCMZdUAbgm4;e@mV>SN!l!BUy54bKeg{@gT?9#2i>U! zLgo2{tZQ>t--6iT1;AhQ<}dQ%^KT1 zmVz7%JfI+>I$vEOaI3?libS;K4s8X++z4@I(i!Mby4HyFzf>T`j}%LkKG*Q z{TclfLTE;P6;5E#)F6EGrQ}hGn!K5fArfZ!LBdUSGbr_V!h*GhiYQ2j^46>1!C%TI zbot)Fn6>~VhG>vUn)*N*C2Eab5t~qUZPlg;?S?XA;9oUGKnU+C!ln#uXJhCl0I6=r z<`FsN(I!S^Wsv{Rc8z3Mlbx9?sPlME-?g1P7mjYldA9w_?Memh;t*kNyL8yqciq(f zIIa_MGB0_xL+lqF5~YLMHK!T4K&@X|Q+?g0q)|xGqL_l(Bz=~!IsiOrZ<{^vkp@3Lw&ol@9;T@Wr_FiioupleAI&xtw z+jyZH$IdR}7@^UyyhTGmR`=GpCrg>dWvUHElUHMk!^Ff80GW9~hbie#TwQ;i#a))k zj=fSAA62*SYKtpGVZ85XLTYxT9Kqsx3ZwK*nB#qIVhaj{asswJV_;50<0m`WmjYgV8Ec zaOfsJ1XsQiVJqEkmD$u#eVq4Yb36R?zMF4|Wk0in=>d2GO2JJnXNoImH;98Ewl3yH zR>wTW*2$+S$O*&7sb0!rvz6tqgf%Nh4`e2k!5Ew$Ku|8I^E?b3wZ*}cB8=Sp7`O-d zoOQush|Oo)ud`0llx+3*9|qYype%Ni!XYG%F8>>vQLeSi(?hPi7eGPQnqlctT=_h@ zZq5B;TwzVQJu25!)qUyAcF8_pa^{Pa?9oalLeUxaw~jVl7)o|~F(Kq+#{N(swr3RNK2jF%Rg%WvmJ!cfft$wiNYAxcspH64oQJ^#l*&3VT5jbI3>u! zQlXBM(<(dIGAwHSloD|jc8TMV(Ic=!xYTRb5_0Q$9BHEKfr@zHP_NTYNN!sY|JJO! zu+gGLO;~?{%kRT{9pA6TG{9=^nHK_+16@`V3t2aH3A!$%_8tLl0J6rv1zfJ_}KsW5UsBCm}$UL*# z5~ubT5FAPf=Kz#d3(hm!xfMA3tZ8q5K45IQ4M_n7F|l)*_RMp^2CJw@Aeas`RJca% zrZ;cy4p#WIC9EdP?%Ll5Y?wiWC>o$OuXA}(ab&*7<(T&JIQ7Ms>{b*vjBt3Xhbj~&Qf6< z^j2Oj)fL+rad-Qu?a0B`+a`?PP-73R3Q>|n)-h$wSl=po8_NTPleXR?7RR;=FB>K* zoxP%wN-BFVX_AxcWlS^QXC|6S)VAj{Tej3pvoBmJ*i*Z33e{|-v}J}XhCDoF9ahbS zC$wa>IZLY<+YGMIW%>Y%R3(Wz@`AvNLwI;&_70^R7|Rm7E_r`jO@_Q^T=d)W!lv83 z6@%m-SBeQFi!bS&$W@(c5Msb$1mgx>cwYl0$7zLBez;Opz_PCWEs_T+Ev+CpWWZ$Ta$bV;A( z?Xva(D{%gy>3W6ue3-k6VaEGK75-oruV+$1WX-b5<)2HojAxI$=@U3xMv^$}M- z4Lyervau#qm@bo+AwNcq21wUQ`6Ia3HwcNZ=X5Nn>=v`yoI?x_07y18<1wB1Yb_;8+A4 z6;4;%E;>Om1NTvlUBx}lbt>9fpQp6bEa@|O(%d|7ZAA{8UApy=%OO{=B3lt8T;^dF z*CYb%GIefzye#WZD?78E73;4=&f-hbv#urQ7>ogagw$V=B+x>KVBS+p9l{Afm+(-G z_a04N=0AKFS(r7?6vko>uhY>uZM+$z>qDz4G&gS%ub=~V0fjHh*Gv8Ak^Ssx-&6+^ zb4M0mnZ{&d4#Pa4ow%_rjEP%(S#dcg$_nm`mRzzz6-RG$-(mp+V2#nO3U7XwIV}zloN7H*_1!Eo26G%l~mh zZDfrb<@XZ4(}+@5n<0e>cHs->W1=8gkmqm>?E&QV@VoxPqO#YjHGyPq@&;xkf~5@) z8fQ%)0)-^NFEzQ3l2V*&sOz*JmW?3XD*01k&Y&5jyZn4n3Zn z5w=VN10@;m_}t|Be1Z9YVu~>{ zJEj;YMu#^dv?)8C-o&y?JF?j}e?*cmG_P$kB!jXUV0G-Qyo1DD(rPmrKZN-}Hj(%v zJ*`T;9@X`~upX7dFszsDEw*$nfv7O|ni_L(S~k^25rRe@j=SxUor+*U-jzz&yo5$HaxsZ z-&Dq^6d=9>J+NNxEY8g0Gc>E{bd{Vpktli?knxnMw%ClO?omdc9#G3EQbnL877+HT z$d+#qN;}>!(+NqNf8x;vX<1d#YrDDE#Ol+U!7bLT6N5Gn@rr%$)2W3EGsa`!8!=G4 z1FuvR&0ngAnW=+7FU2#I{S^vEU1HYO#K(v}Vjo+U9Zn>Bj;o>OFbBF!+hGnws7&g7K*lM+yYTh4fHpNo3aCL*$PQzCx$F?%5my$A7gk`Y4YX^74>2)K zEd@T267SQs&ys1MY_o`LU#v>=rdFlWPpQTK2Y`W~OgPLUwk9q0PXO+1xfW|QpUcA+ z1E8Z%U)!YcgJ|wJ5WmL7OF0aE}I67u|$3*lsOsW2!&*>n7 zIx2_YI+UStge<6;s6ecc-1VRQ{)6FZe*zNns-%pi(azRv@jvPoWV5+jp*1Hh?`-wc z#+h43Lw$hsptm45@>VJw%4x9GS!>)qnW>jmW?VsajNmx+j&LkSX>WH zatdK6{*jktu;!M#BH|{?dEg+`l_-CZT%S)ZnOS*y(m61^*;=opJ!sMdLa_xz(cQg>6A4j?^)jf702yp$Nt=5kET@@qB^{V_5|^ z{M1@=a*ounyYNc*RJarwXuNcGVHq~Vc7JXVotRjDY1)3-J>d=8vscXBcngZzoHGI5 zTeK}t?JS?S=B>^pcR3V*#%JN2@PyCbG)q-~?MhjDfst_e+DWq=NLAWy(9GGLZ@yw{ zpM5ti!Kvrj>IHuDlILftsJ;DpUv>j9YifxO(qy|Xxoe*_+qD*;z)|#in(dmnGVbzc z&2}9LR(JVx@H5%2wLs10SnrwRT59qKt5spR-jMa5$?WkcnPYuCi+AP#N;jp;Giw@}(IvgKaI8LwdE$zcu zAgyr+8}Q4*fjY15RTfK=$ZbkB?+8cKO&LCTJB6_3DBBfrr^wxn>6MoFziKBJ!Kz|A z{So?n3aPQieO79#J6cj8(t>8HdYG;aTi*6ehqd<*dPe4X7ZGvw0#`*6 zfjbn*5qvRby3tS{E1aLB3WZHXnG}E?PE@$sh;P4LduH95iN6vgO;iJMBVWi%*SQqO zaM&dbz^8a4cDrX0T{LnTB^W?Nw_AU5H%0;4lnlmsz-+i`Ty%kEf`til(#i69)0%@l z3CMx#QNjxlQ;@}jtj8G!4n13iT8G%^vBJVCduxOy*66m8fRaQscrqF(RXp|l7ih=o z!KmtS0;Cvv%w7q^Xj=-P@H|jGoM3@cKoM~DoB>nU60)FP)7x|9FQ76he=_&9MIV$Y z>IGXIiW*M6mDKRmwB;mr=1gG4D5pBI`k$@XS1Ygqjei0WbF1VrQ?OGOM9@sWX3|mv z5kw{yPV2HcTzBVZu_WAItl>>_mjeqL{Rm$KIDeTGnNS(%+;ZP#n@OHhbmO|2er3}J zS86}6UqIxx5BB4=XdagLf^_$M$*tRho5Z|OQ4l6t$$Mgahefmm4nGa-418a&^0rdw z!tAYUNFbbDk(mgwMCo^ir`V+Nr81{ZA`a1Wf;_wzwhRG^OAbq9)J`i{1D&+{toZZ{ z*Ov0L@e*wii9l%^{uMS(3UJLZ4=Ck|eL#?Kt(cp1GwQqKv^1sxrU^MNvBd&JA8y8Y zW=RLQ-6*1(fW$N$BM}Dv+v@3{HF(2?17uTi6)xZdgdh#ZtW~?vpmq%mtCYY+6|6S&xxK_dOl#N4&n?2`&1$rADgvawzAYJ*US}TxfJ=R~VMB%ZzZ&rfEOV$11T5E8 zD}ii+?2!QXFNng8Kix&h1lF%H$qzooF%T2H>(-3ie-BXgUhMXBloWI6Q(cO!u)S~w z<8si-c6Y0l9!K(2blGHe`*yd>SIEb^^N-c-ZlXv8z*~JyR6ggTyT{rLmXMtN_%HGF7N!7zS@plt{596A` zYp_XKh`ctfNJ0@edB8AHbr0JEs&sXnK2^4DQ&0C%*YEKL$spCZ|B)iEMrVUTBcZxX%jc-PNlORYXfzvPzQnVH`Z!!

3m;;vdBcs%&p>VcvBEzWfigGto4x?SnO9S$_NF>Xhb&XMIxWCo*u*uMMp(#opov7 zSBhjuRkGfyysWvv+upHI107WcR%Ow-Df%k_; zh7??uik_3PJN>(d?i=+N)R4A(jeGiY3q?jX_ss3@^&c<^>Du2g4d4kwL{@nU-W9Ao z>g|6w?{Dwed*65#$>EjHX|!!Bm3xyN60C_7?kK6-e~LUOzF^4{$5oQ+jHOmSuj%^4 zR0WeS*fgoCfD7GJ!Bo@rp^lO-*z}}t`Z6zPYwn(Fe(n)abN4>|t>W>S+y8Zxn5$er z(utNOx?9~~`|{Y9TdwW-;X$yqQw3Yxi54qqu;qCUf~}pZl9&2k)flBG1VuO<3JuQO z4h-!-2ns)Bq^d5Q=%!<6ZU=_;9|T2S(qm{{fuY}h?un~Qw*MMH99KN>rFSlQ+Y>}X z3haN&P8u(sJ~y7lZQ|L^xTkTO3Sc4IvU2Xh{lndF=N26dDbug*ia#cW2&Of9Nke-H zDO#r%2^RbyZ-h&uXe6h~6St#OA(cBC^)5{9hL)cviQyL-mQOGf<@=A+A(Fysu`LTA zdH}(_<6@*1*QDh)zK^&*-9V^ZYW-ZzkrTIP0evLl!t>)J-!u27S8wNYd0QGF8}quP zXLeL_w61OPo6yvyqCpV&qN+=kf9ACGWj9>$u0Pw(=V)489>`!Da5B*%*#FLV+o?$_pt|YjL}Y*yVk!rQR1=okD_Px-sx^bFmN~@dBOC;OYXt-Wp7vng zeV{fX$15)3NIpdkX%!W#6=+tx$+N5*d^bt2@km$YQe?fgz6%BV#wTgdOQbYc8vE?t zNzO#zbX;&slZsFH;BY5>yZ1}W(_kwZ^3PswpN{Sdqm_07fBj92{9;4ON9Is0&mIiB3{9|86cU*ZjBiP2}b?{O>Ek*8g2mzsKzYPDT3 z)l^;a@c5z%-Bu~B@TPreh!y|l+fSHwG~SdkIdEeDjPfU0)TAeTIAg%vg$iJ^8sPex zo4(ufYqfguw;}&CZ)WXbhDmGQGClL=gE9$O7znt9=stYluF1g_Nkn(~g1<|QC zuXY=mY+&Cnvi# z<#}xvAUj{m`jVG`EGU6~(5^@&ArKZ7fhUVm3-Q_2YO1mbPRU^CuN)6jk^!>IkLJdQ zrcVg0ICu(kpL~Y@cR{+Wqw`xt2cuuT$^0SWq4ZGo@mFuk$~*pwUL1N0yyVaoAD{U2 zhi~~obXjWwFZhKYiZM&9-)0!LP3ZAWm}wTQc=)m1;kp%1OnzWf*FW9@Hu;UZl3J%`gN_^cNmh36d+>h;tKDPYzvp`~$6^?-9B(;_d$irbWeRt% z3+WZx{ig`XY$(C1-};kIIopT4!nt5|M(sIVJu$6eCB1})#W}WvhSG(irFSp zw_Y})!GhYzoxdhiNC1tLku%MPMYH~HAo)@wHt5-lG`lr#7A|kSc(G>T;o?yoDOe5b zh=|o?R_AuRSj2sIeY@-w6iwTsZ=FY4*%0dQ!TmO#@Z$Y0rj&{%Okqu`DCV?)ZgGr+ zH=Eym9$6W<1RTwHozTOV+H;moA@Sh|aywHTWh)#-zhj}82ld_- zPph9y6q66NR+2Bm={g8BynA|*gq0R1z=N=onIqNTG`b0YQc-}zvhk2oJ#;&CSU)5vP z9vR(Z880TSkT{J1{BRpRGu-&?jfe({;npZ?S(6Vt=@B<-@ib3x#23@t6{h;^Qpc9_2 z7<3XCbP{abcw^A@IUjTqrUt#NLH7sC%W0#tEh{|L%+#POjj^0I=)LL87Z`EN*)ih1 z>8y?s=d{~%kGYN!|IE~gf94O5xQv?}Bks*E(?%RepXpP6#`C5;oAn8W(`Njv&RIA$<5lth4>NwM znW@27+QBovk4h47c$W*}P)>OrsPUiaxTm4L7?it1BKwMlb z%A)5sy+Xz!+ouXLL(jfdSs9oAeXGD0MzSe5PF1|jQt}_>-OSfTT4!)&#Yz#%`t{x<57<9;!-KI~hi z-!wQZewc19mD0WQGNS!Iyh@6+S!HX5H3I;F>48-lWCN*07y|?_U6FjU%zQ%Q#>$|a zdsZc{p>C-am=M%1qaub`#vK_5tzQqUN`+*8>~#;XkR(6qL756z7~5u^Z`rhDHNyDq zvG5lb_gpoaI*)#xe zp7*D&x*yxbt`-x!>aOYQoY>VoHd^6qQfhoLq!o?8gFvas4-A)|&G3Rz^RoA|yyI1t zy5z6OCTp2J$e?Bqq8ED@V@&Kp{JHSFQQJ{~e*s(2XvVV<(-hlEDaC)Qy8 z;l|>D<&jST=)E53c>k)#o@Q7TuNoq{3w(|ZZXGx##4N6Hek)j}6?SWJdp}2?Q4-uU z|I30eA0KSEjg|5A|IlDLjGNW{vZjm>%~Mz~lw4V^Y7A7V1-04HXn;-J4P!X@F(B*N zvceVxYq1kP;svp=e2#=IGf19BG|q!S$lxwq>X-X*$qhw@ZgD;6)Xq)oK1a4rO8;Q0 zEUd;t5S6jf%k4`W+18P?Hf)vH6jJk1^3sfmtY{IcCbB+o_=qE(VJnKEd#xb>gRW7L zcEq_v!JjV>oQ48Z=0OEqZVGPTqkvJ{R4-&MO*{lsJ)jjeE*{wio97V?imh8!weI{= zE;>YPa5^fXw|0b;!jvz76d1!EK)d~0W4ToeDjEQz6n-Q8j}Ei0^rNpvbf^N43xEYD zwpv$TX)?!uKBm?iOek>NVno=P(ui1#9Rp&my%_qfW*L+)iFFQyd8*YqfwpRGP^Ltj z5ZR3+v?jQ=L!7xH`!<)zXy55Y`Y>&fGFbvdw@{Vo4e|$=PONlui4p5}MXYR`<@Acc zVS*UFrm>$J#dy955=>x7pcg_~)+-UT4T_CAB$|&ptEytuF{uhht;eU0IyTuC9CZnf zKNWd&CX^)c@qdLCdy(lqT_=rZxd#yL}=lTa+nos zX-6^&fFj?hGJ?y1C{K+M-i083wU|3US4>a|1-$=7%@as=i5P`}@lqXZ!F2xcbL_GYcSf4KcYH$-oBc zXPapki=}#yMyQ8;#LL)^;;25_D9X!IQ;IQ19+es!F^;W|iG4$>9eOPTcY7M%o>i|q zDPY$(jc>m$`9^4L9?PB{fyNV#V60Yt zd8Wp>7|`sb0?=xo8$T)$lLb+U!#P`al8I>AO;Jdood@1GMeLu5L^E!~b|@S=O>SyA zzZ)X;s|4Qphm5Mi9mIsO&kJ1bmw;m1R=5CO?12GF8FMRZU=|JRgQ)9im*g9*)U;7X zB{H_jtfNZpw5wIx?JG5Edf`fIYlsG={V^cN5X-iL!YM!t)XkQi2!SWL09S1nCYF^J zQ6h!W`ei#V2LVu_aR3q*7WZMj!Oa=nR%NS)f#*mbCua>SUoO~{#i7u_><;_W3!y8Y;-FlM*i>4f@B$k*jZYAAkccR>Cg(st zYqk?s==E#?5`%WNd-x`6m3X?MLe0a#={$maFU{rGfe7(}aMKs_r6r!)3R;G5$&L{2 zfUYe@X_dy$uT;~n^hwN7n(ock!IN19Ok(>*XQ_bwQCV4SUr zEb^Q2HEo6s1wkuD15N~^gOo6UW~E5? zdWY^c5@98Ho>T=+SdZ+yDyw{YdtT4v^6?w9T6_2Hq_@*xZ5P$r(%1l8-;gtM8tq8l zF^^6_CL`|mInp}d!Ntgg}o zg?P}lCfBj(7DJ~^zk~lv!$m>J`u73OfLFo>%o${;ukIV9RO5t`aC30BfygQQ z00*za0T(%z1Or7u1$Q;>qEc-C=cQgfRW*xm<$xy1p@o*Ow<8BzP`St^2h%st@jt$b zhi=ghBn1dh_5dNaXz~e}sws2}rrHwsq%8y_IZR2`$h&{v8KRm$fdwZ2mX^4H$gV^p zW4zwn$FNsvQjnj9#8vLB%3#HS$H{&LBlNVy2^z>F#wmrXYv3SOLhsxw0U7em*oG!S ziE^TAU#ZLo3S!UDc$}k(2w0DB(;?M3?HPfn3uy^@))2~YLw`lZ)^7{{Qf};@6F1=- z@j5hwNzVP(2*b2-^8QEvAKN?*fEb#B`PM9)_xth_?}WuVCuicaWQa*}iv(f4+zh-- znF^c-7~g*=su}7^{&kSAqjq^XzoRwjjD%T*RU8|w zhw>30zJ4%aPk%QUdS>cko;Zx7?zmB^RLiw`m$~$}Lazjs7BY)50ZBQ~gS+ZqgXB1M zgAhhAB1gChQvdDWg5+o5-bqu5-0y$lUo|+Q0BJptPFFH&*@-#Ba+>gucncx#%Xejc zY2}Ex|LqJOziHa1Cv2iQ56vZ;Rsz2{z#yTcpVy+Gw({XfigVkq=-Ky9vdxTxh9Fcp9WPV>dHITAq9zI#m(b zN$WX_-j7;37)_uUERA+WnAV^HG!t{_SP>o<@6z748Z@5N1%m9dG=G+>xgmy5!j`!V5bNuLmfKjH}%0E;j&sJrj?tp z-2+*V;9CUQ@-ygWNZ7Luf_ioEM9N#!*;#y4XpX6V`p@FKwL42sq}_(Tdy6uKdV_zX z?IrKGqG3l-Dp`~@Rb4Y}B**bvb;pmm-RtEl8Y_sKUm{!yIr}Ao+x7eH-+Y(&j$mDa zYb-p1zQG~1*sw7pO^zfvRH~CcYsb~EOWUQ~&*rtuWLnWsiYs~jxPbXC={bPA*1fxF z3#5wrNj;**B=_1_;)7AJES80R*!`$mb&6a$zYcJO*d?7+pu6!~1|k9C)~1c&v`_mK z-T8~iT<^dzRp5&UruvjME$^^S(<&Qb1B-e;{~gO_RW*kT72v>bf=MeURt@1u5LiBS zlYKv5QS9z!xTTykaOjWUjy$1?{_W7KCfBb&?N@J+#GPo?)0`-#^FRC4Gc$-wm2$mW zua|1|Fshg8rC3rdt-mS)_FWZ|PHBB<{$?h>_M4>6)Hf5Nxa z0wFl{p{Y;zwR}2*RTJTynX=ymMB<=|0v3wh>W&K8VcjCdsi_r&Xi?42oFWuzRhI~P zVw(|e?@qC9DFw`V=JC0-Z#{j45B}ndC$yXnMZV{vF$Dh1vY#6y4@!cJ6Ix8A2hpTC zr5U?>5k!^|&cJ;&CwKd+ng*k{DBC&i1fqqwP4ia|5ASI8szJXMQ35n%?2%g4mx$X- zCFAeo>P9YR*9FB=3Nnk_*YJU&NYhgquVw+rVl;ML|DX_eC?^dZ&Kq1w7{mQcn?MFy zQTP@?uq;{)0f1q2Iwp>~{A-J@R5s<%bdJ!1{O~BX6ph^NtG=^UU9qn!;s8?rJ;=W^ z9@Q1zG22(E@IjPYF|px9?uaxMLfu2R5OO;F%F|>t?R`^snD(ylyK8<4LGq=RnkJWJ zy$a6f<2OnXeJ;52FI6B-)@8jNL;dGzmqMFDC28-aeC`^6T0|+DizqSDh5cz=7I;Kq zN{Lo@W{VwGalmXw+WYCO?>s_-i-Be{&%1zOfa3%$s!V5^Y#rTjq`T?Q;(iilbS7{K zrt}}}GWB()!`9$oo3}DIP!QB}X}|T98+-x-44&iX(bq)!KnQIkYvH~~BoJLUR!JtR zx$@>nwm{=PD0i0;@-#$kLB4pAO!u7~nJ<27j`k8~!IIzmpZ*aQ_!%jn1?KI4dq zsTBhWR-9Iq35AWR3-yXRFzmd9MGGW?^Anoz`@JUIq(uwOkA{p{?L$&-EyGqaz%8|= znesV_hN!6O4nuo24k-TbCa?8X`Or&6eXLBZKGPf8QnRrF)6LGSG=LTa$tE7AsJ7~c zDpSlfAi)!w7h3G6~7+@wp5`{j$qChh^S>fk41I~rXDX;qXmjnE&R_bJK z59q$rF0bMxX9DVqpq%#F8ACI>7*TFuPD|Qny=O9*EPVsAnQcAU zD++)YSb@|=d;^+g&5Y2pKTQVGEX$4iq9{Ld$Y`Mq6XO}Sh=s{$#hV3cxphETcjAv* z!_{tr)eMiHm%Z4`Y>EM$)mPN6@F6=fTc9_h_wBsQt~Q5y8I)+Xl#2R_&jwe}ALt}x zOgTO&E)}t~N978Y#uqKmY=cT16BArTizl7+WJSS{NUL|qASn>WXIN+khEs4eu5>uF35O5zuxG=UlJw`PB{Od4BFxBETB-j zKzJ_6;#>8jJg|KU-(|*1Wu~Qn6KPR zAj=hYCY%@e)|ls8Czte*_nb``NqUNDG(Ht!P0~y;oMj;`OQ+Xc(`^qa7$jT5j1^}H zNPOZFfLtd~}XnL~fSZWN9geGbTqWHxL@3@JBPm_5=)Y zjLn!3L`Yf(o23?>Lr3#vu@*j|ri?eXK@7|xk5VAeE~UB=HQox&t$mG@wdpYkK^XPg zVDU%GQ#gaE#XzAaW~UvN43oF9qJyiPi4>*|p%-995BEpdTiU3ds@eKTw&X0u7HM*P zfjTuZVm{*xl^-lSwqeM~#9%!tWODDfQ0x79OW@FSGd>`}k&ZTSyakH`a@xvEZy9`R z7Vm7Yz=L$HCAM!ZFI6SBQvHA&g)0=^z^n$EXp3R;6Qr`4{KZ_+fo&k{4?FxR)RjiB z^C7jZMDkQr00oiK%fRrHgQ+pIvOuI~!>k%3FJIbYR?>|h=!Y6GEv;~+J* z1O0UnntjTEo&X<41sFaV?;_Ai8W91B>yCRB#KeCk;-E78nE`z|aluhzLn5N35gUpK z6?KRB;8_IN?O`>~s?b`nDye|;S`4=YBXY_{9IU#xHyZB?Z6>C6O3Rk|1Ov9+st`sX zp+(c^_^2-CO0rAvGWjV z(np2PR|bpFS_{vE##%NIATCM0Uaw=BDL57*l#S*yo)L;Y!8Eba%2LQT8Pq$!F=7Zn zKP~J+Ok~1vi=OKTeqkpAWEBC`jknQgJQNN2`l5pAcGkz(sI3=*1HUkcGOsvq26igC zRQ=IN#x`QyX zxl+NdC_!3ruRwsrLs}ac2au$Ah4$lURo0(eB6wNgP2-kTQS-^eHOs2knpRe|?hWLS zm(I2ci3;VTFq-7&8s(`vy&N!LnSA*djB9C`l@2Xiw+sceAqJCH8xKa>9*SC_y5awW z`mY)F|C$LSc&6O zsZy!bqBxW-K$UG`R-wn74sn%QAt{&dvKSOSioRIEh>7h7WrScD%vaZ3gR#1%RIJjU zd0338q+AK>3D>Wul+}Zq2q0e26Syq^%XoIZ9)@Uzu5GRv0MUWFa#wjo(N`op0(Xu2 z8-t2AT-=Q=>nk`4+@0g(rOPU}VO-}|U>3$trB~G&G7E$-kWyobLd68gXtyK34pn77 z#MPO@8N5_XEY)qAB+3@pXq==1OvN=;>H@mD|5MAPX^>(1jP`ss+G zd0h-wy%=q#(fDUjZQ2r7jzLBgB^N~=u9>C)P4AHd@`(Hgls>7=uEQeS<{pIcxJTg6 zSbPzR`uLFE4vVzU#2dVIQhE5@qu&Q9n%6H@Ka#xCb4b`cuRx?kNhHY4Td(Lp%vZ$L z_-GW?>57*^Fp5DgSY#> zy!xTCsplCNqjen{aR4XfXOJI^J5*(MOWn!@-2e-U_C<283~@HI8n%7w2fwNK8mPKT zGfYX8M5dYC+9De1$Wj{KvEr(qzI$`Ym%yY*%?s6-tkc-|U@0budCvJcZHfC*uLt>` ze)PUatG;-QB(cpKz@e*%tVNU~36x6?^f!*+7j&0!iIOG&G4yJo!M*|)fI)1cuuXgI zh*aZHPjhAEbqh{5YN;eC3noz4X#6S)XK;Vp;n8_w&WA^5$dIF3D*1YNG+)jPdN>yx z@N+8I=VuAts{HihipWpE0igT_MtCz_VxSI>NaF{zH^zs`h79)}_$bo0KzgVXH~* z-22F{ocEe5_wg)+nLgg&L)~xmM-ACNd9=+$cm#x976|~Tw`OH6jVESUM_WQK< zs=40PxSiC}WOX(}&ok9_;)8LJt?qgyGYRRQ_Grot^I&lGzLRO1RxfftXR%mat;l`V zwaOE&)okb{U+-#I#7uRL%rh+W8VrDPVx%67TBzr&u_U4GCPRSXvF0T%=5tVUsNs>z zXWyhrhEYN|13uLa zUBcLf#^}L~(nHuK9G`+Yoqdx*c+YlD@sy;l2uypEZVEs$?*#nE1YnVNJC!5Ay-nx3 z?x@R$kz&qNnKOidk^IeBxLsMYeXUC;^Rd zF*+H)a{8zwJB&v3bOaT6SVXBZ-T3`%4HYpU-?c_qSm;WM*?TL)6Ka4SC>pRc>5X#1RexDSi&4Ufa6UunAXir({dsvi*e$YIerq96UAn{D_8`ihqCKhI% z$!8cXsdZI-9Ia}^$TL&e<1jxUZt6BejHWs*S8``P@D;`BKzkpz+h8ly1U>+lIM4I`;NxZE#8cNU!H}v_{qi zN)XmWy_pDbH*ut>e2Fvx0cW8?{z>LAC0P`T_DDEGB=2O^s&RTE<{Oph@*{dAF_~#! zN9YHw8@!9Pwk=R8RG&>nW7Gh$)@-XJsj#gpWV0-}dwZmGl-%t%AwpsI?&=*l!U=?ZZXGUbwlsCod zIU7ZOV#YbL%p6e#ihlKslwbs3=5<0;Z0@%ku}do%JL-{uo?2$FAOM-5*!Y;RN>dqZ2CY}cBX zOqObmp|mG|Dc^h0t*nrj(SV71pk(C!q0K|fjXtu`rw0PzBTV*$joU&DUP_dMBh1I1 z61$08X$YZZJ`EYP#6Jxk2RV}uHmsExzbR8h!xC!|2mq-hUpy2I>Eog_dL46%r$I1- zKX1k~^AlL}O_PpGA(OEb+J2BlaL`)c(Pcac1(#O#!m88mAm^3#RG6e1DHCa zwz2_gQR;B~VDhplFPNZ;#-G_Tla((**y}29+^EU@G*x+XDiuN`4ix zC20H|PK+L}F|!IT0c(L$qWrGHSj6}N?P4%(OI|K8N7+pfYMBwR@Ahqg8(X7(vr-|)33BUNi}8l*!1<>jLjvjOX=2h zX-TQ&5Rn|9je|)(J-O4AT9$E)=*^Kg+7lnZly-xG`jVIOEhPMg;Gr|Rz68sBuX*q9 z0=KOh>MHP+B;jw43IHb}4iQvv+~EgIv5LHzqwF&@x1zMq#>S5e)S!X%H*-^h=SuG2 ztY@ul+Jd9e*k27R8WNQ63e?Csb3?pnu{{dtF0ark7?AV+)7$+YjwFZjUc!1o%i>@U zpb;fr$_tDP)L^TD0-!GObyZq+bIfxx=MzFD>UE(KJ$eheEmSN4XS27c-)xz38E@*; zC3PBc(T=Q?v-Cq1(UAVLmJ96`2k3+|iOfmUE@EeAX(){w4iF|Ll&W+KB9Li~?W38X z>G)u#7vx$G3OIeXrZmeyqe5}1b?k=cfT)K&)};3{_~((mF)pLcYn>znrT%5@Je>- zzFoIzRwehV$ENy~_uyM7eqSppGHu>{jh6Rxv`o9ws39d=cCb1%9BLq~n{<4&x(W6` zG1TD)(~5*6JqROMUfG$|#%Ktx1cgC~*L*B8O7u>jvCQjseR?Zq(9t=lf<{DdA!wBm zlAf*xa?O+lrw;HTuj%n^z9wH>Gld%bT!iuh?2lyJakSffgWrkQnznY@fR<^DC0s{D z`J{$*Y69vwg1p=FChle7#kBF{9HBijF^&)BLsaZd8H_ASnbB%5xhmJ5A=J0X4lNkq zSia{raZn<(JZM55Yekz8^7^fDy-diQdM*fU)0 zvvb&7o#$RbK{kbWLRZOYOYSywV`6EeHRxh9qxGSg!n1?cOX8vQC0sCOCL>Ib+&nT& z0(^>CTXEK_uIUCwW?G*MPe+v#E5Q=lN3OsfmVCYlHFoRKt|SgY?hR&e>|Gq(8~NOB z9JvArdzSWbh$8KEH-5oplWM106{DaVC3RXhinVb0aeH);xQC+GP5y-K05l&LD(?eJ z`^r|O3S)robvHjiZWhskxz|m6!s22uv{Sh~i9)R%eF?2En!*U@ydRTS*B!oCq=^Ox zfn9Z|qnZm!<8`m~DKh-{j+CZlEz;UqRp{=cT^H@qIZb0$n+LrtD@{@DEOs4ot1OFin!-nAXW;O zhCGRu&B#`5vjfIiSR>04oD?I@CqjD6Lm$DU=EiR;uVw%pv9F{d02w2`DveKrP8AP} zH}`*RWo#PELs9<_jCN%0{SATK0SlTDaMkRrkDg+$mc&!fIFvLY zF#x?cB!Z^&m)fj2lGOY1mx8{EA*p2My>6CJ5C#8rS zmzUF{8tKvYxcR#5s4OjL&wi;%Qr>kOI*o=`FxYX%b zRY62qtxZPkcQ-o8sN}BfAfv_<8Qlm1MMkZoSQ6CSuJ8EMD`?HN&i?(qR28+UR!#q7a zHG{PR598k>WwsuE%0o*JKjC2@8iJ+O(>a>?Fym_uho7_Y?D=EXq;3LAVMuqAzhHa0 z8(xR8Fl4@ta*^z4J!$c0I6XW)EUgcaCiB8hBBlr>33;6eThp!0=(`x+z^lWw4xyB&25xg2$Md=r5oH zGf<8Mtf=ncpU&y4qm*=8iVH9F>pi}hBx)&C8wGe@sy|PV9YzJ@0-Phj!icBcIOi!S zpmgD+8?K+bymb`x17R5J6J~Vt$wC$Z>Z6vLZWAn=rErU>B*kB1;7Ns3C~KP;Qu-S* z9>p9RT0Z8f>NR7VMI}mGm8VUdIJOxAPs^kM+fnv$^n|x^mr$E`s_WRy2`Z%<;+yV4 z5Z{`qQScIylZ1fRbdNx&9G74}lU|+CLN4Sc1zvYOH6xA19mPUf(EW?ZhdYbh9ePl_ zH;rIFY(AB%3+w8HXB}3^F*M602|IeHBitn^;YM`$`v+zWzcQ3zS_xp34vN_Y3ht0= z5v&0j7!nirJAzu{VXuQ(5>r~#GIJbb;uw%7Nc_O;*$CEY(Ek*ZNwd z5+S?}p^a&Z%C7$jjH;oQ9wI%ejH1APsm9aPnOZsvPa;NkVjK1axlM=?bIBcoRM6@| z)yw{aQ?L>jIVJ}ar3ft|%M|fO-bm{vGo*B+z+G*_ZhWF&AbV(Qsl9Z-KOgw!vn4Q} znh%-c>~4Z+DLMG_{~-9IJ6;rgI?qTv@f)a)oo#>;>6cR+QlseQ?O>+=D(wYyh7zvRf9kRhdl|-k4RG?s4Kfw{mHwBXt zApTAuucovz0y$C>I7e@kN{m9t38KZpVKDA42ESv({kwq-kGj}Eb_wa-s zNc7q?*QB;--e17qMT35BYi4&%P2?a$XygZN%@>R)$|5EYyOF$rUI57pcX(GFqS?-eGQ%S-7F^aNFu&HG-HF`xcvO}!J1(mNppk*!kDf!>C*R2&3b6`m;Bd_5Bw@Z~02 zT1Qc(ZYqIYkU>1&@Zpj1QbPvIv;rBMC6h$8u#z_@Oi3xd|s*3GJh{OBp3X|i7$E_xdbb8}02WX(9Jy&h$Rov+9`cx_Q` z@8_8D+(!h=Sqc~q2uJfxa*l5rw2oDe)<)`4-m~kjr2`K<`sL*$=tmuZ z6tI&jI9?mRSdtSPn%aZ+GLY14e1$Xy`QS7`&TND}ihQx=oGpxBh)z`P0E%x|SandvBvtgFoY&PO@8E{+WTq#x;CP8J{#X}7ECFMS z8k#^(vbwo^w%1BAXNs%y=L{q;UnpQZqrWP%hT-TMcQia;mkkapL}lpqW7>^jm@}oS zO(4!jl%&JPg79XaH!Gb=tCBYdD)fHW^|;&wFcy?R5=;r?(9Z{PCC*w>BKLkwvG;fw z#r}Y(fz2Sh2$qz)%Dr5SO17Oz?b3KhH>5sKTGO!q0afTw`Z6K}vT@`_9}Glu%UG9m z&|D-;nQxJFPimC7D!E->Z@Ol(In*l+X!~chAD|y54n>hX!4j2ZPC4&-q{)^?o_k!b z(r$FgLCK>;79e@qRIeqFW^Si!7fH7A~xjeh3wUo{q z%gv6+GPvZ5E7;RgIo8?JvSraIC&cyngk|#CvqyS9nrA4Hnm^V^)wy@_Hc2(gqXWDm zC=ZVYjqB9i2A?)dX^Zl-Q9@VnigZ3aN{f6x4W;YwXkpH=2yKFSLU@*Tqiq%oP}jz5 z6WuBKsrYJ+(FDREfxSw0mKzk-LO_G6!A*sSCJS8A1Bhai)e}N!guvoBa;%t5De4$# za?9UsbWdO|gupYJiCRZ9k!dX2#hVYU{WlmVS&_P3zviKv8OvVh0c)b0?09*Is@qR> zo*sC-lvD5CNl0~$8{Zwdz4xN3!`VDNW5H5{f&o1rqpqv&oT5~Q zt0yRoQ|+u_)Lx+?h0i3$ua~ArZGjPwzGf^vYBO^2n3Eo#xpMg!e19ptZRy_(=xIxO zbdl-k&6yZCSG{FRuTw$zb-L6uz^FaDFg+Y2Qk~}&ley{9dYjTuG@90Dj06S4z|(>p zh8v)N2wZ4D+^)J}%r$Wp!i|`Yfd?rbhSoB(gt9 zTH;=|B~gaLz$G8dsY5Z#Lwu~YDq!8LvlrlN81jQ2wtlcC3(FMr#O^LCFX+!I#}+zO zd3RBHw<>2*@t>$zgR@6Ro7I9bTA6=5g{y_Ue(}6)uCHI-GbSfSZa?WO51zq=dKwc( z(tbZ6k?Z@@8fa67-Aput2E>}F{#KzWNfSfUpdn;xB1Z?qi*(s1nItpgs9w}QtkAUnLloFKFe5;5YKSzx@F{JsS8L6)m2 zx?)am;yjz2$Ap(j1(7<#9(Tn&o@$Q_w!FKPfgl_T#l#@?qlCt8|34vRG)p&K%LB26 z-L4HhXu9tGEz{L}(+A~NgOHvHs2ju8oH{XgFY%4hXSHDkN-g6DZV!{mEx zkGms-w$h;mpBs+z!GklfDy0AI4C6N+lmS~0O9X_#sm8K?@c}sOTmh^H0fnR!55vqS z0Sdcp*;bCpw@6=U04ECA?#CojA0Q!S(}Ta*4y~O3#Oo3|9ucNPImTnl!A)D#42!nH zLnD0oGJAg{c6IGlX? zBXC;b7liW`8ZtQL)HX9Yy8!fT0M&~DdNzRS#Q;4UK=opPp55NXa&`$%n9f6{Xh9z` zNAjmOapQ6|B^YLL!8)w$qa0coU|nizRcKN{whi}$m>uRQCkfC>wPs%_yUbuT)Oxvo zPHipH&l#=70J9X+vluA6j@~RvLo+o%-zkeWv^8`FW24?+WxMOuv`0)6#|0@$t%W?9 zqThN271h&2RIo}x{vmaaq~?0+W3Mn%3B|FH3@jaAp`RXRRviH%9*JTiYdQMxz-`eSG(&lSQr-eP>9I;}rb2+e6i9%5dL&2zTcSLuaeS{9y;QojgDPj~d2f}z zO!-mgEIseH(oazO{6@M&>)0L`JwuErt@cKGM)a7=d z)k7#KuL@jjOOrtMwZ+g}wwkkgl!bUiylfsJIyly|K*xR-EHe(L%2(UxjqAe{Qz&mTXn_a!#MUqR1#t zg!<)QUxFQi9Oq`MIOcZlE#Ty3Q~@epN*OS7j(*OO#~I-E^^o6qc8=OLngi>mkr}D+ zVhWj27%#RVS?TNymg(&~8#<7aqlcrPraz2$T*4(pderprOGy2&q}0L`ama34XR$sV zVuK9LtD|-2P1@n|+1PyI0nx)>?EcxA>F1(su`A9=l)2B)XO^dy`_Mj6L4~^sf}-pR zP7(665eUz9|3YlK7Qee^*Z{$s!o63)eFOA#zZv*kzZqz*BE_BI-XSJ-XUHKY8E-IjZUTa>$UfvfTX#7nnRBk00Db-DJ zi`=8ULGU7du#1n2f;Es!o;n;cLcfv&mMD{(fxXKUsoKi-{!T>kG8mBnWNZ%BqA(0V zg-ir&AU(_3mdfo=-s?Kbq78>>#bYk|2eIHW7KD*xA_p#z9fj_W?BLx8pN>&I|7+r)dFnEM(RMSvUW33XdNMZLv55AWgI>`&;dt1+N32K*$Sc8^Jf0muj+vc?(`K3&Tf@yg?LDE`ajP)2 zb%Qf4L;4W^P$WXi^CZ~Iq)uoN}4t5O_ee-4+UV|ob;wFCZ%Bj)xhlk&kMCh4=L zBD$*zjTv7j2t1C#D*2OJI(W&M%Q441FgwfiKA`bvm*deW$D^+pj|JJFEYxlES#c<| z<^?Gwg?@jzVKox4L!E;PCUDe2!B$5ilC6)}oZU7EWj`zHjUyO&w56i~! zI@5m{vry+~aNj;|>xWO&dgxn^kKa1U4sLBN-)ji5(mnkqyGvO6N3Xu zyA2nr4-5>%^%|jNJ=PQ;qIy(dIm4x599NGz$EDOfb~X0a)kzpBQ=_%kP6?gIW5Yk1 zXCbel&VkaE7%Jg>HomI8BbOWQ@x;Vc^!q+`qi>9|SO0`Cb)KnzuBqKZ;E3s9>5VJ4 zts^qpJ9~N``&RoxHpJzH$boV9joW0RGdFST*PPUYbE(N=O_Y5iL@38ygjzH-Sfs(C z`<{5*F}>MWcApT`qezdRsz036){va9!J@%h*&P_!yzU6fC2mUH!H4g^)0Ya_7E`Ea zbZS3obc7^N1N5t;0-Hrv638k-s%YV^5*ZX`z9C4N24yv}6~uO;O%rE6O_Y>pHtbNU zTP-;lE5MB%XHSW&VH!8G7W=m}*Ru4^UjI95?EbQQF4N}%3-x!=~n=*PLuIg98gIOwJ zr$IQWlV-+kO-P{0f%9WWP!~8zu}#{H15kWr2^k4`V^$vse!@}f9UBYpbO0f$ch0x- zj!gxJ8bZ`^L_OMQ!A{s2mJrle`iYK1U?@ZGgllr;0nHXz@TsUDGUK6i2<1Xp3&hDj z#o~(QPYAGi$pbW+4(-zI@#I?04M9xkm*<$4LLi!ex9Ng?>KQ+CrLZNj!>pT{9q8hL z`=Av$*A9;>$2p2p$;tmn)51M$#dcX9(c7KpfV4|c(N5(n)QkRbM;0j>Vixm%J*2}) zKOfVb5pL`03pvfmwo2f>zYDFLbm^1*ihqK4J)7qi97S4)KL$+xEJ$ug2qOhv8N6J* zqC{4336iwPBPsO4SFjt+@4Lb=u%IwnEP zkXjZ9#6!$aQKY9g$?hRyWDah{bb1i?ViXXfW2*5ZM^o;e$nVVbb!tOZ`*cE zq_wdXJMI8lMOKsyra+mH_bGkCy?t`4T!&l!?S{#%w$cjMS9Q}?ust6tYUW1Y;L@!3 z?GlT*92MWQsm_2-Z^Y{>NPPum246w%o3EhOQ$ZGExuOyU)AhYksdr4Rx5?RC*3!m; zjz7gdImw+S0RX^$2YN~Zlkyl`^y{c9%TKhX7K+cR3C~Gp_|$st1u8SyJ7Aok`k`__ z-b5aD$s*ZrwL0q0`q$@;k^cqXYHZxQ`3^YH&_w!jhv$qGXaY4Hh&lwyIX#|@6pgAH z*~?%NoXMmjIGg=zug{xQ)GR7$T19YGj5=vi*S)$(iMsYhlJ$gNrg*#TcQBPN92>e3 zF7T2aQ+YHN*oS@Jz3=V+22F0siNBh@ltMeB@iE#yJ-##A!b6!nNnIrFipIhl^{_J< zTTMND254WB%g~kGm)@b$R^cI%DR4L}O3sDHlswp5^0BZiIqOS4T$Vg|Y{`ASB@a|3 zr%47ZwR>+_dY_dZ3%98AzN_Sl!AWl)uy6=B9s{g+PmiZVmWTZA3ODDRfVp(N*DHT2>}G@f-Mo3TdYdY5 zvUM}J5-cF!pp3LeuS47Ol=j3{cpO#^dWBddGk=L(eUj=XeL;58rF+M+8?yz}HMQC5 z;PJ+ygsNOr*0YEb3J;aF%YxYg{v-a?*t5Q+lk|a>s?xP=(bk-+vNL^=c~xyHB2~(- zz~@s+M{C()IskksO!HI9J!k_$3v6U;1%YiU+nl#mikHg-Hu+e+Q#7LIK%GUDQCf{( zNLU!)e}SL9Y(SAwD#SvlBpiE*(fgaW2*c}hVkWsgk_{k15Y!o$jz|+2u=py7WE6EmIz(u7 zTe-9)M!>=_UQe$*9f_2-LsnhzE}IAJB`oJy+LgTCXRpu8-utHPv)K0vxFr22~clvG}ZN%Fo`;F&z`Y!KFU-22u&tn*gY2!l-_B zmNxEaNgt19kr{W;fYHk={yvHk{hmOJ@FB@ppg#&WYT<;u1#;r|Le<8}AWrYEF`dxB zk6de_6GoJ$os84^PE3hj_bMxV4H;<@JZh{Op9 z4CUTeMB$Dw!D<#`i+YTX=$-fL3JkRm{&s zrRiQjS&tf1*g)!+Po;|s0Q^#;3jk!OxdnWcuplQ_Sjrykub zR6u#I!kIg6`KtPEg}Riy2zS3!w6#sXt?CsO32~893M2hd8Yg6*d}Z_8nDLYnh%koHsW+ghxh{J;2cWr#4yT`$^E61qw`nKC%8Q+*?jtJiZF|SBLbjIl#U(i9h0tX$!d5CQt}A&u1#_@&K$J1%ty z9@=D;N!JvT75+yY4uUwG1z;ALmYk`#h=%UT?*uH7*TRSxTQdf;kr}Dva{t2}mXznK zg&I#WU4iMA!}%VyIO{9yN@PJbQMdD!8@_<0XyXFoI`d1xFnda=fBs~7kqfb}y5Zp% zw@L#UbVOIsUD)4BZ;C_!1PswSkiqa@nhGcor`ND|MG6LX$wQT~gTOMJ30vmR=K?!; zz-gij=o1bK4(}kq#gvqDFd7ta@|$y0X9rPEFqRAKWkk-37*L9RAE2h7Xu=~(Y^;k@ zo|e09vM*9MXar8-)sAZsmS&(MHw4L;7{W z6I`}|N#)e1$~8OgXkS z{41I-&VU@TRz!z%ty_mS0i*zeYt{1tq!toaH5L@E9~>_VsujH&wS!>aeQyxNG^6RK z-b9gv+uf#k9Oxn=)U-ISzD_S07^WoYy_nCiF+E{tq!ur76)Jwo-S+%?7MFOk=>{_ zI$KhN)%f>?(Lx^>^dP)fM>6f$<2t6sN*r3;cmd`tE`YMwg-up92GH|00SKc+b?n22{w~!%zvl5C6H1q@ggJ>m#!PKH zuBa4>iOLBptN_TDylwzGH4Fn-`Z99p<|UooTu0xT-%TXjPz20rA7&3{q(b-3FEhIb0(wMA zTFu+mel~C|=03`YW%(^2L3NB~`rH}k!#t!z;$-7RsbFnauv&7o5set-5J4+S zX$yW_g7CAn&+$ebB$$jR;6Ot6NuUET#qLZ6g~9ut;WOPyZQ^<+U+77s;-pDo-9_Xx z%MA(s?1BtKR;ri{vjP25?JfC2roR{A4FnZ(L6scp`ov^}b`)ZbWZ+(8oLN5lDrAFR z^%d73#D#nC6Ux6`kS`kQ1j(fh6t&2ap zDPbdBIT)Xo)?r0+?o@?UWoVmjM93ggks_HW4h?IbA=_n95I3^Nyy9SGirc6O#q$Ov zt41eiMq0}4c1M8<51@d9YW0^rkO5}pZ*4#vbFy4xw83ATKIDElz)|~!9sq!V!ixX8 zPky!*y?ZlPr~~K_p&!m4QQt=B(8JvO+o>%o{x`U2s4+M=xTvA`s2(p`)VC;Hv z`uG`L5yR_8qq z6!&ifd?FpDJ;ZfnCo2>|x}n3Z!kkhBRRNKwhWIW@gU*H_F-D|p>Ge$EgntY3et2U5 z7}#f$Z0ULfP}_?ocvPs70OrYWFnvbAY2t-S`HN+uoqi>xO#cK%L$dIs(;on#S<@%Z zN(3) zsIg|2LKjV4jM*K@J_C!Y&ZL_ufP>PkzTkOcU~rd~uHN)WdUdc8DoL`%kR9lj12e(s zVVR;~WWI#7=#Lfxt*-;b@<{{{qfnE&b>fPRWc4XvXfzREadg7-Gja`DaoXkLU0n{Y z0q^1#}88 zBa$QhGOb^$CJD>XfvA1U5lw`O!b~p8K{G&}DJD2pCc4dtA=|JhqH;-zW_t=8 z){;B95@&OaKAQ#i=Ph;^?jW?pVHqqoxI6E>^+Tefo{CT$ScCTsv z!tl#p@X;Gy4VuH-VK}>|J9Hi$p;KQI6#w&P56Wf1OkSJG<27%2qyG0dt7jl`#v@ZA z5BA@hx4z->Z~Vn|KYU4F6dKC^n-sx0gJ%G(~?c+DA4zh-95<9E!xbm-oN%6et`yQlo<1uOKp zX#1gO4}9Z)=<$71zyA2QU+{K4KI`rt`P1DW<8gW>3+>-@9#3~ziHY@u8B=uQ#D1)& zEWXrpa%HvYJ-esDdN92^2SZ?CM24x_<^m6M4`$&W8C>r-tN1nBALND7-PbS+cJCHS z!kMzn>S@*INlvD2+KCFII+plt>0gD(OQjeCp6+{+Cy;gUed-F3!X*%U->YVoGh z*rO*XCdm=`%(j7BbDO;FW`!cXv=yq2Ra`9gCW{$*VF|-e1V2UtrjEX!Wj(@EVTY5e z98KQUX-KQ02~=cNzc*`)v3obRVvB8I3c?(OSKZXQN8MzV)5TEPg!_6=Z-(VucgU_0+K-y2L%@lU2x1ir}#a72WTxtKUp_BYXh>-JV&p?Yc75Ehubn)Ah z2Wo31UwUbrZfkB0b=M0>={F-{8-9#zjLzqg zP3XxclYe60gsWeO5152bL)1rFMNiH=WV!uKSC9PIYFWZVk5mlnQZ0-X46$#VH3Jo9 z*J^pEq=uA*pSmUrAQP}#NH9vDzyhL~K#F4b6KxWEpk29DBmsgpwTEp3DhsV8Pr=v? zv3`X>uKzg4!we4B-fZQy>_51!>tvSzdmXO22IT zoDplG4##bXVqVlZ8@$846HkzE!uC)T)@J?Lu(kpFxi}?Ot&`Vpu)Sq%3Pu=*kP!V; zKt22fokgJ1^O>x!?LIp_Tz4P%dQc4)__pB+|69W)$5d^H7&+C=c{DN$A*)?JG1H6! zV22fnYM?c53Fm9`RwRnVX6XgxFaZ15meL6Pltt}i!8Rkp6%dT|8b{FH`&{_P`f(yB=kda37bL^qC_<|vlIYVp5#}ZMi%Ur;dpBF^LHasL#Y1$XvASOvau$$)dZkCM zA$(ZlX-H?qun6#RtZA`slnJaDT`2ybD4zD>bazAskA41bdp!z!tWO?pGd;tePWF(D zaUcT8BTG#oVG!ALqs!Rzkp&~&2WY$~jsx^H9_Z@@^x|wdtBs6BH)e})XxWl$=`=L4 z_l<~pyDot9zOu^CQ}Cqoax z4zrgIxqk>J?#hNmtsJ;v=?ng7G1ghGC0)`y^58Z|O-Ti|Af#KP4$bIF5PjgEAVW{n z(v{%aMv`}e&=E>PN?SaW-4%Oc-5CQ1ma&a0aPhU6Fj*67ptgdQp}V$>WenaOaOpr9 zUN<5yqik^R8%9X_S6ib;7$OVA;93=9PzHd>xU-aj0=tk+G+wEPpbmbX{;EhvP8Sb3{D$)iGzIBfTyO!9W@|TK zkseQfgKYb#d?}+$$yuxCKxBio(>JO^T6n1GGOklJkKMG-k9dOOM))BD+=w4mUt-!y z+-ZMz+TUG~m7Md#K51z?e2sr$G%y$DKr9Emd@;iboKnoYC7 zJSH0H$qbCFh6>cp`Zf<*GY>OYOE%^yai9M@Yo8As{TVmKqK$iH14Xc&tW}|jSqKMV zREX3iUZkdoRE|!R6Azl`op)Ktsi_82J~qQpjKFOm(RO};ZHF4Ml35gMX})lxb5evB z8jHjWp%ua65n61?NXzBtN(n85Qz5iMNlOW>o*XbhN3_?Ya!EXqCZQ!w4L)p-q{2~4 zq2=cRLTg@ik`(hA6c?v7I%p}hFoe_`{9tE8l_}h7f7H8_8Aa;Qm-F)w@LTBmc78Ed zGBsm{Gh(!B;6Nv-)a-3USo_uh%kpIkC7WAoV6&Ktn}3>JjLn61V%=o*w# zM@2-%aH5lufU-vkTQptlhMk}cDkdgDn_OJB7ICbZb2S3ao{VWk<9CBN)-kS|$xb2Iz(o()0CDWiQ*n@9OB8!^f&-_JX&Eq3AA3;T8OP_Zf{h5LAt(icTVHShC$ao&* zY7tjw*4Lq1IE4{v;`$&E5vi`i(at9JMOe)69oja)2;HXx>ex}&>c=g3o&EGlb5K~& z5_+*Y8&(^FY2TMw1NMOZ-DiLA4gEMwD@-UIxzijHniZ_@_W~O{b?cieaD%_2ysz~a z9xp^lk}zZ(p#eID6f9S$MiU2pxjAc_iy|p;$o@VSrth~34ih~Y%Vl{HlJr0M#8!|qPt-Q*QNEYdh7FGDa}3Z0l- zcDI+d!6ndc`6sUVz#`R)x4dz+36C;zrf=4wWD>-_yA>&dcT2P1A438OdCZ!hZ!&Yf+i|$AO9&UJtZma=D`w#yl zf|77;-3T4j;Hdr!Fsy1SO&|*SW*tp*UfA~+;Dk2In%gmBgAJQzuN)?82pFU&P?4MVWStMlP#0zc7ugEY%qg5SlnP+ugVu%Ag#+=c z<%uloW%XhwC9qI9y=40xF@F=Bh;VcW-=49jX`6R*1Xy5H3QqZ*+xNeFRyr5#fDg>1 zIgUT0@!8)=FaWz~peFMBSl!R9Lv@DLQ={E1qQ(BRH-Cj?0)&59ZpAet8l?+eJ!1UhQ+)iwEICLh+oYVz^Src}0oeMGVRxF85o znh~YHLK6zDWQCuER(S(Hfx^Y+6s?-Jq7?<>2~_o-HO1eD<(h(!gdX=h4Pm?LsPK!l zdH_@R*4bC(cVC^A4};oU!@oi}epOO))6_sIWu3HIcGS~7)ZpgW6)ZkX*EvZ-25zuj zoTA|~=6qbjGK0i9^ee`_R*ZG680#8qdC@eRi^c-lM$@Et9Jir5+dFH!BM*JzpY0Nd z_IYIYG)m?TEY^X7#a5-W99*qMIIWX7%+f)vvp+%WanZWgW4s@V(VtK{2>sAtJFUiD zMU6X(8Yhby8NHt3B|y{N;`^-ly+!dmi{jH1M}ctv!hOTy5eGdox*80NWDOwG$Z+#; z%qLc0mU;F#nQe|9C@?n*=0tHUg>3Y}jZo{Rd8f*KR^`312Hz+FqKN&7PqVa+M%~tI zA!4Yop-P$Iq)qQ3g_ZFxZ7H$v+R3jirlGP5dT%SDC4EKvh)WInUbqcwf2}e}-yz;@ zD}EY3St*lR^W%d+x zqLgY06JiY>juPD#i79qvoB=nhykf1m9L|LKHDj$PuXa5AVXn6%12rq7!F;GvF*zb30O{FSOE;ETu0Et9oeJh}^+!V)(I z>({O+h!6O|BF-w5g$M^?{<6W|TC6jxlYY|~9P=NN&dvm4bugoJ_k2>Pk1^;TRYiPo z-U;sD*m!00*F{b{lYN}Sw6&_965_9Cc9<3Wtj@RkLPAp0V}}(`XyUboyn?(~_efUj zND$aTYeo0vtp)A!6Zk!C(u-M9otnzq2Do+~bm+Dh&Zcb%>k3S7wg-m*CxTnZ=%f3|s|4Nx3PjRxAz%du*&kj96@3`Fx2IaIn^cGI|s! zoXjiBbRZVEvY$=daIFObt6`?ogApg$nN0GV#ek)W1UPmc&@cFnxJpy3*?!@WLOwqk zebm-jcp+fx0UC-$m}VmI=$cnFcK>-q@|3@8M>x@F+B+33@%5$NwKjG)Om6dn4ghL-m+qqt^bDoGQ2Wf0y%&-dos=7RMBf-D5XEW%~QN5qJBuusBE#8-}lKg`6VT zRmzx7zBl7SI4y!Y=CaUcPdX|?7nvL&@a1Aq#mT*%>FpVg2A1l|Q}KQPsVCWNd+ORW zUW@J;(o2>bYxO>?Kc`B23FbMRFo06md)-=C9&p9Ha-te!-mQckX8=;{NB*q92S<@S z;O(}L?nXAc)2>Tyi^JA7ZXW#i@BQ#Msg+As-I3GKRdH%jsWiulLhk&mFSG#ju_=!F z7R~>bK2O`>7X72iuN>96PJvr`(DkKH>yB=<_p2p*L~f`WVV#=Q{h0w`@)7@{UN+Xv zgY3_Wa|H#E|6hI+Xm18?uAW6!HZjChxQIQN9ACibTbwE>dJ5XJ`YQvjTSEEKwWR|* zHFWJR>-1L!1lja=Lx$uBm&60b%b(}=#+;EfO3P|jxp-q1{JMsTP4V*;SArEXxfXBo zKIfdlLrNp3801^Ehf8!Pr$_X8`D{Zx0S*?r`VEw1;f9eUxi|{te_|DloueQPEXX;f z*Q{!~yX9*d3*Fs#5>M>CF^||e$%5_1@FW%imE)i5scx!2?%N!1wYzHBJzpR`5sl&} z!{K6T$7@>kFLV!ZaPlN~Wa~w8TuST{F7`u&fw+cEO*XFKfB68-6s+yYZ~V{NXti;| zEG)H+$-}EJLCqLguRmiqcph>Mhjmp!mFb!{mB$CC{W7ZhGIu1Pd{J|tal#)cDO>%Q zBOJ%&SoF`o6&r%sm8v}oD*7JG7(^x&qT8Xr{`7x?70lHXQE`A0#FEz>$h)# z!t~PGY(MhQ5|x}Sk`6X-t#&@>9{y@umpSIOnG#VCP7BX&`m1fF$1{0-2Gaoq`P+Bw zhcE54^cgJOkNKk0%xyS&*8gA@?Vico6rawcY4{*&U{>2bjef$)UcPcM&R;FJtEyqH zsDbhX&)YrC|3o?&jYcyRW=gt)KDRqyzf=&o*&^v)pJZwKinKe+wCTJK80L&7JW*vi zt!%yxx`(jGu9gZv=nfbel*nh)y~Ep3LE(e$ovjPa>_Jop3ZP@5>>M?&JIi4wh{DJT z#`vfrb7hfhj#K0skp(gprnnn~fI__8Kqj1=zu^p+a+Ckj#~97H9rl}tbT|ul!>e}r z4=}x*#Zv%oHLf#g+Dzxb-CLC1XTRVuB=OE7ak@;5;8J(s9O35RQCywo$8@oosDah?t5xcdXv>AfN=aJ6)n-+l)F~ zWtm$|fC--oVxn`wZ6%GaeoKu27bT^eazT8H?%Yd*84W>I6}w5>AFO8A+=Ep;Ray|d zWkghqP9sc!V)(aE4M|4Ec}ggQU*s;-ASqsHNj|QF=3HdpSKSh)Ti~6JqT~W}7LcOz zLm*|FlR#>Xr;9nmhj4#Y2dN}iJ>)+AT*Q0TBHNCExgY`4Au9Yb5|UdZB9FPbceOhj zFMhLttxvqtVq4I5Vux`q8qFHH(({M~U5t9EXIqv;EKDOUtw%|YP<-4otXr>;Ltx}y zHQ_dz>!WtGnQj)%xG>?7_0UvSxmMLc+(GzfU+EUlWwk7GrI}u zf`neuV3?knVe+L~`Wk30fm!BV?Fkf{`JZx~pbs!S2vMpraKCkx`z*Ews6JFo0ad_h zfl%&|Zd-C*2&DmO7U7cn3Mi8PWRV6b3W8}Te_R{RoWW$tYTRYI_?;1#nx;^4Ulhlz zkImbVp;A2jU>+mR0cm~$%f75}DURe1cESi#zX@&`@wMRPlm1;clGh*X1p2&Qsg{Qz zvX+O1+5{E`?Gpg?v>kz?FI?7|a6UT=3qo5lJktp)a@AYOul7wqcSWu_?jm#d)uf(O zCHGDAmegBWa>cNA3?jFLts?D92I*dqreoP)UC(@k!RSvqt-me%yJY$gs8PfoNb8S0 zZHCEbLJpYINl-6EIA#drI?H+aiCYqR(b2itOG^&u%jc9!xW(b(<9cjV%!l&aqQAnt z+%~e+kyaP1MeV9JofCkDR1?GNoy%br#J&JiSuAp7jYSj-Yq!Hvx2{J0)f55+VpO0; zG7*B5^-J>esE}kqgFkv{q4h%RIO~P6U}c2LuOesVp{+6e)zfO5#1*uF#XO0L8u`Uq zj9bHIJOZHA`}2nAz@$;=rIC&IvC_x~DU%QyC`T^9ieIw7>(SP9n+oJ48mcH^S`M^k z4)EN#q@=(!72*!`XeyS~D-L%b7-eaFR1wo!dW)npL=jOJ8&dxYmE(7B*mfDledxl? zngn60p$sr0yN!jKSNsfLA1ma{p;FF}&pliu9xM~N6vijvW1crFF%*?z$P1yU5<*QA zK=|jvY`}2S!18jZLRJg0Lt`^pY~pYlDz>gdBUK&*kIy8?$yQ-hQYS1sYf>l7dXVC! zPLZ1t>J~&9L9WoQavLdFnxQkouap{L(4Ecu#uC12fZkQ+&6n&zC>ldHlh* z5MmY&no?*Vax%Wv{}7Bj(aZIcn>BGbG06hrIk0fT22_2-s4>NG$b%Z!C!7&8bv^eZbyFmWaFT|H+nkiv8=W^X!ff)Hs+%0+0`>2EFQC2 zX4H>qgG1Qdbi9AJv_1Q88;fCjc{0q8{<1|)C|78T8}VZOW(%+5XW>RbB2uX+JJpT9 z?QHlujouI{%^&LmU27Eum&VsuTJn+r-P5Hy;dOg?IeJCXXBEgFo%fGrP_ zP*7$4_5EbkAgGB_rM_{p4}zj|+y?_m6>y^()xnna1-CNPu@bv z3b@?u zry{mJHVAx}e9%&NOPGVA-~w;gxL<+#${zn0XILJUu6Eb_R5Q%;1c>M-N*Tt3?UiC2 zfJzqKY6S;f45Ytmize8F+{jvX#V;01RvpHOin4JrEc;npdNq_~Pu2C;%)rUCreQ*e zGOemE_f)kS#UMjH%80o}S%!APV%Z$UGQ}|6>{EWNjb#K15FoITl3~It?YxuG&5%Z= z&rRb^HsApkd}2RheOYn=v?XUcz_Nu|!7wzTYJ;^fih^3Xeh6^MB^l_U_o7bY#>P+S zf(X`{LW?rK4j0lB)a|c?ktD=k#I_dfYqwTad^c83ri;rZaX;Jnp_4?El^_B>41qEGz@_si2~mQ72FO6`>_}WtjmwB29(ECB~qj+ zF!@tec0~HBF`^elmLQZzy4V5w(QwVV*+T7A_Vw@iM7RF8+q19#JNE4B|C~Mh`tLLteEm1t z^Bi?H+_$Z*UH{PMn(j6{cEjZ9I(u@c(g(T2unrN{o!nP3gIb(+&PevY-0S0z`HzrS z2)|>UKJ{x%&u9J~KRGl=7Hfg~Joi@STFV~LLtB}4{2DRBxf?jwel1iW8&B-%I5vw2 z)b3-AFOR-tC!Xp~?S;&MIDHLuv3K>QE43EnxUmb8P6z}zI(n9z=~O^lTYeTBU4X+% zF|RL=K7S>}tzTNA6#zGwEKSW#1*9mzYYDuD+EU7aEBz6MCU!?62wX`jTa2m>v&82W zR!_IyXwFSA_c`EYkfO-|7W2`7r#%<2%SD}S!H@LvKkU$rV>a>lJ9y=JTK=rlR+YNI zkM)*DJlLw4mcg^;cv&??RE&c|$8;j3L6lMtAIuLR#qsS32%oUifhFh4@SYZd21#Z3FC5q{|mA-*( zzZhZYqN|BgRhRNioEmi=-TrC;&N;}oWlU*&Q0=7r;hAE1u@NKD$1vQl<6?!#om>6k z{N(ESm#7U|*FUheKm*Y83V+8RdIc`c@AI^bk~$e&W&;_B{^7|vVR$sh5{zPnb{n~@ENfrBZ|;W zK73nM`7m*MecM@ z!3U?;?0(7n?p(b2Glb=c*1T%zsn7qTi@$|YtM;k4)qb$%YlNbxnoO<9c|eTLOs`q; zp(kD&{KY$D=o+3u%gcrJp?oq2VyQ^LW%$*8lSB(5Y*6PLKFV!|D zRJ>-R4Er7q6)cU36@y6e^BSZ=-fD$|yL8M?eCU7j#jsW(Lvi46kyKNG&;t$k zo%PgX-1*0VuSN0JW5EAV9#y8N*UC;B?E|77B{9jLYj4+Q#qS$ONHHaZ6#IR{2tkwQ zcLzCpg6_mU-7!Y)k;`Kt0{mEcZuR54b4+JGsoOD&@*b_IC?|kJE2|Q%^WosS*q(ZR z5?aN0kEV$prt85#0XP8|NTmu4RaMZM=bJtC7#Mga>cFHu52i27QvMD2O|XT@^~ggv zZHI({^h?NBx5K{>Qj~GUV{APAcqlQ2bv{)ty()tb zo32FW0vo-tR7G~CsEEl@+qyDQOHoB~Omh>c$#>c{uFyoDmiwBRo4r_`duQGBnvf|< zMLQqYDy+e+>=0imy1)OA=yI8>ju%1l=0$$*z<>yOCZWV6R?DAx#`Ez^#;xk zf>OSqtZ9m(p&1ENGa#pgGDv=weaN~SzREqk#|-E$zOIhyoyAv4PlDNCoaLH9*#mY{ zD|J$ek#{@MO<*t;>qRR7ZD!%~=wM4-N=(%#SVRZ0_SO0aL8tF<<0{s+8ByC71Zo(Y z_B>#*oc9*xjnW#7-qH({c<7yVsu0lhS97QAZ*O@U7Im+4iiB3n&G>F%b*Q>n++|*N zhC$Blq}#k2n`LKC+%FE@H8IueqGfDN3+y=ae6UVXNpJUZ0;Z}G)@g0^@-ccT3y~pe zUM~$%RgEV?8_o$vXN{|Js5VF?O69+noCh!O7W&>;9+SfCCG`=XGU zPHac9?m-WYwuw6lDWr$s%Ijg)RYH?J+tm}@8Z6RCCH`^Oqoen1?!Nf7d5ThBp(ynk?@un0Te6l0AqKz^$%q(4gqh;y#~W;=z$#8B zRd9D8Q@9bwdVa>q!#Z6K7K}Bw%VQ)Mi?{#QSa^v&PWE@7S9Bj| z!|FL*;bw!iTA7B};>_`ACu_^d*nT+nTUKXCg}T8iqRZGbCJplR{|0|{dX(sc?(07S z`t-Ch*1*~+-Dx5A!sMZPc-l61=;s#@bFBw;yQ_gS~WltIBJQ?5h?g^S@58pA`ZpstY{+#j7 zb0LYzNc)hJm~l4c*snHrPJ>HMF3kES^2|W&xLJ6Dn(X9m5)+6$KF`f^7}y?{xk(Nc z+T-)xtSVC87eLa8`ST^_X24&ko?ir#Hn=VApdz31OA1&Fc5X(GE z7azAtgZU40i3HQ8{0tH%se=ai)?%HVsjOL*tQ5;*TI|-LjYV=Up+;lDC`ODvokcGY zOU_Oi&z{SJB`!f6St33}ryi3y%xS-45*I4m%F)I1akc`FPJEt@mK~kAOi@sdPJI42 zr`V28KlKfR`=IG0x>jr=-(G&f#Uk+Xguw(S|W+|Fmpt5Qt0zF@{tCnXaMsEStmq&K4+(0 z)S^inxF-d*;twFr7>QEGwv2@ckSbsEI={^2WTd4{~r_ zz6dyyWYI27R3@aEdQk@YwKCfFi$E10sfPP@EJp|HSr!*r zp&7E$eS|GeF!3lo;1LJ9OmJnf2TtcQ8Ek6Oc=_x)N8aek!w!qoF(9-tZ3rslPo^%} zcw19NmY&)y133{6^MC>pe}g(i#{xR3+eB+yF|I2WpsRpe!e!Otqp4`-OkR=~uONz~I&m8Aeow_7j(Y%k-2;UMjq6shLIGPn3oH;ey|D zper70TfJQ({WYBj3Qv#ll;j9%MATyf71zCSH)gvg_Ul^vNlC_04OJzJaIK8FT~`X# z&?tn&$|&7HOUISihy$wzWrn|s{5xiJggMj3HiQLVax63Ms`q|kw#G|5F`Bj>BA@49)0Gs)}8 z9ia~*-HS6Ufrh$hl;VNg6<+0LKgj|saDRsDwD+dH!cUF(>;N7QnFTSJ%W9^b+EisD zQw$R@q{BdA2(S)461@bX7jX`Ct*)=BGHIHq^U4SdAWu0g=%H_5PuO!;_XUL%fdrI^ z?7){t2BGLUhNU46)0LX(nz;w}H`RRlFQIG+RqZ?`cWLXxqrIY|eml5jQADFrb&9ff z2MvNCeJs?zgVn1Zq14pU?}QBhjzbT8^KC!{jc8F>eY}gq!thcQdcPixM8yyeMC$%< z8U%1%l!~OkkXhvIkOw#swjNO72exqe3zFXt3k%IM+6mmU@zid{fku`gsJULql#UQ% z5+(f&Lkwedj$U6G5G`A&XDR3ZABLpluQf3}GTB1~b0WQWL)^lOpkq>V9utcW_?X1+ zUTEY48+5RwWB)TO2e>Os&5;vhgtrfgQLOe+qgaSS{iKSkl@?OTQ? z34UB-p%N)z+qjly*3R_X)_zYN+8X56o^zs>O5l@V;Bos;`sL^pLc|Loz5NYu#BHg* z{y)6qV^F>SHSY|1k^3vWVMHn34)TWK3jF~R@$$1Fq8DFy`ww8J>1ihXbde^q;cue| zov4UijCKjpx4e=h!%^h^{IC%^k3`&u___ERhc(`s?yPZ`%p|Ir)){A=9RzHzX03}5 z{^Ikx$Qmn$u2d2!KJr6JMJ`o3&0RtJh#s^$_QLnGnT>;ThOLf0A5OURRaRyvD|26u zgCjc`ikD6HC3#;tFb`(k$18q(aWuhe728D`A_lh+=%uxeuCy+;-8NGrfl@&0E&}6_ z))RUtk9nOJ^OjON^aY}5HR;WL+r%SSE*8^CmIOsI$Xdx7n@tJ|jq7{3!S!9FBO^{> z81!0~OLL%*uPn9$w{ilY*xx9=HZB}No6^OCVc)SF1ZuYHV{B@7T7FX0Bn8BH3u`AM zs7a!c(Y-h(&`K^03i`1MxliGq@I;t1TzJ}-A%$8BwSy@3ZW05@n#K z!$n0{B85-;T8McAQI|z5e5`^5D}M{IUr%9H#&KasNK0gn{fH3hIa}I{3^T+I2C0zN zG}x}xBa{D<0^)UL0qML2ZwvfoNAtKF!{W2HlMnRA?QJ3F8a$>FFNawtQ>EOWNuCus z0*GP(h?4-gd*1nq&?v3;eSIiLrJnM* z+iwqfL&^Yl&3C0uSG1^UGoJ1Sav$I-FsT=o@a}Gc8Cmwx$p*80_9MD3gt!CHpgVm3 z7cqddJd8zFmyMI-yLGuGEgIZT4V8z z>9ZE#A$I#%^^ltxZeLb!A6xZ$=p>dZVP8Ou7!$Dp<&@xaLew1iCtE+nhstfI1X^e> z>*4H6HnNgx=@!6enj5aw^Cma>Y`lS|C7Z6j_FR=^)QWEFB0m5lzFMjYu{_Ek--g>) zD5GUP6j`$ITK<-m@lIvHS>=c=2MI-Uypv;Ge6`{JlGzXQa9@xYf*SbTzmNjA;6HgG za2;mK98%^sydwdYwuemW^iODmE>RGomkMDs?16s{(l=!mb%h!afS$M}Xn~6W&Xsg*d%tw0fvA91QaTpL*ywMrX3(Ihb30#Ypv{!>QOm zN(|kH#+vns3)MWXx)oeOVp#>HkW9j!jV&fW%|l^uJJF2MR1AG&Ku4(x&AGQ!&q44j zI`B5|F?xV53yOukStCKt6qr(+p@)~%-u7=HVW3W9Q==e}WdA&!(n9(&NV1M0SgvyW z?lRRL9>3C(pnfoI3k!X|htGc1=oH)+mt2@K^4?2g`EbMP;K%R>5ikF_7sIn!hNsZY zd>9#!{xxen8nl6`F`h^p5%(;A(!Y%)akx2A(}-|gXiDzRn|?;BC9;xTOBSrf$omDZ zmbPQc@oU79FcV_d5XC8E3bQqq=kGRmg)JcDLQRCEz`xcUo9K=UG5G8Htp=fMU9w7VxK(IbZ(1LgNu#q@bwuXqxvWhgJ8@;k2v<|`q z*ZM)F(a^zM7&W1>QaUQ4>cP!j$Kd9pA-I8Nat$R_M5A6=3(_;Sx&z@f8R4F#wr~l{ z>*=fb01d216~rM91W9enr7?(qx+T}8e+4OI!C675r`olCh@$j`?usEsjs7+`1#cIz zspB*d$ciNDkf%7qCkljY=$Y?QoGfK6EFf9Tek7Ed#TU1pWqtDd3!)bK64X43S|c{k zRZpi2o3BQZLsM=kbm=NOCTCKd-)wE!&^?@eUN1qFlABf5q8}EtT2G<-7K-n~il~en zturPC`zhZJ>Wqy_*-|ODdrwQUC4U>KkJSn7W{^Y2ay;ea-?rJd@-D*he2QH-h(SVj;bB zeh+cFisge-IF%{GVKSgS z(ixSfZtFn-dZTKhq|ONXGCdj3W+)0Gvz3%jSx>E&>vVO%YUW%3HUE)nHaV@TU!A^$iD~i1L{GkUD4#Dv z3-p6xB6Yv0n!4ijB`m}}##^~$9gZ1iiMqS+*)6*�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%0AMZN1# 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 M( { + var _scriptDir = import.meta.url; + + return ( +function(Module) { + Module = Module || {}; + +var Module=typeof Module!="undefined"?Module:{};var readyPromiseResolve,readyPromiseReject;Module["ready"]=new Promise(function(resolve,reject){readyPromiseResolve=resolve;readyPromiseReject=reject});var Module=typeof Module!="undefined"?Module:{};Module["locateFile"]=function(url){if(url=="decoder-pro-mt-worker.wasm"&&typeof EASYPLAYER_PRO_MT_WORKER_WASM_URL!="undefined"&&EASYPLAYER_PRO_MT_WORKER_WASM_URL!="")return EASYPLAYER_PRO_MT_WORKER_WASM_URL;else return url;if(url=="decoder-pro-mt-worker.worker.js"&&typeof EASYPLAYER_PRO_MT_WORKER_JS_URL!="undefined"&&EASYPLAYER_PRO_MT_WORKER_JS_URL!=""){return EASYPLAYER_PRO_MT_WORKER_JS_URL}else{return url}};var moduleOverrides=Object.assign({},Module);var arguments_=[];var thisProgram="./this.program";var quit_=(status,toThrow)=>{throw toThrow};var ENVIRONMENT_IS_WEB=typeof window=="object";var ENVIRONMENT_IS_WORKER=typeof importScripts=="function";var ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string";var ENVIRONMENT_IS_PTHREAD=Module["ENVIRONMENT_IS_PTHREAD"]||false;var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;function logExceptionOnExit(e){if(e instanceof ExitStatus)return;let toLog=e;err("exiting due to exception: "+toLog)}var fs;var nodePath;var requireNodeFS;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require("path").dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}requireNodeFS=()=>{if(!nodePath){fs=require("fs");nodePath=require("path")}};read_=function shell_read(filename,binary){requireNodeFS();filename=nodePath["normalize"](filename);return fs.readFileSync(filename,binary?undefined:"utf8")};readBinary=filename=>{var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}return ret};readAsync=(filename,onload,onerror)=>{requireNodeFS();filename=nodePath["normalize"](filename);fs.readFile(filename,function(err,data){if(err)onerror(err);else onload(data.buffer)})};if(process["argv"].length>1){thisProgram=process["argv"][1].replace(/\\/g,"/")}arguments_=process["argv"].slice(2);process["on"]("uncaughtException",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process["on"]("unhandledRejection",function(reason){throw reason});quit_=(status,toThrow)=>{if(keepRuntimeAlive()){process["exitCode"]=status;throw toThrow}logExceptionOnExit(toThrow);process["exit"](status)};Module["inspect"]=function(){return"[Emscripten Module object]"};let nodeWorkerThreads;try{nodeWorkerThreads=require("worker_threads")}catch(e){console.error('The "worker_threads" module is not supported in this node.js build - perhaps a newer version is needed?');throw e}global.Worker=nodeWorkerThreads.Worker}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1)}else{scriptDirectory=""}if(!ENVIRONMENT_IS_NODE){read_=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=(url,onload,onerror)=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=()=>{if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=title=>document.title=title}else{}if(ENVIRONMENT_IS_NODE){if(typeof performance=="undefined"){global.performance=require("perf_hooks").performance}}var defaultPrint=console.log.bind(console);var defaultPrintErr=console.warn.bind(console);if(ENVIRONMENT_IS_NODE){requireNodeFS();defaultPrint=str=>fs.writeSync(1,str+"\n");defaultPrintErr=str=>fs.writeSync(2,str+"\n")}var out=Module["print"]||defaultPrint;var err=Module["printErr"]||defaultPrintErr;Object.assign(Module,moduleOverrides);moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];var POINTER_SIZE=4;var tempRet0=0;var setTempRet0=value=>{tempRet0=value};var Atomics_load=Atomics.load;var Atomics_store=Atomics.store;var Atomics_compareExchange=Atomics.compareExchange;var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];var noExitRuntime=Module["noExitRuntime"]||true;if(typeof WebAssembly!="object"){abort("no native wasm support detected")}var wasmMemory;var wasmModule;var ABORT=false;var EXITSTATUS;function assert(condition,text){if(!condition){abort(text)}}var UTF8Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(heapOrArray,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heapOrArray[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.buffer instanceof SharedArrayBuffer?heapOrArray.slice(idx,endPtr):heapOrArray.subarray(idx,endPtr))}var str="";while(idx>10,56320|ch&1023)}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&c<=57343){len+=4;++i}else{len+=3}}return len}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;if(ENVIRONMENT_IS_PTHREAD){buffer=Module["buffer"]}function updateGlobalBufferAndViews(buf){buffer=buf;Module["HEAP8"]=HEAP8=new Int8Array(buf);Module["HEAP16"]=HEAP16=new Int16Array(buf);Module["HEAP32"]=HEAP32=new Int32Array(buf);Module["HEAPU8"]=HEAPU8=new Uint8Array(buf);Module["HEAPU16"]=HEAPU16=new Uint16Array(buf);Module["HEAPU32"]=HEAPU32=new Uint32Array(buf);Module["HEAPF32"]=HEAPF32=new Float32Array(buf);Module["HEAPF64"]=HEAPF64=new Float64Array(buf)}var INITIAL_MEMORY=Module["INITIAL_MEMORY"]||268435456;if(ENVIRONMENT_IS_PTHREAD){wasmMemory=Module["wasmMemory"];buffer=Module["buffer"]}else{if(Module["wasmMemory"]){wasmMemory=Module["wasmMemory"]}else{wasmMemory=new WebAssembly.Memory({"initial":INITIAL_MEMORY/65536,"maximum":INITIAL_MEMORY/65536,"shared":true});if(!(wasmMemory.buffer instanceof SharedArrayBuffer)){err("requested a shared WebAssembly.Memory but the returned buffer is not a SharedArrayBuffer, indicating that while the browser has SharedArrayBuffer it does not have WebAssembly threads support - you may need to set a flag");if(ENVIRONMENT_IS_NODE){console.log("(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and also use a recent version)")}throw Error("bad memory")}}}if(wasmMemory){buffer=wasmMemory.buffer}INITIAL_MEMORY=buffer.byteLength;updateGlobalBufferAndViews(buffer);var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;function keepRuntimeAlive(){return noExitRuntime}function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;if(ENVIRONMENT_IS_PTHREAD)return;if(!Module["noFSInit"]&&!FS.init.initialized)FS.init();FS.ignorePermissions=false;TTY.init();callRuntimeCallbacks(__ATINIT__)}function postRun(){if(ENVIRONMENT_IS_PTHREAD)return;if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnInit(cb){__ATINIT__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}function abort(what){if(ENVIRONMENT_IS_PTHREAD){postMessage({"cmd":"onAbort","arg":what})}else{if(Module["onAbort"]){Module["onAbort"](what)}}what="Aborted("+what+")";err(what);ABORT=true;EXITSTATUS=1;what+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(what);readyPromiseReject(e);throw e}var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return filename.startsWith(dataURIPrefix)}function isFileURI(filename){return filename.startsWith("file://")}var wasmBinaryFile;if(Module["locateFile"]){wasmBinaryFile="decoder-pro-mt-worker.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}}else{wasmBinaryFile=new URL("decoder-pro-mt-worker.wasm",import.meta.url).toString()}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}throw"both async and sync fetching of the wasm failed"}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch=="function"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response["ok"]){throw"failed to load wasm binary file at '"+wasmBinaryFile+"'"}return response["arrayBuffer"]()}).catch(function(){return getBinary(wasmBinaryFile)})}else{if(readAsync){return new Promise(function(resolve,reject){readAsync(wasmBinaryFile,function(response){resolve(new Uint8Array(response))},reject)})}}}return Promise.resolve().then(function(){return getBinary(wasmBinaryFile)})}function createWasm(){var info={"a":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module["asm"]=exports;registerTLSInit(Module["asm"]["Y"]);wasmTable=Module["asm"]["W"];addOnInit(Module["asm"]["T"]);wasmModule=module;if(!ENVIRONMENT_IS_PTHREAD){removeRunDependency("wasm-instantiate")}}if(!ENVIRONMENT_IS_PTHREAD){addRunDependency("wasm-instantiate")}function receiveInstantiationResult(result){receiveInstance(result["instance"],result["module"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(function(instance){return instance}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&!ENVIRONMENT_IS_NODE&&typeof fetch=="function"){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiationResult,function(reason){err("wasm streaming compile failed: "+reason);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(receiveInstantiationResult)})})}else{return instantiateArrayBuffer(receiveInstantiationResult)}}if(Module["instantiateWasm"]){try{var exports=Module["instantiateWasm"](info,receiveInstance);return exports}catch(e){err("Module.instantiateWasm callback failed with error: "+e);return false}}instantiateAsync().catch(readyPromiseReject);return{}}var tempDouble;var tempI64;var ASM_CONSTS={};function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}function killThread(pthread_ptr){var worker=PThread.pthreads[pthread_ptr];delete PThread.pthreads[pthread_ptr];worker.terminate();__emscripten_thread_free_data(pthread_ptr);PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(worker),1);worker.pthread_ptr=0}function cancelThread(pthread_ptr){var worker=PThread.pthreads[pthread_ptr];worker.postMessage({"cmd":"cancel"})}function cleanupThread(pthread_ptr){var worker=PThread.pthreads[pthread_ptr];assert(worker);PThread.returnWorkerToPool(worker)}function zeroMemory(address,size){HEAPU8.fill(0,address,address+size)}function spawnThread(threadParams){var worker=PThread.getNewWorker();if(!worker){return 6}PThread.runningWorkers.push(worker);PThread.pthreads[threadParams.pthread_ptr]=worker;worker.pthread_ptr=threadParams.pthread_ptr;var msg={"cmd":"run","start_routine":threadParams.startRoutine,"arg":threadParams.arg,"pthread_ptr":threadParams.pthread_ptr};worker.runPthread=()=>{msg.time=performance.now();worker.postMessage(msg,threadParams.transferList)};if(worker.loaded){worker.runPthread();delete worker.runPthread}return 0}var PATH={isAbs:path=>path.charAt(0)==="/",splitPath:filename=>{var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:(parts,allowAboveRoot)=>{var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift("..")}}return parts},normalize:path=>{var isAbsolute=PATH.isAbs(path),trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(p=>!!p),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:path=>{var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:path=>{if(path==="/")return"/";path=PATH.normalize(path);path=path.replace(/\/$/,"");var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))},join2:(l,r)=>{return PATH.normalize(l+"/"+r)}};function getRandomDevice(){if(typeof crypto=="object"&&typeof crypto["getRandomValues"]=="function"){var randomBuffer=new Uint8Array(1);return()=>{crypto.getRandomValues(randomBuffer);return randomBuffer[0]}}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require("crypto");return()=>crypto_module["randomBytes"](1)[0]}catch(e){}}return()=>abort("randomDevice")}var PATH_FS={resolve:function(){var resolvedPath="",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:FS.cwd();if(typeof path!="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=PATH.isAbs(path)}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(p=>!!p),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:(from,to)=>{from=PATH_FS.resolve(from).substr(1);to=PATH_FS.resolve(to).substr(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}var TTY={ttys:[],init:function(){},shutdown:function(){},register:function(dev,ops){TTY.ttys[dev]={input:[],output:[],ops:ops};FS.registerDevice(dev,TTY.stream_ops)},stream_ops:{open:function(stream){var tty=TTY.ttys[stream.node.rdev];if(!tty){throw new FS.ErrnoError(43)}stream.tty=tty;stream.seekable=false},close:function(stream){stream.tty.ops.flush(stream.tty)},flush:function(stream){stream.tty.ops.flush(stream.tty)},read:function(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.get_char){throw new FS.ErrnoError(60)}var bytesRead=0;for(var i=0;i0){result=buf.slice(0,bytesRead).toString("utf-8")}else{result=null}}else if(typeof window!="undefined"&&typeof window.prompt=="function"){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else if(typeof readline=="function"){result=readline();if(result!==null){result+="\n"}}if(!result){return null}tty.input=intArrayFromString(result,true)}return tty.input.shift()},put_char:function(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}}},default_tty1_ops:{put_char:function(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};function alignMemory(size,alignment){return Math.ceil(size/alignment)*alignment}function mmapAlloc(size){size=alignMemory(size,65536);var ptr=_emscripten_builtin_memalign(65536,size);if(!ptr)return 0;zeroMemory(ptr,size);return ptr}var MEMFS={ops_table:null,mount:function(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode:function(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63)}if(!MEMFS.ops_table){MEMFS.ops_table={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}}}var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node;parent.timestamp=node.timestamp}return node},getFileDataAsTypedArray:function(node){if(!node.contents)return new Uint8Array(0);if(node.contents.subarray)return node.contents.subarray(0,node.usedBytes);return new Uint8Array(node.contents)},expandFileStorage:function(node,newCapacity){var prevCapacity=node.contents?node.contents.length:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity>>0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0)},resizeFileStorage:function(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0}else{var oldContents=node.contents;node.contents=new Uint8Array(newSize);if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize}},node_ops:{getattr:function(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.timestamp);attr.mtime=new Date(node.timestamp);attr.ctime=new Date(node.timestamp);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr:function(node,attr){if(attr.mode!==undefined){node.mode=attr.mode}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}},lookup:function(parent,name){throw FS.genericErrors[44]},mknod:function(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename:function(old_node,new_dir,new_name){if(FS.isDir(old_node.mode)){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){for(var i in new_node.contents){throw new FS.ErrnoError(55)}}}delete old_node.parent.contents[old_node.name];old_node.parent.timestamp=Date.now();old_node.name=new_name;new_dir.contents[new_name]=old_node;new_dir.timestamp=old_node.parent.timestamp;old_node.parent=new_dir},unlink:function(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir:function(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(55)}delete parent.contents[name];parent.timestamp=Date.now()},readdir:function(node){var entries=[".",".."];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue}entries.push(key)}return entries},symlink:function(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink:function(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read:function(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i0||position+length{assert(arrayBuffer,'Loading data file "'+url+'" failed (no arrayBuffer).');onload(new Uint8Array(arrayBuffer));if(dep)removeRunDependency(dep)},event=>{if(onerror){onerror()}else{throw'Loading data file "'+url+'" failed.'}});if(dep)addRunDependency(dep)}var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,lookupPath:(path,opts={})=>{path=PATH_FS.resolve(FS.cwd(),path);if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};opts=Object.assign(defaults,opts);if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=PATH.normalizeArray(path.split("/").filter(p=>!!p),false);var current=FS.root;var current_path="/";for(var i=0;i40){throw new FS.ErrnoError(32)}}}}return{path:current_path,node:current}},getPath:node=>{var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!=="/"?mount+"/"+path:mount+path}path=path?node.name+"/"+path:node.name;node=node.parent}},hashName:(parentid,name)=>{var hash=0;for(var i=0;i>>0)%FS.nameTable.length},hashAddNode:node=>{var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode:node=>{var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode:(parent,name)=>{var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode,parent)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode:(parent,name,mode,rdev)=>{var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode:node=>{FS.hashRemoveNode(node)},isRoot:node=>{return node===node.parent},isMountpoint:node=>{return!!node.mounted},isFile:mode=>{return(mode&61440)===32768},isDir:mode=>{return(mode&61440)===16384},isLink:mode=>{return(mode&61440)===40960},isChrdev:mode=>{return(mode&61440)===8192},isBlkdev:mode=>{return(mode&61440)===24576},isFIFO:mode=>{return(mode&61440)===4096},isSocket:mode=>{return(mode&49152)===49152},flagModes:{"r":0,"r+":2,"w":577,"w+":578,"a":1089,"a+":1090},modeStringToFlags:str=>{var flags=FS.flagModes[str];if(typeof flags=="undefined"){throw new Error("Unknown file open mode: "+str)}return flags},flagsToPermissionString:flag=>{var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms},nodePermissions:(node,perms)=>{if(FS.ignorePermissions){return 0}if(perms.includes("r")&&!(node.mode&292)){return 2}else if(perms.includes("w")&&!(node.mode&146)){return 2}else if(perms.includes("x")&&!(node.mode&73)){return 2}return 0},mayLookup:dir=>{var errCode=FS.nodePermissions(dir,"x");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate:(dir,name)=>{try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,"wx")},mayDelete:(dir,name,isdir)=>{var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,"wx");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else{if(FS.isDir(node.mode)){return 31}}return 0},mayOpen:(node,flags)=>{if(!node){return 44}if(FS.isLink(node.mode)){return 32}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!=="r"||flags&512){return 31}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},MAX_OPEN_FDS:4096,nextfd:(fd_start=0,fd_end=FS.MAX_OPEN_FDS)=>{for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStream:fd=>FS.streams[fd],createStream:(stream,fd_start,fd_end)=>{if(!FS.FSStream){FS.FSStream=function(){this.shared={}};FS.FSStream.prototype={};Object.defineProperties(FS.FSStream.prototype,{object:{get:function(){return this.node},set:function(val){this.node=val}},isRead:{get:function(){return(this.flags&2097155)!==1}},isWrite:{get:function(){return(this.flags&2097155)!==0}},isAppend:{get:function(){return this.flags&1024}},flags:{get:function(){return this.shared.flags},set:function(val){this.shared.flags=val}},position:{get:function(){return this.shared.position},set:function(val){this.shared.position=val}}})}stream=Object.assign(new FS.FSStream,stream);var fd=FS.nextfd(fd_start,fd_end);stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream:fd=>{FS.streams[fd]=null},chrdev_stream_ops:{open:stream=>{var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;if(stream.stream_ops.open){stream.stream_ops.open(stream)}},llseek:()=>{throw new FS.ErrnoError(70)}},major:dev=>dev>>8,minor:dev=>dev&255,makedev:(ma,mi)=>ma<<8|mi,registerDevice:(dev,ops)=>{FS.devices[dev]={stream_ops:ops}},getDevice:dev=>FS.devices[dev],getMounts:mount=>{var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push.apply(check,m.mounts)}return mounts},syncfs:(populate,callback)=>{if(typeof populate=="function"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err("warning: "+FS.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work")}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach(mount=>{if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount:(type,opts,mountpoint)=>{var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount:mountpoint=>{var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach(hash=>{var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.includes(current.mount)){FS.destroyNode(current)}current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup:(parent,name)=>{return parent.node_ops.lookup(parent,name)},mknod:(path,mode,dev)=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name==="."||name===".."){throw new FS.ErrnoError(28)}var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},create:(path,mode)=>{mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir:(path,mode)=>{mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree:(path,mode)=>{var dirs=path.split("/");var d="";for(var i=0;i{if(typeof dev=="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink:(oldpath,newpath)=>{if(!PATH_FS.resolve(oldpath)){throw new FS.ErrnoError(44)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(63)}return parent.node_ops.symlink(parent,newname,oldpath)},rename:(old_path,new_path)=>{var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;if(!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(75)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH_FS.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(28)}relative=PATH_FS.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(55)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode){throw new FS.ErrnoError(errCode)}errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(errCode){throw new FS.ErrnoError(errCode)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(63)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(10)}if(new_dir!==old_dir){errCode=FS.nodePermissions(old_dir,"w");if(errCode){throw new FS.ErrnoError(errCode)}}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e}finally{FS.hashAddNode(old_node)}},rmdir:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node)},readdir:path=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(54)}return node.node_ops.readdir(node)},unlink:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.unlink(parent,name);FS.destroyNode(node)},readlink:path=>{var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(44)}if(!link.node_ops.readlink){throw new FS.ErrnoError(28)}return PATH_FS.resolve(FS.getPath(link.parent),link.node_ops.readlink(link))},stat:(path,dontFollow)=>{var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(44)}if(!node.node_ops.getattr){throw new FS.ErrnoError(63)}return node.node_ops.getattr(node)},lstat:path=>{return FS.stat(path,true)},chmod:(path,mode,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})},lchmod:(path,mode)=>{FS.chmod(path,mode,true)},fchmod:(fd,mode)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chmod(stream.node,mode)},chown:(path,uid,gid,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{timestamp:Date.now()})},lchown:(path,uid,gid)=>{FS.chown(path,uid,gid,true)},fchown:(fd,uid,gid)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chown(stream.node,uid,gid)},truncate:(path,len)=>{if(len<0){throw new FS.ErrnoError(28)}var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(31)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(28)}var errCode=FS.nodePermissions(node,"w");if(errCode){throw new FS.ErrnoError(errCode)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})},ftruncate:(fd,len)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.truncate(stream.node,len)},utime:(path,atime,mtime)=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})},open:(path,flags,mode)=>{if(path===""){throw new FS.ErrnoError(44)}flags=typeof flags=="string"?FS.modeStringToFlags(flags):flags;mode=typeof mode=="undefined"?438:mode;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;if(typeof path=="object"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(44)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}if(!created){var errCode=FS.mayOpen(node,flags);if(errCode){throw new FS.ErrnoError(errCode)}}if(flags&512&&!created){FS.truncate(node,0)}flags&=~(128|512|131072);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false});if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module["logReadFiles"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1}}return stream},close:stream=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed:stream=>{return stream.fd===null},llseek:(stream,offset,whence)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read:(stream,buffer,offset,length,position)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write:(stream,buffer,offset,length,position,canOwn)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;return bytesWritten},allocate:(stream,offset,length)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(offset<0||length<=0){throw new FS.ErrnoError(28)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(stream.node.mode)){throw new FS.ErrnoError(43)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(138)}stream.stream_ops.allocate(stream,offset,length)},mmap:(stream,length,position,prot,flags)=>{if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}return stream.stream_ops.mmap(stream,length,position,prot,flags)},msync:(stream,buffer,offset,length,mmapFlags)=>{if(!stream||!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},munmap:stream=>0,ioctl:(stream,cmd,arg)=>{if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile:(path,opts={})=>{opts.flags=opts.flags||0;opts.encoding=opts.encoding||"binary";if(opts.encoding!=="utf8"&&opts.encoding!=="binary"){throw new Error('Invalid encoding type "'+opts.encoding+'"')}var ret;var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding==="utf8"){ret=UTF8ArrayToString(buf,0)}else if(opts.encoding==="binary"){ret=buf}FS.close(stream);return ret},writeFile:(path,data,opts={})=>{opts.flags=opts.flags||577;var stream=FS.open(path,opts.flags,opts.mode);if(typeof data=="string"){var buf=new Uint8Array(lengthBytesUTF8(data)+1);var actualNumBytes=stringToUTF8Array(data,buf,0,buf.length);FS.write(stream,buf,0,actualNumBytes,undefined,opts.canOwn)}else if(ArrayBuffer.isView(data)){FS.write(stream,data,0,data.byteLength,undefined,opts.canOwn)}else{throw new Error("Unsupported data type")}FS.close(stream)},cwd:()=>FS.currentPath,chdir:path=>{var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(44)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(54)}var errCode=FS.nodePermissions(lookup.node,"x");if(errCode){throw new FS.ErrnoError(errCode)}FS.currentPath=lookup.path},createDefaultDirectories:()=>{FS.mkdir("/tmp");FS.mkdir("/home");FS.mkdir("/home/web_user")},createDefaultDevices:()=>{FS.mkdir("/dev");FS.registerDevice(FS.makedev(1,3),{read:()=>0,write:(stream,buffer,offset,length,pos)=>length});FS.mkdev("/dev/null",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev("/dev/tty",FS.makedev(5,0));FS.mkdev("/dev/tty1",FS.makedev(6,0));var random_device=getRandomDevice();FS.createDevice("/dev","random",random_device);FS.createDevice("/dev","urandom",random_device);FS.mkdir("/dev/shm");FS.mkdir("/dev/shm/tmp")},createSpecialDirectories:()=>{FS.mkdir("/proc");var proc_self=FS.mkdir("/proc/self");FS.mkdir("/proc/self/fd");FS.mount({mount:()=>{var node=FS.createNode(proc_self,"fd",16384|511,73);node.node_ops={lookup:(parent,name)=>{var fd=+name;var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);var ret={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>stream.path}};ret.parent=ret;return ret}};return node}},{},"/proc/self/fd")},createStandardStreams:()=>{if(Module["stdin"]){FS.createDevice("/dev","stdin",Module["stdin"])}else{FS.symlink("/dev/tty","/dev/stdin")}if(Module["stdout"]){FS.createDevice("/dev","stdout",null,Module["stdout"])}else{FS.symlink("/dev/tty","/dev/stdout")}if(Module["stderr"]){FS.createDevice("/dev","stderr",null,Module["stderr"])}else{FS.symlink("/dev/tty1","/dev/stderr")}var stdin=FS.open("/dev/stdin",0);var stdout=FS.open("/dev/stdout",1);var stderr=FS.open("/dev/stderr",1)},ensureErrnoError:()=>{if(FS.ErrnoError)return;FS.ErrnoError=function ErrnoError(errno,node){this.node=node;this.setErrno=function(errno){this.errno=errno};this.setErrno(errno);this.message="FS error"};FS.ErrnoError.prototype=new Error;FS.ErrnoError.prototype.constructor=FS.ErrnoError;[44].forEach(code=>{FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack=""})},staticInit:()=>{FS.ensureErrnoError();FS.nameTable=new Array(4096);FS.mount(MEMFS,{},"/");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={"MEMFS":MEMFS}},init:(input,output,error)=>{FS.init.initialized=true;FS.ensureErrnoError();Module["stdin"]=input||Module["stdin"];Module["stdout"]=output||Module["stdout"];Module["stderr"]=error||Module["stderr"];FS.createStandardStreams()},quit:()=>{FS.init.initialized=false;for(var i=0;i{var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode},findObject:(path,dontResolveLastLink)=>{var ret=FS.analyzePath(path,dontResolveLastLink);if(!ret.exists){return null}return ret.object},analyzePath:(path,dontResolveLastLink)=>{try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path==="/"}catch(e){ret.error=e.errno}return ret},createPath:(parent,path,canRead,canWrite)=>{parent=typeof parent=="string"?parent:FS.getPath(parent);var parts=path.split("/").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){}parent=current}return current},createFile:(parent,name,properties,canRead,canWrite)=>{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile:(parent,name,data,canRead,canWrite,canOwn)=>{var path=name;if(parent){parent=typeof parent=="string"?parent:FS.getPath(parent);path=name?PATH.join2(parent,name):parent}var mode=FS.getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){if(typeof data=="string"){var arr=new Array(data.length);for(var i=0,len=data.length;i{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(!!input,!!output);if(!FS.createDevice.major)FS.createDevice.major=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open:stream=>{stream.seekable=false},close:stream=>{if(output&&output.buffer&&output.buffer.length){output(10)}},read:(stream,buffer,offset,length,pos)=>{var bytesRead=0;for(var i=0;i{for(var i=0;i{if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return true;if(typeof XMLHttpRequest!="undefined"){throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.")}else if(read_){try{obj.contents=intArrayFromString(read_(obj.url),true);obj.usedBytes=obj.contents.length}catch(e){throw new FS.ErrnoError(29)}}else{throw new Error("Cannot load without read() or XMLHttpRequest.")}},createLazyFile:(parent,name,url,canRead,canWrite)=>{function LazyUint8Array(){this.lengthKnown=false;this.chunks=[]}LazyUint8Array.prototype.get=function LazyUint8Array_get(idx){if(idx>this.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]};LazyUint8Array.prototype.setDataGetter=function LazyUint8Array_setDataGetter(getter){this.getter=getter};LazyUint8Array.prototype.cacheLength=function LazyUint8Array_cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=(from,to)=>{if(from>to)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}return intArrayFromString(xhr.responseText||"",true)};var lazyArray=this;lazyArray.setDataGetter(chunkNum=>{var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]=="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]=="undefined")throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out("LazyFiles on gzip forces download of the whole file when length is accessed")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true};if(typeof XMLHttpRequest!="undefined"){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var lazyArray=new LazyUint8Array;Object.defineProperties(lazyArray,{length:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._length}},chunkSize:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}});var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(key=>{var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){FS.forceLoadFile(node);return fn.apply(null,arguments)}});function writeChunks(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i{FS.forceLoadFile(node);return writeChunks(stream,buffer,offset,length,position)};stream_ops.mmap=(stream,length,position,prot,flags)=>{FS.forceLoadFile(node);var ptr=mmapAlloc(length);if(!ptr){throw new FS.ErrnoError(48)}writeChunks(stream,HEAP8,ptr,length,position);return{ptr:ptr,allocated:true}};node.stream_ops=stream_ops;return node},createPreloadedFile:(parent,name,url,canRead,canWrite,onload,onerror,dontCreateFile,canOwn,preFinish)=>{var fullname=name?PATH_FS.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency("cp "+fullname);function processData(byteArray){function finish(byteArray){if(preFinish)preFinish();if(!dontCreateFile){FS.createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}if(onload)onload();removeRunDependency(dep)}if(Browser.handledByPreloadPlugin(byteArray,fullname,finish,()=>{if(onerror)onerror();removeRunDependency(dep)})){return}finish(byteArray)}addRunDependency(dep);if(typeof url=="string"){asyncLoad(url,byteArray=>processData(byteArray),onerror)}else{processData(url)}},indexedDB:()=>{return window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB},DB_NAME:()=>{return"EM_FS_"+window.location.pathname},DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:(paths,onload,onerror)=>{onload=onload||(()=>{});onerror=onerror||(()=>{});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=()=>{out("creating db");var db=openRequest.result;db.createObjectStore(FS.DB_STORE_NAME)};openRequest.onsuccess=()=>{var db=openRequest.result;var transaction=db.transaction([FS.DB_STORE_NAME],"readwrite");var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(path=>{var putRequest=files.put(FS.analyzePath(path).object.contents,path);putRequest.onsuccess=()=>{ok++;if(ok+fail==total)finish()};putRequest.onerror=()=>{fail++;if(ok+fail==total)finish()}});transaction.onerror=onerror};openRequest.onerror=onerror},loadFilesFromDB:(paths,onload,onerror)=>{onload=onload||(()=>{});onerror=onerror||(()=>{});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=onerror;openRequest.onsuccess=()=>{var db=openRequest.result;try{var transaction=db.transaction([FS.DB_STORE_NAME],"readonly")}catch(e){onerror(e);return}var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(path=>{var getRequest=files.get(path);getRequest.onsuccess=()=>{if(FS.analyzePath(path).exists){FS.unlink(path)}FS.createDataFile(PATH.dirname(path),PATH.basename(path),getRequest.result,true,true,true);ok++;if(ok+fail==total)finish()};getRequest.onerror=()=>{fail++;if(ok+fail==total)finish()}});transaction.onerror=onerror};openRequest.onerror=onerror}};var SYSCALLS={DEFAULT_POLLMASK:5,calculateAt:function(dirfd,path,allowEmpty){if(PATH.isAbs(path)){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=FS.getStream(dirfd);if(!dirstream)throw new FS.ErrnoError(8);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return PATH.join2(dir,path)},doStat:function(func,path,buf){try{var stat=func(path)}catch(e){if(e&&e.node&&PATH.normalize(path)!==PATH.normalize(FS.getPath(e.node))){return-54}throw e}HEAP32[buf>>2]=stat.dev;HEAP32[buf+4>>2]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[buf+32>>2]=0;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAP32[buf+48>>2]=4096;HEAP32[buf+52>>2]=stat.blocks;tempI64=[Math.floor(stat.atime.getTime()/1e3)>>>0,(tempDouble=Math.floor(stat.atime.getTime()/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+56>>2]=tempI64[0],HEAP32[buf+60>>2]=tempI64[1];HEAP32[buf+64>>2]=0;tempI64=[Math.floor(stat.mtime.getTime()/1e3)>>>0,(tempDouble=Math.floor(stat.mtime.getTime()/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+72>>2]=tempI64[0],HEAP32[buf+76>>2]=tempI64[1];HEAP32[buf+80>>2]=0;tempI64=[Math.floor(stat.ctime.getTime()/1e3)>>>0,(tempDouble=Math.floor(stat.ctime.getTime()/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+88>>2]=tempI64[0],HEAP32[buf+92>>2]=tempI64[1];HEAP32[buf+96>>2]=0;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+104>>2]=tempI64[0],HEAP32[buf+108>>2]=tempI64[1];return 0},doMsync:function(addr,stream,len,flags,offset){var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD:function(fd){var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);return stream}};function _proc_exit(code){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(1,1,code);EXITSTATUS=code;if(!keepRuntimeAlive()){PThread.terminateAllThreads();if(Module["onExit"])Module["onExit"](code);ABORT=true}quit_(code,new ExitStatus(code))}function exitJS(status,implicit){EXITSTATUS=status;if(!implicit){if(ENVIRONMENT_IS_PTHREAD){exitOnMainThread(status);throw"unwind"}else{}}_proc_exit(status)}var _exit=exitJS;function handleException(e){if(e instanceof ExitStatus||e=="unwind"){return EXITSTATUS}quit_(1,e)}var PThread={unusedWorkers:[],runningWorkers:[],tlsInitFunctions:[],pthreads:{},init:function(){if(ENVIRONMENT_IS_PTHREAD){PThread.initWorker()}else{PThread.initMainThread()}},initMainThread:function(){},initWorker:function(){noExitRuntime=false},setExitStatus:function(status){EXITSTATUS=status},terminateAllThreads:function(){for(var t in PThread.pthreads){var worker=PThread.pthreads[t];if(worker){PThread.returnWorkerToPool(worker)}}for(var i=0;i{var d=e["data"];var cmd=d["cmd"];if(worker.pthread_ptr)PThread.currentProxiedOperationCallerThread=worker.pthread_ptr;if(d["targetThread"]&&d["targetThread"]!=_pthread_self()){var targetWorker=PThread.pthreads[d.targetThread];if(targetWorker){targetWorker.postMessage(d,d["transferList"])}else{err('Internal error! Worker sent a message "'+cmd+'" to target pthread '+d["targetThread"]+", but that thread no longer exists!")}PThread.currentProxiedOperationCallerThread=undefined;return}if(cmd==="processProxyingQueue"){executeNotifiedProxyingQueue(d["queue"])}else if(cmd==="spawnThread"){spawnThread(d)}else if(cmd==="cleanupThread"){cleanupThread(d["thread"])}else if(cmd==="killThread"){killThread(d["thread"])}else if(cmd==="cancelThread"){cancelThread(d["thread"])}else if(cmd==="loaded"){worker.loaded=true;if(onFinishedLoading)onFinishedLoading(worker);if(worker.runPthread){worker.runPthread();delete worker.runPthread}}else if(cmd==="print"){out("Thread "+d["threadId"]+": "+d["text"])}else if(cmd==="printErr"){err("Thread "+d["threadId"]+": "+d["text"])}else if(cmd==="alert"){alert("Thread "+d["threadId"]+": "+d["text"])}else if(d.target==="setimmediate"){worker.postMessage(d)}else if(cmd==="onAbort"){if(Module["onAbort"]){Module["onAbort"](d["arg"])}}else if(cmd){err("worker sent an unknown command "+cmd)}PThread.currentProxiedOperationCallerThread=undefined};worker.onerror=e=>{var message="worker sent an error!";err(message+" "+e.filename+":"+e.lineno+": "+e.message);throw e};if(ENVIRONMENT_IS_NODE){worker.on("message",function(data){worker.onmessage({data:data})});worker.on("error",function(e){worker.onerror(e)});worker.on("detachedExit",function(){})}worker.postMessage({"cmd":"load","urlOrBlob":Module["mainScriptUrlOrBlob"],"wasmMemory":wasmMemory,"wasmModule":wasmModule})},allocateUnusedWorker:function(){if(!Module["locateFile"]){PThread.unusedWorkers.push(new Worker(new URL("decoder-pro-mt-worker.worker.js",import.meta.url)));return}var pthreadMainJs=locateFile("decoder-pro-mt-worker.worker.js");PThread.unusedWorkers.push(new Worker(pthreadMainJs))},getNewWorker:function(){if(PThread.unusedWorkers.length==0){PThread.allocateUnusedWorker();PThread.loadWasmModuleToWorker(PThread.unusedWorkers[0])}return PThread.unusedWorkers.pop()}};Module["PThread"]=PThread;function callRuntimeCallbacks(callbacks){while(callbacks.length>0){callbacks.shift()(Module)}}function withStackSave(f){var stack=stackSave();var ret=f();stackRestore(stack);return ret}function establishStackSpace(){var pthread_ptr=_pthread_self();var stackTop=HEAP32[pthread_ptr+44>>2];var stackSize=HEAP32[pthread_ptr+48>>2];var stackMax=stackTop-stackSize;_emscripten_stack_set_limits(stackTop,stackMax);stackRestore(stackTop)}Module["establishStackSpace"]=establishStackSpace;function exitOnMainThread(returnCode){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(2,0,returnCode);try{_exit(returnCode)}catch(e){handleException(e)}}var wasmTableMirror=[];function getWasmTableEntry(funcPtr){var func=wasmTableMirror[funcPtr];if(!func){if(funcPtr>=wasmTableMirror.length)wasmTableMirror.length=funcPtr+1;wasmTableMirror[funcPtr]=func=wasmTable.get(funcPtr)}return func}function invokeEntryPoint(ptr,arg){var result=getWasmTableEntry(ptr)(arg);if(keepRuntimeAlive()){PThread.setExitStatus(result)}else{__emscripten_thread_exit(result)}}Module["invokeEntryPoint"]=invokeEntryPoint;function registerTLSInit(tlsInitFunc){PThread.tlsInitFunctions.push(tlsInitFunc)}function ___cxa_allocate_exception(size){return _malloc(size+24)+24}function ExceptionInfo(excPtr){this.excPtr=excPtr;this.ptr=excPtr-24;this.set_type=function(type){HEAPU32[this.ptr+4>>2]=type};this.get_type=function(){return HEAPU32[this.ptr+4>>2]};this.set_destructor=function(destructor){HEAPU32[this.ptr+8>>2]=destructor};this.get_destructor=function(){return HEAPU32[this.ptr+8>>2]};this.set_refcount=function(refcount){HEAP32[this.ptr>>2]=refcount};this.set_caught=function(caught){caught=caught?1:0;HEAP8[this.ptr+12>>0]=caught};this.get_caught=function(){return HEAP8[this.ptr+12>>0]!=0};this.set_rethrown=function(rethrown){rethrown=rethrown?1:0;HEAP8[this.ptr+13>>0]=rethrown};this.get_rethrown=function(){return HEAP8[this.ptr+13>>0]!=0};this.init=function(type,destructor){this.set_adjusted_ptr(0);this.set_type(type);this.set_destructor(destructor);this.set_refcount(0);this.set_caught(false);this.set_rethrown(false)};this.add_ref=function(){Atomics.add(HEAP32,this.ptr+0>>2,1)};this.release_ref=function(){var prev=Atomics.sub(HEAP32,this.ptr+0>>2,1);return prev===1};this.set_adjusted_ptr=function(adjustedPtr){HEAPU32[this.ptr+16>>2]=adjustedPtr};this.get_adjusted_ptr=function(){return HEAPU32[this.ptr+16>>2]};this.get_exception_ptr=function(){var isPointer=___cxa_is_pointer_type(this.get_type());if(isPointer){return HEAPU32[this.excPtr>>2]}var adjusted=this.get_adjusted_ptr();if(adjusted!==0)return adjusted;return this.excPtr}}var exceptionLast=0;var uncaughtExceptionCount=0;function ___cxa_throw(ptr,type,destructor){var info=new ExceptionInfo(ptr);info.init(type,destructor);exceptionLast=ptr;uncaughtExceptionCount++;throw ptr}function ___emscripten_init_main_thread_js(tb){__emscripten_thread_init(tb,!ENVIRONMENT_IS_WORKER,1,!ENVIRONMENT_IS_WEB);PThread.threadInitTLS()}function ___emscripten_thread_cleanup(thread){if(!ENVIRONMENT_IS_PTHREAD)cleanupThread(thread);else postMessage({"cmd":"cleanupThread","thread":thread})}function pthreadCreateProxied(pthread_ptr,attr,start_routine,arg){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(3,1,pthread_ptr,attr,start_routine,arg);return ___pthread_create_js(pthread_ptr,attr,start_routine,arg)}function ___pthread_create_js(pthread_ptr,attr,start_routine,arg){if(typeof SharedArrayBuffer=="undefined"){err("Current environment does not support SharedArrayBuffer, pthreads are not available!");return 6}var transferList=[];var error=0;if(ENVIRONMENT_IS_PTHREAD&&(transferList.length===0||error)){return pthreadCreateProxied(pthread_ptr,attr,start_routine,arg)}if(error)return error;var threadParams={startRoutine:start_routine,pthread_ptr:pthread_ptr,arg:arg,transferList:transferList};if(ENVIRONMENT_IS_PTHREAD){threadParams.cmd="spawnThread";postMessage(threadParams,transferList);return 0}return spawnThread(threadParams)}function setErrNo(value){HEAP32[___errno_location()>>2]=value;return value}function ___syscall_fcntl64(fd,cmd,varargs){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(4,1,fd,cmd,varargs);SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(cmd){case 0:{var arg=SYSCALLS.get();if(arg<0){return-28}var newStream;newStream=FS.createStream(stream,arg);return newStream.fd}case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=SYSCALLS.get();stream.flags|=arg;return 0}case 5:{var arg=SYSCALLS.get();var offset=0;HEAP16[arg+offset>>1]=2;return 0}case 6:case 7:return 0;case 16:case 8:return-28;case 9:setErrNo(28);return-1;default:{return-28}}}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_openat(dirfd,path,flags,varargs){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(5,1,dirfd,path,flags,varargs);SYSCALLS.varargs=varargs;try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);var mode=varargs?SYSCALLS.get():0;return FS.open(path,flags,mode).fd}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function __embind_register_bigint(primitiveType,name,size,minRange,maxRange){}function getShiftFromSize(size){switch(size){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+size)}}function embind_init_charCodes(){var codes=new Array(256);for(var i=0;i<256;++i){codes[i]=String.fromCharCode(i)}embind_charCodes=codes}var embind_charCodes=undefined;function readLatin1String(ptr){var ret="";var c=ptr;while(HEAPU8[c]){ret+=embind_charCodes[HEAPU8[c++]]}return ret}var awaitingDependencies={};var registeredTypes={};var typeDependencies={};var char_0=48;var char_9=57;function makeLegalFunctionName(name){if(undefined===name){return"_unknown"}name=name.replace(/[^a-zA-Z0-9_]/g,"$");var f=name.charCodeAt(0);if(f>=char_0&&f<=char_9){return"_"+name}return name}function createNamedFunction(name,body){name=makeLegalFunctionName(name);return new Function("body","return function "+name+"() {\n"+' "use strict";'+" return body.apply(this, arguments);\n"+"};\n")(body)}function extendError(baseErrorType,errorName){var errorClass=createNamedFunction(errorName,function(message){this.name=errorName;this.message=message;var stack=new Error(message).stack;if(stack!==undefined){this.stack=this.toString()+"\n"+stack.replace(/^Error(:[^\n]*)?\n/,"")}});errorClass.prototype=Object.create(baseErrorType.prototype);errorClass.prototype.constructor=errorClass;errorClass.prototype.toString=function(){if(this.message===undefined){return this.name}else{return this.name+": "+this.message}};return errorClass}var BindingError=undefined;function throwBindingError(message){throw new BindingError(message)}var InternalError=undefined;function throwInternalError(message){throw new InternalError(message)}function whenDependentTypesAreResolved(myTypes,dependentTypes,getTypeConverters){myTypes.forEach(function(type){typeDependencies[type]=dependentTypes});function onComplete(typeConverters){var myTypeConverters=getTypeConverters(typeConverters);if(myTypeConverters.length!==myTypes.length){throwInternalError("Mismatched type converter count")}for(var i=0;i{if(registeredTypes.hasOwnProperty(dt)){typeConverters[i]=registeredTypes[dt]}else{unregisteredTypes.push(dt);if(!awaitingDependencies.hasOwnProperty(dt)){awaitingDependencies[dt]=[]}awaitingDependencies[dt].push(()=>{typeConverters[i]=registeredTypes[dt];++registered;if(registered===unregisteredTypes.length){onComplete(typeConverters)}})}});if(0===unregisteredTypes.length){onComplete(typeConverters)}}function registerType(rawType,registeredInstance,options={}){if(!("argPackAdvance"in registeredInstance)){throw new TypeError("registerType registeredInstance requires argPackAdvance")}var name=registeredInstance.name;if(!rawType){throwBindingError('type "'+name+'" must have a positive integer typeid pointer')}if(registeredTypes.hasOwnProperty(rawType)){if(options.ignoreDuplicateRegistrations){return}else{throwBindingError("Cannot register type '"+name+"' twice")}}registeredTypes[rawType]=registeredInstance;delete typeDependencies[rawType];if(awaitingDependencies.hasOwnProperty(rawType)){var callbacks=awaitingDependencies[rawType];delete awaitingDependencies[rawType];callbacks.forEach(cb=>cb())}}function __embind_register_bool(rawType,name,size,trueValue,falseValue){var shift=getShiftFromSize(size);name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(wt){return!!wt},"toWireType":function(destructors,o){return o?trueValue:falseValue},"argPackAdvance":8,"readValueFromPointer":function(pointer){var heap;if(size===1){heap=HEAP8}else if(size===2){heap=HEAP16}else if(size===4){heap=HEAP32}else{throw new TypeError("Unknown boolean type size: "+name)}return this["fromWireType"](heap[pointer>>shift])},destructorFunction:null})}function ClassHandle_isAliasOf(other){if(!(this instanceof ClassHandle)){return false}if(!(other instanceof ClassHandle)){return false}var leftClass=this.$$.ptrType.registeredClass;var left=this.$$.ptr;var rightClass=other.$$.ptrType.registeredClass;var right=other.$$.ptr;while(leftClass.baseClass){left=leftClass.upcast(left);leftClass=leftClass.baseClass}while(rightClass.baseClass){right=rightClass.upcast(right);rightClass=rightClass.baseClass}return leftClass===rightClass&&left===right}function shallowCopyInternalPointer(o){return{count:o.count,deleteScheduled:o.deleteScheduled,preservePointerOnDelete:o.preservePointerOnDelete,ptr:o.ptr,ptrType:o.ptrType,smartPtr:o.smartPtr,smartPtrType:o.smartPtrType}}function throwInstanceAlreadyDeleted(obj){function getInstanceTypeName(handle){return handle.$$.ptrType.registeredClass.name}throwBindingError(getInstanceTypeName(obj)+" instance already deleted")}var finalizationRegistry=false;function detachFinalizer(handle){}function runDestructor($$){if($$.smartPtr){$$.smartPtrType.rawDestructor($$.smartPtr)}else{$$.ptrType.registeredClass.rawDestructor($$.ptr)}}function releaseClassHandle($$){$$.count.value-=1;var toDelete=0===$$.count.value;if(toDelete){runDestructor($$)}}function downcastPointer(ptr,ptrClass,desiredClass){if(ptrClass===desiredClass){return ptr}if(undefined===desiredClass.baseClass){return null}var rv=downcastPointer(ptr,ptrClass,desiredClass.baseClass);if(rv===null){return null}return desiredClass.downcast(rv)}var registeredPointers={};function getInheritedInstanceCount(){return Object.keys(registeredInstances).length}function getLiveInheritedInstances(){var rv=[];for(var k in registeredInstances){if(registeredInstances.hasOwnProperty(k)){rv.push(registeredInstances[k])}}return rv}var deletionQueue=[];function flushPendingDeletes(){while(deletionQueue.length){var obj=deletionQueue.pop();obj.$$.deleteScheduled=false;obj["delete"]()}}var delayFunction=undefined;function setDelayFunction(fn){delayFunction=fn;if(deletionQueue.length&&delayFunction){delayFunction(flushPendingDeletes)}}function init_embind(){Module["getInheritedInstanceCount"]=getInheritedInstanceCount;Module["getLiveInheritedInstances"]=getLiveInheritedInstances;Module["flushPendingDeletes"]=flushPendingDeletes;Module["setDelayFunction"]=setDelayFunction}var registeredInstances={};function getBasestPointer(class_,ptr){if(ptr===undefined){throwBindingError("ptr should not be undefined")}while(class_.baseClass){ptr=class_.upcast(ptr);class_=class_.baseClass}return ptr}function getInheritedInstance(class_,ptr){ptr=getBasestPointer(class_,ptr);return registeredInstances[ptr]}function makeClassHandle(prototype,record){if(!record.ptrType||!record.ptr){throwInternalError("makeClassHandle requires ptr and ptrType")}var hasSmartPtrType=!!record.smartPtrType;var hasSmartPtr=!!record.smartPtr;if(hasSmartPtrType!==hasSmartPtr){throwInternalError("Both smartPtrType and smartPtr must be specified")}record.count={value:1};return attachFinalizer(Object.create(prototype,{$$:{value:record}}))}function RegisteredPointer_fromWireType(ptr){var rawPointer=this.getPointee(ptr);if(!rawPointer){this.destructor(ptr);return null}var registeredInstance=getInheritedInstance(this.registeredClass,rawPointer);if(undefined!==registeredInstance){if(0===registeredInstance.$$.count.value){registeredInstance.$$.ptr=rawPointer;registeredInstance.$$.smartPtr=ptr;return registeredInstance["clone"]()}else{var rv=registeredInstance["clone"]();this.destructor(ptr);return rv}}function makeDefaultHandle(){if(this.isSmartPointer){return makeClassHandle(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:rawPointer,smartPtrType:this,smartPtr:ptr})}else{return makeClassHandle(this.registeredClass.instancePrototype,{ptrType:this,ptr:ptr})}}var actualType=this.registeredClass.getActualType(rawPointer);var registeredPointerRecord=registeredPointers[actualType];if(!registeredPointerRecord){return makeDefaultHandle.call(this)}var toType;if(this.isConst){toType=registeredPointerRecord.constPointerType}else{toType=registeredPointerRecord.pointerType}var dp=downcastPointer(rawPointer,this.registeredClass,toType.registeredClass);if(dp===null){return makeDefaultHandle.call(this)}if(this.isSmartPointer){return makeClassHandle(toType.registeredClass.instancePrototype,{ptrType:toType,ptr:dp,smartPtrType:this,smartPtr:ptr})}else{return makeClassHandle(toType.registeredClass.instancePrototype,{ptrType:toType,ptr:dp})}}function attachFinalizer(handle){if("undefined"===typeof FinalizationRegistry){attachFinalizer=handle=>handle;return handle}finalizationRegistry=new FinalizationRegistry(info=>{releaseClassHandle(info.$$)});attachFinalizer=handle=>{var $$=handle.$$;var hasSmartPtr=!!$$.smartPtr;if(hasSmartPtr){var info={$$:$$};finalizationRegistry.register(handle,info,handle)}return handle};detachFinalizer=handle=>finalizationRegistry.unregister(handle);return attachFinalizer(handle)}function ClassHandle_clone(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this)}if(this.$$.preservePointerOnDelete){this.$$.count.value+=1;return this}else{var clone=attachFinalizer(Object.create(Object.getPrototypeOf(this),{$$:{value:shallowCopyInternalPointer(this.$$)}}));clone.$$.count.value+=1;clone.$$.deleteScheduled=false;return clone}}function ClassHandle_delete(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this)}if(this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete){throwBindingError("Object already scheduled for deletion")}detachFinalizer(this);releaseClassHandle(this.$$);if(!this.$$.preservePointerOnDelete){this.$$.smartPtr=undefined;this.$$.ptr=undefined}}function ClassHandle_isDeleted(){return!this.$$.ptr}function ClassHandle_deleteLater(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this)}if(this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete){throwBindingError("Object already scheduled for deletion")}deletionQueue.push(this);if(deletionQueue.length===1&&delayFunction){delayFunction(flushPendingDeletes)}this.$$.deleteScheduled=true;return this}function init_ClassHandle(){ClassHandle.prototype["isAliasOf"]=ClassHandle_isAliasOf;ClassHandle.prototype["clone"]=ClassHandle_clone;ClassHandle.prototype["delete"]=ClassHandle_delete;ClassHandle.prototype["isDeleted"]=ClassHandle_isDeleted;ClassHandle.prototype["deleteLater"]=ClassHandle_deleteLater}function ClassHandle(){}function ensureOverloadTable(proto,methodName,humanName){if(undefined===proto[methodName].overloadTable){var prevFunc=proto[methodName];proto[methodName]=function(){if(!proto[methodName].overloadTable.hasOwnProperty(arguments.length)){throwBindingError("Function '"+humanName+"' called with an invalid number of arguments ("+arguments.length+") - expects one of ("+proto[methodName].overloadTable+")!")}return proto[methodName].overloadTable[arguments.length].apply(this,arguments)};proto[methodName].overloadTable=[];proto[methodName].overloadTable[prevFunc.argCount]=prevFunc}}function exposePublicSymbol(name,value,numArguments){if(Module.hasOwnProperty(name)){if(undefined===numArguments||undefined!==Module[name].overloadTable&&undefined!==Module[name].overloadTable[numArguments]){throwBindingError("Cannot register public name '"+name+"' twice")}ensureOverloadTable(Module,name,name);if(Module.hasOwnProperty(numArguments)){throwBindingError("Cannot register multiple overloads of a function with the same number of arguments ("+numArguments+")!")}Module[name].overloadTable[numArguments]=value}else{Module[name]=value;if(undefined!==numArguments){Module[name].numArguments=numArguments}}}function RegisteredClass(name,constructor,instancePrototype,rawDestructor,baseClass,getActualType,upcast,downcast){this.name=name;this.constructor=constructor;this.instancePrototype=instancePrototype;this.rawDestructor=rawDestructor;this.baseClass=baseClass;this.getActualType=getActualType;this.upcast=upcast;this.downcast=downcast;this.pureVirtualFunctions=[]}function upcastPointer(ptr,ptrClass,desiredClass){while(ptrClass!==desiredClass){if(!ptrClass.upcast){throwBindingError("Expected null or instance of "+desiredClass.name+", got an instance of "+ptrClass.name)}ptr=ptrClass.upcast(ptr);ptrClass=ptrClass.baseClass}return ptr}function constNoSmartPtrRawPointerToWireType(destructors,handle){if(handle===null){if(this.isReference){throwBindingError("null is not a valid "+this.name)}return 0}if(!handle.$$){throwBindingError('Cannot pass "'+embindRepr(handle)+'" as a '+this.name)}if(!handle.$$.ptr){throwBindingError("Cannot pass deleted object as a pointer of type "+this.name)}var handleClass=handle.$$.ptrType.registeredClass;var ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);return ptr}function genericPointerToWireType(destructors,handle){var ptr;if(handle===null){if(this.isReference){throwBindingError("null is not a valid "+this.name)}if(this.isSmartPointer){ptr=this.rawConstructor();if(destructors!==null){destructors.push(this.rawDestructor,ptr)}return ptr}else{return 0}}if(!handle.$$){throwBindingError('Cannot pass "'+embindRepr(handle)+'" as a '+this.name)}if(!handle.$$.ptr){throwBindingError("Cannot pass deleted object as a pointer of type "+this.name)}if(!this.isConst&&handle.$$.ptrType.isConst){throwBindingError("Cannot convert argument of type "+(handle.$$.smartPtrType?handle.$$.smartPtrType.name:handle.$$.ptrType.name)+" to parameter type "+this.name)}var handleClass=handle.$$.ptrType.registeredClass;ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);if(this.isSmartPointer){if(undefined===handle.$$.smartPtr){throwBindingError("Passing raw pointer to smart pointer is illegal")}switch(this.sharingPolicy){case 0:if(handle.$$.smartPtrType===this){ptr=handle.$$.smartPtr}else{throwBindingError("Cannot convert argument of type "+(handle.$$.smartPtrType?handle.$$.smartPtrType.name:handle.$$.ptrType.name)+" to parameter type "+this.name)}break;case 1:ptr=handle.$$.smartPtr;break;case 2:if(handle.$$.smartPtrType===this){ptr=handle.$$.smartPtr}else{var clonedHandle=handle["clone"]();ptr=this.rawShare(ptr,Emval.toHandle(function(){clonedHandle["delete"]()}));if(destructors!==null){destructors.push(this.rawDestructor,ptr)}}break;default:throwBindingError("Unsupporting sharing policy")}}return ptr}function nonConstNoSmartPtrRawPointerToWireType(destructors,handle){if(handle===null){if(this.isReference){throwBindingError("null is not a valid "+this.name)}return 0}if(!handle.$$){throwBindingError('Cannot pass "'+embindRepr(handle)+'" as a '+this.name)}if(!handle.$$.ptr){throwBindingError("Cannot pass deleted object as a pointer of type "+this.name)}if(handle.$$.ptrType.isConst){throwBindingError("Cannot convert argument of type "+handle.$$.ptrType.name+" to parameter type "+this.name)}var handleClass=handle.$$.ptrType.registeredClass;var ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);return ptr}function simpleReadValueFromPointer(pointer){return this["fromWireType"](HEAP32[pointer>>2])}function RegisteredPointer_getPointee(ptr){if(this.rawGetPointee){ptr=this.rawGetPointee(ptr)}return ptr}function RegisteredPointer_destructor(ptr){if(this.rawDestructor){this.rawDestructor(ptr)}}function RegisteredPointer_deleteObject(handle){if(handle!==null){handle["delete"]()}}function init_RegisteredPointer(){RegisteredPointer.prototype.getPointee=RegisteredPointer_getPointee;RegisteredPointer.prototype.destructor=RegisteredPointer_destructor;RegisteredPointer.prototype["argPackAdvance"]=8;RegisteredPointer.prototype["readValueFromPointer"]=simpleReadValueFromPointer;RegisteredPointer.prototype["deleteObject"]=RegisteredPointer_deleteObject;RegisteredPointer.prototype["fromWireType"]=RegisteredPointer_fromWireType}function RegisteredPointer(name,registeredClass,isReference,isConst,isSmartPointer,pointeeType,sharingPolicy,rawGetPointee,rawConstructor,rawShare,rawDestructor){this.name=name;this.registeredClass=registeredClass;this.isReference=isReference;this.isConst=isConst;this.isSmartPointer=isSmartPointer;this.pointeeType=pointeeType;this.sharingPolicy=sharingPolicy;this.rawGetPointee=rawGetPointee;this.rawConstructor=rawConstructor;this.rawShare=rawShare;this.rawDestructor=rawDestructor;if(!isSmartPointer&®isteredClass.baseClass===undefined){if(isConst){this["toWireType"]=constNoSmartPtrRawPointerToWireType;this.destructorFunction=null}else{this["toWireType"]=nonConstNoSmartPtrRawPointerToWireType;this.destructorFunction=null}}else{this["toWireType"]=genericPointerToWireType}}function replacePublicSymbol(name,value,numArguments){if(!Module.hasOwnProperty(name)){throwInternalError("Replacing nonexistant public symbol")}if(undefined!==Module[name].overloadTable&&undefined!==numArguments){Module[name].overloadTable[numArguments]=value}else{Module[name]=value;Module[name].argCount=numArguments}}function dynCallLegacy(sig,ptr,args){var f=Module["dynCall_"+sig];return args&&args.length?f.apply(null,[ptr].concat(args)):f.call(null,ptr)}function dynCall(sig,ptr,args){if(sig.includes("j")){return dynCallLegacy(sig,ptr,args)}var rtn=getWasmTableEntry(ptr).apply(null,args);return rtn}function getDynCaller(sig,ptr){var argCache=[];return function(){argCache.length=0;Object.assign(argCache,arguments);return dynCall(sig,ptr,argCache)}}function embind__requireFunction(signature,rawFunction){signature=readLatin1String(signature);function makeDynCaller(){if(signature.includes("j")){return getDynCaller(signature,rawFunction)}return getWasmTableEntry(rawFunction)}var fp=makeDynCaller();if(typeof fp!="function"){throwBindingError("unknown function pointer with signature "+signature+": "+rawFunction)}return fp}var UnboundTypeError=undefined;function getTypeName(type){var ptr=___getTypeName(type);var rv=readLatin1String(ptr);_free(ptr);return rv}function throwUnboundTypeError(message,types){var unboundTypes=[];var seen={};function visit(type){if(seen[type]){return}if(registeredTypes[type]){return}if(typeDependencies[type]){typeDependencies[type].forEach(visit);return}unboundTypes.push(type);seen[type]=true}types.forEach(visit);throw new UnboundTypeError(message+": "+unboundTypes.map(getTypeName).join([", "]))}function __embind_register_class(rawType,rawPointerType,rawConstPointerType,baseClassRawType,getActualTypeSignature,getActualType,upcastSignature,upcast,downcastSignature,downcast,name,destructorSignature,rawDestructor){name=readLatin1String(name);getActualType=embind__requireFunction(getActualTypeSignature,getActualType);if(upcast){upcast=embind__requireFunction(upcastSignature,upcast)}if(downcast){downcast=embind__requireFunction(downcastSignature,downcast)}rawDestructor=embind__requireFunction(destructorSignature,rawDestructor);var legalFunctionName=makeLegalFunctionName(name);exposePublicSymbol(legalFunctionName,function(){throwUnboundTypeError("Cannot construct "+name+" due to unbound types",[baseClassRawType])});whenDependentTypesAreResolved([rawType,rawPointerType,rawConstPointerType],baseClassRawType?[baseClassRawType]:[],function(base){base=base[0];var baseClass;var basePrototype;if(baseClassRawType){baseClass=base.registeredClass;basePrototype=baseClass.instancePrototype}else{basePrototype=ClassHandle.prototype}var constructor=createNamedFunction(legalFunctionName,function(){if(Object.getPrototypeOf(this)!==instancePrototype){throw new BindingError("Use 'new' to construct "+name)}if(undefined===registeredClass.constructor_body){throw new BindingError(name+" has no accessible constructor")}var body=registeredClass.constructor_body[arguments.length];if(undefined===body){throw new BindingError("Tried to invoke ctor of "+name+" with invalid number of parameters ("+arguments.length+") - expected ("+Object.keys(registeredClass.constructor_body).toString()+") parameters instead!")}return body.apply(this,arguments)});var instancePrototype=Object.create(basePrototype,{constructor:{value:constructor}});constructor.prototype=instancePrototype;var registeredClass=new RegisteredClass(name,constructor,instancePrototype,rawDestructor,baseClass,getActualType,upcast,downcast);var referenceConverter=new RegisteredPointer(name,registeredClass,true,false,false);var pointerConverter=new RegisteredPointer(name+"*",registeredClass,false,false,false);var constPointerConverter=new RegisteredPointer(name+" const*",registeredClass,false,true,false);registeredPointers[rawType]={pointerType:pointerConverter,constPointerType:constPointerConverter};replacePublicSymbol(legalFunctionName,constructor);return[referenceConverter,pointerConverter,constPointerConverter]})}function heap32VectorToArray(count,firstElement){var array=[];for(var i=0;i>2])}return array}function runDestructors(destructors){while(destructors.length){var ptr=destructors.pop();var del=destructors.pop();del(ptr)}}function new_(constructor,argumentList){if(!(constructor instanceof Function)){throw new TypeError("new_ called with constructor type "+typeof constructor+" which is not a function")}var dummy=createNamedFunction(constructor.name||"unknownFunctionName",function(){});dummy.prototype=constructor.prototype;var obj=new dummy;var r=constructor.apply(obj,argumentList);return r instanceof Object?r:obj}function craftInvokerFunction(humanName,argTypes,classType,cppInvokerFunc,cppTargetFunc){var argCount=argTypes.length;if(argCount<2){throwBindingError("argTypes array size mismatch! Must at least get return value and 'this' types!")}var isClassMethodFunc=argTypes[1]!==null&&classType!==null;var needsDestructorStack=false;for(var i=1;i0?", ":"")+argsListWired}invokerFnBody+=(returns?"var rv = ":"")+"invoker(fn"+(argsListWired.length>0?", ":"")+argsListWired+");\n";if(needsDestructorStack){invokerFnBody+="runDestructors(destructors);\n"}else{for(var i=isClassMethodFunc?1:2;i0);var rawArgTypes=heap32VectorToArray(argCount,rawArgTypesAddr);invoker=embind__requireFunction(invokerSignature,invoker);whenDependentTypesAreResolved([],[rawClassType],function(classType){classType=classType[0];var humanName="constructor "+classType.name;if(undefined===classType.registeredClass.constructor_body){classType.registeredClass.constructor_body=[]}if(undefined!==classType.registeredClass.constructor_body[argCount-1]){throw new BindingError("Cannot register multiple constructors with identical number of parameters ("+(argCount-1)+") for class '"+classType.name+"'! Overload resolution is currently only performed using the parameter count, not actual type info!")}classType.registeredClass.constructor_body[argCount-1]=()=>{throwUnboundTypeError("Cannot construct "+classType.name+" due to unbound types",rawArgTypes)};whenDependentTypesAreResolved([],rawArgTypes,function(argTypes){argTypes.splice(1,0,null);classType.registeredClass.constructor_body[argCount-1]=craftInvokerFunction(humanName,argTypes,null,invoker,rawConstructor);return[]});return[]})}function __embind_register_class_function(rawClassType,methodName,argCount,rawArgTypesAddr,invokerSignature,rawInvoker,context,isPureVirtual){var rawArgTypes=heap32VectorToArray(argCount,rawArgTypesAddr);methodName=readLatin1String(methodName);rawInvoker=embind__requireFunction(invokerSignature,rawInvoker);whenDependentTypesAreResolved([],[rawClassType],function(classType){classType=classType[0];var humanName=classType.name+"."+methodName;if(methodName.startsWith("@@")){methodName=Symbol[methodName.substring(2)]}if(isPureVirtual){classType.registeredClass.pureVirtualFunctions.push(methodName)}function unboundTypesHandler(){throwUnboundTypeError("Cannot call "+humanName+" due to unbound types",rawArgTypes)}var proto=classType.registeredClass.instancePrototype;var method=proto[methodName];if(undefined===method||undefined===method.overloadTable&&method.className!==classType.name&&method.argCount===argCount-2){unboundTypesHandler.argCount=argCount-2;unboundTypesHandler.className=classType.name;proto[methodName]=unboundTypesHandler}else{ensureOverloadTable(proto,methodName,humanName);proto[methodName].overloadTable[argCount-2]=unboundTypesHandler}whenDependentTypesAreResolved([],rawArgTypes,function(argTypes){var memberFunction=craftInvokerFunction(humanName,argTypes,classType,rawInvoker,context);if(undefined===proto[methodName].overloadTable){memberFunction.argCount=argCount-2;proto[methodName]=memberFunction}else{proto[methodName].overloadTable[argCount-2]=memberFunction}return[]});return[]})}var emval_free_list=[];var emval_handle_array=[{},{value:undefined},{value:null},{value:true},{value:false}];function __emval_decref(handle){if(handle>4&&0===--emval_handle_array[handle].refcount){emval_handle_array[handle]=undefined;emval_free_list.push(handle)}}function count_emval_handles(){var count=0;for(var i=5;i{if(!handle){throwBindingError("Cannot use deleted val. handle = "+handle)}return emval_handle_array[handle].value},toHandle:value=>{switch(value){case undefined:return 1;case null:return 2;case true:return 3;case false:return 4;default:{var handle=emval_free_list.length?emval_free_list.pop():emval_handle_array.length;emval_handle_array[handle]={refcount:1,value:value};return handle}}}};function __embind_register_emval(rawType,name){name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(handle){var rv=Emval.toValue(handle);__emval_decref(handle);return rv},"toWireType":function(destructors,value){return Emval.toHandle(value)},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:null})}function embindRepr(v){if(v===null){return"null"}var t=typeof v;if(t==="object"||t==="array"||t==="function"){return v.toString()}else{return""+v}}function floatReadValueFromPointer(name,shift){switch(shift){case 2:return function(pointer){return this["fromWireType"](HEAPF32[pointer>>2])};case 3:return function(pointer){return this["fromWireType"](HEAPF64[pointer>>3])};default:throw new TypeError("Unknown float type: "+name)}}function __embind_register_float(rawType,name,size){var shift=getShiftFromSize(size);name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(value){return value},"toWireType":function(destructors,value){return value},"argPackAdvance":8,"readValueFromPointer":floatReadValueFromPointer(name,shift),destructorFunction:null})}function integerReadValueFromPointer(name,shift,signed){switch(shift){case 0:return signed?function readS8FromPointer(pointer){return HEAP8[pointer]}:function readU8FromPointer(pointer){return HEAPU8[pointer]};case 1:return signed?function readS16FromPointer(pointer){return HEAP16[pointer>>1]}:function readU16FromPointer(pointer){return HEAPU16[pointer>>1]};case 2:return signed?function readS32FromPointer(pointer){return HEAP32[pointer>>2]}:function readU32FromPointer(pointer){return HEAPU32[pointer>>2]};default:throw new TypeError("Unknown integer type: "+name)}}function __embind_register_integer(primitiveType,name,size,minRange,maxRange){name=readLatin1String(name);if(maxRange===-1){maxRange=4294967295}var shift=getShiftFromSize(size);var fromWireType=value=>value;if(minRange===0){var bitshift=32-8*size;fromWireType=value=>value<>>bitshift}var isUnsignedType=name.includes("unsigned");var checkAssertions=(value,toTypeName)=>{};var toWireType;if(isUnsignedType){toWireType=function(destructors,value){checkAssertions(value,this.name);return value>>>0}}else{toWireType=function(destructors,value){checkAssertions(value,this.name);return value}}registerType(primitiveType,{name:name,"fromWireType":fromWireType,"toWireType":toWireType,"argPackAdvance":8,"readValueFromPointer":integerReadValueFromPointer(name,shift,minRange!==0),destructorFunction:null})}function __embind_register_memory_view(rawType,dataTypeIndex,name){var typeMapping=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];var TA=typeMapping[dataTypeIndex];function decodeMemoryView(handle){handle=handle>>2;var heap=HEAPU32;var size=heap[handle];var data=heap[handle+1];return new TA(buffer,data,size)}name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":decodeMemoryView,"argPackAdvance":8,"readValueFromPointer":decodeMemoryView},{ignoreDuplicateRegistrations:true})}function __embind_register_std_string(rawType,name){name=readLatin1String(name);var stdStringIsUTF8=name==="std::string";registerType(rawType,{name:name,"fromWireType":function(value){var length=HEAPU32[value>>2];var payload=value+4;var str;if(stdStringIsUTF8){var decodeStartPtr=payload;for(var i=0;i<=length;++i){var currentBytePtr=payload+i;if(i==length||HEAPU8[currentBytePtr]==0){var maxRead=currentBytePtr-decodeStartPtr;var stringSegment=UTF8ToString(decodeStartPtr,maxRead);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+1}}}else{var a=new Array(length);for(var i=0;i>2]=length;if(stdStringIsUTF8&&valueIsOfTypeString){stringToUTF8(value,ptr,length+1)}else{if(valueIsOfTypeString){for(var i=0;i255){_free(ptr);throwBindingError("String has UTF-16 code units that do not fit in 8 bits")}HEAPU8[ptr+i]=charCode}}else{for(var i=0;i>1;var maxIdx=idx+maxBytesToRead/2;while(!(idx>=maxIdx)&&HEAPU16[idx])++idx;endPtr=idx<<1;if(endPtr-ptr>32&&UTF16Decoder){return UTF16Decoder.decode(HEAPU8.slice(ptr,endPtr))}else{var str="";for(var i=0;!(i>=maxBytesToRead/2);++i){var codeUnit=HEAP16[ptr+i*2>>1];if(codeUnit==0)break;str+=String.fromCharCode(codeUnit)}return str}}function stringToUTF16(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<2)return 0;maxBytesToWrite-=2;var startPtr=outPtr;var numCharsToWrite=maxBytesToWrite>1]=codeUnit;outPtr+=2}HEAP16[outPtr>>1]=0;return outPtr-startPtr}function lengthBytesUTF16(str){return str.length*2}function UTF32ToString(ptr,maxBytesToRead){var i=0;var str="";while(!(i>=maxBytesToRead/4)){var utf32=HEAP32[ptr+i*4>>2];if(utf32==0)break;++i;if(utf32>=65536){var ch=utf32-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}else{str+=String.fromCharCode(utf32)}}return str}function stringToUTF32(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<4)return 0;var startPtr=outPtr;var endPtr=startPtr+maxBytesToWrite-4;for(var i=0;i=55296&&codeUnit<=57343){var trailSurrogate=str.charCodeAt(++i);codeUnit=65536+((codeUnit&1023)<<10)|trailSurrogate&1023}HEAP32[outPtr>>2]=codeUnit;outPtr+=4;if(outPtr+4>endPtr)break}HEAP32[outPtr>>2]=0;return outPtr-startPtr}function lengthBytesUTF32(str){var len=0;for(var i=0;i=55296&&codeUnit<=57343)++i;len+=4}return len}function __embind_register_std_wstring(rawType,charSize,name){name=readLatin1String(name);var decodeString,encodeString,getHeap,lengthBytesUTF,shift;if(charSize===2){decodeString=UTF16ToString;encodeString=stringToUTF16;lengthBytesUTF=lengthBytesUTF16;getHeap=()=>HEAPU16;shift=1}else if(charSize===4){decodeString=UTF32ToString;encodeString=stringToUTF32;lengthBytesUTF=lengthBytesUTF32;getHeap=()=>HEAPU32;shift=2}registerType(rawType,{name:name,"fromWireType":function(value){var length=HEAPU32[value>>2];var HEAP=getHeap();var str;var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i*charSize;if(i==length||HEAP[currentBytePtr>>shift]==0){var maxReadBytes=currentBytePtr-decodeStartPtr;var stringSegment=decodeString(decodeStartPtr,maxReadBytes);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+charSize}}_free(value);return str},"toWireType":function(destructors,value){if(!(typeof value=="string")){throwBindingError("Cannot pass non-string to C++ string type "+name)}var length=lengthBytesUTF(value);var ptr=_malloc(4+length+charSize);HEAPU32[ptr>>2]=length>>shift;encodeString(value,ptr+4,length+charSize);if(destructors!==null){destructors.push(_free,ptr)}return ptr},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:function(ptr){_free(ptr)}})}function __embind_register_void(rawType,name){name=readLatin1String(name);registerType(rawType,{isVoid:true,name:name,"argPackAdvance":0,"fromWireType":function(){return undefined},"toWireType":function(destructors,o){return undefined}})}function __emscripten_date_now(){return Date.now()}function __emscripten_default_pthread_stack_size(){return 2097152}function executeNotifiedProxyingQueue(queue){Atomics.store(HEAP32,queue>>2,1);if(_pthread_self()){__emscripten_proxy_execute_task_queue(queue)}Atomics.compareExchange(HEAP32,queue>>2,1,0)}Module["executeNotifiedProxyingQueue"]=executeNotifiedProxyingQueue;function __emscripten_notify_task_queue(targetThreadId,currThreadId,mainThreadId,queue){if(targetThreadId==currThreadId){setTimeout(()=>executeNotifiedProxyingQueue(queue))}else if(ENVIRONMENT_IS_PTHREAD){postMessage({"targetThread":targetThreadId,"cmd":"processProxyingQueue","queue":queue})}else{var worker=PThread.pthreads[targetThreadId];if(!worker){return}worker.postMessage({"cmd":"processProxyingQueue","queue":queue})}return 1}function __emscripten_set_offscreencanvas_size(target,width,height){return-1}var emval_symbols={};function getStringOrSymbol(address){var symbol=emval_symbols[address];if(symbol===undefined){return readLatin1String(address)}return symbol}var emval_methodCallers=[];function __emval_call_void_method(caller,handle,methodName,args){caller=emval_methodCallers[caller];handle=Emval.toValue(handle);methodName=getStringOrSymbol(methodName);caller(handle,methodName,null,args)}function emval_addMethodCaller(caller){var id=emval_methodCallers.length;emval_methodCallers.push(caller);return id}function requireRegisteredType(rawType,humanName){var impl=registeredTypes[rawType];if(undefined===impl){throwBindingError(humanName+" has unknown type "+getTypeName(rawType))}return impl}function emval_lookupTypes(argCount,argTypes){var a=new Array(argCount);for(var i=0;i>2],"parameter "+i)}return a}var emval_registeredMethods=[];function __emval_get_method_caller(argCount,argTypes){var types=emval_lookupTypes(argCount,argTypes);var retType=types[0];var signatureName=retType.name+"_$"+types.slice(1).map(function(t){return t.name}).join("_")+"$";var returnId=emval_registeredMethods[signatureName];if(returnId!==undefined){return returnId}var params=["retType"];var args=[retType];var argsList="";for(var i=0;i{var t=process["hrtime"]();return t[0]*1e3+t[1]/1e6}}else if(ENVIRONMENT_IS_PTHREAD){_emscripten_get_now=()=>performance.now()-Module["__performance_now_clock_drift"]}else _emscripten_get_now=()=>performance.now();function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num)}function _emscripten_num_logical_cores(){if(ENVIRONMENT_IS_NODE)return require("os").cpus().length;return navigator["hardwareConcurrency"]}function _emscripten_proxy_to_main_thread_js(index,sync){var numCallArgs=arguments.length-2;var outerArgs=arguments;return withStackSave(function(){var serializedNumCallArgs=numCallArgs;var args=stackAlloc(serializedNumCallArgs*8);var b=args>>3;for(var i=0;i>3;for(var i=0;i>>0;abortOnCannotGrowMemory(requestedSize)}function _emscripten_unwind_to_js_event_loop(){throw"unwind"}var ENV={};function getExecutableName(){return thisProgram||"./this.program"}function getEnvStrings(){if(!getEnvStrings.strings){var lang=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8";var env={"USER":"web_user","LOGNAME":"web_user","PATH":"/","PWD":"/","HOME":"/home/web_user","LANG":lang,"_":getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(x+"="+env[x])}getEnvStrings.strings=strings}return getEnvStrings.strings}function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}function _environ_get(__environ,environ_buf){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(6,1,__environ,environ_buf);var bufSize=0;getEnvStrings().forEach(function(string,i){var ptr=environ_buf+bufSize;HEAPU32[__environ+i*4>>2]=ptr;writeAsciiToMemory(string,ptr);bufSize+=string.length+1});return 0}function _environ_sizes_get(penviron_count,penviron_buf_size){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(7,1,penviron_count,penviron_buf_size);var strings=getEnvStrings();HEAPU32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(function(string){bufSize+=string.length+1});HEAPU32[penviron_buf_size>>2]=bufSize;return 0}function _fd_close(fd){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(8,1,fd);try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_fdstat_get(fd,pbuf){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(9,1,fd,pbuf);try{var stream=SYSCALLS.getStreamFromFD(fd);var type=stream.tty?2:FS.isDir(stream.mode)?3:FS.isLink(stream.mode)?7:4;HEAP8[pbuf>>0]=type;return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function doReadv(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function convertI32PairToI53Checked(lo,hi){return hi+2097152>>>0<4194305-!!lo?(lo>>>0)+hi*4294967296:NaN}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(11,1,fd,offset_low,offset_high,whence,newOffset);try{var offset=convertI32PairToI53Checked(offset_low,offset_high);if(isNaN(offset))return 61;var stream=SYSCALLS.getStreamFromFD(fd);FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[newOffset>>2]=tempI64[0],HEAP32[newOffset+4>>2]=tempI64[1];if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function doWritev(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr}return ret}function _fd_write(fd,iov,iovcnt,pnum){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(12,1,fd,iov,iovcnt,pnum);try{var stream=SYSCALLS.getStreamFromFD(fd);var num=doWritev(stream,iov,iovcnt);HEAPU32[pnum>>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _setTempRet0(val){setTempRet0(val)}PThread.init();var FSNode=function(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev};var readMode=292|73;var writeMode=146;Object.defineProperties(FSNode.prototype,{read:{get:function(){return(this.mode&readMode)===readMode},set:function(val){val?this.mode|=readMode:this.mode&=~readMode}},write:{get:function(){return(this.mode&writeMode)===writeMode},set:function(val){val?this.mode|=writeMode:this.mode&=~writeMode}},isFolder:{get:function(){return FS.isDir(this.mode)}},isDevice:{get:function(){return FS.isChrdev(this.mode)}}});FS.FSNode=FSNode;FS.staticInit();embind_init_charCodes();BindingError=Module["BindingError"]=extendError(Error,"BindingError");InternalError=Module["InternalError"]=extendError(Error,"InternalError");init_ClassHandle();init_embind();init_RegisteredPointer();UnboundTypeError=Module["UnboundTypeError"]=extendError(Error,"UnboundTypeError");init_emval();var proxiedFunctionTable=[null,_proc_exit,exitOnMainThread,pthreadCreateProxied,___syscall_fcntl64,___syscall_openat,_environ_get,_environ_sizes_get,_fd_close,_fd_fdstat_get,_fd_read,_fd_seek,_fd_write];var asmLibraryArg={"t":___cxa_allocate_exception,"s":___cxa_throw,"G":___emscripten_init_main_thread_js,"j":___emscripten_thread_cleanup,"C":___pthread_create_js,"Q":___syscall_fcntl64,"F":___syscall_openat,"v":__embind_register_bigint,"S":__embind_register_bool,"H":__embind_register_class,"y":__embind_register_class_constructor,"f":__embind_register_class_function,"R":__embind_register_emval,"p":__embind_register_float,"d":__embind_register_integer,"c":__embind_register_memory_view,"o":__embind_register_std_string,"h":__embind_register_std_wstring,"r":__embind_register_void,"g":__emscripten_date_now,"D":__emscripten_default_pthread_stack_size,"E":__emscripten_notify_task_queue,"J":__emscripten_set_offscreencanvas_size,"m":__emval_call_void_method,"i":__emval_decref,"q":__emval_get_method_caller,"b":_abort,"k":_emscripten_check_blocking_allowed,"z":_emscripten_get_heap_max,"e":_emscripten_get_now,"N":_emscripten_memcpy_big,"A":_emscripten_num_logical_cores,"I":_emscripten_receive_on_main_thread_js,"x":_emscripten_resize_heap,"O":_emscripten_unwind_to_js_event_loop,"L":_environ_get,"M":_environ_sizes_get,"B":_exit,"n":_fd_close,"K":_fd_fdstat_get,"P":_fd_read,"u":_fd_seek,"l":_fd_write,"a":wasmMemory||Module["wasmMemory"],"w":_setTempRet0};var asm=createWasm();var ___wasm_call_ctors=Module["___wasm_call_ctors"]=function(){return(___wasm_call_ctors=Module["___wasm_call_ctors"]=Module["asm"]["T"]).apply(null,arguments)};var _free=Module["_free"]=function(){return(_free=Module["_free"]=Module["asm"]["U"]).apply(null,arguments)};var _malloc=Module["_malloc"]=function(){return(_malloc=Module["_malloc"]=Module["asm"]["V"]).apply(null,arguments)};var ___errno_location=Module["___errno_location"]=function(){return(___errno_location=Module["___errno_location"]=Module["asm"]["X"]).apply(null,arguments)};var __emscripten_tls_init=Module["__emscripten_tls_init"]=function(){return(__emscripten_tls_init=Module["__emscripten_tls_init"]=Module["asm"]["Y"]).apply(null,arguments)};var _pthread_self=Module["_pthread_self"]=function(){return(_pthread_self=Module["_pthread_self"]=Module["asm"]["Z"]).apply(null,arguments)};var _emscripten_builtin_memalign=Module["_emscripten_builtin_memalign"]=function(){return(_emscripten_builtin_memalign=Module["_emscripten_builtin_memalign"]=Module["asm"]["_"]).apply(null,arguments)};var ___getTypeName=Module["___getTypeName"]=function(){return(___getTypeName=Module["___getTypeName"]=Module["asm"]["$"]).apply(null,arguments)};var ___embind_register_native_and_builtin_types=Module["___embind_register_native_and_builtin_types"]=function(){return(___embind_register_native_and_builtin_types=Module["___embind_register_native_and_builtin_types"]=Module["asm"]["aa"]).apply(null,arguments)};var __emscripten_thread_init=Module["__emscripten_thread_init"]=function(){return(__emscripten_thread_init=Module["__emscripten_thread_init"]=Module["asm"]["ba"]).apply(null,arguments)};var __emscripten_thread_crashed=Module["__emscripten_thread_crashed"]=function(){return(__emscripten_thread_crashed=Module["__emscripten_thread_crashed"]=Module["asm"]["ca"]).apply(null,arguments)};var _emscripten_run_in_main_runtime_thread_js=Module["_emscripten_run_in_main_runtime_thread_js"]=function(){return(_emscripten_run_in_main_runtime_thread_js=Module["_emscripten_run_in_main_runtime_thread_js"]=Module["asm"]["da"]).apply(null,arguments)};var __emscripten_proxy_execute_task_queue=Module["__emscripten_proxy_execute_task_queue"]=function(){return(__emscripten_proxy_execute_task_queue=Module["__emscripten_proxy_execute_task_queue"]=Module["asm"]["ea"]).apply(null,arguments)};var __emscripten_thread_free_data=Module["__emscripten_thread_free_data"]=function(){return(__emscripten_thread_free_data=Module["__emscripten_thread_free_data"]=Module["asm"]["fa"]).apply(null,arguments)};var __emscripten_thread_exit=Module["__emscripten_thread_exit"]=function(){return(__emscripten_thread_exit=Module["__emscripten_thread_exit"]=Module["asm"]["ga"]).apply(null,arguments)};var _emscripten_stack_set_limits=Module["_emscripten_stack_set_limits"]=function(){return(_emscripten_stack_set_limits=Module["_emscripten_stack_set_limits"]=Module["asm"]["ha"]).apply(null,arguments)};var stackSave=Module["stackSave"]=function(){return(stackSave=Module["stackSave"]=Module["asm"]["ia"]).apply(null,arguments)};var stackRestore=Module["stackRestore"]=function(){return(stackRestore=Module["stackRestore"]=Module["asm"]["ja"]).apply(null,arguments)};var stackAlloc=Module["stackAlloc"]=function(){return(stackAlloc=Module["stackAlloc"]=Module["asm"]["ka"]).apply(null,arguments)};var ___cxa_is_pointer_type=Module["___cxa_is_pointer_type"]=function(){return(___cxa_is_pointer_type=Module["___cxa_is_pointer_type"]=Module["asm"]["la"]).apply(null,arguments)};var dynCall_jiji=Module["dynCall_jiji"]=function(){return(dynCall_jiji=Module["dynCall_jiji"]=Module["asm"]["ma"]).apply(null,arguments)};var _ff_h264_cabac_tables=Module["_ff_h264_cabac_tables"]=111557;Module["keepRuntimeAlive"]=keepRuntimeAlive;Module["wasmMemory"]=wasmMemory;Module["ExitStatus"]=ExitStatus;Module["PThread"]=PThread;var calledRun;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(args){args=args||arguments_;if(runDependencies>0){return}if(ENVIRONMENT_IS_PTHREAD){readyPromiseResolve(Module);initRuntime();postMessage({"cmd":"loaded"});return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();readyPromiseResolve(Module);if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}run(); + + + return Module.ready +} +); +})(); +export default Module; \ No newline at end of file diff --git a/vue-demo/js/decoder-pro-mt-worker.wasm b/vue-demo/js/decoder-pro-mt-worker.wasm new file mode 100644 index 0000000000000000000000000000000000000000..48d926e799c7f04c07d81ad904d313727acabf28 GIT binary patch literal 1148800 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 A-W}|2gO$ccFFI)OQt5eWFLV4 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
  • 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�+TY&S2;0lm&>q&hX6Qf^3_09Vt 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

    |9cOpw#`oxB#>@2G>@MFA-GK$- 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


    U@ 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%0Du+#m=?Mt3-z;X4(XK7xS<-7rcND7QN{C=| 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

    TLL0C!urO#YP7&0^K1Lh-$iY_#FiX z5=V#YzB&M)^={63hq7P3Q+6nThXVFcI0dOf#&TO7fjSG)q%P&LyyOvyhf^d=s9IM< zfYhzOf%<5w(?qvuoDD0`$cvv$jDYjO3;58mp1UF&#peZ#0A0m*5A&~8cBTfHc=i(% z3y<^%nD!c%IkIL#Euhp(BCs52@7GgN}p@&QPzwIYUr#!0l5|a)6VNM>q*QQ;xK`89sN0-V3$g&uCnTiuq{8) zPEZmOD(?Ep_SRU^MBU3doNHKwcDvJ?2OsUDm`mbfXW5Tl6^ks@VDx$fICS6d5- zZ`i=E>}03FnL6KhP1u$l#CQFCe`9PrB~mEciBdw)&uv*J;cld>I&aEu(0t>F4eX+e zl3K`1#--JO=e3?nH^!D*kJ4g>Kek-Fu@~i@Mjdlp8%%SxK2-RK<|=axA4C*~J+F2p zQ($GEmVuV(3=NXL?A(~-=4vRg+92_3?9Cc)f(!778gz(S-cVbY^#`HU4Lt-N#4=1W_6Lf1V#(T#Nv!LwB4NUal4aV20X8`hCiKNP zF#7D514chFz2#1=owRGWyik*F3>kHe^gHZuQX(h#Z6+gFMOTnqt=wWD`H|g}W(8v2 ztCe>dI^PY`ocwL;=9>a)&@U+uAl^g61R{tFrzGX-MH2*+Yl`QF8$dE8Oh*(oY`Rbg z1CG4ZP=P#?x2K~`&ET$67h)?BWDp8A2uA#~!&MR2a zyxtK5TFk43v{S-hMB-vzanZoUl8bq@#NwFLjLGv#UNk{0VQ<7|-(4IHjM?^>L7F}~ zxp3l*OaVH4z?qwSSR%nLE*5P4sOvC?U&L83(ODr&$ zrn8eRgL5?8wgG1BSz}6wccpn@F5iNkrH1tyi`XA_Ba%Y*xD6xTh)zglc?>rlZ$#4P z9hY{x5luHD@FnO7dQk;tKHG&B{T?=Cr1XHXiwhAkisAdVpn5xV86+h zIr$`N-lFDE(d4BUb}^}agM>RlB-P2!%{s-onRw5f%b1fMB-@CrlQ^1|liG~`$K;N8 zu_lZVl$3VO6dFZ(n=R>jY8x9<#L}JypeEjOHBOweX;0w)F`46SO!Yr?Cp)>5ZBf0{ zPFtqdeQIp=@@H4}AD!`*>5OM*s2-k^|Ho7x?{=zw$u{v#s+ZDiOZu)^Hg*#i6JJ)3 zQhCdDXi*t}71t)-3}e^K$F5n7ot*gPnOi!mACp#Iq4TtxX*Rapn6fc$a!k3WqH<4( zn;erirdZZecX$ivUq_Bv#4vh!81#P6YjvM7b&LU`z zc!?3LO5l2$OeSf=&~>mwLn_k{n*}94&&JBb#yYQ!Re!{YG@WzPPRpun_^RZ*#uhmT z?7Bs-D1!_5=$6V@QW^RaF*BOYJ!iXw78-^YmdX~KCN~ecPb;_nDEFMVK#QD(+3y$mh9Ux2)1m>=ZlEL~hK3=A6J-NXok)4ey{_E)qXx9R z0X4F*G#kD&A@8-&>C+y`0B%xK9*S5~5&EMd0`o(2ZGlpfP(#B|!(_=o+ZzC$IfP^& zFs2Pfskl>m}ow2Yzc($$^oa$DnWWmOSqz zbK--N#-x%(7b4Bjb%*fc6PVu~iAPH_OqK-|XT%$Y4xwDd+4R4o2Pi{G%4icmpwvfN@RwZwA<`ROu}I5=2Dd`yEeb)` zBrF&@+RoClp|~MSd04+ITEF_E^;;m2UJ7A@mX{%rx&hNxG3^wQvsN~9L`elQNrX)5 zHWdJ=+2hU$vN+~$NeJO`?-q?*1!?cW^Q$zHheocdk@~X-$w=;m)GRS1BfPCali~54 zZzj?C-H4@LU>s>b70YJCiAI5O7O;t(l(@h+KyqTq1;$C)&nJ~!U>qjX#F7h)gE95Q zk_(K(?Y0w3E-=pNSb{bJbR#g1OV7>X_MrUqNLWU=;}@#n7)=79pDIX3w(p9sAx34^ zT6_%(SF`W5-oQ#O%OZRWG$etR#aEeeK}h@k8k@YNv~Vj|EB9-7PH~Yei0gzO9GOPj zed)K7B7umP1P&q&;n7A3$CJ!v9%l1N&1U`4Y%Y-4itpLOkyxOVSuH{nu(#$~pyM`N z(QF)1$s`0v@m6lv3Z!^*OwiF{!jFT=+uYp=i_k>BOD6i=;!#*4Ji9T^BEFPKqV$4RuUa#oM1WHQ2} zbYTs5ld$0XSw|Ieh~^T?p3MgLM6hHMbXX=w=Gp>^CA&#KdFbb+`l&yA(CV^ItAzhW zmmNT>w8QXY*RiELqUiX>aHj0%h)O16T#65#IJ6jo%a4w2k(=}rTx|Yw7-BmjShA63 zTTLa|M3H+k0bG!Oy?jF!`F9XA(~_StfCpa`8rzOj3rE7)c>c;soe_wqz}c(mW(mO& zi3^;~FikAEz}YA8XE3Q51*=y;^i6s{}n;QrwmR#WMjhM0>0gcHxJKXTq z;4q&-p1IT4(R}SrKjr8~(jonM-DN*_^9{2FG>{~_dn&*U}ha`31I_tJwJh78qBX>$4t>~tR)7(*yQ9!({{BVH0$`p*_L98})ooczSHlV-Z|a^u7rK)U|9g<%DJke7EpyhVl3X zdZ`^@&UQH`V!8(H1>X@IInod{(VYlo&yMY7Ea_{Kjk0ZATi%!8$Y#MdzK&5%h36b? zd^gfQ4yLmH*j~m0!6(zJw1-}@jVxRDPWXtf`!-^7+onox=h~LEVEaMGJ3DVs za1T|I=Z;j%y;+F`icK*Z&T}%BVIy^V!RqK3Knqt-^3yX1i;t?wCnI;9ByWr5j{Wq; zSUFxScf5cfjBzr*SnhZ}eP(RAvE1>A^y#tXcEGc_O!e{fsj=n8a>r}w^|9q1qug<2 zfIh~`RPJafb1HY7${hp$QBagqxubSm)3=(+9c@>f${nY2$1W`XRPM;}iRo=l<&M$e z36ykjd^wdnPUVh6g_~2kBLXxezI(1TrB1YYvX_;R3lOFHgT2to zSXrREsyDkI&NpPfENN6{8)d58rpFJ4a(f{^8^S3)a{oxE7ZlKzP44Cbq)4cjJK!!X ziVTBf*cpuxX~crLSVaxVlnHR$b90uZrhkMA(wMSh0h|nj5YW&^9cplx9sJjy-N`N@ zHYpU?s3(YIgz>XWV;dXG(j?YlyRd^P_j$cwXXlq`=~;R99@o-XVAhec)CP@|z|2lw zG8*|9jg*WmKMB%7pB?LESH?Cm7KBOcN&!K@X+k|0upyt@P$LlrjR9vY@9H3%=SZ+T zHqnJlJ=&-fk6ePMQzbu7lA_)i)w)=YC5;102-|KrAwiDCNjLS$K4`4!cqFB<^YJk% z>9LkvPx^mj(#F!N4M{Y|q>ZIj_z@giZY-@jC9kt%%8jK}7mPwjCw+4TP zJE~EaXxMmT5&mt};;&F?R=%qcls)$P#@yix*LlNgJ z;(HeHvLdjEq|!H)wy367iFY_^&KNUIW^L|0a>7qk4DeMs?XztSZItTMGOu z^X;l4{(Fn)SOnz}^FLUOZm(`BIWdx1-KgTW7?*MQ%Hs7#6`!4jY!5SmaQS2#ArMxY zH>&UQ*)nn<+#>TW&y1Q-w#4Uu(>{YfF*w!dFNM!nu>9cjPuXWgNiw(K^BeY#)CPf~ z-oG4@zku}?$x%(BWhV)J+dq)x9SbcIch^Ea;=X2~6U6-`3oQ}%Eep*P_p=sSA?_z+ zlK0@=-hUYB-QW8!o!iCren#W?y_Ma@9enoMZs!)ZeDOo{pt1Wac2ml}BD=}{OH#=H z{RhAKAbxgV7}A&nId{LBlJ_?syqd(%?#;vH-Tkwb1cBy|#KU|2?d(nK^|kCR9G?%# zcEEM|XBaZf?!!Z7A!BkfAKuBn^4XpbO;$MlNc*qZ@4Nli4+(|a=^KZg6K{OX)k6Mw zr6_#p)k5BQr6_!a)$;sd=frF2>zW6j)t(*(4ZfAW`C0BFsPw>PJscDbL23ta;p-sX z&pG}(%nbNS`sL3%7>3P~OLCIWL}A0<^Pk=JG(7&=i1g`*c)S2Wi+*5^9dGTFUI4=R z#=3a{s10xspo?+&S%KsYgf8wIA!#t1!xS$O`AYB>X2b>UnuvC7l(cIyfOc(^v}-aD z?b;}5*JL2twJ|7YS2wn5l(cIy5bfF+6trtH5bfF+6trt1+O-kUu8C;ZMntH@??V5;oZA7$dqVk9-Y1hPPS2qB5+7*X+5$y^r>|EN^lF(O_MRL}J415=u zSvIaQNFW9UL;2c+a&7Thl&g6#;DAz}MY-xTlxv62qFl{TTh6-qEXq}%p;Sd ze|*8~vj|x}^F@@aT(3Cg3Zp@sC|B_xPPyW%g*Z{JGN^UR6)%LuiE>Ra>xXi!-m2c> z&gObLgMgy;mV1W4vmPh4>Fk~D+g)aCO{i_(oqeFTy;u9$rtc)ctw6{mO=fxY5IyK{ zFQ5p|gQ-ew1#$o4sY-OtXB``k{~b@+Sw1<->yF%jsL6#JX;Na$SQXIUMSG zGrj$3t>yJkuKVkU?fx6iavb;i?R;`w>m0UgCTa1l>C+nF%})*tn+XIZL>ti9=1+AS zt?9xnYz~dT>Rm32xg^;ehM_nIwin%>;!;;gi~B!#@SFFzYz*<||MB3}H_^Eo;VGCp zC=e$rjcv$-#-6I01H6;$l(jX|In}B=cpj#r;K|qTejn~02RSTmX#Ji!caLLU@IFFf zJCum6i-E2IDR4Ku%5x25q*10j%CjwxoSw23`M>7dE_a;!hbt}Nh zNxna0nML{5MfsB3boQDM$9%nJUquGjMF#U#LRShjYV~pZDtT^QG%;V5rs?GHCHpA) zxUL93l828@w4SrCB9`mc+{WOmmer}=)V@MF*Nt)}uR23!BgG{GHZr>It!bE*GGDjV z(&K6 zpRvy*x>0S~SILiq6C)@2X_Lvh>-wB>ZvwC-qd>qX7e+I^HJlN7&J9xLv`qKY=o6ko z%mJB#PP)qtnbYp>_sj>)Zp^^~Rh_wIHJXcNsS`@Oveb=QC$lK~*g=`QLd02WPUOqC zG~#Jw(y{L^iJe9D$DYOH4j88nk~upAAa~1f7x)W`y>@MqRUAR=6AV9ZatBs22XzvO zIatGYy)y?rtZJM&SVXbVnS=Q>7i%x!iY^yxi-{0(&^9I_XAWl41)#l$Iha+{lsSla zAlqc7%z@ZK1I3g%uuJX_-U+LNjih;uobi-7C>j65GyPNM;BdUrlsSkl(?0gK`zbRA z^^!T@G8MgustzW=Uc49n7ofL2Gc2x3ho^SD7*jvU7Dc;)c+#psh zR5`k8KB{Gw6kp!$=!*IOk4J4$>L^8n6kplxe3jU%Jl`Xg+7zW|lH%>%j%rXVmH&%- z%a|j@kM4H76r?>Z((I&-@?RL}$)vy{;MrCwJ@zvdq z>eg7Or|M6XqDzV&-|gtD+Mtx`d6Z(F6kprzD6hV%EoyO;qDP9a?{-wO^6IPFJZo?pfae6Rf`3#Un3k! zV=$Fgu>yih4PO{Um7uhWRV%_522Ybn(?tDO$>9rwru1r`hD2}(Ul=UCskNFksxy3H zkW{;dK~qWj{7d#t21#5kgQWE8oAUpTr_dk?Jj$eIsE|-3gQP?%N{x%U%OEL6m8tpB zz%oc026a^>M!;i`6ss83p?skp21#iZo3GpOg+Wq!rB!_qR$-7d)EYVsa5Ur$((e8rZb z`e^MlNP?B>P>CgG$-c!PNeaLqsTHb6@Cc=9kQA*)MMq#|kQAfD>X?8L8pt3ior+Lw zv|bn_RiN3R0aimp9tP=cV$~rHd(?CWN!=A_ls+0h21&K6Bu$ZMGB8L2v`SHzBj7Pe z0)WQWCv3m7D|Saql*r3zmdB*kbL)Dq?GOR65TY0)$K`>mUQsA8vLr(@hNWiA94|% zU5|Z#wsg~qo7JVlPwV{_9?XNE*8B6gW0jv)j7RO_WCSqgOVtH1?iO0%8KiM?9H(#t zp^em}6`sR;tQlSErH%fisZ{Hwi|MABwd$pZE+)dW?d%MKi+7oK?hCt+AenJ#(@SzY z(6&|Q?#Ik97U#2e#oZ}{AQJg3;-6WNKxkrK^482t9v)P2*CR_^_c)5bICH&v!hGZ5 zo_T|+B_7)2N7`Jh$(fzHC{;)4fUApL*91>#wWLS~JzdLxnlf6q+b*5!r~>81k~Qn& zwwwzpR%!K@D50mj2XORhX1Yr@4CeU|Z?NXqj<0J}*lWG+Gc6famlBdT4!g~s8XiIRf>{?nT@Xb@C`2aXrUnKBDRCx zqnlo&`zUSa4*1jqcg%`UI+uwJacwPEdjg_~W82o%;H=RcI%XW7tA%x7sB?8BX_O_= znTy2UF}R*3PUq@t_?~pp*(w&dey+a3?GP?HJB1HV7oBZkvs#|3AA{)3)#>a^9rT%u zk{syUurqbySf8Js$V?J_;x3x6^NZS|j@?oS=UL6=sxnk9%YvofGt2YxRe&`7#xdbv}ToJc1p*j>Jz}=nA1T7J8fze#xKUXWb&M5}LW&f07?O3ZWJo z9GG7xv}`G!BD86trwL)F^^EMao+a$gh;9&aZ|2Vta&P9(6I!x7FA!R_(2ImlS?DIA zEepLAti76M?S(RJVePd^CGt3gfN6yIC`q3Q3BV6x(r)mGIgD7$(oqrRjFu|t3YMa} z(ITecL7k#T3!4(0Eqk*^i=7hp(@r^~1yI3@I%!6WqPSu!)HPZtl|V~-dq#_=lC&Sv zj22V{AMvzjw8$#BiYLuz;Z^YVPMXnTtl;FGG@}JtN&0wb^JvkQQYF!rgf|kkNFWo*_*l*o=SXm))vpvmM8gVJF%svf$WlZDp*ZS< zfYmDekxLkVpM0S-)~JL^5-6!Ir3znInG#wF=SYYZ36@xoDoM2~y#!z(535kZF|}On zibQA(k_1;0tf`l8mw8xm>WfNR4JkrttTUA@V5!AwU--i6QmpDwib$Htno?TDsxGx8 zOXAb(8KCxsfbbE%yEaf^fGZZD(Hbk(9SNCug3vxPoh zbSdO3+u3E}u3MbRws^Z{Z{fzMBz?+W7flG3;74ECPntCHv7PKy(%-Ns39fi~)?QpV zm!!|xn_sb!q|e)1e*4D@_O|R&vLt=cURPX1m!voCwYdG`C3{_R>EtbBLy}IKL%v`i zjU+I*zB4)JvI)>uOj77~dn`$Ml?~F%Tr84ZMy4d`N(WH~ye{lgh z8q&#dG1Q_lm#xkfla=|+9ZN2q`~t0(bW(y-a+=UJ z7Y<4~x$IqEap`2Zmt)DKlV9Xgk&85nR!cg0EATXDGits6@&o%|9llq#K^J<>vhXCWmuXMM|dr^bo_H{7YQr2b|< zqDFDw2Q8GwT}yuc3IS+zU&XRZ4_6Fu;l7F`yQb+p{dqgTrfJdd*Es32%oFL$=___k z(<0?dw%9}6PNwT>H}%LZkzMG86w{=W%Xa6+ig(rT+*q;>n+=h4{uY5@Zm)iVQYD={ zm;MNGl1^SszeL>E2wh0ONSv&G9!tMK9HJ$r(1188_Pv_kBJL*+X{{JUj}WBJ+};A& z#t+elw^V0?d}!NS@_r24+vKpew-UmAJ1b=w`>pRg-T7WKRtKS7F+3FhjKBoUcQ}jH zZwAq%nfQEm`x~s&4{w$J1~kOy+*0??Rt{~I{tf8c&#y?uI8|ul-i(%%7=MdSrA` zSX)dDPYO^hWK*m3d+;HjydQ!`;Y@vMm5wtaojfH?n9t}DANtVFHXemD^{L@WENM9I z5&o3V)g!C))+c3^-Wv2iU8{6RC_h3sl6Kum+7pnp_zZ>CsmRe1XNL@}&R_N)DDin} zks^WGugmF=L2GJ}!aM;UI&2)FNHAJ=V6?ixXeEKsssW=F0!FI=j6VDyedIs-pnvr7 z{^&#f(MS2C5Aa7H+fOZ0!rFY4kL{-xDdiwt1)b`!{BviKvaI7bGaRXAE3rk&d}NVg zRtKLiiXkah>`0(vM@2aw0uok+Pm1)tSrGBIUp- zaLjotTyWn|YDYH9nOdYgV55qk!@Ko3qG!kQ$Y-KvyGAmSuYBxLeiWoZsFeoqg}|>IfN+Lqo0YHQ{vUJ!_|+j{Mofbct2ckA7lhtM`i@1FPWHrpqZy1_Zh|1<$GbN|0u8o8tv)f z`qZoA9?nN=ewf<{;zzojcoYoQr!L=vva3cjehSIO!;I{sW3X;p(_vi_9QVdGWf6WT zM(db(FU!Q6>uZ9E_dFr2!zh-<;P8W&UI z1xjmc+)NdI;>!y>G2xM)_-^DU-rP}{p${B|-RemqQO%H^&p?*8?1rSaIX*AUunIr% zExRtMZ9d>T?wP$?`iajCq~s^QV`;jjpZJ#DqtrG(@g4IM-;Mmlx9n1-wl%k7e&V~~ zcBIrARoo6r!R9BvTl$HQt_tO=ylv6r!cTm3Zzx~QPkdLE(cfh&y0}G@&+-#5+a+-n z(RHGH5l7J-lz!q{c0ZHfEz0LJ_POvAAKx>|S6ypL?!r%ee(5Nm%ujqb@)IvhLzx-s z3eqJT{H}S5$2<#d5$;oxwP4##16SHEw12MP9oF`V7fW;Zu#gQodDQyv3j1$x^b)63&beGr5|QHm(d5 ziIRz1mXZ4Oc6OSqvR!M-cCF*qVrMA^&+%Q{@n@I#F55GT-l4zdLydIUo)wp%Ub4f4 zZ(E`^$=@M#I+fEeDeb11+q=^4sZiej-VHFvnJx} z>UN*IFLi6wLOQ(!^+vS=-8Q`hRaYmK&RP$cn@ul475zTsp4X|l+0@)@qQcB^OVu6) zg_)_j*(ae=@hB+FOwG;ybeNlcUN1qdn3@dA8TY4`pf)4nc7oIyZop*3(@Rh#*sh>C zGra`$YcN35OHd`T-%rRT_2wRCdsjX-4|$Widr*7bg#6dCH$JTc*r~cqvipxJ3@#%V zKcAQ${aZHTDSo2eXWITbb-;7plsU-NW_DlL{i^)cPSs@^F$fCPw<&W_uHnP4-_B7m zHiy^JnecA z(La7cbOnH1M&}LW!;oz%R)35>ys+${=Ydrk9{jFG1brAl$AQm|lW9 zy#y5Y{c7YNvXS)AY)FT!C8oLh>ADLrJI7PAh{44=RKE_diPIM!+xQ%+RHj-B8PJFvFuh zBv$w`@0XZ0&6KF;mzXW=U}1D?XVCZ#MmgVq@Zh^|$Xw_*Dfi8do0Zw9idH&j*L`tR zY1e)A?7FYk*!=Y&|$YSuO2%yaBo07u>7T~IgpEI52{4L29sJeR{~u7J<{o;J4(J}qt)`xR`a77RX^ zJB`WTiSlC_MN>!D)r!*2W92kDZ8mqa(oE-o&z!-hUciStEcVTtL46y0tO7pFm#dX} zHgE9hVXjrcN8RDQfX|}CX9;tz(B@VSpH=~%)je(Q8hjXAgU_PDXMSw{IR?s*!-JOeiY2N$JKQzO4|@DN46_VZdTUQ z1o&`plUARAbucqVOcm=WYHOW@&TS9wFKiDwA8co=JfM`kxk2bbh2VqA8yhc*=}-aH zw4M6ukp8=RH)p*|$^tqRz(WBY6`(&Vpy~zCIr-1dYXkpLjuIzItUpRz_r$Z@%+Z*b zc$UNrZjx5hneEJaS-DzS%4$+dsp9ugrkM@BoT5*3nox_z{S%ozw#$ak(H0)sGN-oa zkN2FC)pHtU<5~kK>bWM0+$t8G83DQ~sG9=Rr+V3$8ny9ITTQj;kN4aX&oTqs6BEx; z^1+@jd(Z1}&o_&ncRt5GU-h2PhMv!8q_?u!Fy`}F+DLKv^F>&Gq~KS^lDLb`jsVWAC7+uf{Pw8@Xy{p=+{vTobx38zMu zZ8f>?BT*--0&Z^gyyo!T+{sQ8chd4T& zps(F^VH-=TU_!Mxz=Ucs?Y-Vjq;OiV-hy;xQrBW6Aep`Ns%YN|El);Npy$OgH2$j#Lc z6@s3-zU*!gvdqm%iRVc?yWJ-T zTXkQI0w#3Anv6dPjq%Ub3arpkqpp#DhdBtK6#O=xG_>p?;t-I(Y%7#JnXz$VsT7LJb7Nhjeqa`%2nGp2Ma8s`~SN39=jJmuWj)9g9p4W>4&ZK zGzh3^Q5IqQVa;|*Awo9Uo;F$7_R+g0Gf>lyMV+?8*2gxLv8Aw)29F?f?h&MC-*w&e zcDB9)dFER|C*KM>#a6)Obp;xplgAJC5%U?c2nt~%;r}tY;|;Ir^Ff;!&RWc?NK3a- zXDeeHAi5&o2j=8=#4aD-#xqG%yAA)3sXyMxR6m|cPVQt|R4>mYExSP*FDGM4z;rUI z9^WM`_g!*^>QCZ1Wo-5Fey8g3XoAnjO{&-R*>;ARWjKKh;P2+(?-t-+-BUgOQCjXF z1+j!YL9*wJ*_z>HindDvGcK*DwH(ZwX*Rapm>@biVH+34mzR5L!Zt1mL7sLk-5A^6 z%_!|knvQL6Ork6cS&f0&R#fhZbbV~O^JB=45#-4K&)(a{N|v1WednBhfA9N#@7y~x zr+a30XJ3X~lDkWqlB_u^afh=@y}(ESAu<7dqK$h8fo3$jQn0dSe3%`@c*IszdpqO z$4&}siZLtg5>Cm(j-(W45aCeREdbc04*sZPQ+4R0Bttdc$pY#uhdU7JQz! z`Qz>LdRrfQd(%OnS;oY)dpFO87jxaio#wm zJeO{#=TEKqoU2)SVM!fYQL~rdN9k@^B(ErZL#0>Oryk7q@2xmJl;4h&ljCuVL{{*UK$RyMVj!MJvt5f89qDN4Vo!U zy%iPZlRwhrH?E{AR8fbyfc}W2%1zMeHd-Sl$|wa;4jS7p0Nr3(@W-^+(6rEpriFLi zZOU3b;q}NELtTu4X2ketN6{bC(kxw3SI#CPv5C4vcuN(kl3!INsKKVaN<%=WfF{I_ zj;Cn>=njDL2cSCwR3CE;WR#-Vi~v*&q;ANxSxggBa`p-uTTxTaOe*eM=?Jsj;vyT~ z^awfL$LTIidydcV0wjL`xho*`F~?*$PtB?7Vlv{}!sg#FJeV*knSd+iSk7^D!*M>x zR%qWj#~E{W^J#^1jsqr7tvTm7Df0ZZnsbgL*T-pvbB?or2D3HiIKwh8TY-(7#AIbJ6gH+4?|S#`sSHj}Z}w{jjoSRLl3bYIqGa)s$aDJr?zyR|>9V zE;N0=4jVE*nDP@S&fCUs*AVhDj-8MUW%k1p!bWh|fFQ9Y<;UQ=o=jc0s^!=Rr zu8%psxRK(t+*r*QflvH=U@Unou1?>D0uFIJt&!6iCbf%e42*cjjvu>o9?#Kt`2j{o z4ZG$C@Hb^$^vql$AP3=ye)2~@kJL|n%(2yN*%#vfm24F_#J>T=qC&^kTNf5My;$^f zMI)zjT&g!wGqA}pb|c<55qU&E;l(5C;I12Kf8W+HO;NBUK2BGFbM?FpuE56WJiBKWBTFEY4a9Hb)?|-I?bam4_apC+K5o=? z)GrGtS~lsM3rI$3{q97zG@hV~@&w8LZQ74hzIE-}CB6;q+mn3j*te^E>)E%b_%^U_ zPxEbL-=10LPXh5`&J%I(u(Wd7@$V0i;TBY`xHXz5jDvshc={~AOzpj%X|K#~OKm$* z5v7+bxn=AjN}sgUzKM%#C)4M6JEeP;+m><~L0E#qG$2y>(Z-IyNqO|eEex0vSFQZm zafB#+%91`*I7*+k4!M)*1KX3gDd7Rcg2)FVQtgqJB~Xzk5Ivb zBv6eR!XhL@M6P>ez+T()vZwBHIysq6=%ob7wo%HK@!5Ujv(w8b(q#K^vlsPo&l1v!w2rh?41M#m-(`VOd}VPWK~M?}w> zNU5?zu`REKvpK2U3sT`Lm*^tjp&QweiMzizvGVViJkPZ-%%{{ zvET8r-_hG2xkmZe?a;l!?Xs~gj8o@8v_Ng$KDH*d z3|FbVaEBJ@dSE_3EnD=pqCseccdBW*nlKCRQ?nIoqN^^Fmpk=*0Ghk6%sG%sPCd5* zRdVVX2bmJxy~d?ccFdJS)bLE11IM`nxoyhgkBB5*Q&-smcZlnaFf;n7MU8wxXL{*m z`Xp`>S&SCIMmydmBNy28>RMpSzO+&}8+ACxi`LGc0@6#mQfnQgWrtZ`!BU3+nXkME z$fp5PKC-Y9Bp;G3>rJ0o3u4(3CbugU7#;`C5jHkY5&pSD0f{qc4LZyIu0FnbmIRAs z6Wv=p0!Debf(K8lO3wSFK)p3_d1XJAA`Ym*i(S7$0y&iYtZ-t*X7_1IhW@1M8Ij(2|?C5PC193}TSO3q?ka?9s&lpN7r zx#jbSqU4gtQF0d9{y0jmB6>KtjhylI*jx43Tcz!DkE7(GZ)%iWulH|jaqHeCwpL(< zUbfRgUQCGly_&oePljoe5V>0RHDZp~R(bd$nZ4vXOa`b_e8T zU)(sJ^x0$6zM4eYPuxyBSCc-Di|EE3>g8S4*wQHkwe0P&Dr7qc-|uhOcXpRY8QZnk zn?)ly6?`M?LCspPa!Wm1ucb3txA&DsynQciC_GZ$ zNgi!d&07;4t;C~CikM05(&Eu4mE4_Z*BXx@DFP|Ag^b6T6hV>-vgAQLGmojcJ$LwC zv)D&=GAPP&kB2*)f?!tf5k26WJEnpV>`AS5ok8C^=DeS#J4cIMPM4i4z`{-hf}D~cW6nke{|hbVUFD3*sPcHk(MhbXpx z%P5wID7NP)mWL>|>%xM0Y?A7@S-@kP6qLFn+P*v4CB@WGtYQcMlS3iCKeim7o( zipLQtrp9?vJT8!8YFs46BPGSun2_Qzh2WVXm-YP$-`xy(Lf`IAp5)2pPTPwD+4y`%JQk={~zyGR$)$FYNAez{=})p3v5%|V!KyNGuQcIFeq+u+iQy# zV?}X`>t0*D7)pv;-1pkz#Yj`!;=H z;*&BPClgZp;^1{X2Bh|G!8Pl8Tq3o5YjT+sk1M2hZcUyb#p6j*+qWj#g~8(~Qd_qs z+JC|08B&|KCeM=MagEf*t;q*S@%SJqxT?1KX%XgFF@d;AMmX}HKxIqee@<~!WZZdFmm~Qv16>q%f~k%JoIjK@M(u-y_>iBkrR||Qi4CZY~^e?;nM_XFtd{`a0(R15WRp?`HbS@n6244%O4qVozWFOW0FvRZibn z?CGcevh`H~i{GDB`dX2GTIpws^i`#wD$-9V{bZ58tn`&4JyrTrk@jSkx1Z|wN%8vy zr7srgBc;z5>2pdS7U_MZ4~q1z(tAaETj?F2#(YJw?_fu_Qk)~V^cxO~TlzUQmyJY$ zQy1`8$Y()#SXTj2`f!`RJ2JdFS*pV}dcj0fL;&K0Gj)zR;?J9Chzv!gxRPIM$Blak z4@o9YH9MOTFTo{6Uy>{INvWEF{Lt38jI1?EkyDBn+ZKWluBW_LKxgHfx7L(5<;%{& zYhm2lA=e%;b{cjkZFw?btTatq0R*^GxWLZJ_X-fL{8_M57eOUD;<|$y%*e*h!hTfP(b?InNPPi2D*7#k9S*~h zV}z4{QOg{5>?G`Up0P#3b_Q>mb_y346*s{Se=vfk7=b<?vzMmNll-I&nV3Xg4pD=6~4aAVqur{eUF z-I%a|$zwMrs~KoFkKLFnCgfu`<|W9ibXRw^a0e&r){sR`k}LM!+GT_E~9I+Cx-X~Q3b1y>A;Hg{$)LB z->ZwDuzW;GoI39as&kB!x+8+pYI#9W{V;-15}Ue3P@|NaKTx-!mrY)QUN|@2(@V?f zWo-1Kz`VYrmw~4jIbuaGIARly^PH!b)-ji%E&NMy*vnYI%gMz?BwL{9DV0DxMlC| zU-SN5Q5Scx7b(|4=P~c9>?!tR;ndtcL*Em5_JEt&VU=6>mOSq(Z%Qd39 zs)?#!A}XDQ&za@_M?LA@Yb+C$9PJa)Zs!Cp1sk{xdomImU>5(SVW8 zz9*esF`peVpC-hSZa>fksMNX7E34SdyQ;flq<;{SrVEU7*UjN{z&9J`w2N}S!NP}i z)pt~!M4nP^{(+yoW|s{y0*MBBn#fMohqF_`%$*5d)^0lfk?h{f#>C*3!O_mb-(TQM$8HoA9LWb z!rq#9IP#iq;+|Eqe#cIKO59*0i-j36CFCKacK3v6oVe}D~NtXU*{|#q-&JH7SpoADEc;R8}5`+|x zNL&ICj912LyH3dcy4uv{ADC@pG>ArXb=4_>wF?Q)C1IO5<28*%J z>ApHGc-~f8q5A^mW8JqL+2D0wZ&~$?rS+M|y_}(8>^j}o;||6n4s;gXmp5$r#yAUd z$Xx&x464Dh?t8zBLb4%+1nowe2@k! zX>h8O576wS_ByqA%d`n8#|S8t;|aeI#B6$oG!N15=;q{#X%{`yF0KqBCkwg}vB3Nd z`J0R?bciv~5X_nGiC8b8-Clq{2PN81hTUv z1BnVji0ZGf$W%K2uC$b+{4I18sVuH?G?ZPR=xGtNqAIVQ>_|HqNEo*tT#d)VaJq&8 zMZ!cYH-&K8sn<0W^{IsE8Zk@Rz`pT_+h&oxXq#xoqHUJTL)(btN(#+SdGtZ8CNh;ZVOpW?3`T zcWH;}heT3LSZN7st49pv79;kk+IEBFsl^SFX{LdWj9NhG7^usCQpC6GgV zfT_x=gzFt=mfg;N_%`yGeLLN(Zl+j2tKEjdb+hNb59?M6>7>gU#InzDA>aa?^lR6t z2efFz$qY=-dXZ}GW#c>CVkC=pK0B?>er`EiXOn>bzBJ~3@T?629DN$^hQ=vXv_jLz zyw??Oys55>7R^#87NC>e`w=VzIC`7jP3J1?S%nNM*SPo?7ty(75gS<;M2&=V;H8_r ztR`d{R`M6QH=*<*mb5{Eu1!9wyARG#zCtXj@@p0O9T&^sOmCF28YAJVO0LV@FF7ZP zl*VjW05SNA$+khQ0bmau{lq0(E5?|Yk}%Hs02er}9W$o&0>@ljp#df`s*ZCYA9rOl zz*X4{@M3nN0amLPBw_jk*tNT}+{iArN}E~+ogZ26YYQXWlDEC3k?k6(Am;JdPZCBJ zR|2=jUdE3wLGg%76b2QdmxJzTjp4jfEV1J5F?>E zBLWdhC_A#tj-YU1z+Y$(;hl2c@b-?y2-E-@h_ z?J&HJPvDqOU84^Nlip^=n*U2Yz|R}@1jg)E>-|5&q;s$HhB#$%GTnqzGNLEu5lv1e zgCuB>_GOV_GH20h;}bcGIGkw2ynr4FbCx?jlBa)2#t-AXpY^5g4fvDFH{x${;8ej5 z-=z-1Dx=A{Szm6X27huTDO7oK=!9|1ce$Br$~!XNgyf(7T8xYR5KX!d8_?XFZqI&z z2cVE2ALA4yi62l&oQRf8T#_keNoJ~a1l6@`by;qmT#})RhD(Mjnl2ftAjFEhO{|K& zq6*@{Q<9;Ij!T9rx-J>2(9Sp%SV6I0RM97wWT*lcwUVKVp-YA;Gyu5pg{tx&&ZmGQ z$DbY&N4smP&QVsvx=>cax==gy@bDdbr_UW}iLlA3LS1*^!J!*6E}-r-u<}=hZFxXu4QEC}9%!1G>iopBO?(+agCY8u3$K%tl66Wh0{( zvvrIcqcV_;9=PFRb;o3Mb*ma!djTX4g4Txk)Bq!+6KP+#bhbbVGP)PkxjNl&x+HT& zs)iq%guy^2*qC^7;a0<3Mx&5A)yv+>M@f2!lhJjQA77O+os3?{bTYb>X`!RQY~w2Y z;PLWW9tCBXYY9Nn47mo8&MwT3dR@YwkFw0@Y@zz%z2oxo=zSQpazVJ`c@PA!8* zP4?HcZlw<&&M7Q=L{YiP+=2428Qi3xx}bz zGMiNH>c(mM*xm!ZybyR!*H5gvCRSHwO;;1EA1bu2(wn+^Gluiw>+};s&U;it(c+YT zx*7|!251`L#m3x=I(AV|2t8uYp+e;|!z%M3qosT{$e|v4Qeo^IwbB8{B?Y>Mw8SMP zG|F6ZZfFM@T8&;lw1Y6FG695E)a>$@M&i9TrV=MG?2;wZkR?-<&6qA`&yT4$5Yeqy zwmLtUqcE6(OWI%-T+$6D!*89lZWx~qMxYJH(nuCuQiM~y)d<6d-#Z`15|=E-a4s_p zV4mqmp-+}i2H8Wg8*V!<{3X4l$Kfy#)ZX}~TdWAv^G!L-D&OtoHk?|ndzU@|+ z*4ZeU)^8q~DO(5d9%aOIZtL1p2efr!T2sm4tA`wBi|LfT`A^$oTfjh@CPIRQ0bSe@ zY_<%CiqGzI+Z1sM7jHbH>zsB!*{dGL^dH^XJ5jVfe7OUmp?8 zVeU88e@vSfT=Ue{yCI9@2fBuGl-uKTpwc^5Z7`-|PlT~RkzLHh}yjcDs zcxDN1j}qf!bw_fWT{T!V{Dwi&c+>_74Qq6o-27KEO7MpRIQ+S6nKaA#C!H+opTcHI z|KzsbO3S1}I89(ww(UEE%fkQU!KPsDh!bv`m`wmWd@p6&!A( zUqclN&Uz5bq1!x>n)OJuuSG^?9A6F43=sX2G3xb%+;thJ*p@p zv{d8!W0@dQB$OKB$;dZnnaoe82D}ynL3WB%0@*3`l>6IRTy&(L&sqGIj@xQi3Nb!) zs)Wh(ypdwFM~j*gz^b4=Ujb6NsK85I*WR$yUe3@tmZUI>jEw`Q$rkv7*9d{zOb|J5 zOZt*b5FNMdg=?WVv6tOk!J9$2>Le61K{kVMMIH9?#Y~W(8ATGVW`f`c9#ohhRoMvF z#cXea0En=(>13r7u1=~gw(3m~uh-m730iuj z;9)Oe<=v?{Vw1pa-Jq8(#BARch(+~C?P)_lH26XOLO6UDsQ_4+4)h+RcP&cvddp;Q zi$w;$idG@z+tb$J+Y8cIF!IyunhLk43X~(jRaVF$Dwq6=qCBPrf5>D7KkzlkWC9D> zattukPdk9Cx^le{z)V8ZF-6xpa;KwB&Ct7wazF?YUf{*`+a|96{s3{E$O9;G-Mh?; zl$b_b+Y@nZ&$s*&acybDwLKBn_Pp<(UR;}9;++yv5@wumXo<3T*3wI-wDeNUx2B(O zrp#)R!necn3lX19FyohBq#h5TSFMeMqGqAI$^gYqQTUMe5c*Xa(`l=+nRbiWUZ?ez zzqdEA{DB-eq)<1D#!GYFtF}as5||tu0H_2Dc8acTXZFoisOc=*-?PG?r)szh?be4_ zZ{$7zpvhmHw^OLgpm25yJ4ZcVRz7x$nRh57bNS4~rTn?cm|WL?UWJ9oP&Fg^BDIg@ z7retzn&xMM8(U*f$2)SLU61)@7jX}cg>4xBex!zAET?RlrK<5M8 zh+3Er>xvav(q!|P&j;ZwSn`-hD_+KY1OAuSnd{AG#(Y8HezIB*?Nbn8wn!rp@ z`N@z6NC-_Qyg!l*`qsU{cz17F4dw5{V}XDSV59Y}!DcC|aiwT3rFx08G>?b0JUr9B-5MZ(=r{XnA*2%g1H= z(fh#EE5wo!V72=L4ZtB*!s6tCMBtsQisv#Mw z&{7S_P=(gM29=9H4pEqN?*>Q1HC5**D`8zID`8zID`8zItB#&>z*>#MV5vr7uvDWk zSgKJNtPYqe)hL9PY7|0CH434n8b`>=$_1-!V!kVX(8i_8A2x|ltNcL+o364j^XXKw zFr~~n3v)LO7G{1}3truDa?45!)3hM7FjaxGF!KuJ74Qj78spopy*;)ug!Xc)h7;LP zG~tUD6fD70SePbfy@PMZsYNn2r&NPlB!5{+Et2TY)gse=ZNbZ{MfD1`Xiv<5KWUwH zj;E;*q>?EnNc$#K?CW5K3WEnfSBrEyCu-4db)96xlvwAh5jA<{I_px47#^ncNg;VrY(*T0`2zk^zYPU5Y8rxu~8X|PQ#Qq9x4)FPcU z>uh;YgF+QCd!-g7PA%FMq`Rm^yQUT$^q}{$TC^i)xBB1>c{_O940-ZyAJTK#@>Ysn;pKtl+mlBjlznr*vJUItKos$gI$)jGel!#%YtIeECY%G_U8N#@^ z%q4~{sm1ScZlW_|df7YlZv*VWYD}mmLK=ZY9s+r^3{<5JDj%Y)%y-T+ z)l-!B-a1A(0$mqAQ$=qg#U8>L)1JBf`e}aXTdl=6mQtuRNq+72N zGnFM-jUQ~&QsZULAyu}_g5+gXdmSRpQq+C76lF7FYlY1)*%FI3*8#rYTT_s+3DN|` z*g?^9P$-H;yTI^c1eVZ9$2lxx;gHdCzZpdQxDF!pk4h_MGB%E43whWEACKNjdJd9g zx?R7{SEBU@M9yM{xRY%JF|w&;c1+Kc>A;DRh6FgSqq22v&MYWWip9U&7V{2WcIlh&QdL&Ge_1Cq4#RhKPObI zGx9gmnd)Y}aD1??V3nquOh(PnJCg?61BceTK!xF3~LQLsmSR`LO0gifzMy!vDDCv5v=24et;kF*lw>teb~;7{+tMkLP|B z5}JN>eR{+Yp}j>&pR*udhom!}l{E6Ob^5^^ilYqEU15jLX)uj2g=-s3(cLm-3enSs zr%fD=nt5mKj<$H)m@?~aObxZs{FsK3lwZq@?(hch4Xeg&~$O9=Y!A@BA{mu)P|}ONx^_noFr!$cO@VxmZz+Fjk(4f97vv0<9UhG`ZefU;uYV79K_o;DyjPR;lJ7S*+aSy@2A07&Qj zEloI6mp+XoMn>Kr2}4gN+u}*AHRuizERv~+-_qzV!XQ6sk2$TS+lQ1mNw=i4A=4RS zc1qxYIy^z#k%``*xP_2%pTdB5h;Z~Euw{PPR``HnC5XHLB_`7%A8a3cV+ z2EFOx@#K6W`R&O;^S>f^fKBXj?Qj~6TszH*;DLAR+7Th`n0B-`@8IF2Z#j6*xoKsN z0TzewieLr=2ak;SJn4-1Jc)QN+&g(LI~B@R;B_rm0aM4Zk{523-8*?M=Ngx*=$Lya z|FvuGojlnqyLa+jw8L^0tc#YRK!+elcR+LXTy7;_D+!%YVQ_VH4g)! zaHqrGFWw8a4~nc%`>@CgwZA_OAuXA~b<9VME>{XU$S0xL8lqbv2M$pv*yhtYfXg;5 zY9PM}qhWLbxzpRta0jVBS3D#O?k?dZ2 zl!{ePS({F#%^Ngxl&iiR|1V+FMCr9`!I<0tNo_j5poSmmN0~h`OiSmIPL32`Mzish zYXo5HS^#gP=krFmgvBfX)2zt`6zTeG^in_Pb^Y`DQC5%|DV;_-Id9U3dM4*3YSif| zSVZgB9n6MBvq0%JD-Hm3j#6wkfnJ>sfOXDzK>V@}DIEP@jg-`hWDFm>24>}C}W6Av3omW@o#R7`S0aAxyV}CR= zN#@6eDkTqD?xjy*ew^xjilbCF^=wl2>2>Dj$62cN8tZ|k)q(eE?dIl(c51uMR5x4l zV0ugH3~efY>!PTfiR8@>)PW}0GqlZ{A6#tY3F1IxdN8M|hN#KOuFMaOT|z%tG}5#- z^TQ46(vYH+oJ{viL%Kgdq!)rVs^OgY;k;6XgJwDj!^z}yU(bMpR5yY!oV>hj2h7*` zFvEGM;XF()m;th19?t#M!%0-#!*m6c#tkPU;4Ke^GnyaHFo@z%j_d5-;Jy8-;XH8O z%fj+Nq##MB+c4KP%D#oza>xrzf(<43sCKViQIeN(RclnA=3;$5Be=HMwwunL8nn_<|WI zPxknsY@xWmAuPS?^AHiUZ>~@BaD5({qet}$cAgr(rly7%KcT-E%g{k+VspBCC+gJTFNfr5EQ6m20>a-0(I#Ck;z4`G}CtJ>KD~x)@dIa9Mvfo^*0XPOx zPqilFV`mR@_dV|icyO-pw)SThUU#zWMVDV}3{pO#4h*{eoZ`7+HOhDUO6K$ZnGc>( z9+~;D6TDUfTZTe84t9g{q6lGBYX@Gy8QDcHhtvo}qC&G}+es8ce{gK&iY&3EVl_^S zCEIJUm2P}?XjW^nBk^f-v(O8<@dd_4Viru(fx)Vd+A-^8BX3$^xo)xK&M{mbC?)9JX_~{lDWv=^#(bqX=7_VYM*-TSroo^MSC01S}C21|Dl4JSCTS%XhX@AHZm1|yl83*?R{6mY|c!57DA)l273Qhq=3qrQtQ_y)BUhbROhE^=^mde zqEq4%=f(ULPE=-mBgVO63bv3mJy2U(BLz(-xP@Y;O?Pk7I}L`G2w;p8Lgi%o3A}E) zb#ppAB>Nss@ntiV>~V6&0FP6;Dbc`s#~iQ@w>B{DXcry(+BL9QUtI~dAHc8#CSfoU z({(2`o0@H_u#ALL&*OCK@Rmep=NQ2*NFtomky$bv!L>n7@cy57`ZN1-(j65%kKznF zPn)pt-1~20cES1YB$yLhd^hL+FCHcbeg`31(Gaa@C~fF-gdOVn1^*;=!O~yyPhuY| zP3(g`@B8PQCFlR1&bRZ<|E=T6P687T8WNm$ao6CsbNp*H563?a=sx^+z+Zlh$IxW)j{DwX<##vO?_&Kw(5}Jbdjf(6X)*R(rd6FVxNv`k|^&JDeb71=xFF z?9|%XIv3sxwR0dv$O^S<&2IsA2(vnL^I8f;kC_SOKb?T`Yzq08Gxc3RJd-k4s(yGH z#)Q+~$K6P&k_?l9jmQWSaNsm?IsF}woUMSjo{j1$#*caH^V{l)6$qEY@SB|e9EgG{ zSa$kbCDPlint@mS#rE@RIO?LP#)O~RgzPv7xM(#$=42C&?XRLyoB{$L+re2PmrQFv zm+l}VCNe_I=|3z2L(4vYF11lHu_o#6<^bP;^O^%(0asxinq`|@ede-Y$)5p=vt?@& znfH71W!~>i2%M0?AEK?a!)&tS{N5G=OCPaEtSPe-HuI*~P*CXTWP2UGatVMKo@zT` zQ*vJGcIqmd4oqERL${0uIG;KbtQSJ-%y==Yf#vtXoXvu~mDMoq%Qf%1Z??3tOkCQASE- z912lKo+Deen-5U!SVqbix@77wl}uL-M#>}agmmRC<1=Vt#}>$;{l%tTI+d3&JFon1 zi|Dq!wku7NSKY++kraulfK^GOa?z5uG_!K#e1NfyTt$HKDI-U`TR<_I@WYJUK@~wX zxU;?MFyj>?_wb!4MvlcVG+2}I_EBeyYO z8cw3ZU_l@t2k|_I?ZdE01dx1aR!BRpbiD)IDAo@)cwK$t&{-bSF&vu1m4`63$weNh zmuWh@#=M@$XP^j=)X2;DJ02ypWM`2GNN>Dcv=WX3tHg!H5`csFkmWR7uyf3(eisqs zc_DU=^?lBCXogchby>6Q9JYy}080r*81&?%*N1n~W3RmITH=`0U{S?@Zj4ZtlmWij zf;*$7!x*e@0W*j=Jo=N+N?}P&B+2&aJVNwjiqGCzQaxu$4b7555>HqR2$q!AWv0DD zj`t8L&?-O5rs^H`80TR+#a}72WB`qq#GzCP1|7=qYZ*F&Yhr5|IV`>X7jddcZgqJ(Yz)z% z9@MbIc1w2HW!IV(Fj(`@!}cIv#vCIWbbcMf=~3&}F-${o%NWD#ZL`gOvca`F$s5G9 zU&Q&KZmp~N1Sy7JGV^~AQ5AsAK4W{`eMpTzlpfVunAG92sj$ox z7M7WFD^wP!i^)bDsN%rw6^2W%*iG09PNWK5^=nnY>Y!~glTuiTrk;Yqp?n5UtLdke zwslID^_-Z656OMzQoUd5CjB@1>~SrT;0`3nAI`&0tqTShrGM;$`EmX2pekz)=BurmqxY>p05J`Y`F@QpmG&GlH91aPz6?+3gLY)pme}b2?{NFm7pM2x!P5L zSG4*E1b_7p*x=PaNL{i}LlNIj#zakfQ-zcA>Oft^C2$wxyTp!yPs0nd6RQj=N%x#5`H5_cOb3?Ovi->)J6t zAa^+lh8ImeC5aKv=En|<~7?69~=A`4VoOr|wgyylA6RJ^9* z7)wQQ&Yn;hq#);rw)wL$U!dpc?5_HS`q_p)*RjG4hj#yvFB=WC38#T0Ve_6yVwZYCXea-v zer_jQQ@=-2&2E;8GREqx^`8xXFrz`Jd-xgSv(|q$__a5a`Wqg82=uJ=pACK;i9!8M z4?mk)&RYKh{E0}*lQu*Yt~G=niDiZ2L_*wfp|eLAM#fGPqBOd;Pd3mgIzMo=UXjjH zdj;yzM9^x=A>XK7AD=w5SxgC6Bke?HTQUY6eea%m3QV9>=2VAPaf7a)Q~*GMYpt6u znavTS0eFd<73zNscH1S8&M;vZhBXUufI^MyCY75>LIsGHs!H<$B|)1s>~zB1T{o?O z0yCro^7#Y#9U)&Ifj@Ap{z@n`pKZPw6hcT2MeQ^w=7{%QK_R-c5n0AX{WK`%Nc>$v z!8Fcn?k?k^aT*kl4i`-J%x3s9E}Ex7F^>yfg;5H|#EQ(9Ox3D>tUM|P*Qz(}GKEHN8SK@!)?QMHcMoYKOo$+NzN2kFDA ziLt(gxoM$3tRQ;i7!1%vU@op&XgKsM5sq?#w_jJtL7})(680ttU)|0~G|T_pNg8kL z-Aix|qxRyFkjs<<1*QEqvmd`r90u{I zqOa%h0@Z+_E<8}alUxUaecB~YNqRmpiY(L$TrzEzY@fN>I>kZw8UEw6b=v#79l`b0mG<7*^8v1DJqot3w zK05m7>Z7NRzCH%}80uqW&OdqKg@1j30dl%4bel7%Kab4`&5ZY8q!M+uioB-h~(#_0%J6{l;6)Ae#LSBJ|f3K%Be z*9T`zTRf=RAaWN^E(glO)A+*C6DQvO9fxg>3VUsGN!GoA!SxR){cDjEu zx#D=UTy$;X0M%1{>3~5ldDWRpEi}OC6B>Qa{X2108U<|Le+cc`OTD&Wn|hp8#)F7Z>x`z(~PCdsdO zKSd)Xhf2zfnxL`XFJ%3Re&E=zqm#@l2pHp z?H4As+HojgO;W$OL@aQ)oWW|-;w`^y`r0hf_6fitP}M^KI7E+Gg5Ca-)ecXFIl{c` zmjwQ9>o&V0ZXIXE)M+RaEGZ><&x6nyTb5Il9F#?{3}=H&q~0a;hzoM<9!u06yZ8f! zMEC*AD#n_s#KPZ=XTQqA+SDYFb)vdN?FLV5b;mho}d9&m*HAr49x4ICUMbC#mahT^0<}Vw8S_X#@?8c|b$N z2#ba`c|b$`M@B>H2 zj^1ZIRNvJ56@&kg2b)2@_Ye41-unl8kKR8|e;IrTT3@(d+kHtmc)@Zw9z?=(==Ysp zK`vir4MINHF3~3)*r=UXDt(gQxN{&)CT%n@STq|MBI0Z15&HTcaBJ`_#cH^mZual~ zR5>h9+|9vK*iX%X(os25f;8=#(j`Y5o|Arz>oR;#sd~4aa zPI@VwW+-LT-?7Sie{T=nwDE3r(`3DFsx@EJO}jvw>!xT0Yjsm}SG3VN-IN{o(oG4n zkZww=i@GWHPgyr5`L181{f_e3|H(?I8R(>bm6 zTU0kSr4*ZDQ8$IMOgGggiIQ%Ly6AONeRI0$L#UAJbhh_TbwtzrdK8uaxWl3={kSXr z82{WuDc&zWLgf*a`q!mstWf4@s;q|V`;sdDz&fzB_*wrQjDqst?0ZdlIgGw7cA6|E z$}>)rJ&Z#h+O1b*50jAB&vn_un)2RrWwvryA5>Gz5&wW1p4mWav6q)|x%iiudFwp>?sgqADIj>d9r*^$?KsxGfV*Mq6T1-c&a zJyX4_(e*s>iXtE>*N(iTT|4rUdhN(-rGDK(t?HghzwYF!aiK?}23DwoZFWX|t#-St zhzC{KwCX-@@rR1omjbB|6v*1^(yBW_i(gdUS8C(v_V0{t-w~6^b#2zlDm8NSPzRb^ z(kqGxj?QZ3KW|RUIe4t4cdxF?U_*CaU4quIMOJD59$xF6Z;pVE6_N8Yb3lb_u6k(H zIcu&`4-e>}IeI4*v!sucdI)`7+X>IEkL$umr;m3R_3d`24w9zttFR$h&2Au+rS*%NUK13rv%DdIVf|OU_uEQ`2R~th*lzjg)^@+t(vf8+`b8wu|)8i))|Jp{;`{rQ4JDfH_Zp*XaYS> zYBZO5z5AbM0@#QdlW*;j%2Fv9hLHB*280t29?@<0BSUVHyvb zLF={#!<=^@*%ABI)mvFwfz4Uj-fzS{!q*_p07JfoGNes|l9MDO59K+4Hb5Ub4=DW2 ze;$cK(A2M_)vMdHcW4$gI>`TZ9NV2*niel1dwQ!Ac{$=F#-1uHnoZ#C3qkl-w=Mw0H_2?3D6ErlO;eq1)wm8?CqzHjiIm(hY#y- zWEazj;7H@136)vww_r%|^2n1VF;kQ0lI|yUd}F|g5OsAYRyXzZvh#?37(kT$BP|X8 zqvR%Q3+M||wMK63w!;v=)n6A$=oAvfEi*Oyb76)4zb?dZjS`4a&~1|aaRp)qv7x5d zfg;Ag8;`H{{$(rfN_2mvaWbu6j*P&d3fs_lH5uEn1Xq)7uxDud0-XP)`~1^(w{Jvt zYifPgKZ>GAfhw{8<1DoMl*}M%7Ot-*Uyuv&K7MjJ62~7t$I}+}>)GdHIS+L#XsqK! zlk2HYqS8A*RiAX^Wgc+0{7==#N9RyRqwN2U^vz&l2Gw8s!cPHA{L#dk`#O4uV$_>2 zGS7H6Y))0SPv20P=oOtq*}VT%e6afD0-Vl^wC#S{NBHO``@D(n@+Os{-^edGC16?! zL{(e-h^TZO{M6;<&$Pz}v!r8P$?lI-BQeCx`nt<{8_c{(md(uVX+zze0(PGq5^qB7 zT$Zn5+FV?)TGto8B`e1V*M9cphbxld_dUGSwbpzFNEKB}< zW>y%3H1=q&(HEf`!i0s*jY$`hXYkHz$lT~Gg9XwUg&#(u^EiSU(8>DQ(=S5?gdV(@ ze3>cx($9(JqK_tD)cgf`zYOku2fql9uV=s9Fv1F%1+nRjCMssQAubzkU96&S`_qoT zF_(pYwZ|7mxMM*wy5mG+Z=df%FrENX?*-C zQ#Wx=cBZjT-u$dsACvmITm!pgSPguik2<&(AyX+NB#s2BB`PE_@%z+J?}P*?6i2G#9lot&3GyCA9p~-|-}{t*p=2tw$)gx`7A))G@1v9|49y z2E80-&j}&M@BW$i-T&}j^E)`l+{6P_FNpeK4iNYneupZ(%kPk3*7EunH@|7B$Qa)9H-+X#GKK+Yd!~v73dbtjQ@G;X3-h>90Rn# z=RESy%IDh0IjeIcvkciBtJ`<1uKiG~4w|Z}-dG(&?O5G-8d%+SiPc4()2(E58ukS~ zhg1TetJvIkzk4?KcYf``+1%fI7&iC2p3VK<+1T6*tJ&O#9~qZpFh#Mbj1R%(c-eEg zzdeY@1a~7WV7k)BF>ZPEr{k;1pK*vqW-A3S*w?3o0G~|SPDBiea+(YzxWa!_XpwwP zSiB@SnynTtO|wOxC-^UI-X$NcwuV-#-&nz>!7Rl#dp)h+K}z>XG*4bX&YHKf|LrOE z&YPu9jcuvoNS@Bb95mX|7h}p#**n-j;Ww>g;hI9U4YB+u+6*pxYlx$PXnB621R&hy zG=!L->S*ELjFSZVgKn?gX}0Q(q()qZ%z1I(DdJX!Sz1G}BAkrcaHGj^5=?P+|9<`Z z2yJMH53r&=wN}y?C0sT&DS_t~!LhLMN|@Ny0S#ar`S_^;Hg}f1Dz(`mPH3CLTbV$2 z>5<2oDIx(|ip9mEk~I-)TPS$I%BQ*^5%4IKQe@4R7X<0I|d#bD0vzf%M8l0$ynwM#XOdl~%2A$Of%AAlTU zd1qq4rOsi0(Y;;fL5z6edUo&6amJ zyPuv=mfARnNHA#B;lA~C80q!oXkG@EE}$NXM(vbL`ol_))ZQLoqDh@hCWno&j9|4-8){!uhb*NNA2m{A$+8B3&O=>jLQGYtBuR(oeslG-*ID7bNi1e&2spX>%59-s%gSyiau&bJ zW((QWn?0KXJw<=ilj|9w&?o8Wdw@2QJ%s8vX%*yTm_jx1vw=J1%50=yAf8^2;2v+K zvhV4|2oHi)Do|<|!fr54!m%qlnja4MX_*`}9At&zaOA+P2u$sa&ffJ-`~iAAwBRSa z0*Pq}<2-xIt|&26JkXGAZZf$44R}N|3_WkdR?()|fo22)n-PApd**;7OO8&E!UN36 zDT#AZdAxa>ncK#~It3~yQXa!ni#^7{W1#9~BX8fO;&*B(dQA~+nG0Q)t-$>dYQ)wV zVDRF6kqxz?|5)xIeEpbMdmIyghW;&6TYR;5HIC()c| z$e1Hs;J^LNCN8!H1WuVO#viW&0tz(5*6Hk@V7fu5TFn5uCOi%boJO=9jl~W4QWpsL znPsHB8G{mfn_6#y1*>M?b#&}N>I2f3N+5mFfuvx(td@PngOsR@1Bn8v1(3|wca;67 zzb=q$fn^*(>K7o@SRetCFUGir3rMi(gcS%^_6FnGhtwCqTR_}fB`ANn1Z6#YD~FOY z4oV8lL;2h55$B=&U;4Sa12CX=LN}%Ej7;5Okx_ix)E%NVAz-KOG^Or~Cr-J+dDk7h>J%chtigvzBH=dxqnMUJR+v_hLwW4ZFd|Al4pyMiQ`Dv(z85 zzb;q)ARtO>ncCx*Io*%uOWo^)?#VriyvMn&E<1T2kRz?l$@?~B8st4a^}w2qhz9eeq_lXceh#Vrxg(S6XmiYf6z%F*qk+>0RSkIx<*~Y_-8T~NkgQf5 ze0wI@S?EKZl)b_aLb)b!4F&%G{p9=HLHu6aYXoX{z^(m;uB&mo_ajJkR4cU2W6j2z z2B)U5SOibjy9uF6@@ahmr5J)nr8@4>{chTIDns1~Pj1k5>Z6}ZDE~r%)q&P0F+5scBZ#b*Hoxko1Sm~+EBb5%p+39bE-X+uZRRx47~BPI2KDYX{i0g} z6m2FzJKqZrJL<28ov|rFjUJ<(c-@AcOOI)3@7{V;iO|4IsjVLU^W$Cha!sV}@m%~a zay9KuLqQQKUZI=7#D7UEdX=Mxg{ZM37_zl!6!S6CXX_xbk$i1!hodf$jchdSGsHubjH1A;4p z{OlA##D!5dl<0N{j_!y(w8kF+2y@Lq%Rffc0c+q+CeuC=T9nMUk4Ic=q7Ku%I6h!# z?G>ft{5h>SK+)PUjsQ|A@#3_(QH#>Xv(bow1vD`))GvOQVlwKD{~(TfzgB0zr50GP zQ^LBA;(RUYO&f3X78V`^Pqt_sHV27t0WP%BWcDg>WJ+0<;`K_6jn^QTLrHLn@`xvz z-t?*cB4F8AiO~}9(8N;2N|IoJ_QWz6OisbOowZ&zMTDn*tY?1_-Om1L^s-FHJ^=%F z(+&|!wi?#X_E{4Hf7}Izrp>YpeaPS!5N+}a#J5-nL-R4=>uU0xKAuI%7gyyg!LQOO z>a@i9$EHSoyRP{b4Z?>cvDre_Y@Q%xfJrxi zARn}P5oN#sB{2o`@qb~S7idTrVLaHy!4XZOW}YnxF)fO`2zdhL_&I$|fiBD(^_8j4 zUgnw&uBxzOCOW=~?j5y_qVb~0oKnx}>*chTS7G=`GWN}D(XN;6k3TX^USi#iXo2j1 z{Y^9Km;<0X`{g>n)n58ZS|5LuwIuxv)vWIHPTpxKIQ#sss?%xcbkXJ7wP@G8)!Cj! zpQsZM3*i^+7@>AWOwk{rW%$OOuy+vtW=+>^AQ%jbE6cv~HkQ<|7UKc5RW-#5b&(HD z>*k4~3*dhk>#!#+r-7&@>_v#;8Q0EaHOX}` zDs&S~Lr}@1Kkb?sjekmJG|Sm@mT}z_aDbN$&14ca+8A6U3h$24Dlu(-9}9Ysq9gBH zZ0fj7uA0}m@$4~R_=sCFj!>U-0}=U|X;_1S*pjI4WE)}!=&l%uaf)xv8kT{mykPfG zqYOmk7Qi{+3+E%i%eFHE(d3UHllkgQE0hn@*#o$;5Hr{%z{xUAig$8adeLjtF!Nj8oHj7pXfTll15-Mj)=)`Mof<+T4Z)JAk@!b< zHK8P>th|fJQZrF`*F21=#3-^8_bX;^YWo@5;3c}N5#-1=c#U`0L4c57BfHn@ZAWPY zqfBJf_wS&W366xtXgxx;bE2i;|c=!wc^MDlGXf zK#751cXVg{-oPAdR zbGFnzLC3QLn9=RmW?XSH+h+l4b|8n(YqN8)GB|K!c96J?L>X)~pB-qShZ2O1&-OWU zWOjh7PZ@P(aMac802iS$bPm-%mru1U9^v@lPAIM)kBb3KIh*-t;oW!6Bm##uDS?zj-1J!w)OnT`N+_EQHdmy|E9FJLj zU4gr4XAyhTE?u3+-?UHGJO-zGWXan=AVjI#zJALpHAeu{wD?;Lc`^$z<-gY&}+ql=D$ch6LGvFAmPOFb?1u++0s zk4il$^&mj*?|-mqu7TLfhhV!3`R@e?MgUu9!iY`(?K2g9Uy*miX~f3PniX_{;?q5HqRp9B;Gh`?Q{WGE#4|vv>4XH)IB0=Vd|bIYk@^y zAZuajULZW8ZOx+1t`P8M?oNZ?PiFC!)D#`9Up64pN@n3nl$<(Bo-9#vluk^;BVflLPJWL2fIr3Es*!uuNJ`vA`5d-XOMavBIJw@J%xq``gIjCQk zo%;2Ej*`wBgL`T7ZSxl3D8Q@G=H5A+3346a8#XS@}1<7h10hVA606bt=|J}m+Cmk!DTmNKmT58GqCxe~;CF`FI z_PUp>e==CVDOvwy=oYZT`X@vFq&e%qgFogoz+++`ZxylQRrPmj;5PPTsD)Iur%E=Axu_|r|C9X z1QwMrHQgbLptBOLrn_XxPgP*cyagtNZKSz;!EE|Da0@UcXgzo(uu9;Rz$i6eYF281 znzNxX39));%EM9^^cF|HI5g+O(Bzi9DPO2X(!uteo+ZNpGCv>_t&7z(rEtJ65WQ*8 zQN+=(jQ^osyogx?Z*yPe-gC2pGE?2ic-Fyf6xf4SO~ZnlEDo-4OjuZXaE0rI!4=LI z23NRW7+j4(KDeAZ4#ac+D$M#7BVU5O1ak@25{xC-N-zajyrFKxEY1I*)$3>q?Z8;9Oy~F_>gBzSh z@K=ca3bCfSzaZ8m6BfjpWWxgIa}MG;vF04bb7IXojOWB!a2(qNqbJ--=)EFatF@SN zX9^}%0=@)v3D^>lCE!Xx1z_HdKC-z&e_0ZeUf&@Us8Zjlc5^HXRp?Oqj?rOB-+`7M zQm7(HQG`sW;-S)4Hi(7c@lFdAgENzRf*XH|G!YUCl+d1E-sVCf zc}&>c@e1pHJWkL)H;NS!8h+UJji1{JuWR3@SGT_z+PA$+iuX}OqP5RM{pZ1vdeVmd zTBD*DNomOuNCy-lrIQ6ojSN%V(E?XAOby*vEyN7m*Ih6$a$onz1*SwE~V2V4MJ$MNUz4o z`G658>MdC3QP6blz*9Uft^pq1R?ZI?89Ko@O2oQ9ch*e#=pQ z^A_uv9QPs0H>w!8S-~--M)|x)$uSQ~Zt$Qa#{g*lZ1G@@$c$u;>`*l&cX?1!o;OO$ z^F~Q6*;6tE*4S(syBQ)(?z*p{pAGj_^ux+@6gm3YbYDe3ELu2e+yr7r@cyr zt+Rj7?I{NL==^YWf%oYm=f3F^u|+Uvm4sh-Y4)2j9I~?hC?0PlHO1O)?=)MxdxUvb zRJd456)GMRY)`8t>;eP^Het?sLtw91gq-iITIr)KoB^QfRn01}IYJ;!W?jJON8j-O z0hIpDzL!u|Obdmw%EDM3%G#Y&AahcII)xW@K@<_J41oLM{LkcY{h8%xg0sUVV~3-K zvJMr>%6ViylvOV(i?W2W>g^(>D)JNou^-@Mog>DCVO$R19#D~widKw-oCy{(J#uB| z!i#lz=$8roR7DYS+H>*PeOJ*^epSe|g%l3~lUDS?T)?;Dm#YH76ksoZv0_CfwHGnSn zV6eD&xLBn+^d8hor{8_8Mdy1z+bcv!1qTvY&9l`-5prf;4C|@F<06+mJ1^GiG-P!) zX|O0ls#il6`YI6u^EngPl@%^_P8E(5lMknhiC&dRm{dSB8A(uh`7nZWnZ$s#yDzM> zxi3A53K(K8D#UO~qC&4Ki_(Y+yfA0b3FbvgMMVR8f&dueGg=lMbWM;hi4=9wi4JxzI7l`m1|qC=pHjzcOWC=j*d0#`zntJ^h7$T$iOg|87&Z_tM9BheDd!D2}s!93@dLsz>3u z%*_Dtf)v`%CZDZ;w)xrkv$fAQKHK{2O#I{17z!2AFC4NM{O(n6&wf6J-%T550-^6f z2tD%8+2AY<8JH5%OC9hau$fJ>Mf9&=5~;16UEsI4sSBE4n$4R192TS*!9DYX0vfw# zl@t6%Qi7UUkH_4M3nc@+vnkGYzxDruanfJ-=dJ})6H#1mgj_vm{c$udXGF8V$J(4@ z3}O!9PZvQrcnG)^JdHEJW4&5zlHG~@8pKilC;N(%9hk(wrpwOQEu?Em=q3jmHD*7@GBLwqnsL1`-q_v=^|R~kAW|F*&sf1PxG4l)gPWEV z_`;LymMUslMY+qg#?2UP&kMZ}%KaZNQ@rWgrNc^f7G6e&n?|~(QF{{N+0UxQ0$Bgj za*JxOsGB}5)yH`a1n|)$Vx?e$8r2d8Z)1wXp_FmA7P6x z`PUpHc@D=DSUKON>U`Pms?0#Juf4w=tL|vlj)z4%O7=riZE@U!E7T3S$M#O!C-dK% z^S^VMi@~1%p3MKwq4`nN``J$1puYu!YDCSb73rJ+7~eq^T*o^ci}BOY zv!8PPaGFzCf}dz}Y~^u%fm3~x@WzT81bOq~m|?D#P} z?3|{?LK*_9nR>jnq5D#OymIdBi!If>ENIVPjtpc)}H<6vB*sl z)ozma-_zM2C_j5{_CHGI9f*G))H%9>nE4>5=~)JB-q;Yr&|d5;Pr z$sGq0Q<9^8UT*xe&1O9C%oc~2!C?ldSS7dQic_sfz z7|2Hpy@horr@rMSio&J$@>f==Fa}ttW4?4H#pHDt#MAq`&A4u=MwlDnX|qQMtSrrx zWl;|n(3hn*%Z!o1a&*4xy`(lT+N99WehDobo2Q}~?^n+SVO5z$y}>KQFbR{Cvwnh^ zS^iJ#BSEJZ%!_U?>C>{Y<~@su!TxAC==ZvvcB|Q_*AkW^hP;0kkZo1e>#7yyZQ&sA z;KpViUB^rkQB=ILusLMAcm;<;^(%9`Nf;tv4{$+?yyOPEsRB2)ty+RZ%#|9z|3MPb)pi5iv`axQdKi%XAr z`PIT~agd8w-2BWZ(aM>(5=fhOl~ZUnoGWMDYB)9P++^?lcP$AJ*+DT!;l=i?T}?ep zb3rGYEf3XTab{JOS*lB7q;d*=CP(jz5nQaQS{N-MqXO{7nrvQHLH{s4Je}-W_3m>c zXjJ~2eXse@e_BVORU-Rg`*jBSX9BANO^cdYK0ul>%jl95dRfsfcT(T!DA$*<+yoQ( zOf~(jZg-_zTs_eqa&A7LcDr(Ju2zUwO2kSI(EF`sVcBtU@G|Ntu`N5DxFJAE*G&YZLB30oxkEHn3BE!vKiMN(0V%C z&RM4sg&0?uaPE*3Vt`C#|tyI1jD?1(ZIqPW!WtCdjTBueD z@=;$&^y^+)DOc9Lw36`Gy|j|_*S&OR;x8j&rF>az$#Bpd#=-|1xB_1<2?g|#WdZB!h#h0c5s@fNy%*<=uVUxzI%%zPgYn9 zrNWLP^1^Pc^JIyM{k&iNZAGoTDd&bR+4CZQd8SJZsCi}8^S6v=E2~yy2@GW=MV3HO zR$OEW9A!n8)%%-q>;rEYlaGewr0~t*!Dr)V21g-bb0;JW10iAk4+-l%iQYe`1?>ka zB>n;~XZfEzp4B{WiP+z$F1N_CD=B@jD4(dyE&fz7$;HAHUG0N1_+|VqEK~zWaUf6C z>|25YOEVRexTxz^56TjNZ=mo6a#_)-Z~jcE>aPOp%Dt&B zQ!c?ei|qatCV%CO&`@jMEmtlYT15GBso7v*+3&(~8PwM0Qs18sijjfiR=xlI|7Y)A zV{OZ_`>y>y`+45)b02H(dRN!8-L8JxzT0+pSC#GRPGclMYSABXf7s_L>Z*II6j7$D zK?xsl0wh2{;sZen3X&Zw4uOQ^OE-!jAQYKk0zwE`5ib#hEr^h1=eYR&$DC{J^%(1% zb#C2TRqd`@b@qDA=a^%T*Bo<9)|gWz!k2^|$Rg&WN_p5HE}ve(89O>T@A=kHKb&92sa*1QdA`LlaWR|rJaG1%PH%W;Nw(qLiO%Pe zGXtbOy|dnD59*a3CjYFOOL5exOPiB)xO9R|n+Apgv(oy7=TK(xl}hepuO^>XGdSF( zzu*j_*rfE%vS$y^a@k`4`7>@l#L zEvbuY>94bmL0c+^+8LwIdPN$ZbRZru*uKVA)(6>vt34vlc$6X0Y?GDXH3c#NCG11G z3^tq`BG^Qbu%|P?W?QfcfXKl{pVzS24zNiUdtTdJTuKa=l51}Bb<3~7#@Rb10j{`* zS+JQkh0S!nC)h-g?6Ez`@MbF51VH3qqt9#DOap9QS{yZo%}WNGmjs*LCYh`&iCccT z*PQ9l0J~Hmr_VIQo7wzGu!$f!B2c!$W+vDKK;&Sf&uiGs0&MOqj=fg7cyq^Kb4Rf8 zV<#4&F=hIu!$f!Cc=loW>>HYfXKl{pVzS24Y2w8!u3yg zVe@r^&DRAR|KJG+HV27Ye!15KgJ}Rk!DhcHY!2opf=vX;NwObcb0F9RK;&Sf&uiEm z1lW9Qaq6|oh0V7NHs2C#{1Z(a*z6~6`4!l>1(s6@Hiu1Nvp+u-Y$8ZblfwX;eZeLG zA_p6NUc+WTz~(y(M|G$=;~8K7j=|oou(z{YmB>a)QnghkNdy9!~f2Q({jT z{p@LOPl!+Uw6G_sdCI4-H{EdiIAY=!G1dN*cBG1vbF)(g`r-_xv8RvPF?*yN+eBLQ zlZ2U?)uFH{RP^&$8D`9p6W#1OWyZla6j5nb%0Q6Y+4*WE3911QjqN*SS#)%Vur(jMajr{SB)W@tFQuN1x| z$!;gz9b5qN&9ptGh!(Nl!v5N6G7WWDRESb%cdQOpkZcds!;9qoKn z+h?Kh67p(WcHCO6CK7Q1EZjF&VeP*;WByWqs?4Uo&WmG8|I_W{2E4fX@j#mHAyKoy z(n`*w?kdx%es1XJX0ivq(zY$@2V1zUb@al3x*6UI_OZ=d)@I8^hmDqm zt147e z5G8!uSMKcu%CB!ndUEMNfKvgv4}hPQcw`!n65x&7n@$6bg6yS8R{%029jIc7f*d(@ zWE8{$LSqU-11ppzQVe;V2<}d5G%M zLqyoIihSV-WR9uTN%rq}yS1awBIc~sheHXCiflu;jIbLeWL`txjiwk8r$ni{qL=ecXXmWyJ?HagtpDP_wn|F`EVOTuU_wwKmyGo@7U zK%?RZkvpiI4-$XO!d*6vKeo-NJi7Q}Sb-iw{IRC;Zj;G@N4wz#HKx^%M&_gNpaW1Duj+N%+L!jh7@acC|ELh5ufb7ep+Dt z-MbtoN*o%+lwNMX9bGEUR>{Ww<=~xcPOxn9h)oeJhc*FY-IQ|jt_>Zgmrt8DmokYFY!X)awEzwo6b0-fno3gpvs9TM>0)Wbqh$dxQ`ivvBO8?+TW!159 zTR#3`!hhfCPT%Xi+x{+^OJ~{oc{G=9dTE~%O0J6|;%YHl{^9%Yzu$cm?=ueG*d&Zc z=bXrIZTr|;{_>kBe;lLnrk%+#d=2-%0q$$_K^KQbk`fZJHQ&K8u}3w1VHy5sYet_6 z7xQhBpcc)i$$&)4tWxhUHdZ8`w4m#_?QFl5e@Y5ZFJ(_X0)63(IAyocf?&U>WD5A4 zD>N+xUrQxq-D`ynX%rG}@@AOKzA^*BcP?(W=DVRWt7KQ3VO02{mvmpXQgKV<&>$UP zutLJ>SP7F41F-FL?fv-?1MENObT?g$U4pvj;jAO!W% zxa=fbg1C4{3UN1VxHnfIvf_ER=6ex&g_l_9Z0#;c#2NDL3UT?HB^v>G`vG}5%5v9` zx6iZ@@~)qRyz3_+Z+MExI}`G9j$OdXi6L(&be+(Um*sL{`6MLV26@NHmLcz+kawTn z$ip|;uSH(07Apb;MdbbPVJtlU(Sq^c-r!i=KF-s2&I)LTUJiX@81_vbg~=4xQJ^h+ zHl5)hO)R+>*A=Ps)$|xogq#H{j}t0JAug83?+|7VH*QXJCkC(GapbMOY`?Q;D=_zB zH@xjY7~?Hcfo9D+i(N~w7ZQka##>}>5-4+gp$I1S6exedCp}bMb9k>K>E(;(H2kw0&PLTsw5+MM7((?|XXBQLsA~FQStR z;2}M!hzT;{`IoA)6Igl#l3pBX{q~4c^Dd6MkgTJgeiV)TNSlg|yuIg-U3`rmeZxUh z4Wc=1jA`7ru^W*r81u^b@8YxV&D|%HBOI3@A9l{laV#D-Q!u5D!{EWJ(Y7=xXD zqbtoptW1$UAB<7=LV63xIK*f4+ZslH+$&{@suX9#klC<-i88z|&IW};4)00DY}nxW zm)INVVXs27Pt-ZYzbl(K#Ti$Eawg z!4ZGiC~nIsesQy=3>J@}dYJdvaFC|Q7ROEko*eq^EkQ;pys$*-!Lfq4DedIY=nWkh z`Vb}}w6kTCyKS@aNV8EVAB%R{p(MN!Le$aDZA~23TD{p=;kmn@F@qqkQV_F7Ug8LYn{J@pdx=12r@r1HbId2*$`D8>Sv@Mt=nFUAdfG;p%dOJ z0w&58{^&-S)`!Y_>sLvA8ii)vWKbK|drMliL$$U-S+{+n=!?{Uso$BJ(ilbRU5V5f ze)bp}Nu_SHD)bd*W~tqQsH9E>fi?bafS<58J26_PXi;M-Ze>c>Y__kY6OWR_qwcxAs^r+f{1Ebl_PD*MOL;2RZ3#z=RUbGXJWp!l`T1J4rEmU!|W~O_KYf z95?y9V-QukU&ThbTO$DxXCm4t_cDn|Hp*I?X5iTcjTZ_?8Isc0c1}rYwRX--N;}Hx zl$2IyQHgRwp-$q?v`Q{65JedROi(FE1+ML-GFKR2m+0xl=P2qF#G)t?6>4(vw^EbY zR@_NcNveHySK*7>y$bqI8cwcl;hx*LN|AC~yrOY1tO3keM}AkwtC_HvGT;IQV>+hq z*93CQDBBbq$jx&Yrdv;?H@RF0yy;UYQ%<9~GDSOJ!iJY6n`hW&0SFtImylj`sF!Wl zyBdzt>b?QZ8VZu7TH|ae%#dgumAvDy3YXELk8Y(isDSIyrnS$<#$_D@3BSVNHB0G3 z<-PT*#Q3BA>yWNDuJ?#~t^BeY6Bs|IW;HHr@*BIIZC~p(%Ed^OIc}hZ@)JAGXq)J1 zswJ1x+sKthGtgww)3xR-dYWp^T5>tPD`C{P-UunIXHzy zI))PwsR}F4%c?TW9AMMSR=ZGoSnqks4uUT2_@4+KRoCf#D zz1Eb6_u^$Yg3B-INXDTDQ(+D?gQ zDyZ^>b!pnW;|mYvTIGx-Nst`tsmcb`KVLU&bYR4=Rcgh)640XBF^Q4B8LJc`!~u$# zmdi{wphJP-MUm;q?{zw_l*JB5vz6>)gj-MC7zT0Ugpbv3W;#l-tW&I0rofa)IRpqS ztCDhW`7zo`&V01=`*6cZoHeQ-_C@jQ<~78x$?xoSc6}8zRR_x`izzLtplfwdB9jSF z&S+Wy+|p>SRZtVOtVD@SCO|o5tVJdhsw{n81ueJHv$lBxt4FGD%0lhM%MfOrLCt}~u^yfA`^OuuuJ2OQ2oBVsCZf<#7xpvQ64-K& z`b^SjR+IIpQ9Yp+TrfxGpW+S;y$vmoZ3_0K*ea6+o1Hget#YSw*#;3?6&zQ}Bxo0I zEFma1xM2F_!K7dLsj%Tysf-~{d#&Pse325v#mB44tTj_)Fp@%OD7O}0700v&$v&OMJfWgWfSb)+GtQXVHkf`9SuX>Cf(KqUJUF-0Ntr*2 zlc*87G9+?S)*w-jy0ikqfJ<|^tYM-Z9^~!t#ynfmy;zG2@UfD8DIOVe%tw#VMJcr?@SPy=nQgfw@Im$HTa_nT zzx+O&Ue2_N^`03DR{4EA+4bJsYIYg;HI725nU%1E_t<{r)a!D10Am=F;X(#gEO2f!y* zK_hLB3Qkl3WE3QndFnCq_pqmeRjMm(o}a#c2KwP#Y_edV>SmUx+gdy3XQZF8ekPVE zXQ`TkRyg+Xv#FmgKk{=K5Ft`q^q@aZ(QR5Hu8e4#N^7I%@YlEpl=8cqC# z;)zyJ!I{g_{u^t|rx*)FM`&^3U-b>B;Nnu1oMLya!6g@0oC0n{TyaJ6a(WX?&1Dc? z;SN+K$H?DLT1lrRlN!~d?3$+_uT>~kBtydeU1M}^5_6EzkCr(7 zziQm8)w2zHra6~-3jEdG&i=dG@4<2{wheOq{rMSw1Ko2X4YU=Ncz(mIA}lM-Z>IK? zIq{A8%F+}OigkybW}es`OJ4K2?pE^!lWKduuemZmwvBnGtHm`U2r|T{Vmux5S!e)e zcO`a%LST5^#)XW?kgOJuHO^q}RwXIZOmd}nic5EUwRpU7!BaBaS}mSvoWTj9W)WF$ zt`<)=E@VcnH&%lw|vXP5gGN_#ZDJ6~wj1`^QxY@N`5P zs5Z$9)XL%`B)OWF^#oRys_#AY@$Ai_GBnRKr)RX*dJ#6cDLOoi!yG4&m}ih6_I<72 zK%B%_;&=PH38AjGZ)`-D(SbF-kvz?k94^lyD5qWh$S+Ys7nxEsFM>I{%lOq#bVLS^BHq_90rPCUdbweI^ zwk}?p6J|;;%^wfToIP01uxHU$cHISV2GfO^w{(WI;9Yc6~|nv{7&B3x6D{>5OfCh9_8-bYNJY;YpiNm1fpwc*-Z^^%>+# zM$C)%l2c-8%%6cFo~`Dm$ukqhjhOtc?X{&NS~wQB%#uK0BS}NSdI76Xq%sp&KrcJ@ z&k6J%9ERtnKlF$W4}0&JUM(MT5+k5V9SUZ3cln_#TSD1h#^CR!ElY|h{4(K(1%;au zM!Hrh_I#@CgITiXyHa(zTGKGxl;uh@Jq9Qs|5=4{tW!UOt>w|EG-z^{81>nFXmB%# zAQ&Grljqj9;(~)~0ds-jru2b943e8xmum?qmk!DO74d-zM{=wr7z!Lqtthx_q$pRl z5Ql40Pf%MNFX_bzxYVQsJ1#)lP`$O+U%M=W^b+utlge6l9q?50ANb&@q&uwZ*W%O% zPo)GqKOyM94wQp2Tn^?k5T`167dn8u7j+xr!@H&bg-H;c(bs7^NDMl)r^!%-ji^pD zSkT!u@S`!Ol^*$pRytU}N<=LDP^b>aShrq_L-dsX{sR5(!Dgb935vD5z@=4C5I=e{ zQ7ClZ$<}Nm9#&nv<*qDtLbYcDgo%*(AO)xBQLRYS9<% z1sBzu8JTS~O^nRCDa!y2WER7&po3{S$Zf7|voh;V(9|dg5Fuo6-^?zG<){WuvWagY zts)!t=y(bzPFc|_$^UscVd>8BII;Fah-&6)BO7!W;Y-Pj+HkEp$}qpW4#NT2>r;cv zU%A=2_3oy(HDh54cXbhK?MiGW2@@vd7ZdCV)%2cUOz^FdE3p|9tPJ_Z1gk)`j1cTX zuEb^ru=MhadAg>Jp5klrZfTK`(M&R7BRbQdBDLdXBNxExd$TH) zK#2DURH>TwhB1TcdpjYgREBA(59HBY%Z(Se#CX-NQb2E)aF<5{pBCt$t%$hW&Wvlh z2vH_S*c&`@<|9NobA}M^aF$cE=dqc_As+2Yc#GQ&B_YX(tmD=c6D1+$k+hl~$YcxY zrGXHo&s?7yD>y_K^yH&5EKH}8Ta;F7Lp?!%Ys9B8H@=L0%uQRa2|vc*7NyWBdABGx zcNx)4-*Hox>xr@i9zsF<^6--0hL*=R@eG@ftwPR0k#v#PZIzp{rd7BH0kbO4I^}$; zwd{*OE+`YFN1&x#95RM9##>vAab?EiATu^omLwg<#TOQbDc7dzKBVB%IudJ|uaK4d zjK)qKVfn~bgj0OivA;D_0(UlRO*pa5I^@s5;1`s_s1FW)!{8(?TIO`h*jzqn{KAI6p6H)U{Sf<(-z!4XlOjC2)GI=ywGYz&WJa4UarR4S+ zkHR7~a1nMFXSYlL%5bwe=cX)=bewazGGR)cn%07^>{@Q#GIdAm0>UnhEo~d24G{&v z882;rbeTamUMW?C9k~y%g;&$8|`M3aIS%S!9gJM}v$h7DPG-!>CESX9Ma?kNA z_TkCv^g$L;E59^vqvO}pd~Do@XRs#g(7m$jNDq1}VXge$v#+z|+RWPJv~o0-MY{an zv#)!OeY;`z#j`ackn4>1DdVlx@r{ms&(%;Hx2)&I6P&9nQvC_E+-_F5Q*f0SH-(13`x%xp)tB6vjC*?|=<$$DALde%-da6Yloy z?tr^nc87BIe5;Qwo=Z=j3eUIN@=$ob)#cb_?Ns8nbr(j@wX?WM0Cp_v1k7CY^q%;; zJS8e>!IOnQe|vGnIx+_+zTbZJjC*3nEnBajeW8V_N_jU_*rAoPXZa7Ze0$2LAMz0d zms`u%wtP45QWH8hxz8-$NtREsoba)*d>ksot>q&wC-oiPrNz`izEjJ0d{sV~{Q`83 z6MEU6p9t$BxOgFOap}$vcpm_InCP&@gd4x|`<^wa z7e**+m^Rbej#>cGqeJ`&fT2SMz%UR25EK>xUz0BY{y=~b;8Q>V{>$^R3QX%yG++W? zKLKwqOID?6kX` zUbo*H^fv~>jnT#CoG5C`;e8@EODR|m;ngexF?H@IJ9;$?uZSnX&9Ah>6M-3WPs1*8 z-5DaS5)ho--1O74R?@4izjDJKlkd+c*6qL5zWCP|2j%gaC3nv>Z+d0rL$QvsQjk4n zp&VoJbhYrGM2~^o6Sfd?lHa)#KpVrK)m zNC$9X14uA8pO&CLVBG`R$F9em%%SJ)xnjzGvo%DL(X}-n8*7_F;5W?zQQByAF)j9F zzr|UjK+##EQNZUvct8I~QVya_CYZ7|RGH_scQGyIX{!QqiCTf)xj$Ym#}~f_hlIE@ zD8O+f`;x*e)y2Dr zRsRg#O-vGNG&j@q=w6CD1%eRXL>D0lZZoeV<&GHXA)+jg=SaKzQ5H7AG)!6ZYznl* ztu;)fHBIm-LOB&ZcWe)3swDmca0>q}X63T{NncLoP`JXRFWW+|nDpi3AH}3^G0&R7 z$6eqk!^bb{qZyGfFUuhQ*pCSI2z1an=U^4c@Igw34~k^?H(P-Yw_0~lLI#k5myGT* z$(fOQ-bQiJwKd;lMvkG@Bfe-dZkxWyxppipHY9fDfZ3SXg=$(XM>xe_n+4@QkQSsb{U8e6K1cZ12%Xt9OQt-{q~jOOiMO}3ww)|utk6=efgc$gQ%;PHOUBp^ zlPObYf>;w7+o3TwYy^XOi>YM%EaPlLnJfxSh6jhwG^3+#Ssx7@4dUz%BOUd*QJH5o zlr>x~`O%EX4=HEEJ{UNg6uGEiv|pbe!P(kUFpk!ojkTQRU%>cJlysf)xMd9Nd+o@{ zzGWK5n&SlxL>vyA8=SK@--**RVR}lHaD{n?Vj}l9Wrfl@cx z-yC)kn(2gfd@%kNw2f$At0l2f+sN@ZMZt7r0B;E7uizxD>6-%NIjOJ9K7tlrg=lR9 zt4S|wU^Vr18z}xZ0gu0JM(E@c{${Dx{0*y*LWAFtwWp;^3&m|mircXXf>Q*-A%fs0 zlWN8UVB*Bucx!{J8>3%J(D|S2ar^0`aXA>eF`f2$Yx*I zBI4}RyFPM&|^LjWTZ)uc5DfYrkjTOR}g!t67ea|r?zW?whiTBRnYvNgl&+b6Tn zvj?qbpMc+Z_Tknp=GE4;ODAD!HaT%;Uz9XYH2Wr#zq;ULwyj{)?Yz0tI=K9zJF?&& znFaU2x7{v>3A6Z^%h5RuwzK>f?uw6|=)Lxrv6S0czH9GpU{^heKFg2-N>3jYRXTf+ zZ#0KVe$$w&MeWzLH)eYXv*k!pEO48q=`|7+^Crp4#L*I!QH^p@u7N~m&oRQk`k@9N z@Du)Lj{^-h_FOJ0EQMND*J2u01g^4}vTpx;3wH;$!Lu@M3(30S#hJZWoSt)UhoNyj z3GZ$$d-qrD=sRTu@2|etR@59{q(cixjkxI*V{X=TNBshFrY4sivLxiDMWk2usQ|f6 z;MP}|A3;i<=VeG`kkBGPnm4^_A+UjMS-unx04dfZfK)$&)B+CnIJOby(4jckEjSk4 z1rvEZ$F1Ymgn0ux>Lf}GyT0kKxcIQIC~S`6wl+q_;H}N13@QeYz6j&cTNBT`>dRV+ z-$-v!qD zjPCR`V{tMedaHg;_<^Wc&?)2#JHwG7K4vtvJ@&+|+I6I75gJk%j7sU_ z7`$O^R+GQt6oxLBB5-;Ik!Nc}uE5MFlFUzK|1u&Br$waKFt36qf!V$)nQ#nXp-8h2 zLq(b`z0#7c^tB8;=jruV>SKH3M>^epQNcSO2npRg!10 zt0C=SZG-%mj2GKfm!DZN4|Rg-nlvY-P)M&WOxAvEjYQ1(MG{f z0|n=jQSf<6!Gp6~J5q2N1GbTJ%_smB76mrPq-`v!;bjmW<4YVb$XZT%ve| zi9s|ImTndUr?)s8MLkRqbNXt|Pi3to)4sH7m$Jq53VXa-7Oh|MowBMEy};r4@^NDe zMi5qUk9-|E%;g+G!&Z0`^Wkq9RW=L;c&>?{y!z)beOaYGu-Bq3odknGx+zSH%_(rw zD?oCaSvC^*R*`ZlaXrMe!oQ1IIhF4=RZaz9BCN9ZXI7(#$K~&?pUxFVL*b=s=gQ-A z4X>_8o*+e=SqBHYVd@aqT{VMtNRP{%0Ul=>Ig0%)*|WYniXHypoG zsEqOcf70%IFS8 zeN1^Qc7@3rdTR-szPd)vt2F$~VpA)e*CWt2R-SKTSzsDB6x-2roU}e&%;=`8!e~ka zRkbX(XZdRAZ6^LcK##+&o64lmI~f-V@G**=ptr zY|3m!1!l&MQqACAVoR7)GZMkf%*?+l%Mjao!x9|~C7AhjY7+B;xxH`K)Vx1~C+R)g z336gD{LY=rKI?()um&K$S%$4IK;@Kr$6%tlVRkA+Tqy-=p1b7v2-!)P>J>)fcR%>S zmPx;FoX^@^%SeKsY^Ai6EYujsKLG2ry?zAH#zN!iI)0yxc~*w|LHlgXvs&7t>vQO9 zWqf@*m@g=}s{nZgss^=vL1E2g{Bl2lpb+8A3EbOA#K=Hf&OHyKFYB|Ns*CL0@|d7ttoK%xFVGK?6Qjgx*|b@#r!i( z%E{zc_c6K+Wpp!J+n{1=o3}1Av_&@^Y$cf|O0;7+ zbdu0F>84|!LgG*vW@i(_S2APw+yqlbzRqN1GKMtgvW(#q?Hs{$2r=~E6IWbOQ1S?V z4tZ5L-!g6Rx1Q7{@D}l}qW3u}@?f@<2e+c2^GV_aH_b^z7cH$Iamt1#7Z7=|7Itfx zpNRxegTXA19FAFy59A{3$>hEVc5%?Uq3krwQZAwepMjjSiNBJ3D7 zw91LId^G_QJ^%zlUn^w7r`f(j?!zV5CI>SD?^i70vO=Eat62=m$sgBc;JMMRCpO3I zCz;@#BW?^HtU0n7btjX*vELcI+f!h33`H^{r3#d?%AAOo27Vg-VNEeS(a1zHp_A<-+or-JHd^`vqbjdCgHqiv+l!~w!oDL8+w^Ba3l{zz*Q8YzOW3yu0a4Q(00j0Ih9WU%Bg$;P)_BHT$uorG4o?b z07~MqGo2M3%N8xRZ92Cn2(#@d!Cs4zxCX3G2HX!-_0TE4k<|}oZ2V-bKBTeANs`@Q z)3J>|;+1RPKAhcxnQ2={>)s2hN%MMt9Wy0yA4YeQyx-?!INsOBo z*hnTbJ}5Kyg`BG`CNf`#AZ2J5GUQ?;v|x5Sx+vC!A=JkUC8A_4$s%<|Nk=X0D9b@{ z{lW9*$i9Yx9PR2fZ(s+AeBR7gPIb_T3OP~O~`b{hMB71)>V}) zHxJjz^RB5CYzy<(S7~ypP&$9pYkvEQuc(y8e4lBRQ~708Mx>ES*lgS!C>Hoqc|>xw za}DA(Un(be2hgLa>Bt1g*4Pl6@Fg}n$=N}ZDT{%GJ)sn2HJwd#C&lUX>fm;xIrquf zec-Wcg~bvv!{2HJZrE!5EGAB=h@Ua;*J=gs$W|faiY>UIRz~F6I)ZOX0u50Y(`AuH zET<+YOAX5j)r3`#O7Yj`jA1RKbo_{8eTOrKz1EeawawI0MJ4rh8>rAMx&0j$P0{v` zSEYh<7N=K*8CLjqM}Vklvz@^j*FC)zNZaKuUP}DV7jb<)zsH*U=~d=*iPc^ zg+RK}1^0c-`#^7P-Vbqq+nj$DLXDdumWmA_-ni5-DPd#`G!7xL5shoaQ$CRxB8_`+ ziNQAFHX4ye6*TC4RZ(?D(iTx3lt zt4diEtSRZC3%BPI=Ea&4bO0SFX1jnIC^*Q)uF{s$uk;#YpQp?5F2%hri3-iEk~)Vl zhGtfirp-&QSu<&1HT88HSYk|F1U~jfHq{-qGs0s`XRA~@Ek1vn#~i7 zE*b)a{F~`?xgV#?FJ_Wmh&i%vl3Y4XB<*}MO&u~2oSsc*H*Rij-MXzs z%i;_SlL|haJG(;nSe)$qiY#7XNq&pd#2hA%&`7HDBkvzJnfyn4`1Nk&{d!w9#&@lE zM~_I)gEH@y3X>@~=^C9Y?ReL|u$&)nJWRY$$}sg^3rp(J7om_Ov?RKW5aQG`C#&6I-O++AaoW(VQb-Z)!o08c}CQD`FxNiZ_}r+nXPS%uKmon zF-E@$bC}3%j2tK!R#;73(H`eIgoyykFE>Dt3)tW#*(xUS_A&biQ>dtfFcNOcHX~oQ z-okg62$)WK*Cf@zA4Xcd@WJUUL5^|=<8;+Un5+D8Gmnf1@R69IMQ6wCbyrc~Dm$k6 zb7xb=(uxz?gPP_5jaORcgzJ}^`7}I0-$S_F7(L6p;)yTTZ%x^csiQ`dS&{EME;PzItJxcBex IOg0RTPRt7ioUNWct$>g{8I{kOM(Z9A% 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μ|HPtmAE)~AFT zN^Fj#WBM_HZub(C6&zHsM@*oWwb82yRBVm&-AT%WGxUv1&AdQ*so5~8iIkv4=$a`u zh->VG5aec0;9#ig9uqjmx7;?AAS=TtVcUx-d9S$5OQW!YaGx|nEUJaoYm2X_iy)W7Iqi*~k40^B@e_(5o{JwB!9pLJe&N45 zC2XzTEJSfG=hRo9i{C@EZ|h_pH!X7*rT@#PwE72I*eIfjA3l$8Cd7>5(c{);@dcVd zNH7Zno_4Lbi1Z6KCbIr64QKerCeGvA8po~6j`nyTv;1JWoxowh+?-2vr3D940IG~Y z<49q;0S^^TYiO1j&py>5l%tw#5T=HwWol?u^Ukxk3R%(rnhdblGz`P*lEeFiC+JB+(!9cm%Z@%fV`Dg&Dk3Afhd=KxpK3)?I?a^&*pADo=|J zf<9?z!~yXlvA%}<)CkB-X_*SFj3p^eW4tL%BO=IvO4p#5Hb^lU8lZH_Ya>-KtCI50 z)^C}vv3C&?p1q8*7>XtNWs7kq`PS{IDJ%wJf8->SJX-=hSqKAE6tEH?3~nx+o= zye4QGx{eH^T~*U){9d+_G)=B$ng-|+D_7MtqnW0Oucl=tds^lfDlBKq3 zAlRaXV9Rh9Y=TXItj)9;Kn=w=ze+xI!0>Gxrj3xshn-%G(INF~PLw?Ft$KlNZf9~= zM@}2w8DbO|pXtWt6@m0)8c-G+P6e56133&|b^Z&%Bhc0OeIfH5jPNszd}`Bnn-T&k zm3nRmFtTmZ70H9wgh4EgZekIOq@WTJn2N|U*A}a9EPmcJ_R8_SD;*#_)}hTFgnejJVQ@79#?UTZ3vI(EsS4-7RD!REi4J1ygq=%C?y7DDBguZJLL8h5Hcl-J>6DAyNI79Vk*i1-T zo9_jJz`pn1f;{|9z~)+SK}M`5-X4*4sIh{pc?;->40>-tzV@ZzXxa=&i@W!hO}FCx z29PttOdDpdN-^e{^~}adjh4#>1Q^{g@BE;~I!$b8BVj1bL@;6tNdRC)Y=n+CIt=F4 z5IB3}`mrUl)bZBXk{?56hKYKT#dg>C-%%=||K1ypw+<=8@tWHUm^yC?9nv~r6n7%U zZku$KfSvWPvUZ_z+hSrTTTN`zUbem#?5k;aIQ8Z^{ z-f*w}G-r0ube#zl)T-=s={RXP8&NB*sy8#_s^~4LsifMP+MxH)`NN__+~!H8SQ-mG zX)I1JL=!B?N}pTq)Fh5Qi^2gHLNvjG3>$)oDO98>7sg5|qsHgK&%okR_f~{7-GA zLwErXNtM?6cvf2_;yZWgAFC4k=%~POuk0HZ3A4da)ii@W7CnL{sCDJ^pltL?&FsLu zH5I-UTX_$=vS#A7oHf;` zfPoP=3Yem-$PzF`S$QeVL)s}Y$XpYz>a3MT>=n92Te(OCjLa&`C}}*JO2z_QCI%Q$ z3_JZccutO%njh0IFJh^1zT8&V&U@;30?Ueyuo~Eps?hdWR@%!_eeSj{v_s1)UO*bv zFI9|>&TN*TMDcYfPA;~&3UY!ADkT(UD4W^pzMKS(1yu^dL6zn#@&$jORaQ@t$``4) zHkAxe8t5fU^@7gq#d??`jmgXfUBpPdSEP#dh$T$$TYHU^3xh78&8fwg>8WC?2!4D>?RCD6%VQ_(|A2Lg!7@faWCTRy=GholHw<# z2qtr_|A2+LJNn!n35j)6L4V6n1^q3q>7MUJLf~!vUb@DYKLu%;$8+s0P@CGEGOlsuS)jFz4pQN9{`PfwHvEci6QI-W+9#^fOz30hXMt{d zZ$kbz{a!OWR48|C)t~kOj&UywfI*Oc7!EN#t%MpyAzclSkUPi9dBA^d* z^eUpVE5f$qdVUw0kTa}0B71Q!(wO8iU}9=eJ~?SMtEx2>MpVfq)?%rzojf*uvJHTG zZ}QlHs+Hklrho^{H*oFxWexdW1M7AgIG#@?5LZm-)0Dl^)AXxgGjf<+xtbH7=}f9G zEo*?GGfWO`7Uey=lPfEfq^wzFO(}I-eNtANnX;<>tXV1T>zO82M1r+0no$3V+Hna<(byw zdJm(1P2L#oi*FXKTq^F1_jHTz*Yv=nw|=l&`mUt(e&~$r^Y16dxTwtHcO}L5KX7HR zjKi(ii`z+|^`D`k-YbL@GdfiZlvMRV0V3P7akac)1vdHg_nE)0f`y7ubZ1_EYpQkS z8$k9gxF&d3i>gy645bOT+V2*k3f}zmJL1FcZIbb`Cg}BVOIP*F%wRQ3iltOuWnZx;a|uR(emA z6`;*y)!t)T%}Iez=9dnSQA-L5;6)3dV9TYTk50)_Nt*JWyao~oCFu8%JEtndJOeWP zprTeOs+E$VKI2`LQazXTrDURY&Pqx>T&bkU%}`R1?v<2xXdY$u1SLg-UC_j+P(j$I zOnCMs6(Q+YC@C*umo+Oe*oTfXP6w!#(a9dnHT6yHUS3p{l+i}VpwMIRK`c!uTH&Bt z3xtH3qN_$IycT-!ltpE6vliF1n-eE+7qSBMTXK84U~87#o^H>Q`;lfm@qGLo<0Tg% zsA8Wn2S!1{NWKtKBg0GFiNyH2LV>6cXj0~$jmEyz9E_;t9qx(L-9~$(`cA<{?iBML z{4?mhoE%B?E)}F0<>n0v5g@cet~()mm9o=Bcx=fWw7@Ag6S34gRMF=NI{_J~yl#1i zV-Z|GBi{ZKI1wZCcCb`gGkqSyqvK}>Q2gO?R}Kc~Q$7Jof?t-VN^cge=5(N75`_HJ zGJDnZMOa6dbj+^pSj5duIqiCPZ?6|s?tDEe4|BZL6@_yr4E^L5cX&i%siGqAE3FCl;f+O#F1~Nlx8VI3wIHRd2jbX}eV( zkuc)ep*c_+JT5C(&nH?l#v(S*5PC@7U>Lzy6WF{^?#c%$M;9=7NRC|MuWn{shxIIV ze|M5AIVz(h45E(wE(S*9(>Vru=i+&jNqXt4PVmtJQcJ2qTlW#e_tZ*_s#c?z7YvVw z9xrf%ImnU%tWUk;ItCbkG_yNe1;o_B6AIz6*36oUX0$BdeBg0hK_u3~v?7%t;-X=z zIuJ2$s?zlG3tnwj!`<_Xnm*SHl44loK(#S1-yL~9wO%bvE!a3$;Ln{|dprB$6f&Qa!NFfSSdqIa*#))!INW3&)6jq1plwCB#8HP7XJF-UgkhCn4uB<4iV7entc$L|aB76O#tK)rh5BSs)%9j| zw`Ls|3t-EZmZ1OX!Q=lT2zVXTnsphf8AM5k%R54A;Yk;L8|VTSrUbn@sF<=en3VtPunm(#u5*Q@aevjxSJHggG@&{lO4~mrG2l z#%URKN}6p%6-&6-5+2dhi3W_d%#n2ph?c(U4e=Sx5Je%SFS`XAWthIg&}cXPJG{a}P4!(=XGNL$$KFoRMaKXST-wq&a$i1^)< zk&tt`t7GXUC4{lOfW`3>>@ecu{NuMX@)Ksc^RO1nhgo{Fh_q{ z!`P(T+DnowoRIwDTgVa6KbbW8gaaNG{FwY(uvNDh`bRSrE?A5vkwfSG>^t7HDj!ga z%u~(eL(a_DLL%YqkbR3SnQd3g#}Mg!A3mBz}aABq;>1Ej)5*0BR6yG4DO z90JexCQxjuyYvG{Cv%^@p{9^;`9(NY1<&+QULw&q?mCEmwWK%PuoLURKqjFyRb+g$POi?2{<4PZs4qKLg)sX)Q?1I!4{8^PLgEe^|XI#sU-1#nw-%%Z?W> zqdlu9mRGv8BjUn$;&CEH5SZvV-R7W0T z#TzfboJ0q0ROB;}?_$2#=*+5Fe`^o(e;Da3U+8Rx`*}-ei}L9gOm<@*98GVP03DR- zMqT-MxtpXHXBRr#l2UiH+hMZzyhe?q&Q?$8G*Bt6rbxLR`21oc)$X9wpvIPQt;zDM z$^hZMiFAsI+#*u2#hfE9Ut`$2^l+Z4;*jgKxz)zJS>~+Vox*A;vG@ahwGqj*QZjoW z9!a(9RH@TRW@`|~F8W~$oxLJyRSPfPub#kMJkiZzWXIm<&_oVER+koST`x$U8~4#0 z#q61t#Fx5sVB+(Ooidezh{EWip=ygA3kT%p9j=H*sx2mY-6t2G z#qssd8Pw;o+o?@LS8+DbUeF`0a3cv|-rr?m`Na**1QW9}6fyH{$E z5Ci|Xh_w$Ub1v6rCs)qi!*rW{`c_XMr|}zR3)|(i z`XEh4rB)ejGg}m_H3#i_3PYDAfK)Ymd)Rx5QP5ib0FW5s0?Dl&307&4o5v6dPj#8` zq<~iyosndXnb|L5BeeP;d5l2f9r8|DAu4=4I97*LS2K7l_adJVas!O8w3Ed1D*il= zTzYZ8cyzGh)NK&4-0HntP}{r3S<-0TCbt-W$>@fgAY~EZQFV~}S?np!J(oSc%4ID6 zyF1$PdbsR{bzFAC6}fERUmKU5qhTobty-bSxa?>bsjKjtzm$|_T<&!++Yy)&W-G2T z8@$vzFXJc7*v)2sVNJ??sug4uj4u{r-&{KrpN*{Nvtcg6XEIJRK0~prvK5HG2A_?r z<1=h>f`j`Rs(xiYWAeb2_^i$fH{JC>*7Dh~r^%syKD+#hem)!WPvjJ6=gc+UzC9}O^+Wv zaJ$!w$$|KG)Z?}T@oCg!HA!ly7}y`7$=ayQC_$b7#Xgvt=W&kkB2+yFpxmzcg6DJA zJIhq)uMvSJ=$9Cvx=e}wRJ5MU|4(xjGktR|{%W+!=LgpEdCmm8X;Um38cI5`h%S|G z3%WF?meN?$swxda>%bZ&*JH@VgyA#BgIPgb{}@vDk81!&kfl@cy!juE@Z&O7dWr6l zn&Q)-9@zY+D3E3W7?(F+mrDIfYENw5TxD|zuXnzxQ!VPe>6yIgnH-jvU0>)iIV%&b zRi@0HThHVK=)PVi$K$p}nO?3nS($aE%R;~9WTKz<8S=hzHcY-A$XX_!xdM}4{=^lT zd_+tx3xyf6rc8~=3Cg?i8)WhuufXIARQF7-_;kR`*MWFQ>c^ri!rgk?S&jcSl`Dli)uT3@Vh4%28=cRGd_-_?oQa zc8=JvF$v5;i408}<0mWi0~8Cg<{b(xh5Ib)--VP3Aw8Z)BH%vHmu|@15crWWvuPHCnSl5)7 zb+Ol!mtIEiy~C1$y?Q1LIeTw~uoC)V`3p!yl|8vmB~^VV+q0r4JAF7Vc{{)dY8|nj z<3WyS)sf_&=PgY{dMRSXx02LVvh`HwChN`;zI0QKK8sAvrDSfQ!-!t8H5pY%SiFL6 zRKI|%xS4ZNjN6ci;1O7V6SX>(ws1*EchVc+A1drirovdSTK7o7$<;ocDY&obs(i}< z2q5@w(P^uz(9~}Ji?l0?pG`btwl5IBx^J-Pv;y`BR$3ld(+Ry}1Oa+kqYnDb!#Dy~ zXqqy+mi#518=xpY2!9GON{o*XD||uteNE8Bxd8);OE)N#WE~;^&UXh^5z;CzeTaR1 z-{2tg!qD&_2AtasJC*hd_*FfANG;9&3TRVDmR-FP+I?kVwe%~MS`ekIA~a$2ia&B zhY5m|C!u}jE#UoyMY(l%G}gs(*&wrPcZ3>KG&aklu}2^eem?39!W?CW3pzVEVD4$a z0WbNmE)(L&RT~wtz%E8Q8I3`eh@5!k2AiQsCs{lH^6m;koX2PkV%}vNjB0W1;xfi# zU57e6O)k@48A_&vZWjZ~2o%MiGTeZqT49}acZ$IgF`!KvY~~~9B8nB$;cuot7oF`6 zwP{Ko($Hy}puho6huX-c_!R3b*f5XlY!a6;T)`^kbk!X(c!|bQsGNZ|!i9kmIp8+y zBJ0^KV2+v<*lrUYTs+Zbe+3X>J&lF#Rs~{V{haU40RZpY5JN&~yhuw9upbFjS~wuFLwy=TThzKEk*R#iv&ORiyu4LP9Z90cavY7?>rAd*Isbg)ahnNrUr7 zlsB^!74{lV`_t_&c35~AJ%2KpR82DQtuYxuelFkH&Jf37dXRXO9G=b@)-BVBLk=d- zEu?>eSEPG5s&bA=KEZ)VA}#hY<+nuSUUk-S(yRB*>ZLdtlkEsk6^(@~=9X9>KOG{} zAsu1RlJOzlv4s*Sz_!+A(hn@uWmH&&YFi+3F4=S-mZR4<7`v0(h@LjpW$;yVBhc=I z?NVHo+f+78QvA?`+<2T`a(>}n12-09*)uTx06k{G*23g8b+T@t41mG zYM3G%a{Ixqs^IEU(mmw%X=N#^e`QWVECgKw0w9V&L&xH8r3>r*w@?nJxnzZcPU+7=#kD7FG!@*=oc0tz@&_qG?B5XO!#I3S2j#ln|&_?s$_imG)jh5(KH$~nhuIWh5^kmA}*K|LDvo>LOVc|ICw=-_)Z~IdV9#9 zJk*0EWu#4l0C&$}WGZznx}93?)(%HUIb|B@5r1)B7Z15xIIy4@VWXP-f{>+UyGwMt z65yTlBTl!H3#lFA0R7#>0W+7R&5Tzc_O+}U>RL&azmU5jpF z1c|vd48YPw)-*VijTH&eibQ(RJhB?ftH|~jY2|t4w&>Tptv1X+gL=Z(jNg4sF9Is zVvxunECBPF$1ri=?~a4D^Ty9asY{4Zsn75aA;SNQ7vp8m(%PvykYL+Xsahdl##0$_Q{1V?V zmcXyiGn`uc@(@dVa49+*eV);ox%e?iXHs!|5w1UlEih|mSF}Y2*{*2T4|!c0#F(1r z4qL)U7yjvh1|q04{NRwYjG{f=;gj8niKVK0f;+jm7xE@LE@4g$`}!nYG^js1&>hhL zZ`3Jsk$S(Klb8OFoQ)4@%olmnwFz-`p~mR#t6Za^XVr>nSs|_62xGIJ?p>_0^ygQ8 zk_Z`eFcTGM&3NH9)<;W9cbYGbn;K;fK+^VI&Dy_{#*J3f? zr9R{&Kye=e%ReP=N%#o>P+~gc<}SVcmj@FjXfpybh^5LZTMFOe5@DS-427||dPVQ^ zZ_^DD@@UHcmY#$5N%}DzqeH9_$g#nUG!EE!v#O3jQCesWbhVD4s?A&PDfMq2ltTJ0 zPnYNWsfBh#0iD7y*b6=J&fUC`M&bBl1GKtbR>Z6%6|RXk?VSE0ZYA6X{L;8VTQ*58 zea~`QViI)vBi)qf7?@NGV3Vw%Y&Bx8uiIdUx1t z4P*6+jWsBbb*(mL#j|SBC9*l7qj$R0m{>DoT>90V)VkI_U+BP4=}Wn=o}Ts|3=gJX z3pWu4V>kUeQCeyy@*IMUPT25=V# zQpptgr2+&iS`>-eFXo7d=E!537tSUPs#gJA76hGcKt(=tCmruAs&;`4IK*;8NRseh-U0O42o{mb_I73a>g#OnumPT;=E zn&@An4Uv!_gv{29?IdR>dMj5bB3EPwaDw>cq~uSKC7fuvI<6o)I0?`g7v}_-sw+4j zIZbC!jfMRrmvLh7^_?;!hDxi`b{O)p#r)zzU*8|NP>^m{6L6w^k}WruUczj^f>t9inOSQa5g3ZF_4n&WvJ|QY;s!$Mf-Fr! z=TRHYRuRfJUZ=V2Kv=ED^ZnJx$!axnvRaLttX3l@tJTQKYBh4QT8*3#TWouWMIgW$ zIBYZ*sV$dePZ-5ME@6b!g283I=8%?jKvWM`TksceHiVWQ<8le=U6EC)EC=l|#b|OzYt-v!LF-}$y<75>vPF4})WW2v& zp0I|=Uuin712iq-M%0W{>gVG0AH=LWnlvz^VfK#)5%mE(zQUB=0q5K_X$NUH>6M?1 zh?@8i&W74QEJU?FgG%roBO+>YQBmdU;&6DJ1D1qYRI-@Nz?Q{SIoV|!nsPdc&_xy^ zbj`G4o&vp2nPG}-;fTc)$w-o+L+ocqdaoMHg!FlZ1Y!LUNXc6;KH3<(W!V+FJ#Us3 zb2okE@Rlc1q`p}=`Ska&x`@aTL~U${v4WjSJDr3R%eS$AB9@d48y~&wI z`_PKIm33%R4xq8BH_5XWkx9{|_exxqw5@b0XVRq=lqiZlj`7f((6l6Z5Hq6)0laDy z0eGDf*Ww4N1|RjDE$B%#7qtR>*476HYhg`KW;%Woqt}!_I*PbXS zpVL=%R;J+?~8|;^|LWb_rqxz?6Zn;5KZ`6vI zf!K;#vY9B0^$F*{ZKv-H->xfiM->P)QY(Ci zT=pGztKUi2|Mf6d|4$==SHBzG>bK*v@2vCREl%G#zSp^m;XlCt0ZQq=!!G-dy4CNP z>;GnD$&UTFO+0JZJDU3kj_htFbJgqfdkZ%d_l@1MW&Flya8K^0;X@;bM{nLdvuoq6 zE-JSwajrTzkxUNN@`d{FhR)ocZQb@rqgZN=PHnpG`hz#^-99@#HZVT3dB+Wh4)5E! zW#iUe`)|JG!0sE5-0I4$s4|fZ#*=e<4tA=!p>5aSw4s(C?q0X|P`h3j*|hzJ!&8mo z=rt%dP`Q#y4)=edDdJl?-g$?b1s_wcjZ3b{ks*k&DOk?ecUo zlPeW!)keKJuyyzL($3nhMyr`C7An<^^-aT@N3YwkW2&>MyLtAyxgA@h?eWh1uCk=X z$jHRRaB;M{=5b$D>WfdrS<38b1ev7Y5jTj+z@1~wEjGMZUj^KIyOp&tVC~w|C%8pZqyx#%g>J4bJ;P=&yLx1*)hw{ zju~FraRW8oA!Wx+ob4oK$1FcPX3u5EEI&JD&t=CfKRYG}mpKzK{y0NTZy{yJInHh{ z(dUm@es=t3pPxmb?;>T#F4VT2lpS|*c8HW6v;6FsJ(nG`{Op)LmmRbG?D(pSUX3v^ z&|G=bZ_;-B&T~c%|6Tgoc5S(AS~QPpi*nLvah`F)LbX1yyHsm5i&uDlBN{+j7&yGPHys=Hp*b$v3Wtt%dma@|wky0rMf1NYy5n$IadC;6P< zvoCyZ2%o*-bA9;i37>CWeCVO#_{J@(eOs@xf#SlMen>u#UjwC;1) zUFXiJ&98>vwVt0(_wK#nhW-0T!e>6+x39}*IDGc(x&C^+GPA`KJ{>;UIX0nvun6rV z2GFO#M`T~E7DeMxv#DQkJUrl!di-NyF--!9+h_&&h*B;UP!Kf-r`@4bAF^8Ezg_wjuv z-@EyKr~4uILHD%#wEMg6Z@IU-FT0<0pLGAk{ha&n+z+_#bHDF?)%{QI=iRTlf9-z8 zebx;`fA0R&{ib`>{b%>v?%z6W=%~uK$oCK2AGois`)1Z9V!^(5x;xzwzT3k0-R`iv z5e2GpsjR|ZK=5b z+*!)-J(OfC%I8_?ag+NIx9HwQxt^v@f5^Q#;Bze0@ArlJ{Z24Y{eCvo??17+{ryn4 zzvO<&W%c@(?l0Yc<=cq-w-WhpsMf4{qfdO|2fpXRg{PkSEW zk4X5N`ON*l{1HpOm+woxZ~E)oYA>o!=s)O5K9TNos1-h{JN?%g>c{f+yH}@{t1G%k zAOCCh%;y4BJ$(-wMVBuW@_Fm{>xX{Q|CbA*QZAK>?44VaL!!y4KhaO+Hmh|MrD;bw z9C(BSPJ?o-UX%0SvSXuR+5XVfN6)YM_)@R_mvYrdc^iiAU#=%-9^&JNuMS?{-M~tkMvQ}kCGm(G_k4SW=NYz z+eqWH4L3#VkhYS>{#nDdNeO8)Y4k@~K!G$v+C&=J+H@17X;OzY{9{cwPHK}jl7@b~ z>BdMKNHe6t>jvB?X_7QWYHc5IBcyRsn>4UvzzvheNRy=IPYk#r(kN+y)ZB%$hcrSO zCpC8Cry&iK#z^(gwA=t`h%`#7|MxA|Bn^^ANVT8hoYW!>lWI2%x&~>0G(@WI8+3Kj z0BMj^{pXyMnxqz~^3z1dk{YA|QsrkjC)G(!Qu!bbIZ~a}B$aO(aurgI)F71(aZaj{ z>ZH=oa!#s}>ZH;ac!pFZ)kwwvfpb!YR3jCS47(DkLaLIo^K!_Ge{Q4ePZv|?K12En z>1EQzqlx<@=@&@9NxJy+iTecUXGvcpJ$t<4zMu3{q+cYRKhbd?A^kY%=SlBA*>xWz zy+HaGq$f{x-9^&JNuMS?{;#_3eWZ_)ew6g+nN99I>FFuP0|8}c8LAs0d2xeYfAu=IlXQS|gtY1F*SYPa8%T#qorkx(ZKOS~I@Nn@QVA6K~(?W=NYz+eqV& zGt@`wkhYS>{yjTtkrL8o(&&F+fSNQz+C&<8*Dg0fnkIEf!@sl3jg#7>jijOfxXX=^ zHjrjWgA2ReC~1;3MQSbXb|a*5QkyiewA&4n#z>Q-=I`!yL!?pC1gZJd9ydrDA&rw7 z@808Dq+!w+ss8dFH$WO9jgspB*B;j-4U$GkwLjpT)FKU&YENJ98l(Zz5UG0pdRHe6 zkOoQBKjxg&B(+GDKe^u3NDa~esq&|slj@`)zQQ@FLaLF9&)wikqzb7@%FfFnFMjn_*Po75ZsYH{ zC#seD%q>R_G%pnIOe413ogX=J?13kqd*T?U_dXgAow)0<^09mGE8PA_<-}e09lPze zbEgYq&bc?=`?k|#(a@cbJ@+l|ICl3VZ+_~*cRu{wL-#+nG?*42zU`s6K3B=*PYfJC zao;_6p1q^eINlh&%bh${ynSjup4zgt+kW`WnZf4c)oL{^m0T_=o+wV#kI%=hF)>^l zz@(WO9=S7jV$=9=b8xucnurD~m4d4mtF`h_yLxx|&cWm@2anu*_{fo)ZaT1IwzGZu z;3GC4Bl^7D_}zjXWXP;EYc^6cI3ykqO=KskTv&2Rl%g>HLtq+FQ4?SYeB z7KtgGzUys;L)Y(|9WR`G(>+HP7T&t@)VDmf@UF$B_dNFKgAYG)@3C|DoXizs#(64Z zgY{-@tW_QxZZOC)e4s4z+-hK9M@8|5M z8~1P9u`wANZl$N_Id0uPw{dRk_{Q#Nu^QhyUeCYj)QOWvkDobl@>q28XzJ|wn-9$9 zk4}va4U}@x(cAC2>yEq5ow@DJr;f!(kLL5bAN6W|Vxvy~c;mV0~_Z>ZR=1r%pE$_bfZKr67g?Z-uvxp%hvJZZ+*)hx7}W89BYi8b0>}!&#Emq z)0PjNK0VlcJ8hXOm7;uHJf5}XIBl6P+_!yG zvTf=VZJErpI~#Fn(UuS2w|I7BsOAbMZoBL8+trqZlXu_yOkva1|nk&JOP1H+S94MjGZQZFzLdbz5h)ZW){Dj1(%7 z+Vakm$4{ikP8~mSGbol0z4?X#9?>NTkJrCsukDq(Qx8*}?+wv~ja#U^k zzDM3Rf9HdDE#CL`2cM-a7ih}|&pdGNvsY=$_I%u)-O}0c;OWz?#@p$k(3ZF&Y0L5Y ziTQZGF*aOl(w0-h!*}FPcCWyfgBvQeWozcm`;Xjo@bJwC4(#35nc2GG^s)T$jnf;F z>G7eF`CR(&eG9#|eEV77mUrFrbgwP%%i8kM!cBX2Y#J}9EuVPeo_8-kw)n2cpLlZV zk%u36@WFeIzv;~K4!4_Q-p0hF@;jyJc>AdZg7nb~<*)HgDTJwRv`QYU6Oe?EW9R?t{H; zBWoKlIzWQGlj^;@x5SAq^bYn;iW1djx!1(W>bHLnNLlObm)DDHV?^?<%$sL0bIzGz zCnwUd)MUj_HJMQ*k`Dg-Z_gj#Z2Z77G_`cAzG2sNnU{U;?kJJB`l3hVEM=Ji1hl^tIl!% z&wh7wHMMO0iISLsxNJ8)#|`2#GmXoVM3q+77K;PZibs#9mUyu^mCHp8SVppGF$&94 zIt9z6JIh2c#)>Fi@rh!n#{2Qv#*_W$&wly!$&&{gi*suQ8dPOmmUOf18Q%fK=d#N`N28~Ya*t+%fZug*^{F0Mzz{-8Ip#9K`iMJ}6& zM#G5jOezwN5VFRasfAQ{rVz=_rV1jPcy#~q!^gi*3HSFGroVZ(yu?+UgRj5-y8qpUj*_5QMZmgD8meVtHNt%DquP}%yF9h5cE(0Ju>3X{QEsnt*&6r0^*f_WSoZB+>kr{)%gBE%WvaBix=`qw zRxENXghPl+?9OLZHY=JEB}X!;a1^gowR~}ZdueKUe%^e2HM%@K zK0CiU820+zre3M*C=cLSz-C|>%EX0qG7=J{z%n_X443ke%uK2fW?~QTKYH-+w<+QN z{@nC8_m>v9vOWC#%ZuM0-@muAS}G-@qVA9qwuIqBc^6Z~nFPfu-AtG)>#B=kQM zq-Y9y>Y01^>it;7ZL=3x4tYJW><5;TWtH_wT*6XE54v~wrFX#Co$^KVsQabYIk=cw zHos0S)fVE?2?drFLc{a2C{x9y)%kqSu%eOi)RLW8W<(2?VmcL$z_O4^z;f|6F7GUb zFdxqgHO`Ng8V`TR1M1lWjF7X%#jFd<*;0PCn2INqpDZ=Iax}HXc=_hevTdwlbVFPo zurKayEe4kL{j;;i_2t3E$@uj2VmRpaJ59Y@(@}W}heAv`9*qQ+sYE0co>(SeS~w+%f&)M3>hvd8B43!@3)XBlwu^K z_A(*D*Ho2|R9PkkiDG&D`Cp&j+sGNxLLr+JS(>mL6}#-HRt1&>N@e(l$M-g7BJO@D zxIQ07!{OZ17tdmstc@Sp8T}lvJ@6qrk3KEpTuQgsjz9$LOhA7R9J*% zE*1A_YaySS%wzLpJcQY2m=Qu;EXUV4FH&gSfBER)<0tp-Z70ZUfLLANfwre_B!H{*UI&4b`^6Uk(I1lOQSMmpWoYrrRKr%wDIaUaoH3V=hXvCkWOH$4Av-@8&lRE)rT5c<1WSdGWJ#hzB+UzWTE2L+yPC0x zz%s%GmSwwaD^^8C?j2KoOs5`fuM|T5)bis&G#tu2e)cSO##l5NGC4E(xIDgob*SRD z(V1ErKy`XNED6){wMksUQbV@J8+~l`dA;SG)<&I=-S+T&YT5Y2Pc56Uv_s-QEEksN za$Vhuh(~-_z!-~i4=hun4a;yc85TK~$tGj}X34`c%hy;>%s1}+^5Fi%N4vY53&q?_ z(pM>?RLB-{@o4OymgUjZQuXUsca|+4S zY#8OLj=U}s&{QfG6$8s;ToghR%lKS8l+Q*}g+xxELihF_?(IFlwR~Be{N}~h{4D2M z-8WAjKfAZJxiFv0Mg`9D3E7%on#;`2M6)^cX&e2NAp5GKkc31KbQsm=(EjhgK7FvY zlyr#2VlEZs7}BbjE#H!@GAuE~!tyD8@(f$u7hGH)hOkUOdipGOf{(@{1(UTC539$o zFGnhF8*MhGmiw&H=mnPM&z9xxSVOkX8@+FK1+D3xR1ezkVR;72uGMLL!`Wv#=DyM_eedAIr?Vx+{BQDDa)+8=fzjhf| zrh~Y=vmCI`cGu@~6U&q1`o-Dc>uit>qASP*1YW9`^1 zR-Kt>GM~utB)_-&U}yKo0`o;7u>Aem#%u|eo$E&rpX{!$&&_7i5stOXl48#-&ZJ7k zNIDZ%Bx{i56jFRsfc% zz|xuf7t6@RGL&g-Kik{g+uPb&odIF2qEc2Nn+jI)qAuwNopURTF_u#;e`p4lg6dVz zCzcUdHjOpJCB~Y5U^xd%x4M5kuAQIs$D`rl;ke)Jc4`gFujqJvd6pq2mdPj|hb1qo zDrd)LCYFg@B8PI|-p>8)ou^oQ1izl;ga7{Z$@)x@bFB8&g9necSJ!4SI~Q5Tfu%FM zP)ZaFVk#X{WqX+96i-#8pd3cAQ3i#l-+sl!W@SdK;3ye9X?TV*>%Qq5r0L5PO|h_i z`EYZo5RqC_%QrpzV2S&Wp2bGA&XT-AyYaoo>6_z$irac~YH8LHmmLmqNgAf7PR3YR zs>t5Eqc_!-DAnvEzu$b_X$?+pE#GmIxSUv8LKt!RU(1=rQo5~~q0k{4;$a!W3KO4( z6!u^liebizmoAxz{F@~wpy!XRF`kfaY(3f8-r3pMST1IgnMhS7Ell_@O$dem$8s>W zRNU(6on^yVn@dhDpYE*9PA$hr)zjnN(Qt5ZaMZ=Q!r<oS3*4a@RR zmR?{frQCz-aw9@kt&!JjUI&&LiEo>&+FMQ{?1ZM&8@2;WIhveWW)&)1T9{f2hs>R& z#Kgm%Lg}Gs0_9Pbi6=y#c4u?R+c7qZ@010K;~6mpOP5bJHXdzlZf&itVX~V@g=;El zV^N(>goThH8wZ^;6LE=!tL62LHN<5|aVp2`8phZtE19>Jdb!6w-C2dD>Qwf}ht-pD zcQio8XVhzV+U2?(SV|I0V;6m3nTWtL1WU}xooFc{WYV#CCa|P;w(o6jK6>%ucSPoI z4>P~)zu13zf4P|FEVFUCw|j46ajBR~#0849GET8W#mlCYmpIW|Z$HRPd_rbGR zpVoMiHAp|U-9CRi?5Vh|)dR~8V+EFN&MJ2)#HBKcORqOpqJia=Uyo50^T6#kuG+2s z@vY_SpDfLvEHf&VDb5#DE!7l+(bO``Q?x|KLOv{oNCFcLmWd_8u$;NI%o2g6B4Do0 zgp*8-cDY1j{lNyB?pIdkF;7Yebyy-lmWttzoBy=zO)X`od~|17M_eWtUN3jqCm716 zmPez?@lofX--BismOd9_2Zpwz%1l5@hDG7eoayRLMe;&7Z;5(rtXhojPA*> zq*|VUkHtiiIy29~N;aOqa#jBgC>PW__Y?2lpDGMm+F zb`qCz4RL7-A;hImD0p55mWBC3vZ~?!tTejLQujY83j%GB5B-B`78ISO2j^LPyrC3C!ACJ*gEQ6%l z*4Ezo+WjX_etC{L&tCHJ{-b9Pwz1CV45N0my|ukM8$A6*R+h_kMJ?xw>2NB^Mk2Ij zlwoPOa*zPvuv;P(!VEB2J1!RDL>HELhzJ~`S3M1{zTprE-Vj5-e7rH62`S~H-vtlX zc_R_#!drXKVl7G$NJf_`(e>WtyLMZ}ZMBL?i`%B{J4+gt@+2-{DT{&Sxm`(ep5C|G zwX;^UcXVrc#mbVC&|qmfMqrtkTBcPhouA7mnu^Ks2UE)kED1Uis=$&DBSQmAkixQb z7ncYIMnM*yqeF4JM!8J1v9cR9;w>zck}*+ao3KnLqH!!vS!-fxOvYGPb|#i#3A3Py zWej6%U>OhMvco>!!r;fMc6om^EFX?q{Z6Ob>2;dzmNT(LJ0y+#YfOv^_((He6a|h} zf;xd%45Q~g7D-0alq_#W-^IL zm{HV9L)9wTd`d{f>2R2|t?FTvMz{r*Ja)aL!&qe_s8{E+5v5ND<$x64KYG>G9GRP1 zh8gvid)kDV0j)W^?g|VzS%;HHpjU#8M1Z70Tp8 zsA#}49Or%7FaC?A5DP5nNMmVxd1+~B4s(b|C`7kZ!cD~^u`pI%wrU-8PJUQAZ7qn) zuw;7uJIm@1%QpKMQ;fjU-#-}mql0Fzjp4P^ZnT?r&GlSeQDjPz^=M!j6L~Z&an!^z zTnGt?L`+OX)1;zqY~a1M`{2RTN58yyuo>TbxqEMWt&~l18WyqZYwL@JVmc-Yw5C;? zs#eY95?m}wg#^N}Yex~vf+fYWcq5A$F_KRI@?d*;CKb|$uqYrS9K)but^NW zB18Xje>oQ;oz~f}ypQXohO8~WzWp>-BV`;|a@4NTtRDYldBG^Mi@2Ov@`4|m zOfHyMk{wO*lF=|?oT41f{@Jpnt=?Mpn6=qLDu_#1&R{o)UT(9GkSfSdE&Kk#u-R>4 zcx?xkR?UMYdYnlVqaxubPh$#Lj^Ri(#)WA|C47bCq&lOT}Rx&Ea1}p{5Z{1odmbX9bd4qnV z-Dor$%~rkDFsh#GAWaHO&5DF$KU*sNtz{e=kzi@Sa%pjEclW{GlgB$NkOtXG(=aDvX7++|wi<*|ji>LBrLZ zVS9XMSy!f(y3@L|EdQ`LMXZ|!jg)F zIRQ&1(7{s3;e8m3ha!=bq*-fg+xQ&h?d^Lz4WMY|}TFN#p>LwN> zT$G`nZqCFQyLI^HIq%~-@UY{KUfy^bLy0Rw5Sq~n&yC-Fw5l3z%T8F3?KR?&dY)n`^_O2tABZ5v2Dt9@9; z!sx}t62hBUYPWG|)h3n^QnMQq%LL*wu#5(A*?{F-7M7;F-|x7+Zmm(P)vL8;wN+Oq zmYSwWs^N&C7)N0UK$?n`R8!%7A;v0!S1Pt_F_DQSA7iK|>jjbYdnfOn@;pq&)d)w0k=2OO9$o!mnU(@eZE6`NU@5Wn;!?4Y z&t)<(uHY+04|k*LH$rPo-L| zR2tQ0O{tV!OVe~!)=W1HOA-$}j^`NM!;;Si37R+`7L$m*l~p9t*Vfm!*LQc8XN86B zx#CfCYBuEf+Y|+5|&hyf@StLF7GT!hGZ})lN_0; z7ZwWnY$lb$qeIe+AuJ;T%aIxu;y+nRx>=c8QYii1S$f81DH6nGoqe!6lMXDM{cg){ zw=1=BrQ-YbO0yacw|nP=;B=?H1JU$N^8bGf{Te16#`OfIJBuoMyu^>8`OYR&PhFOT^$uCA39X=#4t zX$*Cg7$K{6S16pn|4blP6eD~SZz`)w1ePW&y`L<_Mvx zSG*CeseV#}r5;!kk?7Pis*}-JerieeQ2b$_6Z(cB@sc_~o+a)yvH)QK90A6ODtkFd!6 zE1IS7We$xA;YflL0?YE!^5$#_o5I$YHr8kJTxm6*%xBPwfOnVSm5OK?iwF`1kV?7J zH_fgXVRec$@sc+hgR>y$D3TLGNim+B%cSRKpRUa$Lz35h%>|Z)NMLCZCXe1mHpB=? zhI)W~>7Oj4n9!9;bocaRfyNk%_ft^C z;oGpJ$p}Y?93w@Df3pm#u)I{2ZI!HNXENzzA{G-cp4iSvQz~JOre(bN|FksxsU^PT z-dVcFW>KV3JAvg&F%?+a`<;f>X!>XZMK46nZ&b;0#W6I)&{WeY3wTBame{*Os}oB$ zLt_PzV6i6F%qmXdo(VqEY;}HhwU}k{iAhsYGv@2+gO~>7qNtve2X*$^iaVvlwzoR z^D)UCUVixgfGgu_>9AC17N5pQiH)Nu(5g*AZ!4e5VkFKXPh|5GMk&=ZFOX;*iP!h$-u+*e_8a+X%^+z}vFNk-jDb)}| zlB#8x6=ZnYqaSf;c*G{QT1F(o!x(XXcWjR2;QfSZY>2 zn@wWbtYH9Y)Ou(r?F%8&k`+fYy;gg4&Z<>d@}Y1#l1wk;vJ3N1me6Nu)JGrwX&Fjt z8W#>M$-UW#T0VOH`9Jr$GOmV}5h<;-@H9qCT!O%KWyqzjKYbM}4Y!_#Ph`RfHL)yD zEzu7+iAxQZl#((BjS#h1Bw3fWG4R(~9axri-|0^+Nvv*cWn$?_gi2eYL5ksQjQ2@h zA$lrLV{29xmJBSr8tKzggq2~b29}M~zgUtJOI@xf3&}(j9de9{rmZ|VTo31Sk^^)d4}Q~-ZC-&YqoDKyW}J;CzdjYmh;GeEkihM z#6ymW=&C%bSbQ!LSW;XMmgwGMyAaya9pPfzO)R3G=B1(`^LHP;uD$}s* zwPQ`KbEK@8o{f}vW!M_Zh)W#PgrK695tng>)HG%jmT4BtgsG+Cmf5|f94xUO+izA3 zJRvQ^GIg!u)O{XBFIZwF^Ncb3L+48Er{_!QP*I|k6t9V=GP_tfL zel(Y4(KvVhP1syoEX>BjBIy~l9?7EWflqeMGUQf{b-UN!Zf-TcjG3@BMHQBbTg#*zSQ?Znld?ps zRn@ZedNd`5c~nJY+j5(Y6If!~D9RmTy3ZuZ&T#cXV9*}&7G zY@51?nQIxA0xa>cvvt#}Hju@jFpFcc;g~Xwz>-QzNQNg#q=+r2J3GIYO%-#wVk(~( zLvkp=8W@mK;O7*ANT3@*B_$M-eKac`I`)XBwF*WMr(Ew3POd1UVX?48&L^8+ohh!Z zJerA9dTn&|UD#T_vt+brPL%`897AqqsPf?5UpF_~Tm_d$!qUkUpT?p}2$pj7h!H=2 z`y-=jxOJr{HL>(y=@NmZq!?361(uSUGWvc(SYPBqhKPX(E9@pLQD(E6#3U{$8*zyi z3s~9`iRWct$>BNX;F%+LbRMG=Ux)^l5LPd znpR!M?=(-5OU6&6p&i(-yVYT9FpW!6#baR-mn_2i&eAlt(Fi%UT*yQNOJl$8Yp!n@ zs)0<8Z`Zt#*RU{icMQ|7HJQMYL(T_tZfjymCM1*wk_5>|ZMQ!&znV!DGMRiLlM#58 zi%<@lT3Ld_fudAADu#4PE}P}bpgTHp>_d_=u+OLFRvLrhDJ+{NibFxpCs$aXEv>IT zEJg{dIez^&ESHLN=t!engVkbrMG8fkNS-0rQ$%g_@#f}ci>u&r=$t5dslwA(TnVQM zQ?8Af(5FBC$SWFd9U?{%x~o+0EYTNgpm!B1Pgt^YVCkkpo6CGyi(s->uGAa1mUWDL z)uaYX#U=vF@YGT;kxxgW$6<6sZcib_gRB8fP$v>n4L*IP&{k}8K`068ifWn6UPBxIK6lM=y29CuKf zTTRDvsT7(lQ%LC0A*qb>aTtli@!1S0c~ik;wNf4S567-^L=a}(^%{N+L+<%2(rlSr zV2Qrz;>O&}=K8~es5qU|cQ>K!m8If*Jh0SRHC~un78r6Zp)|)|VY$gwa9Ip2{bc@W zEUAbY!jkL9H2>w#KTEQPTL))f5V|w9bb`42ucZu2C9t$J;?}Als!_aVu&l!pB~!C@ zYl&p&KP-8Zuyom-`IHz~>iZ}V+ODBu zBLG2pX3dRwO$(V;*RU&%HXT@ENXOSmXJSdj6%3+DS>htDcTk*NNyV~>1oo-LDM}|e zwJymjEps86=0M5f(OY+Fwb9_{*mcH|WMe7YEH~N*hZom`)rO@QjblGUX>)#dYvVyK zr1|}ekAdZKaUm{7X;dxg zV!wU=J}Y6uBso-!fTddVhUiR?{98*ph)a1iW>pQARyMM|hQ{=mqUt|cRwc` zvFlI5rVG7_l$u+|GK-ebAZ*tv^-=#)*IOj!DV1iW*7EB=TWZYGttCTmqNiappc>mb zB=Hs3Wl=f`V>%RAqQl=YkV!{=DX@%sEm$H{oocH~Arq#d(2e;Q;i4H%s7o;wss5y* zu%hQ57VvrAk#r2LN0A8LVCa$PsG5#Y#s{?t!MfBljF#7E936~LJoiLF$3~^v#{cl) z`0BM}cczxJsbXnsVQzc#ekRx;asB0gER&@lmc+7XVy7&At+7>HI-ifo)mY|9ET=}Y zk}b8)DCUp9zAuoNFiAEOM;XjkYwnQMZOM1KA|dPC#8MiKk(^EGJtH66-4LTv0;OiZ zT&opGRHkjC99X8%HCB}^)WIn+gdGNGM-D7WSX!)RsTfxXOhi$-k@+8%7A#T1EQd_@ z|Fo=NGJ=E+$}1QSRkvPk91X5uN$3_{^=ciKgJzFF3ZDxFxpp?NO!BP6(OdKRL^gmk zc3>Gs)#BEYP_+Gutr(Ub%#~@@HL6bBZJClfv26D!I{vez6uPxcp^XWaN3e{GsYoQo zg~N(sX_7tA4THeSUgFSJ!cb+??D);*cytWQQ&sgk)mo?4?j0S!3M?^Gio_E0>C(*3 z(){lB{WN3O58r;f3Gb|~lok__7~^QXlAe`GG0w(H3_fPs9$p8Qt85jQD!{T9O+Seh z)M!p}r1m*UegFHfWlG1b&Bi4XFZsmM`llrUOD(X}iiy3g2oAO&WEqxKSfWJ(d9#1F zWGzewVpvCDqlebACYG}kON}`+P;Rk9vvezV>> zK6s_;ZOO3Rdb`$Wmm7m-_s&x0rj{Hb+*xWrENymcHW5l=3assyEm=1;0&7@?cl4^A zaN8!KI=<=FI(-tB*o(<%=q~rr*chtIQH>#(6k6CtzkHl8Eycpga5#d>m5z*s>K$5^ zCFz_f@fc_*0>`oS%I((4;mN7*;_+VY)f?SLw?96)ej__wSYi-b$jr>{E-&ou+)Gk! z>-fX>spZntQcyB;G8IX%u^EO~)6HDwn)cHwV!V*6*ER~t${her>N|6%bm8+GhrS78UT1Q+O7;LE^ zE`@1aG8Q&1M>)ylG)HSrE$3h<$U1WbOW6t07A$Ka8LXlA+1iH;kqL%m-@} zDD9XfOhzT0rWsu(kb&`~P(uzrevV0@a1kz-PjdK_J2Wc^ zVG_+_rsEiu6W4WQgNsO5+hQ72cb!4C(>@)ap84LnZd3-%R=?RF9-qB=tGGP_+biP9 z#q8|d-pba0c0!s&$rd)Qq5j0CoEy=?%Zv>X|Z2G}&EJ0@| z%oqG>8J3o6VlDl%CG}rR)IVjU=?qSD^`^~97-Q$-Xnj=-dTbC4*%c@&&NFqvap~R< z%eWF)T2o8agk_~#BWOj%9LTP9TiuKCYu)H5mRoN18tqP{IcRq7ED1h{%fK>nXQ>)H z*;`AL=lQ9nXGqx0O0x*du#M$k+Uc02>S9YyqcvhkuyR+8<-)|$q>o{#cmid^ zvLU#z4By7(ou!Vz(aefzR%4dT*dH%mBe0CB18yE-9jGJ|brp@^kctc=q^e!_!Xvwt9waXGLwRYF4Y z9+oOB6)I(zbf{Xr$P^YuwBaxu7BnceRQ=XGu(tg0{$50F46iXw714G(vyzM^I9m-%`9+C= zWn!KoX30iieRH$G)^O3WVnprmu_v)5Em4$wqW?*fxOdeQLHbEh^GqE%p&Ll1a z%aCHx$0pHKe1URc*%CaL?uXKm$vif$&>;$S1yjeWL$@lXfldxZ(vfQN{noHMxITTW z8(q-Wy2DntS8WZNZ3<&7AA%)5X#{bZM&o6IM)z?d&q~UzrDPlIMkxYIQi7$1@|naT z?-q_)O2y3KDF(}mRc;MNfu%`Ou#{j~mO@QcH1StT8&+U>na(eSS&^a`T~TV~a=qGp z*Qi%Dhl>-D9OB*R)+*!Xuzz)Saar-NY^QnD>yLVeN9R``-fR94mhnV-HNUX~HMxMl0^<+^h z6N78XfaOCWxHZF5%cc!WrCWooIx zl0gphXG<-N0w7BIM%_V5pXV17fu&8Kz)~&ql#}3@Ht+wNr2$LBs#pekt5n6b$~AP$ zjQR&}&)?~0S9idsO&b~6kWo>&$|Hn5cU9hD>%0_j2_62~*e z%;Q)CTJ!S7kNt&iQ=-v!V(`bLKKzmWa@J>%hYgjNm%w7@kwl5PnDz!F?=Ii z`16lL!L2DKRZ7u}rhO1tR(`gmkH#T8uw++?&mN~ULJ=M1uykRG7aYB7uG2(ZPAnN% zazR{@Cg~8Q5km8(fa-tU#iwKP{8EBZL#jiangkAE;Yk;kUB2wn10jXDjA6^8N`)u_ zdxDW)v#^G=j7GbL$)ba%oEkP}9lpPOubVx?uQmsV-9f*Gk+$_CF40voiOX=9Ne7nk zATIALb#@)64WuTPwn9=efnGlBP=cjVz|k?VtlHJi=tzO3g`<{jY)Yuv6)Dux!#1rG zY0II6di`}WH_uaojCOs?>@;fK&gfgW(=>fpVrFR|o!+XSb&d|+TwcAZmajd(dvY)u z4^K`mUw{69Z3wVTBs1%UrRB$4Yfm5T@OJ<7)Bk5#T0x;X9au^Qtv{Li+{`dFTtcc8 z(FSz*No-S3&qx*W;H~1|&p#7`TO*RvC|R9aqHG^n61Q>5z|zrEYL{P|dHyt;4VMH) zgrx&ZUC|VEYRRe<(qbl-hRmp>fy5wThDco%@I0z}EUHNSGAzTeJTnO#j>MB5EPH|F z5Lx*D&(fY)Haj&;u&@HD*9XT3M<1^~=w{z6BO`Xy8xGJz)@af=)}O~`2vKY}u*_iZ ze0E}4fTd*YAudJ9)&ff!mV~sAsWv_)BaA;4OBqsGFWG&a!4_P*iUs||63JKxmUX*A zgj;%OVrjdS(5SyjX6HDPS5X6YoL;Lw=#T%xK_ph0OOo+f-E`feejN^PAmf^WgOG_{;T2-RfJFdV6%-KlmR@ zZfc1RoBW+6VeF-`QVJ~B@*!$!X-b&GQrK${Nn~`iRm@m@q(I9x2eE&wN^z74NZK`I zr7^KILJn<6X~!e^X5(EVJI6{a4g;_F-mudgjZSY4h8?@YrKrR_`h~o4w{_J!IeLG6 zeO)WRsZ85)%Z!w@4g>3(n<7)k70J#-^bx^7iR~GgS*b=IzE^#G^|z>wTRoQ6X-P2y zOBI&ZPnK+8X{6Lncx(RGU-J3rT$qgomL)Qz$*L>`y@Rk+DwG9FMr5a!l7l7}erkz6 zj5|w|xTtfB=x8WH`mh{wRhK?MMddawaojLrtG20`jtxt_-LE-zxzg^p+lS{zC*R(D z(yf7AZFCP$2BTr4J7_d;t_*sg83~^|v4FVDiczje?_i8AVqtn~Nmwc@1z1ufv2UWe zfueCKAC0HD-8aR$AR_DO`fUaisok` z#*xfDiQPA{b5fl=`k+?u)%}=`TRk3F%4R#TM3Ud?CJ>k6Bre(USo8wR$o9f-zZMFy zd67$4u4mm^l0R9ZtM1NHb_p4?S5pqF7`mpGt4XvGXg+xXOTEDnWmq0?HCW<6iiu@Z z4J?rxw9u&PxD`k53~H`h#jLg49bX=w{rT=QES*}jH$EF49sJW$m|9|E-^`sQiMYf{ ziLexQ6{ihMEe$LzkwQmbV>*u>2W=jfX#KA{jluD$CdaYOia?@PQJPL*X$l@?$r-my zaINOYSbCOLDBHH0D2xx=C#SD&PR0YIjWbkw1rzM**|7U&cz*op?VC6C%DY-)^y>8N z;`r6on-70}wrgW80?Yi)%-T8*sd@Q)i>#earZ%w$TX&W*YJQUt0?SoKN_(e&Pb_mx z9ap>n%dx^di9IrNu%yNxwOU}A&~d9L(#FKngr$s*lx~6{<*6kHOW#N-o#^h;@4uCb z_>@*YWg&G5OI60sdu087SYw4 zEKyGJ%!sYK^yptL-N3RttRan8?~nTZlUJt~f4~2t+e5dG&AjIaW9-!$H0sm1#P0J@ zWD=K=7(aJsNg4N2KP_?OTf4 znpj%AN7+ios}Nkf^*NfJq0mU^I_*~TY}7r!d~fuHnK5WWvO0H` zNmxcEaS6*vIk1f1!;y?LrQ}jn$e506+*&f4@3m7JENP1mERp*PEEShf@RYPAQEfPt zspUE>BU**Lf~C=7i3%)_*aj?_ySOBRxYQgQ6%x;@xO#7dmgGircr+ZIy*|6V`S=x< zUIT|;T#k-M6H9h7#=bTM~usqeNC$VQ{VL@tA zC!h6JV42c!tEDm~I@_j}QV^H_wd7%02`rNjR`>U3XHv^JQv;SdEEVk5W^XN}|FKkE zLiHKdAw;$5Rw|RY+?ZHa$yXN9GukXsh2@xSy7VFaFP3<NZYcnaLLK z&2Mh~_HcLq<%Zh1o=k0Exjny=O=LxbNYG0=WH_B?vm1;QuTQEZH#aFXEYgk4>}|>%!FxOVO0X>EJ#{~)?8S&&>zHT7-M0nNAwzTZA*Q#!$>t)o-i$! zKBAIg>{`c(51JGrBv*GG!!DP7obWdo*Xj*)u$>(pUA@10ee?BC!x@#^J=Ar_XGiV9 z&z6zs{H^6OwKJcK1#t;WG z_H^|1_|4__&mTTCYo9y4vk%v=-&}rp_wn1!H?Mg%wY)#Swe|a>z5UU8GqR+n>-M}(y;8x9MEp!hf`7uH@U9Xv4 zynWFF6j%z!<0vfUcINR0PGy|SuHkGr!*;Y8BssBLTL>)E8c&oNQ=nxwOlu0K5_(`+ zg(VqLS}3b98anAV)2tr-VcCUcT3}9@mh*pFmOX87Tx~SFz2l4V`1-@EH#gtD!?M!p zA6>paK8Iz$Ugb(DF(jgSDi#YY^RZ-jmDy3klg= z0!N+5tShe>BQ>N0QoOayR+@q3cUUU6)aku*^N(!fC1Vx%HGd14|W_l0+b3@b8wohXAK^kBTU5 zlshMuTNBGV@!FOKW{*Kfy1<+$(v8F-`)KAm*E_u zyMO%Z&B?{MGwjzZcb4(^)G{Tm-&wLhEJ=1LMX5ZIXQQKf^4=)`gxmNC6Syn&_FXQT!!FPIK2i91VdxtCnSbJ4C* z#VD&CoK@T1;lcU!+1a}3#pMQ4w^!x& zC&7=Vlue5f47c~q-PyVc1!Zcr>0s9Zr5iYokIJntWD?j^QB;cAxn61o=Og1U_T$%& zGq7LaUrbMeoPOo$-g?fp{Mp6XrBpVx7E*Xy{rujf!U{69otv{lm~#EW^}Fw08V4r^ zedujvZedXrRJ$j>eExj5M4_!^|K{(vH-BIK`Q`k}=kJH7hwnc2&~H++B$W?7@(9P4 zQ>dcI3Z4(9i|R-zFifSvUFFP;nXJg6R9>%nR@p+Qp+X{~5eiP2#i>yEj;ZD3y!Ex; z_n+rJ%SKs@>Y>@q-+wI{f1kRz)q7$_s~s|K`-I2Y6V=v8_KcP}v7DZ_4$HrLqYD1s zU&gOb|E_iq1_inCw{_9~Phcr(cIUj`9k}h+7yjGv_wRrGEu&eR3F%Jvv$M5{L)mez zn^MOLg`+f`H(4twD!n4;^%WpJ3~V`tR=- z-#(pw`uJ^hGJ5mATfzQlwEP5?n&J_ZLZJDRj9`}$wkH=8Ge0bIO60#kPVl=QKk4uL z4_1r+wA@}yVaL-Z&J0^#pUvbWcn>$`qr$(OrvBTDhl`AXgJmK-N^-TTYx<_DtL5~(_4|?P_wIpz za5BPd`{eu7vi{vV@BIZ!5|-_=UZ?N2uFt(UM_<1F@#mf8M`vUGhA3M^HPgJpJg z9_gw`GA|c0v%SqKH6SMyH{k1qE3 z27WCDJ3mDe+d^g|e6#w$r>Wxz?!8%ZVk!KvL=9?U$xbaN-!ZkEoVULG%Wuzf?`7Q! zEQ{+e9%t;Y$1ZM-&QF#NrrP`|E~n?M-xI6fIzw+T9)1|TI{u^D9U?Ake^_U|KLw75 zrPV&gxkpa(>ePFE`2NF}udpxc%)B4x7vU_x1VZ!RB%jmZdo~1*hVR*m3M?AFnkAeFL!kV_Xy&%julI`fLZ5 zsK`w$=L5@*`0KMLTT{#L-(LOs?d;RLW*q_*u^=v|mSi5s z3ShTyCc{KCO89Q@nEYHn9t^+yvb&h$)c^jhFMq=!QTPaC92vH@uv|!G!WL(@W<>7) zKTZARvjG{j&*|)Op;;>FWzxMQg()~2X zS}ts~MSP~k!89%d%Y$HyH6~;1^t|;wvHGPwaC%3B_Xn5buhmXqS^a9Ab-%%qfMx5X z)9yOW%M!u|u6{+Wc&iE$a=g5Fry zlS-!3Yj`^9j@^$N`uN=4O2117oVoet1j@={Bed~- z6tPp;T3)4iP;fb$)s(Y1LW2eZ3Sl!b+F^`ThLIx1-ND%}F1<$VM-w2b*|s^WeMNLaud{Pfg!zEb*5#mb_7-34cmw>1P8f%V{|1R{>I6 z^nBV~+tog>_ZygHeNUec1jrBvI>0g<3&k8RM}iW`Lgwy_r%^Xhtk%EoBXdH=*Xr~> zt2(lAPN1<&s4QEy-8ZimRhEVHkFTfSz8>CP9b8@B_D6&B^LDvXE9op{p3DBqk`1`g z?d)^;yp+SsL#qAwAkcoVHT}2y^ybY{0$PEm-xWUmcQawT-DaJgnMuWx0k_ATGb*jH z+4w&;^^b2im!{qFBTIrqJE2q%QG5=T=-cZMBMwe`agR zUb-1!@6#$bZOA79%jU!cCrtSzOWn5)mUoS=+!%JQdMBfMon`4hd)WSBq8ZjM%8dye zR=L{oLH=woKDxSoWSMPU5SYMAK%Jg zY2m@L#v^1%V`<%ev%L_}SbqO<^7S)vgGQI<*El&lJ4I!ARb@#@=$K$-wQ`mrSc63! zmm=qP2ZLT5EP5%sTY&6d{neg+@S>*ve0a6J5W}{XeuZiH!<*OBA*;=5Nu{QzqR=wB zOnI`MVMeCvtro%exrPRv=XA`YxK z=B<^>eWO{b!c7fjY-Z+8nF<)>kc+>v~73^;?&nqy5`TtA}w}yva8x94p2a6fm7>X!2hY{ZEa3bmSNxkUWZ0!u#f8*!qgvNT9E>zj&uRhAys=LXBE z_+EM$Ah*?(?7O$i$RxqXvb};A75CHUv-=iqq?i>fgONbk=CDQ4%~6zZk6Fe_fMxBj zk4n2trhagAEvq>M96Ap*mKKc5rgi7_)_la6!MOZ-fBgA=e0{!ues+ly?bBnGWf46+ zV43CE%&#nYpF0rrcwHV3Wp@e8r^ko7{%bAi|FN^RITvvopIPF2x0MVamc<1BTOu5V zv6NAWVjBY5|FNmR!>|manN^)*RhDQC6&0QoQI-10^6?Jc>#X_KV;k?^`%lrEX0eEr zdwMlxs+|q~^7a^QBFF@AcYz+-Iz4EMWoom8IE2rJwG2;aiWcz1#60^MZ_30p*%nPEhsZ zK@OK$v^Waop3bsLl{JYTLW+1G z6y$ihBFs)jEmkhquCd;5+iM(44Ni_uyMx~G1cI0{&YlIejh-V!gMrXk znm8$kfFFUxaa?>6-h+siXy7h4C*ki$+HSan?HIirZme}+b2O8V)J7ryn#%G(|P zAunXiX3^+KE<{Oi$>B0vwIQFR`^>W1#~j-bwK-PztuL9YC*>wvXxB~}2fedOvkR8_ zbNQfoi357x4jnvf4WrTS=sLrAdX@bJooLWdT(a?pCtk!F=8GCw#EjzU$I zPP7t(Wg_}6J&!fv3JkmH)y>&;?X_fi?!!u2f1%s^u=9FjWi}p!$E4;Dc>QRp3b1JK z&Rvg5lhpv0$ft@rO`=fgkItm1*I~oET1I0D-!xdh-(H`IVB{(3yX*1w6>@|6M~BC# z<~usjSqdu49Ml=VvJ~B@n{&CHE(j;>0{P*?`;X5n+4qk*dt1v$oxo1v6U#SSt4m=Q zWj2#g`GtG|#88k$q1<&Fgx_uII~xm0zfEijPb`b&Je;GHh+Zq5<U1HqxyquQu@qO;7M$fL$N zwkCLoh%Rjee4}EpBTw3}dyK#mb<13)KFS6H2P#XNz8NcZOX^gv_~$4f!M;Bb=BT%gRfZns0s4R2>)V zq}(V^s{5TIG!tT6W{<$~6kCRZ0~6b@TB~MCgLY=z67%TF&{(pW`Y`MB?dvSn%5tzo z(JaloBRWeP;k1Xku6X2CdUgfx*Ke=@np>S-ez%I%;_US6g)|n9_(2lk=E^*R5)JSR zc_Gn97rKX+#cKX)pF*DwY%b;FX3S~kxl(6vEW~_HSW9%4VV&i>t<`CrC04K(=Yykz z?sznAce|6}3zn$s<$h(E!R+dFxSUX?+bkmSe&_AZ&f{j|r&mesxBIv{HxqMP*qnBS zT)@rMg&B-fhGAi4^dXDI%n)U%+IQgesDM@K3!D0z<>|1UEDWAm77!YQzT{_?pPuf} zS!%xZz}%}H-#)}8&?Xwp(J7bI>vhnlZ_1Uyve^EYWlx=B1#OPied`OR>Znkoq*`fQ z9<;}mMyC_z=tCHs$33fGfro+h0zQbgPvFd;v@tmo>|~&6TMz z^h^2l)%o!36j?K!(f+7~qOg7gM>4Re;oKE|PAq&L$0cMyIf<1WZl~AbbmC!VGmGrI z_ix_4OMm>NuF^hi##MSBcb1T?>N4vrKYo1wc71sc;e0H^@NoGdt;&r0nX+8#+wcVc z)uz7pY9Zk_bCnUV&aqBBgEW??z?De^*4r%9^BpgI>%N)o9p8ZG1eK*Jf~t{zyPd^l z9=q+&EX!1>{3}b&#?CXIXx=%TO*uFfMw=D9@Y;Tj5CM&kSbTp5&|!z{RYj| zTRKZZs&%t2S4U@QAT^f8jDUXpkj~NqTZP7Q<5Oz!{rj0s?64;m<8xaJZ$71yXi-d4 zd+EIocsJZyolnIAZeGbXun=*&p(G;_X;B*2VlE3u6q=YzRFMSo$2d5{!@vyx=7`9Nf(5?T=QZbMOP-=6m&N6FvJCIfDwA(0~N#x$Xd;Rv! z-tI@_And(gkE$%+zg<8cC#<7+TT^&V?;wkeP9)`zuDA3 zZp}qKl+>8$EE$qeN^p*nW+C&)^7)PzzIE^P){d`-_F)r>IOuTHoF6t?@Ozo^MU`bs zAD6$e)P3u7OtqJ?c)+Ri#0 zO^qdmV_=L+wS$TloWYRWjB$yLd268SiiXxcOwYf4JH5W1PDkgXGwXBPyC@Y~o=%e= z(jRu-zuMebo}GfpTm(y(+u?+L$1Wifq;S!Lk_Wk$L=S_sxp7^Z(}6Y!U}nG_Qc=hqv!uZ7$&{?ZkF5B?bIQPqd-c zhOg!tLo=cff3>N9*hqz(sLwgpSh}8A8ZA0YyM=nb?j-@CC zUxxVV_4f9bI?ulT@NR1nJO7{dwl=1bEn+bWg^zoPkbS+0DFiS6lw>r@J}-8l5ctZX zRk^v(WE7Pp@vlvNXD#Wo3Z>!Mf3P$gpYM3#TX)4acD-$Z7V1gpq(1ac85=+b=aVA+(5cty(gkWbR7pp6wRP2Ehty05Zyicq_w zk59-q%R;Z>v*k);mWL)ET9=w^u~y(8$C`{m(;`Jube;!GpUx7!kvhx8*NK^}t=Q7? zcG@=`N-RvRY@y|0CZ1;B?!Lvta%Fiw84bE^sDW-mh-4!O)*|QN=s0hi(bi%4Mzb|&)QUv~J~fRc zi4jkrFB-!W0J2buS=`XQ>MXGg-hQ>cwfXkdn>X7#_+RvY+S}b(Uriz-&y2Re-4963 z+g@M7OD#-}8KW@^shZi0U`bA@6`K3BT=>nV{(dFyHp#W|1qbb$(`|yZtC(eF%F0Vd z6MWKU$}`J~Y%;^isqmrdc=0)pA|_30Y6Ttvhd<>MODPs_SVMw>n-HuzTIA#@$T-teZ8_2Lp~K_ z5R313-oIW)#ziU~_CQdHs0IX0 zEFo<)X)I^gW68DE(CqwN+8*~srlWI9n{IC`oEEp=Zf~qFFU+T+L9ZQc)cKYj$&?(l zA-TNLDxEd3g>59jvQ>z?Z6uXJqpd+@3BnpnpUSdqe!Vsu(OIGxbF`0kqiU;;9gb!X zo3U8N>MV;!ya^MOHZFCR1(O@Y1D!<3r7}qJ=GNx=>h{Lg=GrSH{^Q%q$?Lx?EDEH3qbe3kLAy>>2 zupjWEIxfNT`HmO9bz5L{*Haa+Jw@_7?{(zb$C;Xp%L3g0yi(W4rOL9S&as>}$LhZI zX{uHd^DawPY)bWV4b?GV$<;I6atADBuq?Fl#XO&_DqOob6J`+;_s9~`MG8B>7?;R# zz>5UQn2KPD@_#3daY>RU#@ls-{Hf(=d}TS1noXw7QBN>|RNGaDI~+_)o3A(Uu$-Gk zOcoMzib}o>Kc0yf1S+2|w92P-8&)NRn9VoxagU9pC8gXpOox3QsH}y&xSaISI?Gjv zAt@enEQ+LugL)gPb^N2$n%y#3=490cEM>qF>kpkJI{mYv5uKHc!-Uil2(w_L+1T7z zUEWkv95+|z63(ry_2pTJWSw>r-$d;`a?>1mSfYL?lWkTy2ZU1j z&8Gfl&Tr!Dqw6oMI>&mSSvq);!r8FPY<#}sg>T*JTiNv>xRwMRZ&0H~ux-h7N3X5@) zH_9AIqAwaEa|2TKRF=qb&{&#F9G$U2o2Iff7#Wpi&^NUZi7hSqlBsZ-4!iu(Kw@gq z=Jfm1^7{4~9+oqyM8NB`P-U=$V4o30%zjF-T{)@Rk+=k>O|F)Ud+bJtOG-^Lg={Q4 ztc)s4ugbDyeue07m1Q+#Xxs1-TgnXu7S(a!wZ8upQct^Hk zDqqJWvADjn3U@w^ZR~4n%X8BZ$=a=$M$21>wVqo*0#Lw%LS=sB9xGInDu+EYwW!j|%vL&)EkyVH*B<)dICT7Et`8iK~%9Az(oyaPU#%9bo z-%RI_9lE%HJg*qC*-S=wUpwlQE#knxpp-h5lZpc@NkPt4vI+1r;Z?J41WPYA3xu4w zlJsaSO|Mp_QA($>91m)}E~-LG)l#8~ML7y^3R#sUoa-fuHj@OlkBwN)s^gL>Q*OMB zSRB}gwD6hy>iXK!{OZ#3(%kYwGHhL1nxBrxJSbyeA@JS+=+vB+N=h4~63bR>R+=L? zna|~0wcdm;;+W(YoBFG1mm%9f{q~2((gz)2wjdiMvkRxG2#Ru>jn8+y@U5F%OS_(e zU@)TbN0glmn#m013@+i$M`&dAnWfTJ=U7&oV|CwplB{Jo+3yw*O;9eNhpvusX((in z9Eq$Muq2cQeg#!kPt^0<^Jb$l!x>2gl%ebg3oVNkEKy&Kl`L3RI9j$so2IhlP_GJ> zC@w%=_Uw!+lCY&Yzuo0?hk{Ak>Tsv?%j-+?bI9|GxE)pmuYx6>Tt>LASah6ps>dZP zYiY2|mNE(OGvigWYMepBmXjt>VGfoQ#%0m8y*w2NQXE*0deu$`l>}IN=PM}SLsMZP zD`il(2OAGfqs{&$%L-H$5Y#&G*YMJ(tgNjr%q}nB`MrP)M)T}kDi%T1n2CYQtFnsF z)np2pHg4<&Bbb4$!7VFrLRQEt?M8nhlpDX<)VGs%t}wd%<8MNpV^x-NLB>qx<^RjKa&DY+i>E_7EN$ z2=1=k?}@|%fz*^e6r<9T7Yv;~Zxr`B(}l$qOt48DH>inc81_mR(m67d&GID(c5BB) z7g!qcNfsoqq%HV|t59I+bAe@6T1{eDX)Lj#)miR$;ZiDB3eYaV6kTs-!BSRPqTB~8 ztt5-`B#cW|9hY>KbmO1IWXChqB4&!qD=TxUMO5)5XYo*Grl#Y;0OF}A3X;C+GKOm` z8S{A^7GyT!@@ zDPZ%!rLqh~{QjwgH4x#_SvOXVI1UR!h-goj=9gxtr{a-t0Cs1RYpE>p@`razv0SM3 zYDWciykd(+&WT_NEuA2jXbc&@8=Eb%v<5|#oyZkT+o;GcKi40d9C}eZJ#`Z{28~|KQGuDAa?KtYG8zPj0QqC1#8z(T1#<@-xeP3v+CZ(B@dM zG#dDrp-zxuBuG$-5eYjLEM&tRm5~~S0wwTy1U}`e`0f!x76~SD`V}O=lFE|i3PdKG zFK z6VXu6hutGW=qO5$F&fxx9wxhDtye$Hdl2*jmKm8xJs4xd=|};2(Fm2sCZ5L9sIlBy zjC+F=o@(iSt5`=4g6hskBuuT2FNMkywc^OIWEkkDU$U$bZq{PNUxlb7lPNDQEvFLr zb|oVTlzx!GFrElb_!JHBsnsxCr-PB8!)b=~s@M?tHX4j`8B`LK%iYfKC|mFRW>en? zQ~B2A&xZ%Y6Uz+l5N%#;$RX?xET8Xq;afK_b06HO+`u+3n<-j^$@!gKk#JdlVp-kC zB9Ouh+`lY!-#S?0Xe$~a=^UMxQNgLQqy?$2fl|6`#|wU>NuSeX$D2f+0ZT+u8n}$Ko^+}# z6=rKO<_Tyld(8q0{S^%D4Cd)-4SzsnB3NRgtzfUk$f}VR_ztV%(o|>NYJ#<$G*D*b zCd@A`O~>%^^MBfu+w(KHu@ew@y&AA6x?7K*3Tjn={9kpIv!u z6dB8cjX^N4q4dZy_mZXNTaOZTyzjk9FWR_NSt3(~672qGmd|&*@U64t%m)`I8qGN1&sI&@^P8{UoO)U2!7^L?mt|8O zmj-Q))qU#`qHdzOWP&!MDMBJEXuk+^CY)&HGmk9gvO2$VB8f_J^z-;>5&l@P%%j=1 z;I`N?E^RpB!)vq6(I)5|!{9rOahb)6-O;t-5DO;HFWA?ew8J`P(VW&Q7Yi*96^Ct%z~xsiKU>9OLLP)C8dGFc&E&H zxi&kGE&4<>9P+4%zycDVICTXgi`c|$Bogt6!-G&`1HK=%t|SgXxr_#he4~c?#FJus zp!{l6U-b(0166lNs&i}zOA3vpBfxSd8)NmG$>%#>_||zM^+DC#LYvEGYm9Pr_bq_e zCkt6ovqGL&<|rlmD@&Ra!fYK}rluIHXvv6FrCb3^GyMH|5jh71H(bCa9tI?qH&S^N zZzn@KOB0bdOO=vOXBl;CES(*K&NH;mGDq{Q#u6S+o8Lp2UE_3*VIf%}WCJ$q$#g50 z4Exm>b+r~NlN%|>onm>ZP{v1BZVj7bG2q5N5Lgl<-q|fKSfC}d$})h>b(N)EXSp#S zcIqr!l`Ni?8R+~tVrnIL2|B9#SY|f!mr#p#qWaMB+g&cBnC*p{GC@ zgC+JlpiwKAnsDT`4ul|Bn(=XxMzFM^;=mwS7N;=Dr8YE-9oyf-(02+VfKP zt%D`2MDWV2R))m1Pkp^%_eCJzx%`4OzaXkC1;@Kp+bqJBbB9?fqJV}ZCARZ_J~C^quD~DK!TY<;+@BArdTW1nqh>@5JF}PEFFei7A*b9 zK`_9bUn__RvEk5VX|(3$l43%(7msEfjitrnqd3&p)09EN>y2RTWZc;&mgQ_aIXxT1 z^2X&bSzyIeWIo%-;svRy)EnhC9tOzsqO-6SckA6zR-Pb5x`SB4a<9EVK0L1v#=qIr z7p%pDYn7#OF&TA7un| zmEBM^;O$t>|GzAC-+F*+_-xd|63#VTSgYtPZSXG1Bv>M650gA087Pv(chZ0g*O_OQ z9MT<}m8H`&1WV-XS$VK5F_K{ITAfG{LJ5XB%bNa7pCQ?-oGWz79i=U$hdAj( zUj`Bkvw0Lwo+yQVu!ef8UhhkoYc?(!_DoX|9(qe%-MrWB(S=zd?J7?q#Hf(mA;LAx&&G?;O zgv#ImFOw;vzYecSSi%;YI0#V_0a=PvkY$4uoN+FDq^7&q+x^O*GnyP-G>4PC_=`<_ z-ds_4eI8jxpICY#I?IsB@O;M$-+C?||LC+xj6-GFBiaxD{4*;GxU7*cSjtpB^I}}; zzI8v}2-@kz6{m+n_rD7!0gOw#LoCYJKFok6E#?i_LNcn=O(dEJ=E2fJ*es;%6MOBH z#?m?C*I0V@amRO9qR`VvtgwL*DN?-%=WdgS)u=n!u+24ozT zt7l+|L_(;y8qIFCKkn?45wF#Ze*(^Co(iBz1^!8+U1b@?v8Kw>tg@8pwHdEPXNkwW zBnc$L8coieRLt2FutZ~(%Ccd#2H*(L#-+}(mv!e!!C(_4%2dsEYJ*$u7@M?%Mt4{pb`K7ZFI)SEzuDC1nA(ZvYSP9f zinVDzFPT_xlrX5{5-gwZc;Q>m7h)eBXxDQR8KN*?RgcJmAmFlQw2_$L^>L}PtgCaZ zQJZ6R-@1=)gdNQCn#)VWV&$n6RhAAHG`|d3BAbmCa-?XajkMh?7}3)M=hK)|_~Fc}My@gaSiflj?tAGi0*`?>T1 z94`#kGinhq8uK969bw!S>uvZ&s)KQNXpDNT78^yd4(n9V>+qujfU>X5B%(3o;BuK) z2{XcPRhB7_*^fC^ZgI=3VVVv0m%q$i@trI~0JmNq2Olj88KSt)4Zw1l z=W$u1RF>IimQa1XWU2brg$Dj#kiXzJ`AMU{f|%tn=k$n$3=H@(STX`O4KV58T#KVn z&b?~lNh@Kql9`aW-(S#Jy5@r#OWy&G*^slRvBZ0>$`Xszq6xbTrL5s0{W)8#bgHdm z)pntzCwA=a8jW~ODObw1<`q~XDW=ruv^xFTaMByl$h5cMtdelqrh-0az>aMo$Lee{ z8n;mzOOwhnL$6M|O)5(db`)_8owFuNP5Sj-uhz4ns2MSD4W-sN?vIa^{CQTXA9RKXNLCr2 zoL+UuC%@U$XUNW#8VdCA$kL3;Ov%jp;u=dkSU%tJ!naGqGo(jZ{zgmGCnAij;5y*?A(|>y6g6QaHdITyDaTFsSVx_6AHGEKv+gcZ1>AZgLmf@n4H0~D4`eC7KT&DL^8A?tBy;@ zP;nOtiM2^G#WZt+a4dSu73x9OD zC6k+#4W+R-#(#f<<#AcZS{BQRXO?139ha0g$LhXykJy-YTQ**!RW3x+VVo9WT)Kl| zUP1(U7A#G?ObLvMK?nrkp81kX^vWho1>HFc{zP-#wr^t6ZCjC>#fc$SR!4r+Jd)aScgTn zZ%+8FRbL1p@4^P9p}tgCK|1dAdH%l zS7iyYl*$stM3G-v?ibu881QVFEXA~P!%#F~r_4Cd&t`MYT6^3(xF7Vp?SuCIu+hh! zya5r3y-K@#IXXHkDpyLWb<`gpHV=n~=jYdm+WXC>KFtkv6%(z_u_{Y=i!DSTiE=5Y z#`5`&7rymMGxX8!%^)x?YbYN|M_{>4@VIQ?Yym9U%Hz0v$aVc z!weJES$e{Vk#T}0GN4Qx_A0>A=CvBo0P^Xz%92%CCWNE$hR$*YEb+7r9DyZ~v6v;F z-QL6to~diLn&dW)JTuL*_>lgmRBKN<2cOT*+gH`}DPu-Aks!<2R=e5h-7Cd0(j{xq zG!6IBHaqBBl3?j%NJGE{mTtJ3Ts9Y2#;3rNkl#SVtg}qw^jl+z9S#)1BKpkc3WKHS z14~r06r_^IGD`6_gvrr{oH{O@qoTWl+%Bt}qnLJX6b#3$>RFSZAi%c?0r&CugVCUO z*ge3|#Q!0(W(vc4Z*Vg{xhNHGisjD9@bI{OJUY6#xY<9xP+7jPsZR-yt|pBoX1`xq zMiJBfbjJ(ddbJ(gv->k&rfkDxBM1pw<|<2x%4sYs`naUPGB3Hr z=A6&A{XP_NMos1fSXRTFH!9==_ajSWAi+##vZE>#9sTKdW)2%AI6n}lg_Fs)#?rGE zQCWI}$40uu%4Ty0EL-M6mQh*edZa95+ttiN`k~V39`_EvUtM-@>*;ffL8t{(U-?eA z)$M;#Sz_%4#n5O}hY`4EodQdj$q07~Sb8Gv075?2=cg0XcI?K>Zxa+8VmXmoN!pDn zO98%h)Ci~%OAb#|V)H^EmzQz=Sdb7p)w0`TNX*q(=5c5*xJD&+6-6FaIZrX2+(94| zx8O~hM;t0LF8k+`^S=%!qrq`+jEXRz6cDR-fPln1$ns0Y+Y*vw_K!|Grw2!u7qbI5=~ zv5SdAO)pj+l-gvsYgRYCY<5bV5zda@AiNdR?|RhEsVq;7beYYaoDPG1dfl}z>qZ@uxiW4M5HKG1GIA~0chh00;vu$9B z_3U&w;6V`|T8B0kQi+s<#wHtBavIC!gpKsk6j){mhM^J5!??V0?3?f*on=vF*>>3D zzp^|iyK690TC)npbaP{WFosD7`Qnu-V*ik`as6;|Jl;PW9FAKeHM^L8$pJOIq`-gXMC-@n$a?_av;=l+MyWCCEI| zGtm!;hqY*8Ef$L_WT#=kN$-KB11xD_j=wm0ud=jxH)ASGU+5GpIh=aQVA(a7^0dmb zh-U{fRH{4mXZMp8%*(@*+uVSa&mKZcX)pDn@v5QJ5@*JgU)ga6$)^} zTgh;W#1nvV#7)HW9WQ+A&7p747RgxrU|BuSt5VWE>~Q$Grp3k~I-9LLvgBW~grmEV zab%inLFc=4Ea^+yY_q6^!?+Bjz%qz)y1EY!Yr)K-Z^DDuP_2i>nwZbvO;%FX1aWYfWPvvTL4Ss3*JtyAO83{`m>w9;RpmFDA)rYA)w^o zr&2sb!BM+E-anc&k52bHu9=_}J9p}CYzobeD3lI(y_<_O$yuk)lGIr)VQ$n};-C+u ze4c>W8=Mx%92FBbuCGoG zuMbX-IwRElFxFX(Z#Kd8UKY%J*H^8u`gH} zvVx5a&pfkyzT<^&y*2Xg!53-?@CsSGRMd^5G|l3&X$4C`_?Klx9hZzY$1-49%-A!{ zjgV_6otW}ZJM0UUe7+Lqg0n(~3qP_n@You#TD?)HSrZK4k>X@+4w_%$Z!Y#M9*j%h ztAqmu(Eji_MOS!*VX_#PeM?0_NC^V>PI2N_9ra6K+36pCKDvAO=ll4de)?9xIeEEQ ztJWry{e#J$V41Jhx`WB+_^^3=I%>OTgI2o-n|#y3R0PGD{#eNG-9k&poD<7R`F(=q zF)n%IQp^lTH_`#pJcUws#v8QwLo>WFOT>|EO3_&PR1r$#bWA<5EU4qsb69gXu}5mn z7b$v}KXUuRc(Nmvs?+P8P7eS241etH`SI=K?6@HAr+;7Gey*0k*INg7 z$5+>b>!Z{AoBNZi``>Kp(W15+`|w~==U8k*U=JHCBeNt7G>kK0BA)Mf;al&FJ$tr9 z#u`*vUKP}hqcp?fvV|6eXO;q$<$h%e-?~k1Zin5w>0~OHayphO`5ah=<^_q1qDZyj z!vxP+vBPTf#}E{OIX11cbTa%3e|MGES-wtcEF%{bUF8cp%Ymg@&{)Sc?_9`=U09l)38f+- ze=-oq=u}zG<9tzNY0z0N;yI_Y-}L=ip}v<){vC{W!ZH(r*V9!&9OSmqq@7L zzDX-6o!!qLySyPh*^w;W8xAjyjvv1N^YHca<>}|6i_`8wu23o;_WHNu^NWY;`!BW1 zk7j4``Q+wycyoOA`S$ba_2=Jg>XGs-K;TDbiS0--E7*y7z2T z8Ec3ykoB9QDkV*uSX|i$=r1{pNb9x=|d`wTzglApO6`f^xQ4rbqBTJIC z85}lyAc3HWN0u(u=47}v{_~B_(*Jf!Wf_QGf~8QTnH6pPoKo)8@ywoAa+HS7*JkQmRx>hQrT? zmsbzBU%u6=f3&(sU(fFD_wP>5zubK}zxnc;O+8$FH2rEUQ%@{o^E%6Suo z;@Y!L%hr%kBpY{SbtSB^MD~bH086e~>QgwR)5c})agH@jRNuNK+j<-I?xj<+kvX?( z?UCg&SSC<#+{CziWEn&dx$B7~r?TAOzurBvd^hDl2SgxxP0=+GA57k7w~Z|I64_;F zvU4vr>fMvW23U^97k_ITTc;1>^f%1+t#+f^>71VWj@`2F1WC%af)X31YGZwZPO^IkUS0d=Xiy?SsR^`wK0i;IBXKuYR1}T=XZUYQ1rO zaPS=?@!|g4k4EjUPXFY`#pf@0TfX>q|Ml|jo67QqO+8qDH2wYuONM>Ew9#|h)_P%DC&HmYO3oOTztA`tPW9$6kF#Wxdui?$I-|Jmo9-p3REYbfuK0UfR zZJ%F^n?VG1VMpC$T8_;`!@=oDDiI63TA5ERxzUW2-33dRF~@?XQS>kj&!tJL%j331 z63%FHm4yLyHj|SWlc=+FyJi`|Wg!rWT0%)5?>lL^drvGU%DK%M5K0BS6itqgzh3DP z1%H3J`Q!ZdQkBCuTbGl`9~g;<-}u?6{oNg${&D%`>-fw0#rONKSNGq4v#AG~+RpmJ zgLx4uvKbghj56<_;tNJbeQBCv*ylT5_|}IPj!)J(*%lE>#^#r*`dQ(zhRe3ohH^;u z|7EHB*3H@0heQDN0t-l-@^0%aqZ>SLNP%SwEOEAMblIJel*j4)h2?AR=a)y8A5tpI zQ2Z7wrK*uuFfPZ|M%mD1D8t|fyw}5v(+*f3B1uO()4O~)PX9z*Pp{t@4hGlPr+5r0 zrIS({hk<9uH)rjO%Sj`&2$li6*}NJD%TOvhJCz8&hR9FfQG$xhIxom8Ji*?e5E^tOeG1>QK4B_XZ_QSV$kAo&C6d zT)2F{`}^|#YH(Omu}m!LET=ytdetm^VTvh;A!5fE>=KfmcL zgCA!!mWex>u1htY<;2>oXe{^t%yzrb?)1R&_~hL9h~@>(sgLo}H+E>bLAq}}fdGvDsDUlChr(&^p;Bm+%w+wc4Bt8|W&@KbPg*cGif3dQk3z{{M=iRwP^#O69`c?mb#|KFSBQLkt`Cg>ZxE}gouxegH%uH4;Xq<$ zIvNNi{V_L6;C#M-%Vdi>X_r?@qU1zZk!~!^B)3*`iD}GUMIbXUr5@85VXc31Q`y0{W*hJH7mQbaX@iwh{4K z%Ie?R+FDrNT%Qfjx((APjNVMm1OrB!vGkYKM54YE#hh71CNc`P1SlH{P$4gRy@W*B zCkgfz=39r!%0Z4d8b=HxGr>3MJ>U4BFF9Ne+J1BADiT{SSQWH3WtHqa1htR#{re+TSJk*11x)Zx%D-CW0z?xdROolgZFIzi4oH zf*~7r!EHiUK;?GTkTMJuHkX+1b7Bzz)#cRAa#r{=l1~5gA1o=bOsFiiPfXon-B`)T zr@R}n*v#_Es|`O`hX1**prNdR{n>veCbS>a+b83{t8REBaCFwcC<&QMN)*Rf zS*2NPrT_Wo`#*PIzJ9qy`P%Rp8>)S}IqVhWEL%}o@+!;XBTJ=`L5U_<<}4PaS}0)E z@bc%;(Y?91w~nrMmF3>X=KSKu>Wn|-BBti>r_-qb>VA!-KP`+QVK<;_SI%V&QcmV= zv|Y0Yzk9U+#ZC;xz36}uO8<3-&QkNOukEFs<1!N2dyMk`gvxyfH+GbbVT^!VV$quNaW{nyvOZa;s%zxn+2$KYsu_Onkl2VI>djhg8vmZ-?fD0LZo&5tZ` zsGzL|{-ucliJwpFA3m%?a-*{Ru(m!szqUN>opP|rS^Q~o%I`B+$gO-x30rK z?sB;7Hv{I@(VdZOjETl6QP9TazDpaIx^F$+`s-(VP_DMxf8-9^KWku#vf7`e0hMEL2pM7$arlEY(4FePVvd2`bAXSZ1Ujp>+Dsa3DTCg`)n1 zHv*QV*MsTC7Iu(Mw-f`*PumcxrB_q&=*mJdnsBZ~BGU^C8!Mh6O$GkEDS~CK)$jgs zV1b~Z+B_Wnta#8kk}X!dXC*ev&`Py(P>N9~<;&N>^3OlN{Bd)4e|L5F`5U&xPrvnz z%|4oTvTT`!XhdgeqBxTWENjTRV8AkKG3U#L!n2wfzY%^^Z6Cy2t2^(PAx2SI?yRiN z%&sgZ-3c3)m`Tm8BobZ^BIim!(fkp!vPE?5$|w<+CDv|opa2yj;f)!;AjJb}yBNn8 z|LYE&rRG~-+TC-JgXP8nnu?9yt({l)qaU|9T=p9QQ|s`CB${KQe!~93QunRLn}2?9 z^^4_J>j#{%-)hB18N!5bMflbqS?;3>4J?}o^P(T;SdC>#saS*#L@cEuJ;$_)LN+W>guCc!f931gliJsvNP?n8Ei!zH1IFa2>7CerlER3yAKR|>}+ ztKo2RZfcvYORmh}tQr$6WHR{V88?|xsyR+z7_c;JEM53b zUi|2e?%m~gZx{VeMrHYKX?Z%eG#__HtwJ0d{L8VJ$IZfx^aC{w5!AvUHYFn((U(e~ z{sI4VdplceQ(j2~OFU6ozVKgn=qxqg`ohjfH`!aP@8f-$^lZM{v>tuC$>FkJ515*h zYXhsYJl0qi^Fy~bF2Pdr8e+|#U(nT3YBs;Y8T+NKu`GQl9<{%LWzQmt!v+FAIH{qs zl<>R^hz4wSh3qAztg;l4z01s-8bwh~&W||03|nO$ECu;1785^1ff#z=e4)5Iq_K1( zsLdL*6Lyyr#y{RPe`Qz?8GPbVHuW#;f?09_JGayqX?{#gL~ucs`>cKRSuWETF}%OU$Ih(Bxzu22+Y z?L*Sw{(h08tyCE>z7FgL{2$dugL{poDik>`8YQqSgJqmCqm;W^uBX3$yZL%?b#-}m zd3Dn}7#&~rh(@=ivqTNUGfT<|mgPLhQD7;XP543<9@WH8G<8S!n}t_fvtB!;vV4V? z@WkA7*cxP{D1ubx!y%`GM?mN|Bbx~^C>0Y$5r!j?N9n!`E4!UHYfCYwEF^;J%OxUU z|LcwyzV+F+yB=eEuHL68j&QBNUZRmYmBVGP3YG^K5cW)n+7YL-?0d9vsr%NWjqkVh zPEM)U@1;@W26coLo1t)1IBebPECsl$${9{X`?~nV((Qd>*%r{^kh3gUtEEh4YW{%d zDkR#^!II70<8|~~C=dlpZ!qS!VstehLh|fQhtOdg6#XulB zom`l+4Go0z>sb~oQE1Tq+;fm97_ScdH$@*~;4$B}j*66sUgC??EOMm-% zjcu6A^Ar4`JK8@w@3QqyQ)OAi#Fq@hmte`%N9VlQIwWd`@UN=l z@{y(PTaVViUDrBtu3o#9_Ul*8QnO+s3Ri_m^X`#lUuTK9Pmz*P%ZE8uV_AXpL4dd| zTgX}$?d7rzmSb%Ff~5?WME=hEG5s|dh@v;u8;m-kIHCv_q>!}5ZxyV_na8UA&9b_X zoe#OaQ}Ko`#4Pyzkz{;s#xf*W`=`-dl84&}CB$rsT+tFlB-Aj~-=OwA}s=OH_hc$Fox za&ju*c5sqG!?w5Mul)x}4!vY9fRUY})g z*{y__+Wwh<<}so+(O4F8J$+p2zV&GB%SE*<$+hY=+=Uk{u(T7(MPb~y!Lz(;llWe} zTF$US1wplV6i~S!So$JiXC+%;z>>i0v2Dp&tYoFBg$Y=qqFe$?gL3QHO@9W}q z*H}7KmOhIJmOik2y|jge>|DUbU)!0ZQ>855IL6h&7PKe7BUqy8C8lB>%}oRgJ5?(VH6rXx72@lq~BE*SI0 zru`nPMKTKI&lv3L<^x*TP|zuGEbX#;$i3ZH*aY#L6)qVLIBduk$oc5`xaax^(Q zI%*FF<55SbHR~$Nf&h(`QDvD&d6ohB3i*5yN+b#_)tv@KQPsr%{_ISvfBt@LYIz~< zFcIb5ce^Vw46u0EO*#lA5cNc+ye^A5LyF~lUMhHCe32l@Axvm6Wn2!hd=I}wI&J*dF#?zR5(9B&f>CD3d8k#oRM2cD$8>Fh$-Yc zI!oQR9;x2LozIJv@;TqD9=E~LLFA5=gZhQa(w^bEFds=QUoyO8iP-n5tk7Ud$|%2F z_T+jN^QYih8 zggS1YVa9`7Luk{+o2vO{!kev>QfW3Wn{JvwyH2NltOO8}i-&Z5RIoxmAQiweX+_hJ zgcsiQ?e)pk(ecsY!DKRN_Xp!aN31n#I!oaNOTq${xe}^r!4gX-3{r)9$^z7YzD=tC z@pd_}I2W}eX!-q{_e&8hNTI_cY+S(~c7+oj*wj#pzKNmz`pmuJn)OTpKJ8 zo>=;{aaquO>*4Ah-1(ePDg7T^=fT~!v36^M0DJFE6pN@rb;+{awLqeS1?;_3z1wn) zWBvBKLCT5p-D9tutRM$2;lmjWX5RPNXPI_s+EQ84;xsp`oIkN_%~=+}l6)GMZVy;i z1a!+b7*dcK$GRK7Jg_`wpg*89S+LX+X(02 zUL9>MVe#`e?l4#bzP8;>C!9_%wihB~Kg;TG#u>20Yi0GK=7Q{s%QqTR87yg9$X5q> ziw3VE`C?mGL|urMMLPV^?e)p!bUKA?eKbPo?Wm0yotny$$*H@s$fn1*RMitkuoM*r zPBoP!g$j@yd8F<^{r<7Pp#IbTYGgSPgf&Gu*oTP_8#qCaHDhE7o`4nWISWR#hA-W* zqT+y|g3Zuc1g8^PBRuZZyBC{l@dcY!p<(NCs4Rs)-SNz~9^5$aQH5~1qSaEYVR_9f zUY<-vT( zm8YAqSaE2U(du{-4N+2nCEQ+>B`;GJ*&VR z0u@HRK9c+8z)|04EE*{-nPA?{t@vuJ}^y}@;u+ikv-!Nl| z*FH3@fu)2eI^GHeSx{I~gG6&qH)BaWkMnxJi<1Easx0H24ZmYn+27eu`Cy;+yUdK9 zRos5FFAQ}YCDB6ZmY2%5jEszU4a_(h#FV<69_sDh`pRP1tSM=rWpJvi1^!QWJoByl z*I)RkT&P^uV({owD^B@pIu>!+%!PDHdo1OeCz{fLDa}|myt8o$mhi0yN;h!lBL*cu z)ijIHR@EzZnjgr6GG1ZCmW`(yI6?r++%uLQZzSZb@{-C@$4j(()5lf{V0p?AHL%ox zrLlBo-8j7R`2wL35+(yCyjUXb8Wnw%5eZlZBWL4ZykC#6?H;{cw2&r`tA|XjnBDI3 zxq?AWpXJHR0Rfg`p;9?1dkly;maDaa$`WGR95nGrmVhy`(Bxw1qo?39D;`~4OwKSQ zVO#HYQ3^k(HidEp38FBavHWkASZQbVV9A$QiUvzoN1|0Qr#X82;e#4BqyF#BRuBOe z?>Co%i3P6_>zm!J-J}QhX>5~o6kkHApC<^bkyg%#r5hnvv1W5BDR_$@k2AYm9^G5` zycdGTOj(l%2b~V|smxgZuREUk*1c={ehiqhq9yb=OHbMI*W(f1owZFlq${>Ya$aTG ze_~mmvz+_Z1Il$Dk~yM~8xxH}uQOxG_2hnOGH0o&SMp#<%jCb~a?X-N(@>q!qxHzM z706bL*~H2jSQ_XI0hXrnsb%fOC0GV$ERC3Dz|w^1BO?;9un%hG_uj6>R<_^0Ku@gE z<>*@++@j6qL=%vo?sEch-qT_f3;A++T2enxL>^RoV!*6JhlpJ2<{TsxC~~2}#_X8v z;210%U7n3jkirhzdZ%4$w)>?fzS7E^rGTu}*|-EtMhBK$nbl>USfb)O^Wn|=cWTle z0%txPuKPc{dG#ut@W;Y#e21g%(hdQt6%wJDLyN~LQtU$Zdz9G;Xq z%95dU7MvmI-)yZU!${7o5b)}`up3Qqf4bwDZ{5AJ=chzpxkzXXsBuY}l$+sD#3fi# z#nv!iY@O1jK3i@c>vB@vJF5|y`_}!+RaZv0P(dCM^+Kl$iLO1vb-;2wV=4S*DUm3J zVmMNrV`nUJQmV`~4n|QThuAG>bcP_j>e*n^Euit=`9GSHs z>=s9{I@EV@W?}o)N;I|cY8Pd6db@3CvIz@TD;j{j-fW*2>9a2R#B!pjEaAJUcK%`6 z$vG+PlK*C@pRv3+MOyNp-)(o=O_gP#DbHD=*-2zsJ&spdiNKpCG!8Ob;dEIz?O007 zgC+Cs_1iaCRUf^6gH7>OF9hOy2>w|JVBN(j8*3YjFmM{2c!JY%6>A%(7kfE$o{`H} za&95OPGS1QcoFX@?z625VdkH z&k`E6LJ8U|ONv2;@cI_Qt{MxrHP*lhq<=fCsg*Oy)pJ%`H)d!m@oLjrof?-m&;G!& z2$m*c^X2lwQu<&U<>ET4b!4=P5vvuAc^(e~mYI{b4l5<>o0dieAD&r+pj4Vd(4r?u zR#IBB8`c)Qv(=e6WRixADCLjNj{6f#ukB{5SwrhsPio+2!*nY^Bm$NOm8JN^Qp#31 zbQ2lr&#cWeRv<@l=Mn^!3x15w6FPWu4Z!) z4w$p(4D2@LOKd3`d29({)uXf02E7eu?uOUMf%JI@zOGFo;>?BSdiGCuJoBwPmUe?W z)?LaWK|my8F|vBw?FqPSh+!(<=oPUOO)K3emeo1Sxo_QHIB!7JrOydHSb^)k8B3-v zb&H5Sow2NzWtF9%`#&t}3{QZikrSxE&VsgH0m}=i69JW}{Fza%0eL-T5TY7AlaI(7P>c?7A z%NNUaUS&x!VzDWE^hOGiinVOqX*C#WLChVUPP!u%WusAt*16f`8~GCSqcfHgi$ClW zOO6EkOqDY*Pb@iE=HDE?K0J8y=JmnB>zA8J=l-@DP2~!DY-9$qywqyg?6i<*87;Df zy46Xe&;yOTMV!T5;MfMaOtQM_(c5UF!S3<;jjtdS_Mr8yK_(aAx5TLz^QSwW`POa8 zouDr3Dq;4pNSehcUB7F01YFjI2(m8`7SlSTl@42(jmwIEHZJGBbzkAE#urTnneR|# zx!MOyXC_;fIt9cXFXq zVw?L9%eimemp`p=1q-_OTDp={>Q@>yCpO5%PNDt8vRuZC6G3o#y@*Zi*&I7#*?=OC zsj_C4H-z_M`bLdjTD@Y)ra40!z|z?m>cUG?4_Nxa(o0z&gkvDtH)!={vP_bkPFmTC z1r~9-8_>w;&pM_|g&?|+a3*gT`%(_oDX<-22x4nT!f3>Xa84<4DocG9)jzTyju`B= zROo~o)^rUNB=D`b`W>LGR?9FTG}<(B_MrF?1RVC~SbXs?E(LVo2}D+u@bMT~0xV&+ z14{|fBrkRj4iJ8`x3e6zuCJyLaEZM~wA6@7GM4n~twtJdvx-z|neCj}juTO?1fl;K z%8w|ig6LovI_w&=$?5e6Ooyo`UMrEfM1iH(V>Xi6Ki%=nw{D7Ug>@R6!o$*#%SJ+c z=f2(&a9QUfq+D&4Ybr~;He+0(K{hZOmtYCsx;KBUuz9OlVjFrzEDmNYkt5p9H^H*u z5Xe#q8yZ?ItFnZ1PYf}H-;Z(G$fDc1%34^?7}<{-8+Fan>NQI>Eg9Mbmab->3dScM zpV#a6SiN4-JY%UN^;*4&te`29l2TiXIO1AO`7?Q%qE1Mo5Yl7pU(Soesu?V^ z=pSl{AgIyf2(!qB5$s{e2>F^6Ko$iF)w3qyu^Het5~QQapxJF>epMGdP;R!gb;Muh zRF(ptXIb-%B{rte<1S*_;!WI)rG{l>Sw;lZ-q!ve!f&=WlVS4;j<=v4bz2NH9?xj{ z^ipPQ0c%ue0h}6w$*SdG*%ON8QnbCxx#p~Hdh8<#H-Fdrr(*oGB~9V)dL^?7lE zi5&U=eaCa(dUP|a*IE_42HNvXI4Ji%R`C?%G&OdClq$_?y?w5-tk$O#8rSD6=e~7s zZdzb+b{x#qpq|PjZ>Z+VYVu+$S65j&MX(fdj8@BF1NvW<5F9r%3=Nh@$TThNCr!rH zn*5xl5}b|8xo_Q*o8+MUwF%jZ5v7O2YNPJT!n4xKRp%@zrNqMmKxT0;^qVDw=}#;x ztc_tUi!YWe%_fmrz2S5%YgS_cOK-cQb%%!@AC`2;srA4VJY$L64ZTrY$E2;5W9hIb zgxW3-S399#7JA^S$#`v1P;nQxs6uSa0|P_lH^S>yxW z^7uii3AhAHH8=@7AQuQ6gyKORmrpF`zIBg0mNK%-A!JI%JTHuJ+ULUAhtQNOPb`ab zmKi8fAOzK_bL@;|i_T`43TtOrYwTdz)@p&}EvIXPr4=lFoi^d{58OVF+l!o9H-WiR z%Nar-~EmU!Ua7j}&k4{JFGCD&M?@@)WVt0TgC+Dgx2olJh zKrHE;B`24qh}DSYa8A)CaW-n#W;yX_(5_&HEft}lWfi5?u+%C=S!Ic;DrLr!QCT8^ zn~@}{C0GOv$EqwdvaBF7Xme#9**D45QqWDIcSYT-Lg7AQ8koyj2MeeL))i|5{c)PP@ zg5F?2&_dQ#6#VYm^r3(#S(>h9qgnxR0Bx0Jea2E0it}+f_pN)RAx}#l7f%Bc%;K!QL9ic*)TD=3`IkQ8kKOPbM&VX#D#j<S(vMskJ+>v}HAR zu=ICZ8k?sFmaZ8~4UVtCQmeAmYnot5=OQ?S#@>6xCDnO0dzB#@ZVJMmEV`@vSbw$) zPQ00GSV=B33l1~%C3xe{;-4rp{-q*Dp>9$$OUNa^!{~q+S~%)8OEnBd^%0qcLagqn zRf`xrGnOTmwIZEw&JuM>qP`_qMX;n%Rz*uvd4FebJ+->Jv=mPyd=72E@1oQbI(T9c zr;1Q=_!)^D4z6I^Ldt51)G-B28E8A4)H}x+r73Ck2A9Q6IBdQ^IBa_nL7fm;Y77m_ zaYRAjm(u*{j%U7gO&}db$qSm7vTjB6Ih&`SbBL1FWU3jkM2AENERpb~j!RJ}gl2Q> z+_&zQ2CPQ(x)BM2^-p$OYc|{rCY6R%d}5hb;B_V`jY%*6W*JmjwpEs8)`>oVQ) zc|3gUO0|j?N?GJI&`#CdRU}OaDoai*v#d>J$>AUq>mUi16VWC@NkbDEm1PC-PwB*R zDjtt6F1l?RL>|y)6Nx=ZL{=+4mlqFLx{#HNgGOgW8Y(z0Q}TsIzET;Z1%)ZKK+5R0 zy0yp#2t>d#gxV6K+8P;F;#ft2CGn>_p83{k-&z!3`=U0(cuJDj(LMhnDLgJK^r99% z)^@jZsj{rsrlct3=Pc*Gb+_2Zeu^K(=&}Xg)d^U77(AouVqRtGmh^drLF=)q<$lI8 zzTj(P`vfdq*{pNvaNXVMl3>Y$B||t9ueL+|dd6UDgQe4hT}+iFspV1etFoj!bcW03 z{aApyvCg#@+LFlMGMYA$qcj?x)>is3k2Yj{3y?JC4REFAt0HNFpR=qyV_D$9(%2F05?E@8Oa|)G+V0lQ zYAl(IE`}o!hdJYPm^h=J&}A7RrzjqW+bH5Zi7k{ytsbOQHHbXRMWqQ@KlEE?EV5lm zgVAI2XkCbNU5MEC0}c}^AUk8@N+J;q*{yowPj@`?t!KTfiw3KTj0e*|=n8zIB(_qoG6d;X!B>7-FijWOW2z6XYkBxj9QMSkg~( zY$yPh9ReNKW!9a|x>Bz;yqz9ce&h{Z2Sd2PGCZiF;k<=Y4+nDb+)jwiz!JG4q=usC zZYImI1#iq{ae}o?>E&ecj-$JF$nj`|GS>PfM5{?C!hoS(fB`p#+#m-|00|l_^;qZ# zc`@O{K0PBN8X@R3s->3PQLCCqI*Gd0$soa_Tn$!{G@-J@Wefx)Rc#Kt&C;UsJxIc-ioR!n7HsZ6?q2|+b88nLRB zTE$v**dCm7*eWKG2x0ST-OgYz8gcCVYz8{p>`jfUiDXD+sr}O(&wT5wdnIPDX$trX z`6_vrWqk9MEAY6i5MY@rbO&IGGHrES3PNtqa_(Dq2_3xZg#ru-4MmokLc8E$^+?7= z=~_;#xh0g2X2mR}CoTFMt-0Rq{kIP0h(h^4RK>TgJaWbG8qo5 zr_q192QhlW-{K@H`~GP z04yJPV-GC7U>O~iSemNin8=RoQMZF3!4laBEROQEnSPc*xC`WsM!a^|E!7dCfIkV@ zffYla$@AG}zfx~h_yAbyAPy5r%*Hx5k_7ZBOM`>VahqZ39aq2*<2HPg;Jy1?~Sj-dQT;K~+^SvF8BIt=F@zh`6~mt`_WFjB5R zQdyRsSW0u2bKkm?Z|QZ+LO6o}c9u4t%vc(Y=MJB;#_# zW%Qx5fH|raF^ELe!)YiBYCuYfN;}UobCwMjdUbVN;zwBmOKV?p<)2uRlGNEuZ^Zp- z3WDA4(9#l4yph|C$9gWWR23wOXi9ij%cFB}JUz`2edy@h&?}UiaOY2Mq()!VnJfXP zpY(Ym;ds=w>o5?!IGCK8*OpR|1+}u^Pj@`?t;@EhxWUaLWrhpZOE%s0=N}qL4V?i? zly1tyN$)y?O1WljszqB_giyU(bKkmyZyNPXG?LM091LwfMUcIhGeV1xS7>!y%D-9a zttcqdFoZhC&RF*F_+v^OSo+g%_aYeOD{Ef_W8cLR{>0&SY*G{u#OU-P(!y?V**U_f z#j`()wIH@xMhMuF6bnv2OeWHVUbJ$x^hM?-rfinSfdk*^V`E%lLQgC?oyyXS@*eX) zEJa}j2Z;Z$^v_sU3%rElaMV!gY%0rCr8{Sd!UAN9IMvM`{MKq@hb-C#va5i(9zD`D zSoYS}kf`bN+Fcg2HG=}7tUTmdfl~^_a!oOi`b-tTi>=Pp@yR(ukDy9MzIdviVEM-M%Rwr6CjV;Vr&VB0+u8#P&SQN!fPB^+%mOjp8W6StFWU=a%O+rBkOHdUvvD_n8iv5^*LRz>=rT+FQU`nQD+QGc<=Tb4UA12_t=dt9Tu(p zn$HZKn<$!A7Tl%)&N8z{s31eVKvtt64NeJl&}%3qVX~sYi#V^~SeMF@d15Iz2C`da z2@k)962*RcbuH@hxGfHo!OUX8!4-~0nBcKkt<)494%+In+*3N;o72+^HZy@(7&1T9ZVj7cHb#$N2SehLyHr1Y3 z@&!U=X|(?zmS|oPz%oE5)=uWd+(~=uKy^AXL`KD=juvs&~LN{ zGO-AjCOiioS8Yg@k&GDjMOXQ zliV&3av54>nURt8GiS+jh@JyW*GTp%U`f&(p~vjCy1Wvy*=;%qz$rP0-J|+#5hnOX z1)^ew$ZCXku`sF*h9564uXyG(m#d6W>R0R3T9fmKVs|1KEH-%FsIWh_uoUxdqi$1C z&MvO3>&vUr7~ahEf4bwDZ@p}YFBwB}-of(G7K$`}{QBF-aJWlZbxh ztgA7PDQq?nwCd>23K^tU7;OP$H|6(AL%bD(rIg8aIM$<%%Ph}x^#V#N-Q%2B!HkPW zYnA0>CAA!cf=z4GAPuxot(4ji<$STwsv!_v!6HcNmXt|-G=8|bx)In5BqU5wf?My_ zn#UJkO1-H7QB>3u(naw4or-(6;BhXOFRyNFV7VAm;}`#Q$1~r0RUbmSK%Hx_k6yd3b7EOaBloLu@-l!E)sc zf`M}0;X^B;P3N*o*%?btrqKw=od_Za&jC`k2|Ax8NB6CM`)5hMq<9|1%hlqz-@^Bt zii0J#F|(9)HRv`+tTv5bmqam~&q&Z&ZYyLaodo_HR^uL11d%D4Bh}H(<6#MJc!Yy}|HJFA`_?hc+taru|8+r|_cLmQl=PS)v@`OPYr^`zzzY&&KT^5PUr8?dhm`mX^53WitNhj%U908nu`*MGHAME5tfYJ^T3h%Zf7vH(N9%X@bd~Ui5EO zmhH-f;CObSd5ZL>X1`uPz5ZSq zp74-<#e5N66idUEgntu{%X{dUei(Ix^odEBMWDB%;&eEFA z>o^+EY^MPS#`AHx82-(&z%3AD{Ke7xwb8jLo&HO-j{F=M1IzRUQ*1XS2UJToE9JDv zNVHQ~<}(>B%b$y=POUJ;3={$tL38}MJMKSL3O58Im&*NS`M3`YB5POzOB73G3=W)h zS{Ch2ZA8E1cUb}^Ej;qOh_*mW4r5k{%NEm1^r+v)=A^P9ED;?6!6qt&Sq( zC1qT%o_EjAemvZN#Fk^Z+&Ui&r>#M~c7F4tHag`^HfP))(JzLV7FWR%kIQEBbGuhU1bTJ26ia743tG{DTpCGx9hEbT4>T4}HVz#KbcIYO5|Q{bWm znLt16`uGAYe~Q*ISjNF}{W7ccu;J;$UVw#insY2N4|23n$YcplxR7#OwaV!kp26`N zefq6`JbbJb@36&P!uDqMwBH?^F~(F7EYaz2a;C#xOU&USqfabJLc{GXm`OLhWR5jt z-JlPFB#uPn&Soj2#q99K;pmn=C{szRvXnLX!HgyLKycYEgO~p}AE>bCDFsWDD4r+d z2^aQ*@n}_Kh^EJbi^pEQ-k9{DX+jrxu6*3AU-d68et!M*DKCAhRy&uY@o{@tuU_2! ztdGxlliiu{FX&_Vs;?#k8+cr{+Yb+)9Gk1_V2MnJKi%=nx89)_R!qr?9N@%cud9{8 z(oM3sELfH@Bu!l0s4T@9OC0&k$0Z!yII*IzOmWu?HM4$TRG!RhF+u6(2spH&}q>t}GTpJ&V~Av0w+k{XL^ zJ>s**oo*^-NCn&$AVvk!i>QV4P<+OjUhm|J9hB^N{f^1)}bEkwl?%GchG1|Uboxbpx{boa)jfFr6y-!!P4nAD8E_8RF-3vWuA*^ zsTBMX+mkEv`uZ=?HVJa%5?F3sqf2ni*?ks0LKB=O1QB6eX2fC^^R##+=ec@K(()3Y z>lL$?KSxk%HA`i+ZzZ*)mpR>2YnTR7C-Sn%1BF0U?W1WRiO^(G{HfIbv2 z9_Fqza*N`2#IYZ7h#f;biNodzEn|;LI4Yiqu#HX8lg z$@CN}+4A+r$JX=$q}-`s)R0(MiKW33WwibN_ivw_TWcH16j)mRbjLH_dY=ienwRTx zn3qz6zNP?{ejK=m`MfQK^Fr$SZg8)%?3O1QnDpl?bu-_(MI$BL`kgI<+Z!?&Q#W84 z65J`szFjKIVBW6D8CeYsZl32XS7MQ|*_;QbEVqefpGf8C`Q>3*rvg!x&iVz;Yd(o67t9av`N5`(sQ={8s7TJ<72_+@2U8PWu&T2uDi`(gsrn98L9~I9;>}d#mPFt98EM_W+g?egWlkJ+8+#+Dnz%}gYLu0r;pH5e=8M#wmYLwC#MJz zYACm#A3LX4Amv#J#SBY}Yw?X#I4zdjP>DxXe4ik~G|Y0!wT!s^gO3G;@~vnQz@p@GD;9{;ts*j9AR++fKU|61{0! zB7I<43g#VJ*~Dm!sH!)h#SPEPSeA%m5{XPK7F1($Nm9Rt=BO9Px7Ljr%P>!^g5};F zRlB&%{KHZa=Pb)$Dam*FBG;~$&^?(epVs;N$K%`c$4>1VS1dNW=hN;@e>lCPoEs5r zMNcD?Q>gBB!sN4@S~Y%_y> z%%j4&pofwXEQ?c)4XG@V@4)vPa*kg(D@N)(#wB82!SX&DSun}y=Pa~`tt%*Gk->gB z>W^+u2E&n3?=-u&qu!UZ&+u&i^`or(>U77SPtPs}(?;?B%VY2CnzOpRtKpb26-y^J zm&0pvwL6_Y{`&6TUf)Ws1pHRppYC|(Tb~Mnw0XTF!7jc!9y3+2Trjh^%sH2{ddhhB zF#MR|*+Or|l1R?RC0N3@ZX&ofpXtS(362P>W#bMk!=i747O8;BGL(0avRP&6ea14e z0K4tfVpUl#k@__HiC-Sy%~(2)!Ey~O_wV)f>l=;DhjS1U;V_gWu*6TOu#85Q@AC@R zX`o^r8E6+R;nU;k{pDk~{)1PPR`2qpf7c%!-|JjkVCg}Zqc^w{3p!SPVbg}n(jK+x z^#{F`M?;s;HzjGh-4 z8eoYjOlK2>j|<_5Azx6CXgTTLo}YaOw42Fr^6_jq8Y|6SyMI3!e7pDxTl3$4RZ5S& z{`Bkl#pUq0QTX`nv44J}l3I(zjmz=%#MW|TEnn}SoL~^Uch_n%dk%o9uPoTXvrTQ_Ohb-(%L3$uSAYO`+L z&sh4mXh9d6vvg9}`oTx!^Zh$6=PVId3YIC-u#V=_S10#2bzC}*BRrJ`%NHLFjk|jS zEVVP1WqHOjUj@rt?qi|EVLwGcz+U~jBYu87`*i)-Yy1>S$X&iZ8{YTFC!Y+S?FBRC zwHYaYXg3~muK6S8Ez2s50gHB&L^JP}EM(BYk-m+!fO*;FH0X~Av&*Todth!`+NBYu zdQ`YXjM1Fs3CD(K;}R@~EwEg?C`Ox4EbW5u5DA5K#Zm<+h$n-OR~LW73x9t+K7P0u zjVDSQ#RH#?hd-{qtG4E!)$${%3%*}mUX4x~`A^>;2N$=T&FxDsBv9V7k=$NcSS>b( z5Y9gS(!}_`E;d@yxe=mh-Kfw+2!|%%!Ktd=tM}+{&t#u4TrcGk^Lz`jq9F zV!u408BUwjsOOi4nQz^wWj0YRe_#$oqju}g$8M(|mi#+l8J@8${ATI*8Oqopq18Ed z#`4%|Q&7DCmK$o%;^`-qrR+F~2-JGw<=(+3W9!prtrgpCMx(~AujDA2Mu$`l53GFt zp;+enO*BVV%B}mp{PpqT%kAT!^$Q!A-O=sE_)~v!`q}8+d14s|t1Q!j1@q27EKSV& z6w*F^vs{_6)LPuo?0SR#Xlj4X@_NoPPb#N88x{(X)uA3})XwGk*rgI}p`zUY5iMAL z2?c{>xmq9BCl}){w^yn=|KV(U_VsEqohrTYVEhHn)0>|^@bUhF*LgTT{p;%bdVJc< zeg5llbak(iS_jM3#HPw}rPQ9N*7m>u%kqES@yxe=p7(87c821TnA@112+;dJLbQxa z*}cLT_11@PV98~RXpp6|EV(peIrpuj$zdmCd3|UJ#TK2meU)WI3hZlm{Q}-dm2knO zldM_7?=!iB z3!%i?E5gWRj`Fv>**s@?#a5q z{1`oCIl4HQjZ0l>HZGrh>y+k2#P;ruEwU7MI}RVfazP3mYFJ}jWf>{B4U!!!U7=?z zm!j$T;)&ghxyZgK8c~itAbb9;1I=q4HSjx1K+DYxL#g^-X^LsUq%ZKi<)eWduoPWAw z?i`)@))zk<9ooO@iy6W$*=X+((>Z@U$FUWG_9Hh}9vPWNOP3#*xN-}9K z^#ddKcv_Lw0EZ#|oIfA_dO%a!Ip6O*%J^&zmHe-MvmoH#5gDx^OKXcZ3(i|njJ|EP zZ7vcpBXtL@8eHcCls;0Y$HN?UI$a!*35$9YAs!vBY#nZfw~~tqw~j!VcMuIGetXns zw7S~rci`V2+eh!y>ec(VM>}apm}JKS4$KH0HWa!{Du~i|7B>H$ktA>yTWZ~oYlmee6RMHcP`5c6cJ|B--^?JRPg~(8suTF=< zyo|0)gcA~M&PelbHh1>+4|aFf);5+s0q6F5I+euRkET!=a5w+{IgdWaz&;DE9L`{|4TGVSoKRnyJ9Ctb`Nohztm!sSBR{jVRNetaUB>KWH-|B^8H6fB#gdpI0R4F1q77>Pp7+RP4V!b^& z>Op7169`Dr>N7>K)J6hJNl$nYES>b(XxOaPYE4wu<#f5qWH8K2yo~)>ReAfwa_=`w zzhf)Cwv>o~Wxm|!uGPC*L<}7>vWjXh)gXQ1H73uuv&%b*=?|wpy{87tPPPty|Cs_UsmVfo? zD$9zNCZ1SEJVA`h4J)QQ&E;g;?ls`Hs&~Osdolq_iARlWCdi|oOM3rudGqB)XfwGG zSH~s#y1Z_u&ldI=%#Q!Ee49RcGxL1DK76~eY!49JzbxA`mJmiG&;;8+G@1e$SHp5a zlxlwSQQ4&WEj5T`1H9mdQXlf*U@(d9fN~=i_qbTMxf^e`vqc z=Lo_oniwqP3JO)dV zcVvl7fYa#-`Q5?t#=&}MBN2&#C4ur$kIUh;1>FXd{l6?UxKAQ zbAl=&oJZF2%gA6k?x`$AHp7FZsHeqO8{0cO``cS9E9oVd*S5ZjzR8e9N2@F^RWkD* zZw@zua>Vrc`nJ+;WQzrsv1;6cdiTMekF5X8@@&v-)`UX! zUzYD)?JfJcIm?-EJ@oqRq5WDX6NE)HvF_K>;PPS0;Ih`CoHLd+uK ze1s;adZ}8jws}$19FJx!?HMBDV<{bxd-Ec-{vsV*PlOhsv?E}~^EmAutKX$J+Wy1x z-OJR`;Sw}vZ(i)ZT#Z}3838QOsi)4dtqgX1TqFtws%@)&#_Bv==_GHil%SsJaC7A@v?l6yXjb`rg=etxFsS45&C8u7FF$8F^Q{LC-yGU6b&{5_;AP2u zm>XW+j~QIn+A7PQfm2y_RF)_wEpoGQIrpuD<&SYiIR5(OTl?$PmoIl;?jX0FVuS6A zG;Do0m87qoYM#?(OBC_M(iHOe!E)JZNrkf5-)eMfN~Kh3fhCRggoLAB8`|K!3`G&S z*ZZmT{#sx?0jr~q(D)r*Hx8sMUZ>7r{SV7GFOu&M5=U>|zuMc`UyfSb+5e9vs>yPd z7E1ZmhRFJPzW|?Bx!b?X#a&Q++_m|`kb zm8BL%bRCtYfXW82#Wq`ESDxxeNk z-n@!@z{B$8?)q+eEfjGGiGcpo#dWz^Bl1{IIY=L`{*0XsC*Ay)la%I3}I6ae|;X>%x3?~*N66VokS95!N9v-=0{gIBLmUG`a zSbhh~>F0;9tX_n`?KB>wLF*e>e(qFqV5v|9Js+1~iKa^TlGTz7GG~KP zqg^Y4WdkfT(*aoWIN>HTo-9cc`NO@X^xj$^9Y+!ZSo-XkVxe_f4~P4ki!Sk*Z{7Ri@X&rji6mhX^n&X}aeQ?- z!~rW&ZO&QpfGW2QV5t$r0y`U*bKg2xej8Qz@x#Z@&4=@k56G_4GldD;u78vU&95d! zd}vqT5y=*@8<%K~Q&~E6K36mfSG32GH8Yc5yM|h< ziprA6Rfdquq4%B5pv;{?(NFHh`sU`w&PEzBGBKOeluE?V@@2qN8Z6JASblg7*GS5( zIXnoyIXc+h+g#aLUh)O3a@0fKpIzdVlaeJ?F%W~SS)=Dtjuo)OF zjbQoiV0V21OI~9Re|_xP%qGwN%R~E=5-7qb=p^S}X>xr&U~pM&=m8I~U z<=nRpmS2Yze)RF~q4DwT{?pB;8wmZ!V0jOgU%>KH8-@KdmYFA(0go3fV^;H`pF8Od zYG`^aL-YWa?4&o8B#tu^M8-*L38MI7C%L+_;#-Y*!zgT~JvNuq1~msxrYO_DEI+(` zySEWO+*$YlmB;$(I{frDUY`8JvN26f~8&O zbuKJ;Tz-#(F|m_w3oJ`z7A!R?%Mn=O?I5dxAdk%E_tTpj>FxEkWHPmAbr_TJC^S=g zLS-pEvHb8B3ZV6*i$2)*zxuGZv7Jt(u~7D!a}gJDcY2}JDmn=)J%$jA=jqFpB?I66 zhh=lxK{o@$|0+w$NaAt1zr7a5tLTj7UDs|lx%UnZ?PH495k{Vp9XsXe%}EcB0HRXY z+n7Ro&ayRUDLjqKxo;gTzYHq;5b4#myVKi`*B`H;R2Z?X+O5=YKA08pzFo@U5W0Z$ z0Bpx<^EP9^;{nU4)g1M4$K8IlSwVicQUyy6>j_c9>y?(sI5dQYC?Ys#WqTPcJ)s#( ztJ7gMIZZYTNgDrU`R?`W?R4PfR^;98{?^*^n)>=FfMp2MG6d22K z;QXl^chIjQpjGD*l@V4_BPo^kQM)8#T_)0R`vL1(q(X2sm)mm6^zTK9^;bWg*-ExW9Png zu>9PwaQ)k>`|9oS_5IcTwGsVIY^!=L^&6keMd7Yh%AwFF4>byQ;lR@1S6MnER#U{w zPdmLzqbw`MVui=UXWW^wRQG0VC}|_0T}>=+rMxRKcMvQyZmYv#F*;Bvr_~z%W%=gt z<>spI#b)UB_Acfu^ivwlQVuLJdCpjB*1!^8ZAq!Q&G>a7Y@K#cFD(?BoeL=mmV{U= zxBg)%%vsv>ZbvxcQ5RhB8lpH7y&;OCvP5g~pfSp0idDx5oG@CZu$$gkU)@ySDw9!* z4NjOaI)Tw{t+G6sv3&pL<^Imb%A!5HyW@TFW@~kQIljEO;B@K>0bAx~dWwaE34Oa- zzj=W;8%tpud-l4sRMpHu1 zYxDNa+R5#(!{D-9HK4w=MX4+$uq-}fIrpuD*0?QIu;w%X)8P))nR+J+XrJc>h@@C4ryy$|u z6Aw{~-44x|5!)by{$G}d2QSho_uhK&aARw2DGrx}-YDlMY}jR;v8-vTBo=zWQqK?Dbu^_HG091S z%CfGqM97zh21_K$?ZDBrvbhH9M`FQj)h#Xr9UccB&N-!9_S+S7YG9O zv3G9|w$e+U8A!0aY&gsY+ve_}y+g7FLdO#Y`+DQ_w%5idN|Y-q%O)kNEE{^U*n%lF zpPh}%xo;gTKlLhX_wwwfd^tff^6jN5D-M`u=mDG*EC-sN+%(%?nrt ztj2&_#7;rEUJ{Fif&!M}2wjL0ROtxgKsa%hC~s}VQyWX3)FQHGFgH5QHk(;*!$~rs z(SfC^P{!X6_IFp4&Yd;?L3(2)u^9JRb^07uVE<)lK`~~r>V>Bgn+4@@3nlnMzR^0J zvDBjAz43opS`AKHFyw*G)xqg-0F9^>eCs%{%s}#uC+G)GWN=w78!R)HWw5O4RF)i{o3otz*1_^)x5BnBPOeH9qtlyjsw~xlbiYd)H#?=8A`}YwBHDeVVRI;er4B<7nkj}TZ?4Ce)|2kk zqTM%VX|e2N~AF^ zty&JkZWP?YxFf^n!SF1ftG7-BWMZHh6iLruDbB_vPnmQWmllJ=8i2{n<#O*^x*MCR?Q?Uj&^D~H6 ztJE6I^>&r0*Rea`KH>bA_?R9O|NKhQD*jC!-cZ~*v%TftPwz&p8YQI^MV40bX z%eikIEbluNrgb*GRL+LS*XP$4mMq@`%VViqyRj6wi$+0ZDH)OBH)E;udYoX1IvlT4 z#@i(t!1+QxR{%?S*Z|86OQCN7nUE||Sx?83>4bYJYV(36lD938Wnt?E4R&Pv{fD~TSSg!@M7}v- z*)ZDWBg=u`I#}L!Yg+s2?6!1ueE$08^{pk5JkXkzbFh2^mba~f!7}s6(h08{yA>7? z4r?A)m!(=M2^)|CSmuwLV5#W1x>Gq8on!UcnP_|_W*-Y%oCZtTEQlNp*CIwqP~E-f zJI{A_c6PR4LKh91(F?jbJ`oLgeO87d%jHLwwSK#lX`@)87fA^eY`2bEs;;5Qwk}de zyJV8NVjV0|-Vx`qXqPP7rC>(Nlh?^xVG>7W4w30ogeRB553H|C*ZQ7gnV71 zv$scQxndrMM>-d=PY~N1voWVN-?;eBvVPdem(m0r>XEjBmcO;JI28|yL}kQpotv85 zl&jdS5wL@(iDO5veyKKeELKWp9xSO`wZ~)|C=W4UX)?wy2Y%}tT=E@Qwk}U^ikC-c zuWnvFusj3H*I;?`on;a`BdTCAIh?ZHE~7YyO)d;rBGWO44z*;_V3~tg2v{;KwrXQ~ zIue_X+Hf-AkYOwb&t8-gK_4gbX^Aenk@vPYH#gT|LKpHe=sBCiX@}S4wjlMVTDcgs zOC^;Zu(bZb@~EW@Sf2k)mTBH>;awgFC)wl-fpfV^pJfUxb%W)Z!4ghDYCa|Pl>KOhE+Un8)M-W6lg3Rl+G}sv9rFsFf|#6Wg(NEoD`?$V}X#*<+V#NZET8U z{^sx$EMa)0b5X}6vAH%CvRO*)tITZ3iE|%S@3TyOXGv|W!IIsNN(m!=>+Iz0rd%Qw zfuMA~F2;{v|5B>ySS%NKUd=VAT&2fk>ZWY5W73fU*=ITMTL;TGomv7_La*}Y$loLxKqnkM4sevJsQ0j&z!wa7he;Tnn}RRxy=8Vl0kx{Y-P53w!(OZNFqTESwzQlP!TLT=kBTundzN-5hsKlN+lOep#q= zuhVm2DS~C~pq?wjeK?H~RvK&8SLenfK3MmR_^mS&Gn+Du^U-ytCmTZa^v#ESRmWmE z&m)bpK44k$W|9V}nBYl-^l;brc$cXV@gdo8P4H_<2^f#oe&UN&2#BD`A)6@;VbGa0ZfAJxH<)JUFGX|t9go5<9UPDQM-klAjuOABk}8G@(L z4p3ccb7y^fV|8_P3BPu)i$HJ76n1Y;o6U^VN)%}S&a%>HX*VS>*yV?Ny{lwb*;%Y(APl7y=fSkhXuK07rt z5t$l`1_MD4%zd0ri4r*E(t~CBWN&wK1FqficsKw9_RQEAKQSHh_*`%e<4GmmHmjw} z?olS6^(czYkGW^4_2sxn;Mz%QG-aGU>Guzjb=vXY}1T(67ka?qB_E|D$mqfo^4*b@^@>Q#*){cAU+2iiP_2tc# zRZVnIZsZ`-t=(7(+Ib^uuuKZvkR@$*TEG%M&7xSs)n&e1K&LnCkTQDZum+ZtMhJ)~ z;k7K;8lMbDCd1Zf5GAfmWKv|{k*=8OBvR26-Hoj^TzkWPcYHkRwyR?yaUy^|0ZC?c zCE2K5XyIYI9I$jCVL68sL!L%vRBRW+Ha)Q@$eU7Ar*zOvs$^|N8S?6VXE&hB!U z(EpoF##Lg9&!90@X32`mK$br9fOkXE#e z*2R#~`pV+M;%qz~!qq&k>f%11Qx-)e;-y-3uyhUfv1NK5`&cIomb1m6tuUZB+ABMGV8QikcS38 z+O8>CMKw5BV)_w1Bu@I~>6L{Lx<|Svci&l7I`GI=;nGgC9E`}R<%J229 zwS}l`BGZ1t(#7J?SqQ-ekA=f?yM}60x?ZXsYLjl5f2in40872!E_FsUShAv-u^K+a zRynWdJGFc%hoE(XWja^w77Ug+^XI{mg+1ETRpp;tLt zUt3;;OE8QNT^3Hwhr&!G?y+I_Byn&DFZQT(?W~E|ic}Ck1Iu(^(X=!dKsAhmvsaHS z+vOC_Ry56oy%Sh2&ExvUrskR>e(OqPd{fp47^J9Lwqy2PzyCxObSxIr*a2iJguyZm zmW2_P1HW~!yaCHnw{e{6Hk%jcmlt-GXsNYAGt;SFfaP%=742D46U~`Hy97&A5Rpux zi8WVy<$AW5Bf(Mw%lbhXEKP|7SgMv}f$T&uo;wzl!U0+`Sn{-qr8E|mlk{A&yS%oz zj0mY&{Mx;ekPUfRj8Dk|%PM&-*J)fNA})-L0bq%q52NrRtLT}07~Yi}{MK7l^f!QI zwP&zo1r;3$`;GjNB`XTWbcPi%u|uwQ^9D;(QWX+lnM$=L zC#K>k#TG=&vjfhjlFTJxd26ujRu5NK7U$s-j8QNLk1Arp5FLU#tHmrZ3Vub0M7D9- z=)&qIgv?L`@h&lovtEJFjxXM%9?pHrE!Z9q*gOVHi-p1t36*U0d~3vSJrRm;%8Fu= z2{?&&&7Rv|KGAs{i^bG{C8|O&=`sbD9O~x4F9iG8f!{hvx^Id zN;cJMzMkn+&ZV4sR7+Mi16K9Yll+35Pi>vdC^TwVn5Oj;?e86K0;EOrfjG}@| zuL+j!AxjhTFYO-GAV}vT@H;faS)*AsgQZrib`w)zDdO-_085G>x%{tikdC z-5E2nc*N~>*f?4*_ybfR~@u;$%a~lob@> zHCX0HSq}Wx!SbqBBl4}vf!=~c@!9#gL!}yESp&;6usp;7$be;b$Wn6h*yMyrQ*6Cc ztiqLnMw?W@vehe|AUPwU%eeNIQzfz&j0FNQzZmorBKp76xXj0)*My+wR3Y7+U!I+x z#jps*d>yc*_PHpZ6&VL4p;wS#*t-1Ave;+o?X!#ySmqiPoImOqThMMVG;g_@$mCu;qH-{Qb31o zX|z##CxxoFb4G9WcpPP~Fo;4|y$;eNAwv(Q*tI0Q<}MRaw+s_#Sl5H4*X}cu=;(>T zmX$}uPrWQs1PmC<2q5vutc2Kr{C+)$>l6|>V64T`XKA94tgO*siLg}k8zXpE14}rS zRy$dPC7VPfke=W(>CPBfdSW4;$K^upq%1D)^924^*(}bQdULbWFq`z-oU(;NZECky z@%SXvkEc*{BVWdaQ5jYJnwqY~Sw^=mM%TI7378KRuJ7*qEMaAY#Hd0dZDJLL6repps-a6U;lwsu%CyVJ@UZSylNpku6iLV_eU^m9U@2-Mg~A1`JgoK8 zOfrou+l<=j=KCyDHViS^(iQT+7xDWdULoLDd1G9PB?v|yaf|Se?bf?9(oi^M9hMuKmKf()-L@3p z;HJk=-?V)9`u!uzdR|4;u!1@QB6j=a^f<0nxk9}=;_%3 zr*tgl6B13NimJg99)gXdKxT= zQI;H7CK3BaH(NOz&eJSd;+Uy+I~c~!qpA;BX6%_NdFaI%e%LGceF?L{k|EH0m!Z@K zOdfOH>G{d2iD)S5vpGdVZ8@zfa<$MSl*+f$2;sO?V;Cqi+GUi8DEz zufqhr-agOP4-ZQ9L_(b~bGm(HYzt|aqF$`NdHW%0ockEZi)y_t`u?LLcV;l-e+m0R4wx}OA2QZX33Ez zkYAWD*NeK*X{=_!GLOiil)=)RgmG>%0q5X@=-7D383`ca#V)}b5?4M|4RyZYw+WWx zWAQM`ADdC`8zXHMn?twR;Xb8ksM}U;b}#bHqh7J5s>&2^)*Y)8+x$e-oUSzP?>|1W ztmcqFXC^4KXfaq$;sObiV==GbhiR}ZfMuRA zSSmPm>$4pAt%K!hsYby}zD}0%nZu)_6OY1G5cHh^%bpeW-N2GU&<9u|f*Hq4MKD+j zS&>YV?M4QN^Q2iz5hh%^9JDhh8dzo>q?&hP*zw2}^m&4Av(J|_inf4d0{bLV>%g$H z&>f$RkHv%DpwnW7ujYZ(lEgTq3OC>KVYYd0u=EbvWsZekfgOpp2`x3@fnyM*rOQb3 zB@+lIs1Y+>)EK3eL>esNlZWFaN-*GTCrjcgjguT1#UfV<6_i2FBeq#FSQfxCd0tQq zmNu}oe~j+xZW7|r4>@TRtsXz8+VHK_^^$t7j(ug$eaR8%4&fZu)$IloD5jzMIudf>IhRvCwbIQWWe&Uod!#E z=Q~N1tzJ3}QiN=r!tPmRTTe~WEPdmAaLXfkfpu0Av_k?(eE;f6gK7M{=S;y=--F$WBdk!ON|2Nio0v{(DGCVlhX_ zD7KW-s)a)ay+_3%%YGgAf#3QDn>+$bHLI3QS#*&imv+cf1Isp8R==|}{9~z{m@qqO zo1HHUN*)(1eU>6vB9>4&F<2G^v`JDeyYnsb)avsfD~xq}vNZha@}!nja4wcSF6En* zZe$`93c74A^aiSh;sq)b;nFl)g!S%a;o$o4YS1oKJu_e#{efj6?;Nl!|4o)T#hTDj zRK1{!5+ds>d8N-X2bLv+<%PjAr8@LfLN4ZxgR!_@4q$9emU#3fp#DfVn?)oOShkx1 zKYo&uU<`Ja%GHKh%$d#bzslzGm2UU=?6!V%iEKQuTrgN}&%O{ND58CE`uo?f$+@5d z=RP>kHdrDAambR02CO(W?;W3v_^nrD*M{uTEN&&MG_NSr*FS!bl1XFHgeX;%aH{4H znPe6}#tzOGlWd>mz;7Ka5Arn=c9%sKhmp47??VVhqL5V6jY89wrphHHMe`<;O)~sr zsq6#GiU8-=UKPWkNzH=7m~aOqPMgV-L_t&vZc?py@@?`|eqfnEU;0z6r!TCl}6&C zK%~T!>eN%HPdH#HJ+REzP=BPC%YkJki|j0P?AaO7tWla?sn!~(v&W$xXEu*YQwP1% z^Sj3JRRgD&6ul%_bkFYmz9sC{+DGSq{{EXj50*GA;Ae_d2ZRQ*qKwiIHX`De(V2UA zax&t#UX`31@O+g#N=|8Alhp5j{xL=+v6yA73QAuMSZ01?Iq+Kt%U-UAo(!tMC6h#} z+c^jjVgbDj1Xwn}vQ#1rmW)j@JVym8JbB7!ml%^%Q2;P?Rzcr*H;8gNKAXkH5~ftOddt#9MA{W`R@l2O z9^W24vP}0`#w{F9HfFE^`ZX=G9t^oK7=rGzbg{TX8D(h)OXIYL;_aoBDAjAI(nf-% zN*gT8V5u4`Eh*K7m9|puBoK@HEPl7mDp|}~nAfQJ!+aj)7s0YqM`w_g!Wb@*Ox2M0 z$CwL@2`5HHRP#GJJimO^I=!hU^Av4bktN-`x3DjT+$osq!wcv;%S<83DDdrrQzVMx z*od&#g3jFIv(pj3^}6WTkOP|RRq{&vh9v&@>yJq~iNy?SgBNgGuNm#K&(eZ+$@Sai zz;7KayV)8;X{MZ6LlyQ;yB8!Zc>-w%>3Y6yOVb5xV6a4_>5!$yIZ3c=2x>(?EMve~ zOUMciOJI54(7;ksN?ybT_zGR}T=cl@9vkCy7f7%ypl(beQ_)fvRg77612LZ$sn4=0 zL1pTVS0)mrQ1X>}=iu;l>GbaSN*N!v%K^(V3BBp+tl!F^4gz}Oyu3+;mtCGV+NGN{ zQHlL>3P1lryX>=s(=}`lB(g=yO>y z%+BRtUXv&s7ZD_h?CW-?=EBglf(j$(szjcAi{?rwor6fyD*6eIFRx$2bG@eLXcMz) zm380qrF}Wz${bzX!t>yfWnO0qtHlKW=RV62%>NUa(~Gkazx9S-+mOS$)vFYg&Ml$- z_3h6YQxc0A&ZhQR=D;$omU0~oU?39N=vyE7t%GGJQ)5gCHjCOICR73iODRX>H4|9Y zY>0ygOH-d^S?jk;4bJQ~ySXK(h<7jHBv(Ve0Xoex8I%J{^jVgDq}uQod*lW0cA*r4 z$>A;`nt()QmrNpy&W9_U#WuRWsK<>FB$Sjzhj8mHMZnCWSZno;kKdNhUY~%af3S~D znOCrn9Y<|iLY)irSz^cQ154DZ&CzpU=|Pvg`kf_=!W?Lq341b4aQ13OkdWM7%+O$| zFnO>tKmK7M4-WX+cq0l)vnT2=ox-5^TDjtJsmBQlL^MfkDvSkfqKz39#%4iF)d|sHW(I zVj~lr1eTX|^+YYmO2tpA%|P*hyfC|5R+mgW++_tU@$RgatLd4Wda2j!dLsC>3yh$o z)MBS|PvFN{D56Bq<0mH8l!H7uc}(l9=RlXyC7nnT=(*UXp{utawP z+9iy_43?TBl~Fi*Eh|XPW}}ccr4zcs8Z4_QCrcVE<&^3LOJ^m2=0(X--s3ZQ5;m zV1ISr>a`UwZs8;H*CWd;;#}=ABgl4#!4hXvxca}mxftIjH5zV3{eOoq$+l>w1VYTT>(ogQ3cCZuyjaXvgq4%%Cy~8Q4N-fbWYFJ zlbO3l>7dnhBL&NDMqp4@s~jABP_=rxTx<7EE-pS)uili~QzWi3ynqf`EeknO*$y=QT)VX#bT9>ugb70wO=2Hw<5^O%H zQwB@QU};UMKJ2ob)%>|95_OwB4vPhKsEd_$E>*p(R_X@JR<9yiB%@$ zZad*aN@==yb9*`Bx87we8}dZb?pI0#DtEze{jXKCv6vPHEE`#{L|<*TBU6gT_uJ*b zZyhX~sT%5STXY063e{%46CrFF4Ezh}TDD|QGU+^$j!>(~X{#W059dBflfjZZ6ts5c zv|x;25e`Z<+cFvIx<>R_)&iv336+k>D+U3W4vDh4stK?xp_HVaZ=|xXo8`lH*BP{1 ztt`PN^U2!L(I-uB=1_9}=w6?QZY*)%BaV?@wR7 z!$~3rCU=|;J+!~EZ*xhtyLa$M9ATMO1=?w4VUq0>+z!HHqqS`L?$yS1jyK7ggz+K6@is!((_krr zWf3e>dDD<(b;uIdvS4{EXx;2t9wW;N;Y6IZ9V~BaDOrQ|&^%eRy(tck^rg_Wk+wcb0me z<#eCr(tss;fWkNn6o_Q9&(hCx><=tmXqQQ676*QNtH?|3PAiw>z>+issT7i49)i6AF3Lb~zmf?zDef{Qo z#Bcq87B=LWq%)|L$)k4(!*6{{G!|19jQ5}_OP{4aU`Y(yr3ox^2Fto$;{?{GS}_J+ zZd6-Q(vc!Fij=Nq^Nu8==b0oUvVzlAMZzhS5tFnt0hXtN*2|qC=#C{w7p)2ou)M2M zCrZ&yG(x1>i&Rd?Ys%)ZAa2d-Y~U~rmbkTz!F6nbaP74C>|_ngQdw}X-}yEu=Lammrk%WIgJ5khAP*4 zrCjS(6V64buGcy&Aq7UMBs1+|qj7O|bdXN8GPwpw9vxr2yZhyr50~#g6ljeTglBH2 z9^T*DcQ}Oh{YS$HvA>T+ZF2My5f&4QSxGiz-+CR2OTr*l{q4K!5x?~#(!3$hr(8j$ zLLT2I48QeVOA?DIX~43XLA%s6v`f@>O$hycELg&C9V}~F&5V2k#l|sKxQe%8q%%oo z2y40uZ$zEdat!*#S2+nVMG%M-jIHv$tIIz#*vy5}74^mcklX&e|-LiC&4=dDJIC+*S-MEtIaY3t$-(c_gPku%reoQ!ZGg(e_T+ zEOmPAjLs*~w=Wnh8`xJemnfqHmO-%e){9pTRFtP3NGN1YWTkO{OW-#sGgGe`EQ=hDsL#o59-p&vzA3t8d|Cl!=I8l6og3XcroqdPR-1`8dyit}I zd}C0|O18V)qSvW7L^V@x-oL*Y@moJ8xD9zR?G?;`CyYcJNy%{b{wQfcgHE14`WUVZIk41J4lD(@ zQo{hCpdp|Y?UE8~odxC|=u9 z3=gL!oEam`)#hQf*nQW5hYMIXj|voWbz0fNVYS=2y*fQa^Z6YUJrJn&G#;FDJ2>v>Ghcbjx6w&?=dZ4eb)n*0{c8;L%+$SXL4>9_dh& zL*$%=TB#8yQN}3^gPKY@ku_IeC|mkaEc@7Dp$|(Imn{E3g>I6+RunDyb{FcoywmtF_A~a9S-CkD4gs zdi(a{`){rL&sRUQoVQCfV_J(EENOyBj9EDXV--rDWypdniJw`f-NjOxv>#MqCUn?I zCq$i4X%SvZre?NM<_wn3lp030FJH5G18V~tiC|IeVwGC!2$xOoyKUrb_E{<@Hr&mZ zPU@(mesg|QNcRu{czS+*adr3Q{?{*GUVZwKWffkM_I(~bhGayds;rS)F>-)AO7Lzt-s?RbFmMSXib};6L zKplhSz;7Ka%W93cS$r_V=H2;fu>sp>jY?5&uuM5|aSN85g_FP%7jM|drU`>3b1Njz zN>^#1~-kA;7W|CDqfh+68&1S!}$;tXdr1%z$MT)*rdzm&5w`QI~ge z$j>S!8{O*J+t=SprIXI_`OWM5FCV_O-~Vc`3=P_)Dz2klE+Dg&W!7U30Y%wJGBJU| zujn%(%!@&r5H_yx!4iRnXqV`O^`c#7+@*4cv>(lK0mdZ@ z-dv?nA1A#Du=J+OsiadgQyH_tQua6-1C|-WnFPyMLh1tkx*Q>xOn#P>ePH>n%z>qg z?8Zp-Y`k_!qRs=%2{=`>_p)GF%@k_c>OsEv^{9Sv+%?--icXi)?Zf)z{kw0K$|*W9 zU%mbC_0zY`hp*SycRgXR$c6%s64wgAw z1{99VwafO&@%`(olS&R1tz;Wu%uzj2A0-GmWne4mT!dARplmWCPjt` zaHQ1_miHwySh~qxoK(*z>R04zR9C@Cazd~lOsr1|B65IngZZqx_0;my0D^qqeX=4?NH`--X zMvpjHA{uAVE`4a1Sx=>!Q|!kLPC7X0>58mT3L_gV+h8deEZr$J2A08g=}rm;WmOhv z>|!;TUbbr|UygbQEraC=qTThmUY{l4QYkdi)Sa#jSY|uvV@6Yw)gjA%9ruCX`UaCMfThzOM#j1&fNHD{ECXPvfu-p? z%VwI^sEm+RooTDx^o~#8RBs0?gJ2oRW=y{rEK6?k04y&j8rS5T3@@`hqw%(*JWG)^ zL|WzRN5%4=r_JlLu1Tg;rO+rGo^|d%fBe<}->X;mAAbGz+qd4AKW=XZ?J|+TWtp*$ zUH*ZkNtqt7r2i(%V$M^o;dxSZB~VON(9DwA=5;mGCXGrzu)OEfx3ycHrz|WRGE=rtHp6@<@+V};LmiBf z>eXc9hJ2HKV0rw=^0-+3>#TWm-lZinp_W>u;3xY z?F}^(cAA-lip#Q%v4DLAE_!D3)|g8~tr=v=&tl-y&Jm2T6taskD@Ks_b1I+ENJJ@% z4u3vf%z3M|f@(W!gC$&Y2wQ?CSZfI>2c1m0C|(tqlqapmG0+(rveX|~9$xgC=f9mE zfn_S$IL+h>nfi6B`}+9$>dS|_GgOIcA6~tF`}XboPv5?x1N`G(-!zFq($sz^piiJ( zdf9~Gu#B6!0G3v;R0!57MBNsb+vk^pZX~W38wY3K{(L*)w|<*d*X0+PKwNFnH(%3+ z-}=5Mg+^2U`hVSk_XGG!7@wLFftVv{cdX{SVGlO>d3!i>fztd2%nd8FPs9~`DSQNn0OC64r>h)CfmVBExBc0Bqn{6irqh039 z%|hd(RQYz^y1nR<2sYP{{B(A8`0n>#zqQ*p7wGl+@&{b&4}SaW?vW+gXSoVXJf7bk zcZnejW8%m;Cwe!{B->{hw;{4)lw|-c^WIv$n6RC9Sj*AHVS==SC1*2OcEQqOu=J+Y zF|Z7G%df>i0MTP+5{JuV`{)wE)_h9}MO&D;C? z`ww4?f(d`2YDoeS*AB;iIH*s8rH|1KgKpfuvqUhZON@CWx5ppA@TO{3%B`b|Z{OaH z_^rRnC)VZtOmIwX)3?8+5ApeZZwiYEuP2KmORj6Q%RWmCzbkUTU4o@tGgxNmn#JoK zmjYf}OfRI%(^Qb8H715yk%TKD@F|PI66V@Nmbrv83zi@G%$vrmgor|TT!g0`5wQGJ z5W&(%9Zitx&2;mQd{^Kk6Y?)O>uC`z>xD|I*gP#)zFoBLF1rMhvy!!5?c(vnIiUjOn1zw&S24*&S}>V}#fw#xy_HMboB-#g=O5w&Je6MWt!P{7HFM!OudA>wL3 zt02*5&@THdef363vt4w-^72rn9H?%_*};+n%YtOE^rh8tu#EJ|Zv?+zg!Kr4!)2;- ze09{m`s?E4xP#I{jk6R|s@rdRC^z#8H51=lbZeIfr+4?iAk6OTH{;3!`&re>$xi2f zB%~Xj#(p|!bgbj{$dWR>vN}9|`1%6L8Xr#a22i zUx~$)&iqOT&lgv|&aZrpVb$k%AMbA7U0udL-rj%s^tgEU?h|qS=Kc(;@N{eAW(0mPSNHnW#r@^ghsXc)#qHS#;sT%hK=l7(*>~6X#24eO z{bwIPUGD8&eZ9DP|LN}j9r6Cd{pIJ2{?m77?}+pJ`!~d8|0`p+Yg?PKU++HM#y;M? zy^LL--HpDq@$*YpZ$DmqxO@KzTWjyj*_%f}Z|>jS5dA;<>&H(Y?yzuv_VMoGWVq0O zW%T*y)vX^E*Vl%Nckix=%lpsgZ?1+Ci7)qem&6@}Zd{&xfa-TAmsjU+UY~rr{cv@5 zIRNyqFnrtKKX>x}?&8zu4_6N_8r$$9_U`^u?BnP6@9`tTR=&hv`FKHmy!xaWuM)p~ z{$l)Gh>}`D+FK*5776t85gGjTmYzf%w`5B*9!EFC+pD+tAAURea(DIX^Zt)>|8Kth zbHr%^CkH3&dJ~TEB~(7jn=lh_3!wGzyF4Z2K%>F;%^u& z`ftC%_=@$lzxR%R=NpW+^mqQi!)|Brw*C)!^r!v&JB`2pJ;R;X-+z^BvxNH3 z|7%vHuuoS11)i{YLJ$g}{?q@4#W*yf{>y*OivJooocq z<2|Fx#&hcLOvd|-+s~i*w=FB*->3c`|1B$SKIk#tYupTt#&cz4I>mG2Mq)a}g#Y;e z`ronQ|4lx8c=%|%Zs;^_^iPxV+UUB6<%j>5@tMniK@$HyUihb&{sT<^A*O$ZX?5*~ zJ^$K@J~#&S*Ot#wl<^A=2&gZ)gw!W|$3Mg41|APFRet*L|GY>M@3H>j?^W_Yy#X&6 z@A>C=kMS-;)7>5M1xFO(pWwMZO=0~LpJQ6x8ouuY2mTYJZtK{P*eGxC-v1txar-xT{7>=pKg0B&WBM;Jt!_Vj z&e*pPK4@%I9q%P}Fs)!xFjX*}V)|E@{sB`AZ#>2H zuQ2_CF=4Cz1OC82;1~H13?>#6he^bn(Nn^svV=g#{0< zncIbfP}pPLTVI%rc%Q)F1N?)^9O>V za3mUwkBv`EPEF6u&do0@E-kODuB~ruZf)=E?mc_{V*e#!w)tW+D?3IZqWJ9UE+seu zV{>bJwCD_u&#yl-SzMusg^lNo6hG6^h@(W_0v|3-jj4nsz<#Ken zj9W2kEk0c%*%iFH{PN|CXf$eFUVbMpkIti3D2qj6a?D!BJsP$V(FkFcsZ!W#B_dHM zi@qUBgd8)Jg$!lwcAF&IAv}Z-=R9(Qvf}bH;yIMPcoANV%8SM5B8qqxvtcRwbd3mQ z#p2=%RKN&_rN!kp^5W<`YJL8EsH_;X7NfzTGPV@7N>n8J231gQslrfMz)*H@a6pm= zAv}bVm_6R0EWf0Rr2KIgd|S_cnGMNJ>F!B$}VnGd!!`o?gr<>@_ar#n=R(E znqO3(uHl@C#cXzd7u5;;L4JPml{`N>4@-M{k+H~_JSJsv4|^R{ID-6IOUWzorbzhJ z^S$u7DMQI)3!v#SlwDk0kmQ9A555H-!y|_;8K-u=Te>N=7X2a9zB3w+p{EMe+ z5QDLpPS0*{ulv1zZg%ljo*kWsrJbFjvh$(D_TZ=dgkPubK^nafai zb8|zIH$FW0b}@UrL0NKfwXbY*bEs@GS)z?0Je>}X zYx%VH%*ky&T|>C_c}<&MUtdP95j{PBEl-cmgW}d!WFj&lPly`sL95FYjF?2(Re}SW zITF0y+Y0u~@HLp215KNu3|%@TdGEr5YaO%483`ITU{M0i>vvxx^3sypRS>x zOjV~>R~Nl@FF8GbDNm2igW|@|#= zEOa`Mb^U0U%RtA<>Kd)h-?B&bJ<>gto)lE!7+2rVa zMA^#;@nw)7Dhri(kq`#TYQp|dnT4NSB|m@uOp>1+cyP>P_IQ(7_QmWpyGHW-;-Yih zFOO^f@QbYWVpXE&pRO@`Q?oB#j4v)uJ0&MIK6@^YkIw!4+FE2PG9^#(FL3vB9@ZaW zc{x&oy{IMPKi^sNS1iw2d1?kU1w+|yzx_s%zd7*Wn8xh!24&A?C;Q6g=ZDII&$8OH zMG-%sCu;;Kd-iO69-gYA)6`csIv-K?Y>I#8XNJngN(^rrDl1s_hRV!_GE`q9$-iuP zu#IE(c!RRt*>QFS+iZ5$j#Q_(>i6$v)!liX9DlmT0%g0q@mV;8@^&^pdn(6A=YD== zWw_0Dr}$kzs&n_Z*+hxvSvlfA-C6PHzUhmf#QJEmDPP&CTl40U;G3b_q&)oLa-RJP$+7%F4v@duhLM6t||$}E=oajRvDr0HOg zLmrBE+bPa#+w*plnR&V<7A{~n>qYDWXX0Gm@s{izojd8NsmMZPL0+Kead+B67H7ml z%ljo8%GgJot+grVif_&$FN}dE_o&PSQ6^)r`*=g7>g>2^nSe6CpK&{7_okDd)i!6X ztUx|pGXZ6@vu=zmFf8M7k2hrZ=-f$9ObnIHF3_`1*HD>Ka?zeZ#MxMza4rRAhRXP# zlu?he@C?eP$N9c8uXm`7o7Og`MYBLXT{8t`)6;IRmuJk3udi%$KB8=Tfu44HhRXDk zhxQGX%>|~0%0x2$K+_OK8Au;*vMf)=IeCmENw=GJ+GXduotaeECwalbK3y{tEyX7% zoo?if3Ut63ugT8Qxt$yv!v))tyhKjoZudoGJK7*DuY6=66tUM<#_Thp30Yo>fu{7R zjDRA-XrPZbC>xJ6atz9x&Y?1TTwNb$EEeMGXB z82$Zu%@UO15*RNa#Xn+)GW+O!L|J@^jN7qc`rE8jijcTK?kh7cM+e)?PDCG+^-npB z6OPB5Y_mn9ge`(D8eFSdkwCO;C895vu?}N!Pu8r&E5;=-UO*2}%o;7p*3mhxb|aCM z$cnr|L~*yqVm52UM#z;?jKJ2kmX;z`T#wr172`tQ`I9o&qbxjwvT&5@E0d(5GAjIX zIc#zuJL1WjH7E;*kw!of4q~jYY;-=NEWAR5tz$!FjnWt~HdGdfg@(%9kIHCBp?yCq z3r0=05Vn~pQW9ba7Oke>%f%q;a`>LE*?_WOP=a|W<)S8}XhD`n=T-v0rolD~t`I@% z#86qQG(k*^MXZITkktq8g26WPQsD=h#!i+A{iw|0@Q2Ng07+3iZxSV3HAt-g#k^ne zxI$0Y?2OmK*qQOX+2k=ziQ$|qj?N`25QwZr*5ozHkGnK8=8z%|O74|rsHusFlv@Z$ zt_hz*UJHSy|0iX!pOtyT=vRX>jvFd7dtc0ZEhr@Ubj===dA%aX2_~Ourmt*tKBCOK zMtLO^x9BT7EX`3kz33}*Ou$dKuPpeejDsj{;%8;ayf$zmxnZ&P;!eCWo}xuIG-5@7T?^{HHpba(CI`83WqslUf_Z$ znH!ypCMes8AmY>H#9dsQaETF@Nxm+vnHFXuB9w{d8HY>WFqB0fm5C4~F8!>`9(1`} zP)3phBg)JqlHZ<9V)q?bdb&o3GCOMfkuD)3EHOb{W=7|t$>kaJ+ftI`IX zUn8PE2TP1O+fZ5jCuM6tE3?9`%TPuTLuEGWvq>uo(X2gPlY%m<6+Pu1AttQ!m5t6v zlvy`SR&i^n>`iIQv@%pi&B;S$Pb67sxhRVb(R^*=#m3=5ZXE&B2yfOm^=_O&PZ2Bi<`#&q={gJ*h7S?=yWgdPv z&g0~C|LK|%l)>kRWh3&Gywz7WIv-KSZy|MTf2izBX`kI1D&v;SLuIpO?*mQavdNzK zQJK%jd1F4AG~;F?IGKoYK5je8&CJ9SPuEmtJ6?_>%;uPF#DkEWm6> z8Pq4zpRTDv8N(2QFlL*x?GfJRGBG;mkp3}L#_X6GE-_U0XDMOcgRW5M^K?xM%4nLhSf(5cj^`AVQKRz_W%Q1j=2G94 zrOeOQ2FmPf)KJ;7;C`TKT%NlNKPn3ZNcT)YAO%5|T_#301(^uB86?-1CJIm2bmn_* zxQWX0jBClYZ*uR+rqMYg2ts5pvM28eB<@URF2FHM%-)2+I5&uZyypVV z)t{7AepW`f=laTQwxO~Zu^A+`RwgP>*Yuzae~TU}+q5_zX!;?_-}zBlC}eW3gjmvI zak+eES~h#>2@`s8o^Q-_o~}7vJan2&a3@&tZTNJvb4xal&S?bEMxIBW%g-$)-08|f zh>nCTpjol#I}v(ojHSanOh|r?n!xh*Ps$E|R>nHl`pP_>p|UA<-OKK8%^W^ma}H%J zYxa27d|SR$U)ktc=WHqf>2%4(L>P+4?`8!Fpd9YoKhcuk8DrwouflvetKHt-i9g z7)4L-iBM((&1blT9QGjhm0ka+ED{mydl3qkmw`aYLdq5=IVY?-h0NZ<_0u)4mXGa% zfT;An&|WBKv9HON(K(61qR4(^U*1Q6tt^neCF43%#_y~r=blGMC?jW|ixGL>Q1;?c znbCP1ef6_4i~V_ofHGY6;6h)v<78mfZYexpdi8Y88z{3_@K*fHBL&&M0x$8AIjk9p zp)$+9Y#|T7D?5}6`w?;_Mv#m9(oosUpOn4(S($9#?<+GdPW#H1Fa#}^_Lts0UGomg za9JNQ{(Pj=*EBjGQHISXlgHnc9peiJ%9i)7LuDv4rIIDQ4dd6i=qDqpF{)mzqT66U zQbmpf9PaE(=q4~m$1z5Z(Q`ah)wn(Wbd8Lj2y`jnJMC3@e<_at%jldmUXbnb($Z2K zck=jniHs~E#HjQ%2OjXqsti!MSL`WUR%B9ujAhO);wX}n;w+Mq0o`*&qZDJI)u zwt+I+zI6!~|4Xt(vc4b-7K^dX`pRBVMm?uAls%7R!^AVWSdt87i!YwN$Y&ReFLqx* z`LnPTe!9jHogFBXq^!KZ(AP9FCuK>J9Fk*cX(5U`d3b1Sv**tZWsdL4o=Z#U4uCQd z%5oOryRv6gHl0*eDBFvq!^EzfFNu9+&vu_>(~J3M+s|MSx*L>&i%-@#qLUBGl7B;) zi1P9e%6h#YmHlqev^^J>cuHKth?w+@%m`*f8OraHkzG?-Q(wH0+Cp(=5 zGP1C@mnevFop8Omn2 z*S9rwHod*Nola}(Uf%n3jVBx)DC7AT^7EO#vXMD0^E~I_JPS)RVcf}9%TTtnV<_`L z*_Xbu9c}^DSfGr7GTn^J$>BEJWYrhD>+4Xq5qjaLR^?=g=_}h@-Be%9CN~#1lSy^e z&AVrxtnq~X56X7`hBC&(d{@?J{HW~HKpFlV%Phz&EpC$uMB+o4XwY0YzkIg2xG2lP zwZJp4X&EKg={by6Pp>bpzkD{Wt7@zTH{lXK?9GvLt}S|wFw=AJM}{&5`Ew7-R?RQA*HPk8 z4z2{Yz5h>p=N{uma_9H%=BxQCzMEvThve{04$0wgW+;lHMl-Xc(P(zIPhQI#SyrUg z)6zyOZKUyfZ8LYmU64xvpK}2&jxV`5n@fC;#FylP`y)Ys#L4-P3y=VdoD=wuB&Xzz zAiy0E1GxuqHg@yjGgib6i6bg)G+nJ?=x6V%MQUgx7 z+^Kg?ER|1p=F#rwL>)42Hb=__LFQ+EmurCyOW7I|ow1MM^hJ}jMz@s3OWfOQi1|jp zzpdApR#W8r!-m*U`cgv`Zs5rY4JLT~OX5)Q*S?I*#ez>bBBz)ZK;}aa3_^ho@@dT88T)Y*Bp2mk4gFi=C2numL^M$B z?&u9xY-GH51~svk>B==c*A8EV0LajW#U`spJJnne&+1NBlxjqtW2<_AlU32$v07NI zrmCx}ojH%-Da_;)({76_cMKUWU)f|^TZhSR8DzNZ7!A~zE9C2lecaz?)mb^dFpo!f4K!Y7ju^K|O1OMg zs&%zAUgG8^k+s`YXC>6x4Nle$;Zkj=#ymvU^WZSUT$|;1vw#zAkQI}Ku$(2b3Mb2! zn+1?XK-SE1vgw>sI$)8da7mNMoN>@3t8~>gUgG+CMa)-PEtAas`btHtz;EL6cBsNU z%(GyT;RlL#kV*8(f=gp8RZOCrjuczcSp~K_H=mlX=5kB(!TBY)bC3QY|7oh=XWmgbQmGkfrdl$#(S?8Y!s;nToWUL@{5~(-gZt9M0+@Co3rBbXdmq zq*Okc_6HJdQI8T?wvZ^4(^-7?3yX{8gy0osb84x$LFV;_*-C~pIpQFi%tUL^TBVyw z;U%uEQJpm!L{DrPodKSkZH-3AAJXO^f)J*i_Oia zviR=LbvpAg$tz`Na%w5XBJ&?Z7O%x^vhnyZ*%gBf&*oO*=sGazs*5c@zFFvOoYrP8 zQ;2zRO&-!T9z%CgY(Y#+7jbx+LRT6lKqftrBmuj^=z0DeJO}gAKi6yO;EEO}!61q8YRmDayZIhvGbwtc$ zK$eL|JfR?K>I#viaIBb%q?%bF+id30#gun8rT8WZHCLKeTX=QA(!Qe32YX(`SR8uo07FNZwSPAEdjQ;W|E$#P~ zpp0WlTxrH*K&raRZFR~AlteYi_Xep0etAQ+zhYn$@ zQr0!YqocQ4PokU%B+BI!JbDPad@83MYglA5>qR-4BPKGft$_@g(U^$420>OVT4b+s zvZ7XOX&T7#;=Bl@Y?Hx!i=lQKWYH)sKAYF`M8>VT7@NnbEL1tR#5k?xnU0)ptZk6N zvL8u?6JE4Eu*iBKvB=OeO@QG?o#7wNwu>xQ6bdBciA#|6X;hg&*jzNAGd&M5wMMUrtK|^Lge?jjtqJ&2W zDgJw~>MT|QnHDSCWZ`1iog54po_2==-l)Xp^b#ivOXy}Vf=9=P(OO)JN8@M(K9$pp ztXO2pW5`Oql1+xzXotx546;(bUo64!SA;oHO;l~NU@7R$j7A^}Fs~GKvz%TbvM_GG z$K!l+K_!^W!EMEpvpN09&>)M)GprlpwdIIocy3^&U+L#D3NI0DzCfmFRA+tE*)Av3 zD)|-2BbKV+#^_9{PGmTN67&9wFQBcjGZvOZ0e4(xS-qygyrS1KKc0Y-^{f7D)+Z}? zDAG*MN_Y%1iAl+%#@c~!pNY;m!IH_^N^M2!2EurWjfN)XHC268@3WPD$+gqgM6IOO zv|**DF+8|8Cn~9?P3Eh3LdC5ukl~q6?s$Nub<6-{KJ;l93Z{LU4-J9>nPg@*XC=ID zkrj_2YpgVEvKkiINw#f}HMCKsp|NyJ%8JSKf=%YBxuTWbU68ra2YEciQhJNX@O(Xw zE9y^qiXJow3aN@Zn==S+8Dxr5VQrb$nIldxMQIIM1Fb8E@e(T)BFki`&IYKnEl!qc zY2#W;!+8kE;@OUaOpMob9b~wf$BX?Z$at#=9NdWL3e{5rnTTfyfNVNv5Z<=PYOLiY zGH0AJ$<(elj2GH3sbXGL6qC%ei4RgsN=seCkq6G*+-Zx9&N}n1hNQGEUSupN1r!+# z0TOy!g|hUy;x0+?p>>-pk&xnAMw`tU26sW`X6{S|jTyb@>l0)Laf)R!?O}TevLIeI z*+qSY4Oc1#Sw(59n~k=L^IdmJjOG@p&N!Laa;x1-mp~?WSfm zJr;8(^J;!JXB4ChmmpKsE^ARQq?p@5jOK%CchnuJU3U;Kw5*~!OD2hI1hRFivr4k7 zZne4~>w%1+{eeY>Gi0rQ^(x53fEGw9ETZ=~nV<+>4UcDRqkWK9DXK-!OwK6yszug6 zhO9U0*<|_rVX`%Ytfy|bdMcaiql@s++%l2jQk9sO+H!Gl;|9ZtwpHyv(a<1J;oI1137-G_HF0$Nh1pEBWz4o3o6V&&1=e z=>s+%)O_OxE_&4B{mf3gpJ9a+Z%hmnR&6qOH&hzky$dprjLTXY3+gLGCgSWmR1$;k zKDM|aYz`~4IcxsQ23a1eupw|VN1Vo0?-g`Xo9POEyhK$cvS^gZ)<8DmWYLw(UUvm# z1CYsu6E>N*%W7-)?}N;T(@`bQ{Q7{C;q02#M8B5|I8LeaH9FruoU`V?YLTrSLpDG+ zofcUpbC_&skPR|=caUN8LpdUP=T8zDE{TeHxfgA0K6=EUw7m`76Ucn}P=T$cv+HOB zjnc`0M~jVOV>V~qcLQWHlZ(YoF#CphVwxk)vSM+#K3rGOb{;QLQ4}$+Fm_2Fvh`uZ zKd339(tt(3&>JeOJOY`!e99&Z^y2NUx8DX?(A$pU*wUkqI9Z?+h_}(3%{buk#7nJW zOPI-7_uaC{wph)@$s93}jn+pXbNTQRlW5kHS3)6+Y=x7BM#`(b5y-~a7)#~THd&~z z^mZl_kcGXycm`+j`k2V1P%WhNBv)uXyscBws^v+28Qkd;b1N0OCF=CMGhzytB#XQc&`g=s?iMabo6{p$yS`tp!%^EDzcZ+Nj zS9CIsZlyb$v*o!DvH%OfCLLL#iTg)c|fy?@cZH-#N zUL`3eTY1 zWL`9M(1ua5MlzOLP&_C(ERHV`nJXoYGg^lIwJnfc1X*ps$)LoQ0XpKhg(QMA1NNW?PqV4t_kcn$Vb`Tekzq_})2Qm>ao9wE- z23y@V$hy*Q^o{Xulr8RoC%pIy)fp$#*4le-aI!gJFP|T?kiJJ`OdD(MJr>fgXrWMh zJnoKXb99TW+kFGKDRU-ATwvYqp1!9?yExaxRZdBwIuisUgZ`%0(qgnL>_zXd?SV`O zPh|1OY_j}XSAW3C3W5$J&X}%qGN|z`4#M+S;gzA7yK8JF$3gbs7&0Ay78y>o50RmT zIg#nn2e|)(O>B>jo6bcMXMD``=nNix(#4>TCiCRc=QlpKv4oLJB+}`2^O+p-=(x_n zJ^H-Upc`qvQgA(@YkBmp)1!;rR>P~qqsMSbWMX^tb+XkUi<%xCWUoxR0zCSh;n53c zUOA21&0kq0kzR;&7SBxQkVnTF;2yo;H0VZ}+8*F~#DPaQ$qbJ!SY(lII1&Mw?a?_I z&gY}1M`!Tpldc4ho-;i9-07E3b#NVhDT2u9zA#R+=+$r=U-Ylg(w@WFPxmt zA&>4dJ$lY*(2cYUKER!HA9(b()1$jX6F6abb$E0?Jo?1;=$xzpGSj1n;L#^-FFbm} z@aWkSFD*CEo!e-hM3nZIntOg-v#T3R&9i4uH%}r;LDkLVkViMkPCf_O#iPmK(LM0!6WgP2 zkru1v#iZ%c1MujRmJE*`F+6&D`OISdrI$|CPasM_)h$owkVnV9j(ha9)1Vt^G~jg0 z8Tr7Yx11hb4ou*L;nm^MUGV4=+oN+bTq;YN9z6h$PGlQ;*zoA-rPH1I#>R>I2}Cj9 zTzzRehdjDTwwyl7qg!OAN9SagN4LnxqvH$DCbmbn$xM$PfJdLS0`Ta5!=tAbPd2M( z&Ma3~5k)-N>f&?`sRT|2kDfZ33|Ax$Ji3EStpvyk* zN1s5?p4NSaM^AK4)XS$&FO`=Og0cu|2v?W_oll zJo-M!R&|M!RU_5TTw!&!T3AHn5yFL;9P;QUS?)Q=wvHx)M-RZGPi&9Q$u!iN>CwIL z=x^2Hu+?rNn=6OQ3%R-F<@vb|B9|1L%^{D@$>7n$M|pIdla%5I9-Wg}9zE{;Jg+nI z=x8l(ka3UB$yAV;9^DO(e!oIwUc;k@%grpv3Pgsx&;3MpIEOqsew}3aQ(>n;H_}0@ zO(L^Bdd2C{n$01P&dK1>{YQCpnAe(O+v+t=W_fhQ{fLv1M~}jz zPi&8FlbIgf4Uc{cWF4dJL3YkRHy_J(I;m_Ek>nL;bI7BcWd7$M8&8qFWst$6!ve91 z?a}whqbqq)Gd;QlkN$co1CJgxJi0Geh@=-5VrlgGf&0;gbZ$C_JbG9(Ji5D z1`1^wnFEhra(eWPbRSL_UL77i36DOpJvt{#g3R>j5xHoW;2qi zBJu{@vpM9^IT<{<=O~X3C)`qPTRr4tmPc2mH#ix2bOj!LVtaI(%=G9IJo;sj)lI{n z_N24^RJ|TdRT0TB{4+V^(M>YxImiZ6WOofRc=Qaebxsa@^fCpvv^h-qz9zDZt zb;^}W`x4cvKT$>$z+K-nIpooC0>(YM%W2S!bcD{Qxve%mdeQ08HQ^3-#N^Rcc=X9( zkB*y_^QK1^;L$IFtZW*7+>cHky-b1bM-R~b=!bL2qnl*1>nM+Ik(nNylUW{J6K-%a z%cD;Ydvqc*Jvx-Lc%hh|_ULHKi+j$U9{nJPJUS=CWf1XbvO^x-K}H_^b%V_G=o8zc zUm%ap^3eT;N5_Zb@CthG+Pj0!%50A=;XZRbE5aL|L&QD$bdJ-bOGkP1XtdNX9e8w3W_k3Ic!@lE zo;*5wyI>RBqrXZXJ&+emrbl<-hOB9;{ciZ4U^W{F<`5~c)iXKd(G#XecRLNb zk;cOyB?O$z;@->Cs*A=xbUHwi*+VNB5#{3V$jU zMSm`IKe{%XLmr)z!J~VR^62q+ZBRS#=$y>*=ry`Ci@Z8KdJ7(%lW~vE$-E#lJ-P=T zeWVf@oUlPAGLXfI40oUBiR^F=dGr*mO+~4Bod(@Vr?57O%=YNG)A7Kg*E}TbF$|C1 zf=9lDWNwg|9v%0tsw=QNF@44G=mF84^u%JS zCxs}lRy+_@hjYlIb29kyfYYEGX(DTlTDGk&ax%-Kx9F}(kda64!lO@Yk8YEh9vvU7 z^+6WV2Zl!v2wue#iD;e_qM}*@`cw{ibd#+A9Ax<^GTdoOWbo)cc=UCv&Wirq{b9(`zd^pGTHT;Xuhl|WR|8o2FtDu+CJ+Vtolr$IN;X|&g9kJ|?xojYO6 zqqluqaKiBF@aTPb^oi}!Ihg=5)1&*~(c76WJo?!1=*%6`aH9Yk3?f3uKlFtUD1!=u-f9z6QG;nAZw z!4`bJh7dv2DE0(-I)^-Z*7WF6r$IN;S+sHKt@n=c=smh~p1e9d`Vby{VtaH>=E{o= z)1&+0(Murn=$nQ|j|So;0apWs2%=W8F9fD@$fKKNThXIDxCyf0=y|0NkG^eq^ms_ANiG*!k|1iA22yA`hdeqbgGY}aP1fJ+A9!>J z+2*iMJv5M4hesd7qfcy)ewjQv?ly0k9z6(;t|ig5N8d3#dXi-t*chWF38HRg=th4N zhjYlI=S+{DbQ*LcokP2zm8})qR!7l2#(_s)pCwaR=<)av9{qyh(a{l4PjdhPO|mP`K_*X;p_d*agGb+nN1xapos$JoXQoFF!=s1dBiQPThDTR3 zl@;_4u!+aj)BWgMfy{Ic*=kM(kFFl&(KT(fJ38>_oXqm*Bi{A^UL78N2Ogc1agWZ) z!XPs}dITO_juP2xhDTR3wE@Vshzxh1Zxh+!93m^w+HAFMs7`}!qzhP^L}q(*oHrhL z^iiY+^NL}3^c{HgiS5y^k{AV9*YxNh+wn%n@aUHfkFKe$5gseN6GHQU+>gE+Qm1ps zqZjB@6dql38gwIFK>M@t-uS?yn`DMZA9IfmGI;b|c=UIHxQ0YKYu{LIML$|OWpuOnMf29 zzL%GT3ttt5B+^fj{#m3mNPidU_mJNBE@u4I^(X)2z3)Ex<=^_fCtv*+-~Pgv|LK3& z|I)Ai=EI+U_n+T;@|Ayl>+?VROV{@Q%2zKx_{lGS;_er|^s$?t`RP}#K74ZillMM< z_7k`EH!oa!u(o&k?x~&EZVu0W?CR>qE1z6mJO7E^sk0Zl!_B>g)iXQI{;9L|-f*MZ z8LZKx4d$D@VX@v_%~u!tbLD0)H(&3lh3Y~kUv8$g`MQ!TR#R%eoXpJ4C(^k>9Q|0v zQdupU#QjDICClQe4DM!0DIK!`>C81M%}OvZqW0Uri@ zxH#vN13@n`ycnQ|H}KUb3NG9>?7?GHeX`r*54b(Skc>{*WPc^)un!|zPwVa zuMS!ZCx)$slcRR$)VSR_z1Cekv))_U*z7I6wAEieyS=h{Zf9ln{O;hy%X@* zKXzes>SM2tPJR61`1B`U8=w9&m&T_*d3o*3r>?AT{MoDP8`oaneChg)&6jT8+I;Eu zovpKEtGA9&-3Z6R}!?=u)7s^6YSVT#hE{CDEFc3B{Pnt^s;|9XEa0w-|!W^bs z#JEesWBc>0qY#>3oU;(k0nZOIKEWC2a}9oLT6(AXA2r_k+$3L8W7;{8TGM{mcqelX z%U|HNQ?aK%ZamGG{^@gRdGov`sV=ED7tOK9kEi)s%R`@A<~2`sPqn|n>+)ISQ+y2> z%S+7kxisxIUt5 zZu*WpzvuMZwzezQwuOFg)^c0#FWU6h`nKM!^=B^#1u-bM|^TZal4{-WRPTi?Iq-f8)*IE*SCU)1TJmz%!l&fn(`y4*i% z)Bm8$O}}w#`$Eh9qE7$Aa?|$B+CI`eXxnhq_QCp{SnJ!Ww;z@1e^_qgD0J{cFZYki z^wZ}XAGW?MZrV3l`zPoA;6jOlGu;?o=z_}?OUz=>x(=+H4U&D2%xC}Pt!a7 zxe#a^y;Ghwj3ghn-mNk;Y?ZO55!|BekwSj2D;)5#;D@Svnum;lwq!yGfj&2YfICgm zd7r`K$2*?WB!m&@bI{~WKu^5_o{`7@s5wOup@*=JZ~@_Ugm)31A`}7qI>NgMPbuI- zo?=E%@u5#Kps?}YzmkJr6H$nh(5DgEae=6a^teEjv~S~6PN;{r`j ze+`5V!ZN~1gmr`+VdE$NwH*AbfR#`!Zd8$1z;lKKKV}z1Wrk6KxbcH;tP?n}qzjvP z1TenzDlV;P{BlwrC!IyUW5ZMW_=z{2gyCV;LQSaSW1B)tSios`N9f|DtS2l9eS*M4 zX+XgLtg4~`qq;Vp{u?>?Ga}WAwfxp{(wd{SOly+XF0DaYdohGKLJ~ni$RMZ)8bThS zh)_bPAk+}3K3WKEgf0TDc|77vSV0&d3=u{MV}vz?bz$S5eUqSw_QL|c9em|m@3d6T z;QTVs7r^-?IBJ2dg{1{OypS8;`Yk#5-)FvU)(nrD*|Tadfe)Y>#AASXEvE5KHJL@A z+RPzPjn0{YYPNt-M3^@N)iQ;$8K}l7RLwxOUq_%d&_tlMuz)~og1(`&HWm?RjVvM1 zT3Hr0zVUD6pa*T6(Dr2GJ*3M_Kszw{L*HLUVrE#__{+a72mhs5#4HG(7K^?pRG-!+ zfz}cIz5l@nAAAqtPZ0hO!v9A2eT4ss@YH;#ValiRRF2BibTmE9hpL_COY^7Cq0ghw zEh6wgtiU_?R(}a!hPN@n|G*dNFCm;V1EndC#!(q6i*NVFd;d-j{*>SK{8pLCtv3K8KG-2{#o8)AamLbWwp23s@OXBo8{c zwZ~%~Zm&PcLiYG4Puyr%g`25YYXOVaE`u+P4Z(iSj z_=qyjo)v_>t|WY;DjhSQyEF5-J3Sv{So4u<$Ia)nGxPcE^n8$E&F8|g^VxblGo!7? z({rL6niXHRuN*(Gd$aSpH#0Bf*z@`h&1#$d!8n?9c z=Iu8hKKk6Xx9{ElEY-Hbv-j+B*R68<&n|~rH|F;X&n}0mFv@-N+2!`Fa)0pba;Oet ze#yo&m-h{;-1yn$?px(!t=-LcBKo6lU{TUNO? z%56OTk8*G$i{pcAmUaq!lZQ9j>hYs0ddKb}7QlE{z=vI>KZreu--{i0Q1H?;H08#x z|Bf7-ryV%|!wkcejSZ(H(6bUSL&Qwj_m&(L3KfLE@+srr6f}eJ$e5Z;8ZK_pO6*hkHKgmI6 z4e4uHAg+o$EL5y}h(FxOVOF-Ft6d+yC5Kx3ArMaOWYu zm4fg^Y|GXcBmq4t(eKnz{shwZuRnf#cmgW_7Ruj3m?{4jHmJ8}%fEYM`IFbKz4h?k zgZd2n<8-oppZ3Cv{>+D9<;ouBdW8a6IB4u6`l{41E2 zK9Bx>1L>c~p7L)Z{4IoEK=|7ThnBUE-3M51U4QfTgZ=CGojAn*MU&-i%JUwv z?K(trXW`@fCvU%V^Y&Y`3h^=g&yD)}O{Ct%_`l1`EG^xC_-X8xZ$EnU@DZQ)A7b8L zM>+Z%n&p4-pnU)S?FXOUziUo_GPDjV2sCf{BQE0kdkEG#{rgCN4dIs%ei;F5_P3Cx z*~7H=&FOyypHI{O3W9U`U&Zi0K=_9URQ^4bqra~s{dMI18p1ykag_C6<)AxyLPGNQ zko@F275c#a$D`QyM7;k|qwz=X4+QahvC$vnosY#~<0$YxmHYl6%HRLAt9_pjS1QK4 z*8Ni&em^?k!|w-1?+Y8>{%_b$w1ka!e^(B=p7ya_{cWT~kFfDAyi0!_2!DVC`!dk} g27_wN4QeNqdATA=$L*bz3H6I X3&*wFeZ-4{2ov8|MTa!<81EM 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%0AF<@j`2;ya6IFn1 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

    V|hn@D2rd$t-&)&<<6Q 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 literal 0 HcmV?d00001 diff --git a/demo/js/easyplayer-pro-multi.js b/vue-demo/js/easyplayer-pro-multi.js similarity index 100% rename from demo/js/easyplayer-pro-multi.js rename to vue-demo/js/easyplayer-pro-multi.js diff --git a/demo/js/easyplayer-pro-talk.js b/vue-demo/js/easyplayer-pro-talk.js similarity index 100% rename from demo/js/easyplayer-pro-talk.js rename to vue-demo/js/easyplayer-pro-talk.js diff --git a/demo/js/easyplayer-pro.js b/vue-demo/js/easyplayer-pro.js similarity index 100% rename from demo/js/easyplayer-pro.js rename to vue-demo/js/easyplayer-pro.js diff --git a/demo/screen.html b/vue-demo/screen.html similarity index 100% rename from demo/screen.html rename to vue-demo/screen.html

    kG!UT)q+f#F#D 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 * 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
    S%p3T;^J%wGCswlQa0q=WbC&<>j$6L<`1aEz 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:data}));var fs=require("fs");Object.assign(global,{self:global,require:require,Module:Module,location:{href:__filename},Worker:nodeWorkerThreads.Worker,importScripts:f=>(0,eval)(fs.readFileSync(f,"utf8")+"//# sourceURL="+f),postMessage:msg=>parentPort.postMessage(msg),performance:global.performance||{now:Date.now}})}var initializedJS=false;function threadPrintErr(){var text=Array.prototype.slice.call(arguments).join(" ");if(ENVIRONMENT_IS_NODE){fs.writeSync(2,text+"\n");return}console.error(text)}function threadAlert(){var text=Array.prototype.slice.call(arguments).join(" ");postMessage({cmd:"alert",text:text,threadId:Module["_pthread_self"]()})}var err=threadPrintErr;self.alert=threadAlert;Module["instantiateWasm"]=(info,receiveInstance)=>{var module=Module["wasmModule"];Module["wasmModule"]=null;var instance=new WebAssembly.Instance(module,info);return receiveInstance(instance)};self.onunhandledrejection=e=>{throw e.reason||e};function handleMessage(e){try{if(e.data.cmd==="load"){let messageQueue=[];self.onmessage=e=>messageQueue.push(e);self.startWorker=instance=>{Module=instance;postMessage({"cmd":"loaded"});for(let msg of messageQueue){handleMessage(msg)}self.onmessage=handleMessage};Module["wasmModule"]=e.data.wasmModule;for(const handler of e.data.handlers){Module[handler]=(...args)=>{postMessage({cmd:"callHandler",handler:handler,args:args})}}Module["wasmMemory"]=e.data.wasmMemory;Module["buffer"]=Module["wasmMemory"].buffer;Module["ENVIRONMENT_IS_PTHREAD"]=true;(e.data.urlOrBlob?import(e.data.urlOrBlob):import("./decoder-pro-simd-mt-worker.js")).then(exports=>exports.default(Module))}else if(e.data.cmd==="run"){Module["__emscripten_thread_init"](e.data.pthread_ptr,0,0,1);Module["__emscripten_thread_mailbox_await"](e.data.pthread_ptr);Module["establishStackSpace"]();Module["PThread"].receiveObjectTransfer(e.data);Module["PThread"].threadInitTLS();if(!initializedJS){Module["__embind_initialize_bindings"]();initializedJS=true}try{Module["invokeEntryPoint"](e.data.start_routine,e.data.arg)}catch(ex){if(ex!="unwind"){throw ex}}}else if(e.data.cmd==="cancel"){if(Module["_pthread_self"]()){Module["__emscripten_thread_exit"](-1)}}else if(e.data.target==="setimmediate"){}else if(e.data.cmd==="checkMailbox"){if(initializedJS){Module["checkMailbox"]()}}else if(e.data.cmd){err(`worker.js received unknown command ${e.data.cmd}`);err(e.data)}}catch(ex){if(Module["__emscripten_thread_crashed"]){Module["__emscripten_thread_crashed"]()}throw ex}}self.onmessage=handleMessage; diff --git a/demo/js/decoder-pro-simd-mt.js b/vue-demo/js/decoder-pro-simd-mt.js similarity index 100% rename from demo/js/decoder-pro-simd-mt.js rename to vue-demo/js/decoder-pro-simd-mt.js diff --git a/demo/js/decoder-pro-simd.js b/vue-demo/js/decoder-pro-simd.js similarity index 100% rename from demo/js/decoder-pro-simd.js rename to vue-demo/js/decoder-pro-simd.js diff --git a/vue-demo/js/decoder-pro-simd.wasm b/vue-demo/js/decoder-pro-simd.wasm new file mode 100644 index 0000000000000000000000000000000000000000..4e43c94690ee1eeadbfef9f29dc22fb2c1adac5f GIT binary patch literal 1298433 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 z zvA0eDK^jC_CSV^Mo6hc?GoEdTk$SM7N~oCP#=zmyZ_^Sx+Lnu@wibzG6STUJt@l_> zoQVm5M8*6|ub>e*qHWlsU-)h?n~x}TbA?1WAWqdEgdDv;2#M+p(&!X^e9FWI?@A<4 z7H#K$`Rkz-g>Pj`Rw?~MsWD3NN2&PiJR35$cE63pU=~C9KlrX5y7HCnoB{j@1}Ue1 zD2FE~k5+CWe-l}TMCn!530(`-HC@zTw>6NtO=kWEx@P@YIZM%x4{c8R78XzeiB;;d zzKL63twU-JiSKHyNdf~XZFEI*HadCm11kdsM@t_2pzzJDJT<-M6vztPunJf$JPv?| z<`|t+BqF^gH>>JRG>11rKX6Whk>zp5CM{nAn1 z`mrp|e;+I)-cngO%9|(H+Qe)GBt@BnR}el&hvhKH znH;`-lnEbK;&%>@hi1K0X2h#o!kTxX$b5cPpNGmcxD2oOzPWrL;~R&^YbFvB3&be` zs=ttKRNvI82`0i#40LK^*{RoxPPGO*^`>9G8sR>-8#4)G{nWBpgdyW)LODD5t`xJg4(bFyF;UKr z#PaR_bixZQD-5<2h1XMf1XL&sk62*}czmQEMMmTn4xDM18LvDegnFEF(9r;`>DTKs_Fs5^-u}NR2EuO7O8&!m+V{8VibzgAER5P}IAZ z4xH92y=@B-S%57hmLH=`VI_s;&7wulokIH(0P?jc@ZS(0xAX%4HN9Ii`Gz$io}fF$ zz;1(wp)YqqVRlXn8n=GirY@nuR#~MYKJ}+`l)GnoYmM3+SC^@FDaWmL9cTfFUmP2i z-d|I#60>bZ81n5Z$|Ln#UOq9R6^V-Z8^fjlqdhI1f?638)*u*$ixVYwZ0G?;F4QHp z+R)9ohRIWk%?!(^6<3Ovlfd3U4IaJAnl|-nim3^OEEk3O8a7dbQ7gr7E*FJ%jU_ek zvA|R^a=PqOOfIh%wcz41W6rY zP3&y12la|_^q~KG2$Yln`w+m~s`DM(uu2`_?5Wg{bZJ_Y-IOhN@-huyfx4w^--0_J zygra5pTsaCf9;>?jwd*8BF1#{$8Z?x8c!VM^pD_DQ`&Ry5{F`f*bXjss68m

  • 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 Qn2SMl~Jwh+6gjklCWP1=yvS{Psr|ZC5T>I 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 literal 0 HcmV?d00001 diff --git a/vue-demo/js/decoder-pro-mt-worker.worker.js b/vue-demo/js/decoder-pro-mt-worker.worker.js new file mode 100644 index 0000000..857c73b --- /dev/null +++ b/vue-demo/js/decoder-pro-mt-worker.worker.js @@ -0,0 +1 @@ +"use strict";var Module={};var ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string";if(ENVIRONMENT_IS_NODE){var nodeWorkerThreads=require("worker_threads");var parentPort=nodeWorkerThreads.parentPort;parentPort.on("message",data=>onmessage({data:data}));var fs=require("fs");Object.assign(global,{self:global,require:require,Module:Module,location:{href:__filename},Worker:nodeWorkerThreads.Worker,importScripts:function(f){(0,eval)(fs.readFileSync(f,"utf8"))},postMessage:function(msg){parentPort.postMessage(msg)},performance:global.performance||{now:function(){return Date.now()}}})}var initializedJS=false;var pendingNotifiedProxyingQueues=[];function threadPrintErr(){var text=Array.prototype.slice.call(arguments).join(" ");if(ENVIRONMENT_IS_NODE){fs.writeSync(2,text+"\n");return}console.error(text)}function threadAlert(){var text=Array.prototype.slice.call(arguments).join(" ");postMessage({cmd:"alert",text:text,threadId:Module["_pthread_self"]()})}var err=threadPrintErr;self.alert=threadAlert;Module["instantiateWasm"]=(info,receiveInstance)=>{var instance=new WebAssembly.Instance(Module["wasmModule"],info);receiveInstance(instance);Module["wasmModule"]=null;return instance.exports};self.onmessage=e=>{try{if(e.data.cmd==="load"){Module["wasmModule"]=e.data.wasmModule;Module["wasmMemory"]=e.data.wasmMemory;Module["buffer"]=Module["wasmMemory"].buffer;Module["ENVIRONMENT_IS_PTHREAD"]=true;(e.data.urlOrBlob?import(e.data.urlOrBlob):import("./decoder-pro-mt-worker.js")).then(function(exports){return exports.default(Module)}).then(function(instance){Module=instance})}else if(e.data.cmd==="run"){Module["__performance_now_clock_drift"]=performance.now()-e.data.time;Module["__emscripten_thread_init"](e.data.pthread_ptr,0,0,1);Module["establishStackSpace"]();Module["PThread"].receiveObjectTransfer(e.data);Module["PThread"].threadInitTLS();if(!initializedJS){Module["___embind_register_native_and_builtin_types"]();pendingNotifiedProxyingQueues.forEach(queue=>{Module["executeNotifiedProxyingQueue"](queue)});pendingNotifiedProxyingQueues=[];initializedJS=true}try{Module["invokeEntryPoint"](e.data.start_routine,e.data.arg)}catch(ex){if(ex!="unwind"){if(ex instanceof Module["ExitStatus"]){if(Module["keepRuntimeAlive"]()){}else{Module["__emscripten_thread_exit"](ex.status)}}else{throw ex}}}}else if(e.data.cmd==="cancel"){if(Module["_pthread_self"]()){Module["__emscripten_thread_exit"](-1)}}else if(e.data.target==="setimmediate"){}else if(e.data.cmd==="processProxyingQueue"){if(initializedJS){Module["executeNotifiedProxyingQueue"](e.data.queue)}else{pendingNotifiedProxyingQueues.push(e.data.queue)}}else{err("worker.js received unknown command "+e.data.cmd);err(e.data)}}catch(ex){err("worker.js onmessage() captured an uncaught exception: "+ex);if(ex&&ex.stack)err(ex.stack);if(Module["__emscripten_thread_crashed"]){Module["__emscripten_thread_crashed"]()}throw ex}}; diff --git a/demo/js/decoder-pro-mt.js b/vue-demo/js/decoder-pro-mt.js similarity index 100% rename from demo/js/decoder-pro-mt.js rename to vue-demo/js/decoder-pro-mt.js diff --git a/vue-demo/js/decoder-pro-simd-mt-worker.js b/vue-demo/js/decoder-pro-simd-mt-worker.js new file mode 100644 index 0000000..a311629 --- /dev/null +++ b/vue-demo/js/decoder-pro-simd-mt-worker.js @@ -0,0 +1,16 @@ + +var Module = (() => { + var _scriptDir = import.meta.url; + + return ( +async function(moduleArg = {}) { + +var Module=moduleArg;var readyPromiseResolve,readyPromiseReject;Module["ready"]=new Promise((resolve,reject)=>{readyPromiseResolve=resolve;readyPromiseReject=reject});var Module=typeof Module!="undefined"?Module:{};Module["locateFile"]=function(url){if(url=="decoder-pro-simd-mt-worker.wasm"&&typeof EASYPLAYER_PRO_SIMD_MT_WORKER_WASM_URL!="undefined"&&EASYPLAYER_PRO_SIMD_MT_WORKER_WASM_URL!="")return EASYPLAYER_PRO_SIMD_MT_WORKER_WASM_URL;else return url;if(url=="decoder-pro-simd-mt-worker.worker.js"&&typeof EASYPLAYER_PRO_SIMD_MT_WORKER_JS_URL!="undefined"&&EASYPLAYER_PRO_SIMD_MT_WORKER_JS_URL!=""){return EASYPLAYER_PRO_SIMD_MT_WORKER_JS_URL}else{return url}};var moduleOverrides=Object.assign({},Module);var arguments_=[];var thisProgram="./this.program";var quit_=(status,toThrow)=>{throw toThrow};var ENVIRONMENT_IS_WEB=typeof window=="object";var ENVIRONMENT_IS_WORKER=typeof importScripts=="function";var ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string";var ENVIRONMENT_IS_PTHREAD=Module["ENVIRONMENT_IS_PTHREAD"]||false;var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary;if(ENVIRONMENT_IS_NODE){const{createRequire:createRequire}=await import("module");var require=createRequire(import.meta.url);var fs=require("fs");var nodePath=require("path");if(ENVIRONMENT_IS_WORKER){scriptDirectory=nodePath.dirname(scriptDirectory)+"/"}else{scriptDirectory=require("url").fileURLToPath(new URL("./",import.meta.url))}read_=(filename,binary)=>{filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);return fs.readFileSync(filename,binary?undefined:"utf8")};readBinary=filename=>{var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}return ret};readAsync=(filename,onload,onerror,binary=true)=>{filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);fs.readFile(filename,binary?undefined:"utf8",(err,data)=>{if(err)onerror(err);else onload(binary?data.buffer:data)})};if(!Module["thisProgram"]&&process.argv.length>1){thisProgram=process.argv[1].replace(/\\/g,"/")}arguments_=process.argv.slice(2);quit_=(status,toThrow)=>{process.exitCode=status;throw toThrow};Module["inspect"]=()=>"[Emscripten Module object]";let nodeWorkerThreads;try{nodeWorkerThreads=require("worker_threads")}catch(e){console.error('The "worker_threads" module is not supported in this node.js build - perhaps a newer version is needed?');throw e}global.Worker=nodeWorkerThreads.Worker}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1)}else{scriptDirectory=""}if(!ENVIRONMENT_IS_NODE){read_=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=(url,onload,onerror)=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=()=>{if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}}else{}if(ENVIRONMENT_IS_NODE){if(typeof performance=="undefined"){global.performance=require("perf_hooks").performance}}var defaultPrint=console.log.bind(console);var defaultPrintErr=console.error.bind(console);if(ENVIRONMENT_IS_NODE){defaultPrint=(...args)=>fs.writeSync(1,args.join(" ")+"\n");defaultPrintErr=(...args)=>fs.writeSync(2,args.join(" ")+"\n")}var out=Module["print"]||defaultPrint;var err=Module["printErr"]||defaultPrintErr;Object.assign(Module,moduleOverrides);moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];if(typeof WebAssembly!="object"){abort("no native wasm support detected")}var wasmMemory;var wasmModule;var ABORT=false;var EXITSTATUS;var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateMemoryViews(){var b=wasmMemory.buffer;Module["HEAP8"]=HEAP8=new Int8Array(b);Module["HEAP16"]=HEAP16=new Int16Array(b);Module["HEAPU8"]=HEAPU8=new Uint8Array(b);Module["HEAPU16"]=HEAPU16=new Uint16Array(b);Module["HEAP32"]=HEAP32=new Int32Array(b);Module["HEAPU32"]=HEAPU32=new Uint32Array(b);Module["HEAPF32"]=HEAPF32=new Float32Array(b);Module["HEAPF64"]=HEAPF64=new Float64Array(b)}var INITIAL_MEMORY=Module["INITIAL_MEMORY"]||536870912;if(ENVIRONMENT_IS_PTHREAD){wasmMemory=Module["wasmMemory"]}else{if(Module["wasmMemory"]){wasmMemory=Module["wasmMemory"]}else{wasmMemory=new WebAssembly.Memory({"initial":INITIAL_MEMORY/65536,"maximum":INITIAL_MEMORY/65536,"shared":true});if(!(wasmMemory.buffer instanceof SharedArrayBuffer)){err("requested a shared WebAssembly.Memory but the returned buffer is not a SharedArrayBuffer, indicating that while the browser has SharedArrayBuffer it does not have WebAssembly threads support - you may need to set a flag");if(ENVIRONMENT_IS_NODE){err("(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and/or recent version)")}throw Error("bad memory")}}}updateMemoryViews();INITIAL_MEMORY=wasmMemory.buffer.byteLength;var __ATPRERUN__=[];var __ATINIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;if(ENVIRONMENT_IS_PTHREAD)return;callRuntimeCallbacks(__ATINIT__)}function postRun(){if(ENVIRONMENT_IS_PTHREAD)return;if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnInit(cb){__ATINIT__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}function abort(what){if(Module["onAbort"]){Module["onAbort"](what)}what="Aborted("+what+")";err(what);ABORT=true;EXITSTATUS=1;what+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(what);readyPromiseReject(e);throw e}var dataURIPrefix="data:application/octet-stream;base64,";var isDataURI=filename=>filename.startsWith(dataURIPrefix);var isFileURI=filename=>filename.startsWith("file://");var wasmBinaryFile;if(Module["locateFile"]){wasmBinaryFile="decoder-pro-simd-mt-worker.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}}else{wasmBinaryFile=new URL("decoder-pro-simd-mt-worker.wasm",import.meta.url).href}function getBinarySync(file){if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}throw"both async and sync fetching of the wasm failed"}function getBinaryPromise(binaryFile){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch=="function"&&!isFileURI(binaryFile)){return fetch(binaryFile,{credentials:"same-origin"}).then(response=>{if(!response["ok"]){throw"failed to load wasm binary file at '"+binaryFile+"'"}return response["arrayBuffer"]()}).catch(()=>getBinarySync(binaryFile))}else if(readAsync){return new Promise((resolve,reject)=>{readAsync(binaryFile,response=>resolve(new Uint8Array(response)),reject)})}}return Promise.resolve().then(()=>getBinarySync(binaryFile))}function instantiateArrayBuffer(binaryFile,imports,receiver){return getBinaryPromise(binaryFile).then(binary=>WebAssembly.instantiate(binary,imports)).then(instance=>instance).then(receiver,reason=>{err(`failed to asynchronously prepare wasm: ${reason}`);abort(reason)})}function instantiateAsync(binary,binaryFile,imports,callback){if(!binary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(binaryFile)&&!isFileURI(binaryFile)&&!ENVIRONMENT_IS_NODE&&typeof fetch=="function"){return fetch(binaryFile,{credentials:"same-origin"}).then(response=>{var result=WebAssembly.instantiateStreaming(response,imports);return result.then(callback,function(reason){err(`wasm streaming compile failed: ${reason}`);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(binaryFile,imports,callback)})})}return instantiateArrayBuffer(binaryFile,imports,callback)}function createWasm(){var info={"a":wasmImports};function receiveInstance(instance,module){wasmExports=instance.exports;registerTLSInit(wasmExports["R"]);wasmTable=wasmExports["V"];addOnInit(wasmExports["N"]);wasmModule=module;removeRunDependency("wasm-instantiate");return wasmExports}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"],result["module"])}if(Module["instantiateWasm"]){try{return Module["instantiateWasm"](info,receiveInstance)}catch(e){err(`Module.instantiateWasm callback failed with error: ${e}`);readyPromiseReject(e)}}instantiateAsync(wasmBinary,wasmBinaryFile,info,receiveInstantiationResult).catch(readyPromiseReject);return{}}function ExitStatus(status){this.name="ExitStatus";this.message=`Program terminated with exit(${status})`;this.status=status}var terminateWorker=worker=>{worker.terminate();worker.onmessage=e=>{}};var killThread=pthread_ptr=>{var worker=PThread.pthreads[pthread_ptr];delete PThread.pthreads[pthread_ptr];terminateWorker(worker);__emscripten_thread_free_data(pthread_ptr);PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(worker),1);worker.pthread_ptr=0};var cancelThread=pthread_ptr=>{var worker=PThread.pthreads[pthread_ptr];worker.postMessage({"cmd":"cancel"})};var cleanupThread=pthread_ptr=>{var worker=PThread.pthreads[pthread_ptr];PThread.returnWorkerToPool(worker)};var spawnThread=threadParams=>{var worker=PThread.getNewWorker();if(!worker){return 6}PThread.runningWorkers.push(worker);PThread.pthreads[threadParams.pthread_ptr]=worker;worker.pthread_ptr=threadParams.pthread_ptr;var msg={"cmd":"run","start_routine":threadParams.startRoutine,"arg":threadParams.arg,"pthread_ptr":threadParams.pthread_ptr};if(ENVIRONMENT_IS_NODE){worker.unref()}worker.postMessage(msg,threadParams.transferList);return 0};var runtimeKeepaliveCounter=0;var keepRuntimeAlive=()=>noExitRuntime||runtimeKeepaliveCounter>0;var UTF8Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf8"):undefined;var UTF8ArrayToString=(heapOrArray,idx,maxBytesToRead)=>{var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heapOrArray[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.buffer instanceof SharedArrayBuffer?heapOrArray.slice(idx,endPtr):heapOrArray.subarray(idx,endPtr))}var str="";while(idx>10,56320|ch&1023)}}return str};var UTF8ToString=(ptr,maxBytesToRead)=>ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):"";var SYSCALLS={varargs:undefined,get(){var ret=HEAP32[+SYSCALLS.varargs>>2];SYSCALLS.varargs+=4;return ret},getp(){return SYSCALLS.get()},getStr(ptr){var ret=UTF8ToString(ptr);return ret}};var withStackSave=f=>{var stack=stackSave();var ret=f();stackRestore(stack);return ret};var proxyToMainThread=function(index,sync){var numCallArgs=arguments.length-2;var outerArgs=arguments;return withStackSave(()=>{var serializedNumCallArgs=numCallArgs;var args=stackAlloc(serializedNumCallArgs*8);var b=args>>3;for(var i=0;i{EXITSTATUS=status;if(ENVIRONMENT_IS_PTHREAD){exitOnMainThread(status);throw"unwind"}_proc_exit(status)};var _exit=exitJS;var handleException=e=>{if(e instanceof ExitStatus||e=="unwind"){return EXITSTATUS}quit_(1,e)};var PThread={unusedWorkers:[],runningWorkers:[],tlsInitFunctions:[],pthreads:{},init(){if(ENVIRONMENT_IS_PTHREAD){PThread.initWorker()}else{PThread.initMainThread()}},initMainThread(){var pthreadPoolSize=8;while(pthreadPoolSize--){PThread.allocateUnusedWorker()}addOnPreRun(()=>{addRunDependency("loading-workers");PThread.loadWasmModuleToAllWorkers(()=>removeRunDependency("loading-workers"))})},initWorker(){noExitRuntime=false},setExitStatus:status=>{EXITSTATUS=status},terminateAllThreads__deps:["$terminateWorker"],terminateAllThreads:()=>{for(var worker of PThread.runningWorkers){terminateWorker(worker)}for(var worker of PThread.unusedWorkers){terminateWorker(worker)}PThread.unusedWorkers=[];PThread.runningWorkers=[];PThread.pthreads=[]},returnWorkerToPool:worker=>{var pthread_ptr=worker.pthread_ptr;delete PThread.pthreads[pthread_ptr];PThread.unusedWorkers.push(worker);PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(worker),1);worker.pthread_ptr=0;__emscripten_thread_free_data(pthread_ptr)},receiveObjectTransfer(data){},threadInitTLS(){PThread.tlsInitFunctions.forEach(f=>f())},loadWasmModuleToWorker:worker=>new Promise(onFinishedLoading=>{worker.onmessage=e=>{var d=e["data"];var cmd=d["cmd"];if(d["targetThread"]&&d["targetThread"]!=_pthread_self()){var targetWorker=PThread.pthreads[d["targetThread"]];if(targetWorker){targetWorker.postMessage(d,d["transferList"])}else{err(`Internal error! Worker sent a message "${cmd}" to target pthread ${d["targetThread"]}, but that thread no longer exists!`)}return}if(cmd==="checkMailbox"){checkMailbox()}else if(cmd==="spawnThread"){spawnThread(d)}else if(cmd==="cleanupThread"){cleanupThread(d["thread"])}else if(cmd==="killThread"){killThread(d["thread"])}else if(cmd==="cancelThread"){cancelThread(d["thread"])}else if(cmd==="loaded"){worker.loaded=true;if(ENVIRONMENT_IS_NODE&&!worker.pthread_ptr){worker.unref()}onFinishedLoading(worker)}else if(cmd==="alert"){alert(`Thread ${d["threadId"]}: ${d["text"]}`)}else if(d.target==="setimmediate"){worker.postMessage(d)}else if(cmd==="callHandler"){Module[d["handler"]](...d["args"])}else if(cmd){err(`worker sent an unknown command ${cmd}`)}};worker.onerror=e=>{var message="worker sent an error!";err(`${message} ${e.filename}:${e.lineno}: ${e.message}`);throw e};if(ENVIRONMENT_IS_NODE){worker.on("message",data=>worker.onmessage({data:data}));worker.on("error",e=>worker.onerror(e))}var handlers=[];var knownHandlers=["onExit","onAbort","print","printErr"];for(var handler of knownHandlers){if(Module.hasOwnProperty(handler)){handlers.push(handler)}}worker.postMessage({"cmd":"load","handlers":handlers,"urlOrBlob":Module["mainScriptUrlOrBlob"],"wasmMemory":wasmMemory,"wasmModule":wasmModule})}),loadWasmModuleToAllWorkers(onMaybeReady){if(ENVIRONMENT_IS_PTHREAD){return onMaybeReady()}let pthreadPoolReady=Promise.all(PThread.unusedWorkers.map(PThread.loadWasmModuleToWorker));pthreadPoolReady.then(onMaybeReady)},allocateUnusedWorker(){var worker;if(!Module["locateFile"]){worker=new Worker(new URL("decoder-pro-simd-mt-worker.worker.js",import.meta.url),{type:"module"})}else{var pthreadMainJs=locateFile("decoder-pro-simd-mt-worker.worker.js");worker=new Worker(pthreadMainJs,{type:"module"})}PThread.unusedWorkers.push(worker)},getNewWorker(){if(PThread.unusedWorkers.length==0){PThread.allocateUnusedWorker();PThread.loadWasmModuleToWorker(PThread.unusedWorkers[0])}return PThread.unusedWorkers.pop()}};Module["PThread"]=PThread;var callRuntimeCallbacks=callbacks=>{while(callbacks.length>0){callbacks.shift()(Module)}};var establishStackSpace=()=>{var pthread_ptr=_pthread_self();var stackHigh=HEAPU32[pthread_ptr+52>>2];var stackSize=HEAPU32[pthread_ptr+56>>2];var stackLow=stackHigh-stackSize;_emscripten_stack_set_limits(stackHigh,stackLow);stackRestore(stackHigh)};Module["establishStackSpace"]=establishStackSpace;function exitOnMainThread(returnCode){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(1,0,returnCode);_exit(returnCode)}var wasmTableMirror=[];var wasmTable;var getWasmTableEntry=funcPtr=>{var func=wasmTableMirror[funcPtr];if(!func){if(funcPtr>=wasmTableMirror.length)wasmTableMirror.length=funcPtr+1;wasmTableMirror[funcPtr]=func=wasmTable.get(funcPtr)}return func};var invokeEntryPoint=(ptr,arg)=>{var result=getWasmTableEntry(ptr)(arg);function finish(result){if(keepRuntimeAlive()){PThread.setExitStatus(result)}else{__emscripten_thread_exit(result)}}finish(result)};Module["invokeEntryPoint"]=invokeEntryPoint;var noExitRuntime=Module["noExitRuntime"]||true;var registerTLSInit=tlsInitFunc=>{PThread.tlsInitFunctions.push(tlsInitFunc)};var ___assert_fail=(condition,filename,line,func)=>{abort(`Assertion failed: ${UTF8ToString(condition)}, at: `+[filename?UTF8ToString(filename):"unknown filename",line,func?UTF8ToString(func):"unknown function"])};function ExceptionInfo(excPtr){this.excPtr=excPtr;this.ptr=excPtr-24;this.set_type=function(type){HEAPU32[this.ptr+4>>2]=type};this.get_type=function(){return HEAPU32[this.ptr+4>>2]};this.set_destructor=function(destructor){HEAPU32[this.ptr+8>>2]=destructor};this.get_destructor=function(){return HEAPU32[this.ptr+8>>2]};this.set_caught=function(caught){caught=caught?1:0;HEAP8[this.ptr+12>>0]=caught};this.get_caught=function(){return HEAP8[this.ptr+12>>0]!=0};this.set_rethrown=function(rethrown){rethrown=rethrown?1:0;HEAP8[this.ptr+13>>0]=rethrown};this.get_rethrown=function(){return HEAP8[this.ptr+13>>0]!=0};this.init=function(type,destructor){this.set_adjusted_ptr(0);this.set_type(type);this.set_destructor(destructor)};this.set_adjusted_ptr=function(adjustedPtr){HEAPU32[this.ptr+16>>2]=adjustedPtr};this.get_adjusted_ptr=function(){return HEAPU32[this.ptr+16>>2]};this.get_exception_ptr=function(){var isPointer=___cxa_is_pointer_type(this.get_type());if(isPointer){return HEAPU32[this.excPtr>>2]}var adjusted=this.get_adjusted_ptr();if(adjusted!==0)return adjusted;return this.excPtr}}var exceptionLast=0;var uncaughtExceptionCount=0;var ___cxa_throw=(ptr,type,destructor)=>{var info=new ExceptionInfo(ptr);info.init(type,destructor);exceptionLast=ptr;uncaughtExceptionCount++;throw exceptionLast};var ___emscripten_init_main_thread_js=tb=>{__emscripten_thread_init(tb,!ENVIRONMENT_IS_WORKER,1,!ENVIRONMENT_IS_WEB,65536,false);PThread.threadInitTLS()};var ___emscripten_thread_cleanup=thread=>{if(!ENVIRONMENT_IS_PTHREAD)cleanupThread(thread);else postMessage({"cmd":"cleanupThread","thread":thread})};function pthreadCreateProxied(pthread_ptr,attr,startRoutine,arg){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(2,1,pthread_ptr,attr,startRoutine,arg);return ___pthread_create_js(pthread_ptr,attr,startRoutine,arg)}var ___pthread_create_js=(pthread_ptr,attr,startRoutine,arg)=>{if(typeof SharedArrayBuffer=="undefined"){err("Current environment does not support SharedArrayBuffer, pthreads are not available!");return 6}var transferList=[];var error=0;if(ENVIRONMENT_IS_PTHREAD&&(transferList.length===0||error)){return pthreadCreateProxied(pthread_ptr,attr,startRoutine,arg)}if(error)return error;var threadParams={startRoutine:startRoutine,pthread_ptr:pthread_ptr,arg:arg,transferList:transferList};if(ENVIRONMENT_IS_PTHREAD){threadParams.cmd="spawnThread";postMessage(threadParams,transferList);return 0}return spawnThread(threadParams)};var __embind_register_bigint=(primitiveType,name,size,minRange,maxRange)=>{};var embind_init_charCodes=()=>{var codes=new Array(256);for(var i=0;i<256;++i){codes[i]=String.fromCharCode(i)}embind_charCodes=codes};var embind_charCodes;var readLatin1String=ptr=>{var ret="";var c=ptr;while(HEAPU8[c]){ret+=embind_charCodes[HEAPU8[c++]]}return ret};var awaitingDependencies={};var registeredTypes={};var typeDependencies={};var BindingError;var throwBindingError=message=>{throw new BindingError(message)};var InternalError;var throwInternalError=message=>{throw new InternalError(message)};var whenDependentTypesAreResolved=(myTypes,dependentTypes,getTypeConverters)=>{myTypes.forEach(function(type){typeDependencies[type]=dependentTypes});function onComplete(typeConverters){var myTypeConverters=getTypeConverters(typeConverters);if(myTypeConverters.length!==myTypes.length){throwInternalError("Mismatched type converter count")}for(var i=0;i{if(registeredTypes.hasOwnProperty(dt)){typeConverters[i]=registeredTypes[dt]}else{unregisteredTypes.push(dt);if(!awaitingDependencies.hasOwnProperty(dt)){awaitingDependencies[dt]=[]}awaitingDependencies[dt].push(()=>{typeConverters[i]=registeredTypes[dt];++registered;if(registered===unregisteredTypes.length){onComplete(typeConverters)}})}});if(0===unregisteredTypes.length){onComplete(typeConverters)}};function sharedRegisterType(rawType,registeredInstance,options={}){var name=registeredInstance.name;if(!rawType){throwBindingError(`type "${name}" must have a positive integer typeid pointer`)}if(registeredTypes.hasOwnProperty(rawType)){if(options.ignoreDuplicateRegistrations){return}else{throwBindingError(`Cannot register type '${name}' twice`)}}registeredTypes[rawType]=registeredInstance;delete typeDependencies[rawType];if(awaitingDependencies.hasOwnProperty(rawType)){var callbacks=awaitingDependencies[rawType];delete awaitingDependencies[rawType];callbacks.forEach(cb=>cb())}}function registerType(rawType,registeredInstance,options={}){if(!("argPackAdvance"in registeredInstance)){throw new TypeError("registerType registeredInstance requires argPackAdvance")}return sharedRegisterType(rawType,registeredInstance,options)}var GenericWireTypeSize=8;var __embind_register_bool=(rawType,name,trueValue,falseValue)=>{name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(wt){return!!wt},"toWireType":function(destructors,o){return o?trueValue:falseValue},"argPackAdvance":GenericWireTypeSize,"readValueFromPointer":function(pointer){return this["fromWireType"](HEAPU8[pointer])},destructorFunction:null})};var shallowCopyInternalPointer=o=>({count:o.count,deleteScheduled:o.deleteScheduled,preservePointerOnDelete:o.preservePointerOnDelete,ptr:o.ptr,ptrType:o.ptrType,smartPtr:o.smartPtr,smartPtrType:o.smartPtrType});var throwInstanceAlreadyDeleted=obj=>{function getInstanceTypeName(handle){return handle.$$.ptrType.registeredClass.name}throwBindingError(getInstanceTypeName(obj)+" instance already deleted")};var finalizationRegistry=false;var detachFinalizer=handle=>{};var runDestructor=$$=>{if($$.smartPtr){$$.smartPtrType.rawDestructor($$.smartPtr)}else{$$.ptrType.registeredClass.rawDestructor($$.ptr)}};var releaseClassHandle=$$=>{$$.count.value-=1;var toDelete=0===$$.count.value;if(toDelete){runDestructor($$)}};var downcastPointer=(ptr,ptrClass,desiredClass)=>{if(ptrClass===desiredClass){return ptr}if(undefined===desiredClass.baseClass){return null}var rv=downcastPointer(ptr,ptrClass,desiredClass.baseClass);if(rv===null){return null}return desiredClass.downcast(rv)};var registeredPointers={};var getInheritedInstanceCount=()=>Object.keys(registeredInstances).length;var getLiveInheritedInstances=()=>{var rv=[];for(var k in registeredInstances){if(registeredInstances.hasOwnProperty(k)){rv.push(registeredInstances[k])}}return rv};var deletionQueue=[];var flushPendingDeletes=()=>{while(deletionQueue.length){var obj=deletionQueue.pop();obj.$$.deleteScheduled=false;obj["delete"]()}};var delayFunction;var setDelayFunction=fn=>{delayFunction=fn;if(deletionQueue.length&&delayFunction){delayFunction(flushPendingDeletes)}};var init_embind=()=>{Module["getInheritedInstanceCount"]=getInheritedInstanceCount;Module["getLiveInheritedInstances"]=getLiveInheritedInstances;Module["flushPendingDeletes"]=flushPendingDeletes;Module["setDelayFunction"]=setDelayFunction};var registeredInstances={};var getBasestPointer=(class_,ptr)=>{if(ptr===undefined){throwBindingError("ptr should not be undefined")}while(class_.baseClass){ptr=class_.upcast(ptr);class_=class_.baseClass}return ptr};var getInheritedInstance=(class_,ptr)=>{ptr=getBasestPointer(class_,ptr);return registeredInstances[ptr]};var makeClassHandle=(prototype,record)=>{if(!record.ptrType||!record.ptr){throwInternalError("makeClassHandle requires ptr and ptrType")}var hasSmartPtrType=!!record.smartPtrType;var hasSmartPtr=!!record.smartPtr;if(hasSmartPtrType!==hasSmartPtr){throwInternalError("Both smartPtrType and smartPtr must be specified")}record.count={value:1};return attachFinalizer(Object.create(prototype,{$$:{value:record}}))};function RegisteredPointer_fromWireType(ptr){var rawPointer=this.getPointee(ptr);if(!rawPointer){this.destructor(ptr);return null}var registeredInstance=getInheritedInstance(this.registeredClass,rawPointer);if(undefined!==registeredInstance){if(0===registeredInstance.$$.count.value){registeredInstance.$$.ptr=rawPointer;registeredInstance.$$.smartPtr=ptr;return registeredInstance["clone"]()}else{var rv=registeredInstance["clone"]();this.destructor(ptr);return rv}}function makeDefaultHandle(){if(this.isSmartPointer){return makeClassHandle(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:rawPointer,smartPtrType:this,smartPtr:ptr})}else{return makeClassHandle(this.registeredClass.instancePrototype,{ptrType:this,ptr:ptr})}}var actualType=this.registeredClass.getActualType(rawPointer);var registeredPointerRecord=registeredPointers[actualType];if(!registeredPointerRecord){return makeDefaultHandle.call(this)}var toType;if(this.isConst){toType=registeredPointerRecord.constPointerType}else{toType=registeredPointerRecord.pointerType}var dp=downcastPointer(rawPointer,this.registeredClass,toType.registeredClass);if(dp===null){return makeDefaultHandle.call(this)}if(this.isSmartPointer){return makeClassHandle(toType.registeredClass.instancePrototype,{ptrType:toType,ptr:dp,smartPtrType:this,smartPtr:ptr})}else{return makeClassHandle(toType.registeredClass.instancePrototype,{ptrType:toType,ptr:dp})}}var attachFinalizer=handle=>{if("undefined"===typeof FinalizationRegistry){attachFinalizer=handle=>handle;return handle}finalizationRegistry=new FinalizationRegistry(info=>{releaseClassHandle(info.$$)});attachFinalizer=handle=>{var $$=handle.$$;var hasSmartPtr=!!$$.smartPtr;if(hasSmartPtr){var info={$$:$$};finalizationRegistry.register(handle,info,handle)}return handle};detachFinalizer=handle=>finalizationRegistry.unregister(handle);return attachFinalizer(handle)};var init_ClassHandle=()=>{Object.assign(ClassHandle.prototype,{"isAliasOf"(other){if(!(this instanceof ClassHandle)){return false}if(!(other instanceof ClassHandle)){return false}var leftClass=this.$$.ptrType.registeredClass;var left=this.$$.ptr;other.$$=other.$$;var rightClass=other.$$.ptrType.registeredClass;var right=other.$$.ptr;while(leftClass.baseClass){left=leftClass.upcast(left);leftClass=leftClass.baseClass}while(rightClass.baseClass){right=rightClass.upcast(right);rightClass=rightClass.baseClass}return leftClass===rightClass&&left===right},"clone"(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this)}if(this.$$.preservePointerOnDelete){this.$$.count.value+=1;return this}else{var clone=attachFinalizer(Object.create(Object.getPrototypeOf(this),{$$:{value:shallowCopyInternalPointer(this.$$)}}));clone.$$.count.value+=1;clone.$$.deleteScheduled=false;return clone}},"delete"(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this)}if(this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete){throwBindingError("Object already scheduled for deletion")}detachFinalizer(this);releaseClassHandle(this.$$);if(!this.$$.preservePointerOnDelete){this.$$.smartPtr=undefined;this.$$.ptr=undefined}},"isDeleted"(){return!this.$$.ptr},"deleteLater"(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this)}if(this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete){throwBindingError("Object already scheduled for deletion")}deletionQueue.push(this);if(deletionQueue.length===1&&delayFunction){delayFunction(flushPendingDeletes)}this.$$.deleteScheduled=true;return this}})};function ClassHandle(){}var createNamedFunction=(name,body)=>Object.defineProperty(body,"name",{value:name});var ensureOverloadTable=(proto,methodName,humanName)=>{if(undefined===proto[methodName].overloadTable){var prevFunc=proto[methodName];proto[methodName]=function(){if(!proto[methodName].overloadTable.hasOwnProperty(arguments.length)){throwBindingError(`Function '${humanName}' called with an invalid number of arguments (${arguments.length}) - expects one of (${proto[methodName].overloadTable})!`)}return proto[methodName].overloadTable[arguments.length].apply(this,arguments)};proto[methodName].overloadTable=[];proto[methodName].overloadTable[prevFunc.argCount]=prevFunc}};var exposePublicSymbol=(name,value,numArguments)=>{if(Module.hasOwnProperty(name)){if(undefined===numArguments||undefined!==Module[name].overloadTable&&undefined!==Module[name].overloadTable[numArguments]){throwBindingError(`Cannot register public name '${name}' twice`)}ensureOverloadTable(Module,name,name);if(Module.hasOwnProperty(numArguments)){throwBindingError(`Cannot register multiple overloads of a function with the same number of arguments (${numArguments})!`)}Module[name].overloadTable[numArguments]=value}else{Module[name]=value;if(undefined!==numArguments){Module[name].numArguments=numArguments}}};var char_0=48;var char_9=57;var makeLegalFunctionName=name=>{if(undefined===name){return"_unknown"}name=name.replace(/[^a-zA-Z0-9_]/g,"$");var f=name.charCodeAt(0);if(f>=char_0&&f<=char_9){return`_${name}`}return name};function RegisteredClass(name,constructor,instancePrototype,rawDestructor,baseClass,getActualType,upcast,downcast){this.name=name;this.constructor=constructor;this.instancePrototype=instancePrototype;this.rawDestructor=rawDestructor;this.baseClass=baseClass;this.getActualType=getActualType;this.upcast=upcast;this.downcast=downcast;this.pureVirtualFunctions=[]}var upcastPointer=(ptr,ptrClass,desiredClass)=>{while(ptrClass!==desiredClass){if(!ptrClass.upcast){throwBindingError(`Expected null or instance of ${desiredClass.name}, got an instance of ${ptrClass.name}`)}ptr=ptrClass.upcast(ptr);ptrClass=ptrClass.baseClass}return ptr};function constNoSmartPtrRawPointerToWireType(destructors,handle){if(handle===null){if(this.isReference){throwBindingError(`null is not a valid ${this.name}`)}return 0}if(!handle.$$){throwBindingError(`Cannot pass "${embindRepr(handle)}" as a ${this.name}`)}if(!handle.$$.ptr){throwBindingError(`Cannot pass deleted object as a pointer of type ${this.name}`)}var handleClass=handle.$$.ptrType.registeredClass;var ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);return ptr}function genericPointerToWireType(destructors,handle){var ptr;if(handle===null){if(this.isReference){throwBindingError(`null is not a valid ${this.name}`)}if(this.isSmartPointer){ptr=this.rawConstructor();if(destructors!==null){destructors.push(this.rawDestructor,ptr)}return ptr}else{return 0}}if(!handle.$$){throwBindingError(`Cannot pass "${embindRepr(handle)}" as a ${this.name}`)}if(!handle.$$.ptr){throwBindingError(`Cannot pass deleted object as a pointer of type ${this.name}`)}if(!this.isConst&&handle.$$.ptrType.isConst){throwBindingError(`Cannot convert argument of type ${handle.$$.smartPtrType?handle.$$.smartPtrType.name:handle.$$.ptrType.name} to parameter type ${this.name}`)}var handleClass=handle.$$.ptrType.registeredClass;ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);if(this.isSmartPointer){if(undefined===handle.$$.smartPtr){throwBindingError("Passing raw pointer to smart pointer is illegal")}switch(this.sharingPolicy){case 0:if(handle.$$.smartPtrType===this){ptr=handle.$$.smartPtr}else{throwBindingError(`Cannot convert argument of type ${handle.$$.smartPtrType?handle.$$.smartPtrType.name:handle.$$.ptrType.name} to parameter type ${this.name}`)}break;case 1:ptr=handle.$$.smartPtr;break;case 2:if(handle.$$.smartPtrType===this){ptr=handle.$$.smartPtr}else{var clonedHandle=handle["clone"]();ptr=this.rawShare(ptr,Emval.toHandle(()=>clonedHandle["delete"]()));if(destructors!==null){destructors.push(this.rawDestructor,ptr)}}break;default:throwBindingError("Unsupporting sharing policy")}}return ptr}function nonConstNoSmartPtrRawPointerToWireType(destructors,handle){if(handle===null){if(this.isReference){throwBindingError(`null is not a valid ${this.name}`)}return 0}if(!handle.$$){throwBindingError(`Cannot pass "${embindRepr(handle)}" as a ${this.name}`)}if(!handle.$$.ptr){throwBindingError(`Cannot pass deleted object as a pointer of type ${this.name}`)}if(handle.$$.ptrType.isConst){throwBindingError(`Cannot convert argument of type ${handle.$$.ptrType.name} to parameter type ${this.name}`)}var handleClass=handle.$$.ptrType.registeredClass;var ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);return ptr}function readPointer(pointer){return this["fromWireType"](HEAPU32[pointer>>2])}var init_RegisteredPointer=()=>{Object.assign(RegisteredPointer.prototype,{getPointee(ptr){if(this.rawGetPointee){ptr=this.rawGetPointee(ptr)}return ptr},destructor(ptr){if(this.rawDestructor){this.rawDestructor(ptr)}},"argPackAdvance":GenericWireTypeSize,"readValueFromPointer":readPointer,"deleteObject"(handle){if(handle!==null){handle["delete"]()}},"fromWireType":RegisteredPointer_fromWireType})};function RegisteredPointer(name,registeredClass,isReference,isConst,isSmartPointer,pointeeType,sharingPolicy,rawGetPointee,rawConstructor,rawShare,rawDestructor){this.name=name;this.registeredClass=registeredClass;this.isReference=isReference;this.isConst=isConst;this.isSmartPointer=isSmartPointer;this.pointeeType=pointeeType;this.sharingPolicy=sharingPolicy;this.rawGetPointee=rawGetPointee;this.rawConstructor=rawConstructor;this.rawShare=rawShare;this.rawDestructor=rawDestructor;if(!isSmartPointer&®isteredClass.baseClass===undefined){if(isConst){this["toWireType"]=constNoSmartPtrRawPointerToWireType;this.destructorFunction=null}else{this["toWireType"]=nonConstNoSmartPtrRawPointerToWireType;this.destructorFunction=null}}else{this["toWireType"]=genericPointerToWireType}}var replacePublicSymbol=(name,value,numArguments)=>{if(!Module.hasOwnProperty(name)){throwInternalError("Replacing nonexistant public symbol")}if(undefined!==Module[name].overloadTable&&undefined!==numArguments){Module[name].overloadTable[numArguments]=value}else{Module[name]=value;Module[name].argCount=numArguments}};var dynCallLegacy=(sig,ptr,args)=>{var f=Module["dynCall_"+sig];return args&&args.length?f.apply(null,[ptr].concat(args)):f.call(null,ptr)};var dynCall=(sig,ptr,args)=>{if(sig.includes("j")){return dynCallLegacy(sig,ptr,args)}var rtn=getWasmTableEntry(ptr).apply(null,args);return rtn};var getDynCaller=(sig,ptr)=>{var argCache=[];return function(){argCache.length=0;Object.assign(argCache,arguments);return dynCall(sig,ptr,argCache)}};var embind__requireFunction=(signature,rawFunction)=>{signature=readLatin1String(signature);function makeDynCaller(){if(signature.includes("j")){return getDynCaller(signature,rawFunction)}return getWasmTableEntry(rawFunction)}var fp=makeDynCaller();if(typeof fp!="function"){throwBindingError(`unknown function pointer with signature ${signature}: ${rawFunction}`)}return fp};var extendError=(baseErrorType,errorName)=>{var errorClass=createNamedFunction(errorName,function(message){this.name=errorName;this.message=message;var stack=new Error(message).stack;if(stack!==undefined){this.stack=this.toString()+"\n"+stack.replace(/^Error(:[^\n]*)?\n/,"")}});errorClass.prototype=Object.create(baseErrorType.prototype);errorClass.prototype.constructor=errorClass;errorClass.prototype.toString=function(){if(this.message===undefined){return this.name}else{return`${this.name}: ${this.message}`}};return errorClass};var UnboundTypeError;var getTypeName=type=>{var ptr=___getTypeName(type);var rv=readLatin1String(ptr);_free(ptr);return rv};var throwUnboundTypeError=(message,types)=>{var unboundTypes=[];var seen={};function visit(type){if(seen[type]){return}if(registeredTypes[type]){return}if(typeDependencies[type]){typeDependencies[type].forEach(visit);return}unboundTypes.push(type);seen[type]=true}types.forEach(visit);throw new UnboundTypeError(`${message}: `+unboundTypes.map(getTypeName).join([", "]))};var __embind_register_class=(rawType,rawPointerType,rawConstPointerType,baseClassRawType,getActualTypeSignature,getActualType,upcastSignature,upcast,downcastSignature,downcast,name,destructorSignature,rawDestructor)=>{name=readLatin1String(name);getActualType=embind__requireFunction(getActualTypeSignature,getActualType);if(upcast){upcast=embind__requireFunction(upcastSignature,upcast)}if(downcast){downcast=embind__requireFunction(downcastSignature,downcast)}rawDestructor=embind__requireFunction(destructorSignature,rawDestructor);var legalFunctionName=makeLegalFunctionName(name);exposePublicSymbol(legalFunctionName,function(){throwUnboundTypeError(`Cannot construct ${name} due to unbound types`,[baseClassRawType])});whenDependentTypesAreResolved([rawType,rawPointerType,rawConstPointerType],baseClassRawType?[baseClassRawType]:[],function(base){base=base[0];var baseClass;var basePrototype;if(baseClassRawType){baseClass=base.registeredClass;basePrototype=baseClass.instancePrototype}else{basePrototype=ClassHandle.prototype}var constructor=createNamedFunction(name,function(){if(Object.getPrototypeOf(this)!==instancePrototype){throw new BindingError("Use 'new' to construct "+name)}if(undefined===registeredClass.constructor_body){throw new BindingError(name+" has no accessible constructor")}var body=registeredClass.constructor_body[arguments.length];if(undefined===body){throw new BindingError(`Tried to invoke ctor of ${name} with invalid number of parameters (${arguments.length}) - expected (${Object.keys(registeredClass.constructor_body).toString()}) parameters instead!`)}return body.apply(this,arguments)});var instancePrototype=Object.create(basePrototype,{constructor:{value:constructor}});constructor.prototype=instancePrototype;var registeredClass=new RegisteredClass(name,constructor,instancePrototype,rawDestructor,baseClass,getActualType,upcast,downcast);if(registeredClass.baseClass){if(registeredClass.baseClass.__derivedClasses===undefined){registeredClass.baseClass.__derivedClasses=[]}registeredClass.baseClass.__derivedClasses.push(registeredClass)}var referenceConverter=new RegisteredPointer(name,registeredClass,true,false,false);var pointerConverter=new RegisteredPointer(name+"*",registeredClass,false,false,false);var constPointerConverter=new RegisteredPointer(name+" const*",registeredClass,false,true,false);registeredPointers[rawType]={pointerType:pointerConverter,constPointerType:constPointerConverter};replacePublicSymbol(legalFunctionName,constructor);return[referenceConverter,pointerConverter,constPointerConverter]})};var heap32VectorToArray=(count,firstElement)=>{var array=[];for(var i=0;i>2])}return array};var runDestructors=destructors=>{while(destructors.length){var ptr=destructors.pop();var del=destructors.pop();del(ptr)}};function newFunc(constructor,argumentList){if(!(constructor instanceof Function)){throw new TypeError(`new_ called with constructor type ${typeof constructor} which is not a function`)}var dummy=createNamedFunction(constructor.name||"unknownFunctionName",function(){});dummy.prototype=constructor.prototype;var obj=new dummy;var r=constructor.apply(obj,argumentList);return r instanceof Object?r:obj}function craftInvokerFunction(humanName,argTypes,classType,cppInvokerFunc,cppTargetFunc,isAsync){var argCount=argTypes.length;if(argCount<2){throwBindingError("argTypes array size mismatch! Must at least get return value and 'this' types!")}var isClassMethodFunc=argTypes[1]!==null&&classType!==null;var needsDestructorStack=false;for(var i=1;i0?", ":"")+argsListWired}invokerFnBody+=(returns||isAsync?"var rv = ":"")+"invoker(fn"+(argsListWired.length>0?", ":"")+argsListWired+");\n";if(needsDestructorStack){invokerFnBody+="runDestructors(destructors);\n"}else{for(var i=isClassMethodFunc?1:2;i{var rawArgTypes=heap32VectorToArray(argCount,rawArgTypesAddr);invoker=embind__requireFunction(invokerSignature,invoker);whenDependentTypesAreResolved([],[rawClassType],function(classType){classType=classType[0];var humanName=`constructor ${classType.name}`;if(undefined===classType.registeredClass.constructor_body){classType.registeredClass.constructor_body=[]}if(undefined!==classType.registeredClass.constructor_body[argCount-1]){throw new BindingError(`Cannot register multiple constructors with identical number of parameters (${argCount-1}) for class '${classType.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`)}classType.registeredClass.constructor_body[argCount-1]=()=>{throwUnboundTypeError(`Cannot construct ${classType.name} due to unbound types`,rawArgTypes)};whenDependentTypesAreResolved([],rawArgTypes,argTypes=>{argTypes.splice(1,0,null);classType.registeredClass.constructor_body[argCount-1]=craftInvokerFunction(humanName,argTypes,null,invoker,rawConstructor);return[]});return[]})};var getFunctionName=signature=>{signature=signature.trim();const argsIndex=signature.indexOf("(");if(argsIndex!==-1){return signature.substr(0,argsIndex)}else{return signature}};var __embind_register_class_function=(rawClassType,methodName,argCount,rawArgTypesAddr,invokerSignature,rawInvoker,context,isPureVirtual,isAsync)=>{var rawArgTypes=heap32VectorToArray(argCount,rawArgTypesAddr);methodName=readLatin1String(methodName);methodName=getFunctionName(methodName);rawInvoker=embind__requireFunction(invokerSignature,rawInvoker);whenDependentTypesAreResolved([],[rawClassType],function(classType){classType=classType[0];var humanName=`${classType.name}.${methodName}`;if(methodName.startsWith("@@")){methodName=Symbol[methodName.substring(2)]}if(isPureVirtual){classType.registeredClass.pureVirtualFunctions.push(methodName)}function unboundTypesHandler(){throwUnboundTypeError(`Cannot call ${humanName} due to unbound types`,rawArgTypes)}var proto=classType.registeredClass.instancePrototype;var method=proto[methodName];if(undefined===method||undefined===method.overloadTable&&method.className!==classType.name&&method.argCount===argCount-2){unboundTypesHandler.argCount=argCount-2;unboundTypesHandler.className=classType.name;proto[methodName]=unboundTypesHandler}else{ensureOverloadTable(proto,methodName,humanName);proto[methodName].overloadTable[argCount-2]=unboundTypesHandler}whenDependentTypesAreResolved([],rawArgTypes,function(argTypes){var memberFunction=craftInvokerFunction(humanName,argTypes,classType,rawInvoker,context,isAsync);if(undefined===proto[methodName].overloadTable){memberFunction.argCount=argCount-2;proto[methodName]=memberFunction}else{proto[methodName].overloadTable[argCount-2]=memberFunction}return[]});return[]})};function handleAllocatorInit(){Object.assign(HandleAllocator.prototype,{get(id){return this.allocated[id]},has(id){return this.allocated[id]!==undefined},allocate(handle){var id=this.freelist.pop()||this.allocated.length;this.allocated[id]=handle;return id},free(id){this.allocated[id]=undefined;this.freelist.push(id)}})}function HandleAllocator(){this.allocated=[undefined];this.freelist=[]}var emval_handles=new HandleAllocator;var __emval_decref=handle=>{if(handle>=emval_handles.reserved&&0===--emval_handles.get(handle).refcount){emval_handles.free(handle)}};var count_emval_handles=()=>{var count=0;for(var i=emval_handles.reserved;i{emval_handles.allocated.push({value:undefined},{value:null},{value:true},{value:false});emval_handles.reserved=emval_handles.allocated.length;Module["count_emval_handles"]=count_emval_handles};var Emval={toValue:handle=>{if(!handle){throwBindingError("Cannot use deleted val. handle = "+handle)}return emval_handles.get(handle).value},toHandle:value=>{switch(value){case undefined:return 1;case null:return 2;case true:return 3;case false:return 4;default:{return emval_handles.allocate({refcount:1,value:value})}}}};function simpleReadValueFromPointer(pointer){return this["fromWireType"](HEAP32[pointer>>2])}var __embind_register_emval=(rawType,name)=>{name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":handle=>{var rv=Emval.toValue(handle);__emval_decref(handle);return rv},"toWireType":(destructors,value)=>Emval.toHandle(value),"argPackAdvance":GenericWireTypeSize,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:null})};var embindRepr=v=>{if(v===null){return"null"}var t=typeof v;if(t==="object"||t==="array"||t==="function"){return v.toString()}else{return""+v}};var floatReadValueFromPointer=(name,width)=>{switch(width){case 4:return function(pointer){return this["fromWireType"](HEAPF32[pointer>>2])};case 8:return function(pointer){return this["fromWireType"](HEAPF64[pointer>>3])};default:throw new TypeError(`invalid float width (${width}): ${name}`)}};var __embind_register_float=(rawType,name,size)=>{name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":value=>value,"toWireType":(destructors,value)=>value,"argPackAdvance":GenericWireTypeSize,"readValueFromPointer":floatReadValueFromPointer(name,size),destructorFunction:null})};var integerReadValueFromPointer=(name,width,signed)=>{switch(width){case 1:return signed?pointer=>HEAP8[pointer>>0]:pointer=>HEAPU8[pointer>>0];case 2:return signed?pointer=>HEAP16[pointer>>1]:pointer=>HEAPU16[pointer>>1];case 4:return signed?pointer=>HEAP32[pointer>>2]:pointer=>HEAPU32[pointer>>2];default:throw new TypeError(`invalid integer width (${width}): ${name}`)}};var __embind_register_integer=(primitiveType,name,size,minRange,maxRange)=>{name=readLatin1String(name);if(maxRange===-1){maxRange=4294967295}var fromWireType=value=>value;if(minRange===0){var bitshift=32-8*size;fromWireType=value=>value<>>bitshift}var isUnsignedType=name.includes("unsigned");var checkAssertions=(value,toTypeName)=>{};var toWireType;if(isUnsignedType){toWireType=function(destructors,value){checkAssertions(value,this.name);return value>>>0}}else{toWireType=function(destructors,value){checkAssertions(value,this.name);return value}}registerType(primitiveType,{name:name,"fromWireType":fromWireType,"toWireType":toWireType,"argPackAdvance":GenericWireTypeSize,"readValueFromPointer":integerReadValueFromPointer(name,size,minRange!==0),destructorFunction:null})};var __embind_register_memory_view=(rawType,dataTypeIndex,name)=>{var typeMapping=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];var TA=typeMapping[dataTypeIndex];function decodeMemoryView(handle){var size=HEAPU32[handle>>2];var data=HEAPU32[handle+4>>2];return new TA(HEAP8.buffer,data,size)}name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":decodeMemoryView,"argPackAdvance":GenericWireTypeSize,"readValueFromPointer":decodeMemoryView},{ignoreDuplicateRegistrations:true})};var stringToUTF8Array=(str,heap,outIdx,maxBytesToWrite)=>{if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx};var stringToUTF8=(str,outPtr,maxBytesToWrite)=>stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite);var lengthBytesUTF8=str=>{var len=0;for(var i=0;i=55296&&c<=57343){len+=4;++i}else{len+=3}}return len};var __embind_register_std_string=(rawType,name)=>{name=readLatin1String(name);var stdStringIsUTF8=name==="std::string";registerType(rawType,{name:name,"fromWireType"(value){var length=HEAPU32[value>>2];var payload=value+4;var str;if(stdStringIsUTF8){var decodeStartPtr=payload;for(var i=0;i<=length;++i){var currentBytePtr=payload+i;if(i==length||HEAPU8[currentBytePtr]==0){var maxRead=currentBytePtr-decodeStartPtr;var stringSegment=UTF8ToString(decodeStartPtr,maxRead);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+1}}}else{var a=new Array(length);for(var i=0;i>2]=length;if(stdStringIsUTF8&&valueIsOfTypeString){stringToUTF8(value,ptr,length+1)}else{if(valueIsOfTypeString){for(var i=0;i255){_free(ptr);throwBindingError("String has UTF-16 code units that do not fit in 8 bits")}HEAPU8[ptr+i]=charCode}}else{for(var i=0;i{var endPtr=ptr;var idx=endPtr>>1;var maxIdx=idx+maxBytesToRead/2;while(!(idx>=maxIdx)&&HEAPU16[idx])++idx;endPtr=idx<<1;if(endPtr-ptr>32&&UTF16Decoder)return UTF16Decoder.decode(HEAPU8.slice(ptr,endPtr));var str="";for(var i=0;!(i>=maxBytesToRead/2);++i){var codeUnit=HEAP16[ptr+i*2>>1];if(codeUnit==0)break;str+=String.fromCharCode(codeUnit)}return str};var stringToUTF16=(str,outPtr,maxBytesToWrite)=>{if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<2)return 0;maxBytesToWrite-=2;var startPtr=outPtr;var numCharsToWrite=maxBytesToWrite>1]=codeUnit;outPtr+=2}HEAP16[outPtr>>1]=0;return outPtr-startPtr};var lengthBytesUTF16=str=>str.length*2;var UTF32ToString=(ptr,maxBytesToRead)=>{var i=0;var str="";while(!(i>=maxBytesToRead/4)){var utf32=HEAP32[ptr+i*4>>2];if(utf32==0)break;++i;if(utf32>=65536){var ch=utf32-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}else{str+=String.fromCharCode(utf32)}}return str};var stringToUTF32=(str,outPtr,maxBytesToWrite)=>{if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<4)return 0;var startPtr=outPtr;var endPtr=startPtr+maxBytesToWrite-4;for(var i=0;i=55296&&codeUnit<=57343){var trailSurrogate=str.charCodeAt(++i);codeUnit=65536+((codeUnit&1023)<<10)|trailSurrogate&1023}HEAP32[outPtr>>2]=codeUnit;outPtr+=4;if(outPtr+4>endPtr)break}HEAP32[outPtr>>2]=0;return outPtr-startPtr};var lengthBytesUTF32=str=>{var len=0;for(var i=0;i=55296&&codeUnit<=57343)++i;len+=4}return len};var __embind_register_std_wstring=(rawType,charSize,name)=>{name=readLatin1String(name);var decodeString,encodeString,getHeap,lengthBytesUTF,shift;if(charSize===2){decodeString=UTF16ToString;encodeString=stringToUTF16;lengthBytesUTF=lengthBytesUTF16;getHeap=()=>HEAPU16;shift=1}else if(charSize===4){decodeString=UTF32ToString;encodeString=stringToUTF32;lengthBytesUTF=lengthBytesUTF32;getHeap=()=>HEAPU32;shift=2}registerType(rawType,{name:name,"fromWireType":value=>{var length=HEAPU32[value>>2];var HEAP=getHeap();var str;var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i*charSize;if(i==length||HEAP[currentBytePtr>>shift]==0){var maxReadBytes=currentBytePtr-decodeStartPtr;var stringSegment=decodeString(decodeStartPtr,maxReadBytes);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+charSize}}_free(value);return str},"toWireType":(destructors,value)=>{if(!(typeof value=="string")){throwBindingError(`Cannot pass non-string to C++ string type ${name}`)}var length=lengthBytesUTF(value);var ptr=_malloc(4+length+charSize);HEAPU32[ptr>>2]=length>>shift;encodeString(value,ptr+4,length+charSize);if(destructors!==null){destructors.push(_free,ptr)}return ptr},"argPackAdvance":GenericWireTypeSize,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction(ptr){_free(ptr)}})};var __embind_register_void=(rawType,name)=>{name=readLatin1String(name);registerType(rawType,{isVoid:true,name:name,"argPackAdvance":0,"fromWireType":()=>undefined,"toWireType":(destructors,o)=>undefined})};var maybeExit=()=>{if(!keepRuntimeAlive()){try{if(ENVIRONMENT_IS_PTHREAD)__emscripten_thread_exit(EXITSTATUS);else _exit(EXITSTATUS)}catch(e){handleException(e)}}};var callUserCallback=func=>{if(ABORT){return}try{func();maybeExit()}catch(e){handleException(e)}};var __emscripten_thread_mailbox_await=pthread_ptr=>{if(typeof Atomics.waitAsync==="function"){var wait=Atomics.waitAsync(HEAP32,pthread_ptr>>2,pthread_ptr);wait.value.then(checkMailbox);var waitingAsync=pthread_ptr+128;Atomics.store(HEAP32,waitingAsync>>2,1)}};Module["__emscripten_thread_mailbox_await"]=__emscripten_thread_mailbox_await;var checkMailbox=()=>{var pthread_ptr=_pthread_self();if(pthread_ptr){__emscripten_thread_mailbox_await(pthread_ptr);callUserCallback(__emscripten_check_mailbox)}};Module["checkMailbox"]=checkMailbox;var __emscripten_notify_mailbox_postmessage=(targetThreadId,currThreadId,mainThreadId)=>{if(targetThreadId==currThreadId){setTimeout(()=>checkMailbox())}else if(ENVIRONMENT_IS_PTHREAD){postMessage({"targetThread":targetThreadId,"cmd":"checkMailbox"})}else{var worker=PThread.pthreads[targetThreadId];if(!worker){return}worker.postMessage({"cmd":"checkMailbox"})}};var proxiedJSCallArgs=[];var __emscripten_receive_on_main_thread_js=(index,callingThread,numCallArgs,args)=>{proxiedJSCallArgs.length=numCallArgs;var b=args>>3;for(var i=0;i{if(ENVIRONMENT_IS_NODE){PThread.pthreads[thread].ref()}};var emval_symbols={};var getStringOrSymbol=address=>{var symbol=emval_symbols[address];if(symbol===undefined){return readLatin1String(address)}return symbol};var emval_methodCallers=[];var __emval_call_method=(caller,objHandle,methodName,destructorsRef,args)=>{caller=emval_methodCallers[caller];objHandle=Emval.toValue(objHandle);methodName=getStringOrSymbol(methodName);return caller(objHandle,objHandle[methodName],destructorsRef,args)};var emval_addMethodCaller=caller=>{var id=emval_methodCallers.length;emval_methodCallers.push(caller);return id};var requireRegisteredType=(rawType,humanName)=>{var impl=registeredTypes[rawType];if(undefined===impl){throwBindingError(humanName+" has unknown type "+getTypeName(rawType))}return impl};var emval_lookupTypes=(argCount,argTypes)=>{var a=new Array(argCount);for(var i=0;i>2],"parameter "+i)}return a};var reflectConstruct=Reflect.construct;var emval_returnValue=(returnType,destructorsRef,handle)=>{var destructors=[];var result=returnType["toWireType"](destructors,handle);if(destructors.length){HEAPU32[destructorsRef>>2]=Emval.toHandle(destructors)}return result};var __emval_get_method_caller=(argCount,argTypes,kind)=>{var types=emval_lookupTypes(argCount,argTypes);var retType=types.shift();argCount--;var functionBody=`return function (obj, func, destructorsRef, args) {\n`;var offset=0;var argsList=[];if(kind===0){argsList.push("obj")}var params=["retType"];var args=[retType];for(var i=0;it.name).join(", ")}) => ${retType.name}>`;return emval_addMethodCaller(createNamedFunction(functionName,invokerFunction))};var __emval_incref=handle=>{if(handle>4){emval_handles.get(handle).refcount+=1}};var __emval_new_cstring=v=>Emval.toHandle(getStringOrSymbol(v));var __emval_new_object=()=>Emval.toHandle({});var __emval_new_u8string=v=>Emval.toHandle(UTF8ToString(v));var __emval_run_destructors=handle=>{var destructors=Emval.toValue(handle);runDestructors(destructors);__emval_decref(handle)};var __emval_set_property=(handle,key,value)=>{handle=Emval.toValue(handle);key=Emval.toValue(key);value=Emval.toValue(value);handle[key]=value};var __emval_take_value=(type,arg)=>{type=requireRegisteredType(type,"_emval_take_value");var v=type["readValueFromPointer"](arg);return Emval.toHandle(v)};var _abort=()=>{abort("")};var warnOnce=text=>{if(!warnOnce.shown)warnOnce.shown={};if(!warnOnce.shown[text]){warnOnce.shown[text]=1;if(ENVIRONMENT_IS_NODE)text="warning: "+text;err(text)}};var _emscripten_check_blocking_allowed=()=>{};var runtimeKeepalivePush=()=>{runtimeKeepaliveCounter+=1};var _emscripten_exit_with_live_runtime=()=>{runtimeKeepalivePush();throw"unwind"};var _emscripten_get_now;_emscripten_get_now=()=>performance.timeOrigin+performance.now();var abortOnCannotGrowMemory=requestedSize=>{abort("OOM")};var _emscripten_resize_heap=requestedSize=>{var oldSize=HEAPU8.length;requestedSize>>>=0;abortOnCannotGrowMemory(requestedSize)};var printCharBuffers=[null,[],[]];var printChar=(stream,curr)=>{var buffer=printCharBuffers[stream];if(curr===0||curr===10){(stream===1?out:err)(UTF8ArrayToString(buffer,0));buffer.length=0}else{buffer.push(curr)}};function _fd_write(fd,iov,iovcnt,pnum){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(3,1,fd,iov,iovcnt,pnum);var num=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;for(var j=0;j>2]=num;return 0}PThread.init();embind_init_charCodes();BindingError=Module["BindingError"]=class BindingError extends Error{constructor(message){super(message);this.name="BindingError"}};InternalError=Module["InternalError"]=class InternalError extends Error{constructor(message){super(message);this.name="InternalError"}};init_ClassHandle();init_embind();init_RegisteredPointer();UnboundTypeError=Module["UnboundTypeError"]=extendError(Error,"UnboundTypeError");handleAllocatorInit();init_emval();var proxiedFunctionTable=[_proc_exit,exitOnMainThread,pthreadCreateProxied,_fd_write];var wasmImports={e:___assert_fail,s:___cxa_throw,D:___emscripten_init_main_thread_js,m:___emscripten_thread_cleanup,A:___pthread_create_js,v:__embind_register_bigint,J:__embind_register_bool,u:__embind_register_class,t:__embind_register_class_constructor,i:__embind_register_class_function,I:__embind_register_emval,o:__embind_register_float,c:__embind_register_integer,b:__embind_register_memory_view,p:__embind_register_std_string,j:__embind_register_std_wstring,K:__embind_register_void,x:__emscripten_notify_mailbox_postmessage,E:__emscripten_receive_on_main_thread_js,C:__emscripten_thread_mailbox_await,G:__emscripten_thread_set_strongref,h:__emval_call_method,d:__emval_decref,g:__emval_get_method_caller,L:__emval_incref,q:__emval_new_cstring,H:__emval_new_object,B:__emval_new_u8string,k:__emval_run_destructors,r:__emval_set_property,M:__emval_take_value,l:_abort,n:_emscripten_check_blocking_allowed,F:_emscripten_exit_with_live_runtime,f:_emscripten_get_now,w:_emscripten_resize_heap,z:_exit,y:_fd_write,a:wasmMemory||Module["wasmMemory"]};var wasmExports=createWasm();var ___wasm_call_ctors=()=>(___wasm_call_ctors=wasmExports["N"])();var _free=a0=>(_free=wasmExports["O"])(a0);var _malloc=a0=>(_malloc=wasmExports["P"])(a0);var _pthread_self=Module["_pthread_self"]=()=>(_pthread_self=Module["_pthread_self"]=wasmExports["Q"])();var __emscripten_tls_init=Module["__emscripten_tls_init"]=()=>(__emscripten_tls_init=Module["__emscripten_tls_init"]=wasmExports["R"])();var ___getTypeName=a0=>(___getTypeName=wasmExports["S"])(a0);var __embind_initialize_bindings=Module["__embind_initialize_bindings"]=()=>(__embind_initialize_bindings=Module["__embind_initialize_bindings"]=wasmExports["T"])();var ___errno_location=()=>(___errno_location=wasmExports["__errno_location"])();var __emscripten_thread_init=Module["__emscripten_thread_init"]=(a0,a1,a2,a3,a4,a5)=>(__emscripten_thread_init=Module["__emscripten_thread_init"]=wasmExports["U"])(a0,a1,a2,a3,a4,a5);var __emscripten_thread_crashed=Module["__emscripten_thread_crashed"]=()=>(__emscripten_thread_crashed=Module["__emscripten_thread_crashed"]=wasmExports["W"])();var _emscripten_main_runtime_thread_id=()=>(_emscripten_main_runtime_thread_id=wasmExports["emscripten_main_runtime_thread_id"])();var _emscripten_main_thread_process_queued_calls=()=>(_emscripten_main_thread_process_queued_calls=wasmExports["emscripten_main_thread_process_queued_calls"])();var __emscripten_run_on_main_thread_js=(a0,a1,a2,a3)=>(__emscripten_run_on_main_thread_js=wasmExports["X"])(a0,a1,a2,a3);var __emscripten_thread_free_data=a0=>(__emscripten_thread_free_data=wasmExports["Y"])(a0);var __emscripten_thread_exit=Module["__emscripten_thread_exit"]=a0=>(__emscripten_thread_exit=Module["__emscripten_thread_exit"]=wasmExports["Z"])(a0);var __emscripten_check_mailbox=()=>(__emscripten_check_mailbox=wasmExports["_"])();var ___get_temp_ret=()=>(___get_temp_ret=wasmExports["__get_temp_ret"])();var ___set_temp_ret=a0=>(___set_temp_ret=wasmExports["__set_temp_ret"])(a0);var _emscripten_stack_set_limits=(a0,a1)=>(_emscripten_stack_set_limits=wasmExports["$"])(a0,a1);var stackSave=()=>(stackSave=wasmExports["aa"])();var stackRestore=a0=>(stackRestore=wasmExports["ba"])(a0);var stackAlloc=a0=>(stackAlloc=wasmExports["ca"])(a0);var ___cxa_increment_exception_refcount=a0=>(___cxa_increment_exception_refcount=wasmExports["__cxa_increment_exception_refcount"])(a0);var ___cxa_is_pointer_type=a0=>(___cxa_is_pointer_type=wasmExports["da"])(a0);var dynCall_jiji=Module["dynCall_jiji"]=(a0,a1,a2,a3,a4)=>(dynCall_jiji=Module["dynCall_jiji"]=wasmExports["ea"])(a0,a1,a2,a3,a4);var ___start_em_js=Module["___start_em_js"]=143500;var ___stop_em_js=Module["___stop_em_js"]=143557;Module["wasmMemory"]=wasmMemory;Module["keepRuntimeAlive"]=keepRuntimeAlive;Module["ExitStatus"]=ExitStatus;Module["PThread"]=PThread;var calledRun;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(){if(runDependencies>0){return}if(ENVIRONMENT_IS_PTHREAD){readyPromiseResolve(Module);initRuntime();startWorker(Module);return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();readyPromiseResolve(Module);if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}run(); + + + return moduleArg.ready +} +); +})(); +; +export default Module; \ No newline at end of file diff --git a/vue-demo/js/decoder-pro-simd-mt-worker.wasm b/vue-demo/js/decoder-pro-simd-mt-worker.wasm new file mode 100644 index 0000000000000000000000000000000000000000..a9d3d4d0da8300c6c4be6fbf36a8d6931fc341b9 GIT binary patch literal 1345773 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�GoH= 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